Проблема при создании Article для созданного тикета. (PHP-SOAP-OTRS 6)

Обсуждение вопросов и решений

Модератор: ykolesnikov

Ответить
denisdanilenko
OTRS Новобранец
Сообщения: 2
Зарегистрирован: 23 окт 2018, 12:40
Благодарил (а): 1 раз

Проблема при создании Article для созданного тикета. (PHP-SOAP-OTRS 6)

Сообщение denisdanilenko » 23 окт 2018, 12:48

Здравствуйте.

Возникла проблема с созданием Article в PHP через SOAP.
У меня на Ubuntu установлен OTRS 6.0.* версии.
Использую код, который работал в 5 версии. Но как мне известно, структуру Article изменили в 6 версии.

Создаю тикет и получаю его ID. Тут всё успешно. Пустой тикет создается.
Но вот содержимое создать не могу.

Пишет ошибку:
Can't locate object method "ArticleCreate" via package "Kernel::System::Ticket"
Проблема в
"TicketObject", "ArticleCreate"
, либо во всем блоке передаваемого массива.

Подскажите, пожалуйста. Что изменилось/как это можно поправить?
В офф.документации немного не понимаю, как сделать.

Спасибо.

Код: Выделить всё

public function addArticle(
        $ticketID,
        $createdBy,
        $userID,
        $subject,
        $body,
        $articleType = 'webrequest',
        $from = null,
        $contentType = 'text/plain; charset=ISO-8859-1'
    )
    {

        if (strlen(trim($subject)) == 0) {
            throw new \Exception('Need a subject. Subject is empty');
        }
        if (strlen(trim($body)) == 0) {
            throw new \Exception('Need a body. Body is empty');
        }
        if (strlen(trim($articleType)) == 0) {
            throw new \Exception('Article Type can not be empty.');
        }
        if (!is_int($ticketID)) {
            throw new \Exception('TicketID needs to be an integer');
        }

        $request = [
            "TicketObject", "ArticleCreate",
            "TicketID", $ticketID,
            "ArticleType", $articleType,
            "SenderType", "system",
            "HistoryType", "WebRequestCustomer",
            "HistoryComment", $createdBy,
            "Subject", $subject,
            "ContentType", $contentType,
            "Body", $body,
            "UserID", $userID,

        ];

        switch ($articleType) {
            case 'note-internal':
                $request = array_merge($request, [
                    "NoAgentNotify", 1,
                ]);
                break;
            case 'webrequest':
                $request = array_merge($request, [
                    "Loop", 0,
                    "From", $from,
                    "AutoResponseType", 'auto reply',
                    "OrigHeader", [
                        'From' => $from,
                        'To' => 'Postmaster',
                        'Subject' => $subject,
                        'Body' => $body,
                    ]
                ]);
                break;
        }

        $articleID = $this->send($request);

        return $articleID;
    }

alexus
OTRS Гуру
Сообщения: 4736
Зарегистрирован: 20 сен 2010, 18:17
Откуда: Москва
Благодарил (а): 27 раз
Поблагодарили: 30 раз

Re: Проблема при создании Article для созданного тикета. (PHP-SOAP-OTRS 6)

Сообщение alexus » 23 окт 2018, 14:00

https://github.com/OTRS/otrs/tree/rel-6 ... le/Backend - тут есть код, по нему всё понятно должно быть
С уважением,
Алексей Юсов

Prod: OTRS ITSM 5.0.14 on CentOS 7 x64 Linux with MySQL 5.7

Radiant System OTRS Intergrator RU
Radiant System OTRS Intergrator EN
Хотите внедрить OTRS? Спросите меня как!
Следите за нашими новостями на Facebook

denisdanilenko
OTRS Новобранец
Сообщения: 2
Зарегистрирован: 23 окт 2018, 12:40
Благодарил (а): 1 раз

Re: Проблема при создании Article для созданного тикета. (PHP-SOAP-OTRS 6)

Сообщение denisdanilenko » 23 окт 2018, 14:33

alexus писал(а):
23 окт 2018, 14:00
https://github.com/OTRS/otrs/tree/rel-6 ... le/Backend - тут есть код, по нему всё понятно должно быть
Спасибо!

Сразу тогда вопрос.
Вот там в коде идет в начале

Код: Выделить всё

package Kernel::System::Ticket::Article::Backend::Base;
Но а как быть, если ОТРС на одном сервера, а скрипт выполняется на другом.
как я понимаю, такая конструкция не должна же работать?

Ответить