2014-01-15 5 views
1

Я пытаюсь запросить некоторые данные о билетах от OTRS Ticketing system, через . Я попытался найти в Интернете без везения в отношении к «TicketSearch()» оператора в OTRS APIПомощь с вызовом PHP SOAP - построение вызова на основе документации API

Я знаю, что соединение SOAP прекрасно, так как следующий «User» объект и «GetUserData()» оператор реагирование с действительными результатами и все данные пользователей:

try { 
$result = $client->__soapCall("Dispatch", array($user, $pass, "UserObject", "GetUserData", "UserID" , 2)); 
} 

Теперь, когда я изменить что SOAP-вызов от поиска пользователей к поиску билетов, I'm получаю товару «NULL».

try { 
$result = $client->__soapCall("Dispatch", array($user, $pass, "TicketObject", "TicketSearch", "Result", array("ARRAY","HASH","COUNT"), "QueueIDs", 10, "StateType", "Open")); 
} 

Это не удивительно для меня, как я не знаю, как перевести следующее требуемое значение в запрос SOAP:

Result => «ARRAY» || 'HASH' || 'COUNT'

Вы можете просмотреть соответствующие данные API documentation here, а затем выполнить поиск 'TicketSearch()'. Любая помощь в исправлении этого запроса будет оценена по достоинству. Моя конечная цель - получить список билетов в очереди № 10.

ответ

2

Прежде всего, || является логическим или оператором в perl. Таким образом, фрагмент документации, который вы указали, означает COUNT или ARRAY или HASH; вы должны выбрать один. И если вы используете COUNT, вы просто вернете количество билетов, которые соответствуют вашим критериям поиска.

Во-вторых, вам необходимо предоставить идентификатор пользователя агента, выполняющего поиск, если у вас его нет (поскольку ваш скрипт предназначен для какой-либо интеграции), вы всегда можете использовать идентификационный номер 1; который имеет доступ ко всем очередям.

Наконец, параметр QueueIDs принимает массив идентификаторов очереди; поэтому вы можете искать несколько идентификаторов очереди с единственным параметром.

$result = $client->__soapCall("Dispatch", array($user, $pass, 
    "TicketObject", "TicketSearch", 
    "UserID", 1, 
    "Result", "ARRAY", 
    "QueueIDs", array(1), 
    "StateType", "Open" 
)); 

Обратите внимание, что интерфейс RPC имеет низкий уровень, он предоставляет необработанный API OTRS. Это не очень полируется, и иногда вам нужно много работать, чтобы получить нужные вам данные, с другой стороны, это очень мощно.

«Новый» интерфейс - это веб-интерфейс WSDL; это гораздо более инкапсулированное и чистое. Он имеет два недостатка: 1; PHP не поддерживает использование WSDL так же хорошо, как, например, .NET или Java, и 2; он предоставляет только небольшую часть API OTRS, только для того, чтобы создавать/искать/изменять билеты и обрабатывать FAQ (База знаний). Такие вещи, как добавление/удаление очередей, служб или клиентов, пока недоступны.

+0

Thanks MichielB, я ничего не видел в документации API, которую вы должны были иметь «UserID», 1 '. Сейчас все работает. –

+0

Идентификатор пользователя действительно необходим, он находится в (довольно большой) документации для TicketSearch: # пользовательский поиск (требуется UserID) UserID => 123, Permission => 'ro' || 'rw', http://otrs.perl-services.de/docs/otrs/rel-3_3/kernel_system_ticketsearch.html – MichielB

+0

@MichielB Как я могу отображать все новые билеты в otrs с помощью мыльного api в php ?? может у дать мне некоторые идеи –