Проблема при создании 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 Гуру
Сообщения: 4745
Зарегистрирован: 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
Группа OTRS Community в Teleram
Хотите внедрить OTRS? Спросите меня как!

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;
Но а как быть, если ОТРС на одном сервера, а скрипт выполняется на другом.
как я понимаю, такая конструкция не должна же работать?

Ответить