Пошаговая настройка веб-сервисов в OTRS 5

В этой статье расскажу, как настроить веб-сервис в OTRS 5, где и что вписать и как через SoapUI проверить работоспособность сервиса. Настраивать будем SOAP, а не REST. Настраиваем OTRS как провайдера, т.е. система будет по запросу отдавать данные. Если заинтересовало, то прошу под кат.
b694cc9a82d64fa89a41e5e49c809c11.png


Итак, установили мы замечательный OTRS, начали в нем работать. И тут руководству потребовалась отчетность. И не какая-то, а весьма сложная. Вместо того, чтобы глубоко пилить внутренние отчеты, решили просто с системы по веб-сервису забирать данные и в отдельной программе строить отчеты.

Итак, переходим в администрирование — > веб-сервисы.
a4e76712c67b4db696f8781969224965.png
14ca1f58f4e6428abd14873607d6a6f6.png

Создаем новый веб сервис:
1) Вписываем название интерфейса
2) Выбираем сетевой транспорт HTTP: SOAP
3) Жмем «Сохранить».
dd82ce98c4c1491ea3ff751e1c10bcd0.png

После сохранения есть возможность выбрать Operations.
Нам нужны были всего три для работы с тикетами:
SessionCreate  — позволяет создать сессию и в дальнейшем использовать ее ID, а не передавать логин-пароль каждый раз.
TicketSearch  — позволяет найти тикеты по заданным критериям (в нашем случае открытые и закрытые за определенный период). Возвращает список ID тикетов (причем именно ID, а не номеров).
TicketGet  — позволяет по ID тикета получить конкретный тикет (либо несколько).

7762a77530ce44bda0f5f3c1875704a0.png

При создании Operation вы указываете имя, по которому в дальнейшем будете ее вызывать.
54aac9c0ad704e37bd260fe0da89182e.png

И последний штрих — идете в конфигурирование сетевого транспорта и задаете пространство имен и длину сообщения. Длина 1000 нас вполне устроила.
9602be20b7584b60b0ed547de7cad3b5.png

161702d22663460c89b9d2d77ee56637.png

Пространство имен представляет собой следующую ссылку:

example.com/otrs/nph-genericinterface.pl/Webservice/InterfaceName

Где example.com — ваш домен, InterfaceName  — имя вашего интерфейса.
Если настроено шифрование, то https, а не http.

Все, со стороны OTRS все настройки сделаны.

Теперь как обратиться к сервису снаружи? Для этого ставим SoapUI, берем wsdl схему и отдаем ее в SoapUI.
В интернете многие жаловались, что OTRS сам не отдает WSDL схему, и это, на самом деле, проблема.
Спасибо добрым людям, которые ее выложили в общий доступ.

github.com/OTRS/otrs/tree/master/development/webservices

Так что немножко переделываем предложенный ими файл под нас.

В заголовки файла GenericTicketConnectorSOAP.wsdl меняем definitions name на имя вашего веб сервиса.

 

Далее во всех soap: operation в soapAction меняете http: //www.otrs.org/TicketConnector на ваш NameSpace.

И в самом конце документа в wsdl: port указываете ваш NameSpace в location.



Запускаете Soap UI, создаете новый SOAPProject, указываете файл со схемой.
В результате должно получиться что-то вроде такого. Базовые запросы SoapUI нагенерирует автоматически.
a5ee728956d94f128fa337c740ff3f3b.png
И финальный аккорд — проверка работоспособности сервиса. Сервис вернул нам SessionID, который уже можно использовать в других запросах, не передавая каждый раз логин и пароль.
a543119a23b74f1aa21e3c9ac4165e3b.png

Некоторые нюансы:
1) Как уже говорилось, OTRS не отдает WSDL схему, что весьма неудобно.
2) По запросу TicketSearch отдает не более 500 ID-шников. Так что если вам должно прийти более 500, то все равно вы получите только 500. Не нашел, как это можно обойти.
3) Чтобы в TicketGet отдавал SolutionDiffInMin (на сколько время решения заявки отличается от целевого по SLA), нужно в запросе передать в Extended что-нибудь.

Если у кого-то есть интересные замечания, комментарии — welcome:).

Комментарии (0)

© Habrahabr.ru