Краткое пошаговое руководство получению отчётов о информировании абонентов
В качестве клиента используем бесплатную программу SOAP UI, но принцип работы сохраняется и при использовании других продуктов. В том числе и при разработке ПО на .NET (Microsoft придумала стандарт SOAP и их средства как никакие другие подходят для этого). Программа существует под все популярные платформы и не имеет ограничений использования.
Руководство по программе можно найти на официальном сайте
В SOAP UI создаём новый проект и в качестве Initial WSDL используем ссылку из документации: http://kmis.callbox.biz/?wsdl
В этот момент SOAP UI (как и библиотека .NET) выгрузит из WSDL все приложения. Их три:
- get_report - получение статистики
- notification - оповещение абонента
- upload_audio - загрузка файла на сервис
Также программа выгрузит все методы для всех приложений. На текущий момент в каждом приложении 1 метод.
При переходе к редактированию метода Request приложения get_report откроется полный текст запроса с комментариями к нему:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:kmis="kmis.services" xmlns:ser="services.custom_types" xmlns:sch="http://spyne.io/schema">
<soapenv:Header/>
<soapenv:Body>
<kmis:get_report>
<kmis:request_data>
<ser:customer_id>?</ser:customer_id>
<ser:request_ids>
<!--1 or more repetitions:-->
<sch:request_id>?</sch:request_id>
</ser:request_ids>
</kmis:request_data>
</kmis:get_report>
</soapenv:Body>
</soapenv:Envelope>
Вопросительные знаки требуют ввода данных.
Первая строка с вопросительным знаком идентифицирует пользователя системы:
<ser:customer_id>?</ser:customer_id>
Вместо вопросительного знака необходимо в данную строку подставить UUID, выданный администратором системы. Пример корректного заполнения:
<ser:customer_id>394ffb3b-20f5-4046-b6b2-758103698fe7</ser:customer_id>
Следующий блок определяет все UUID запросов, по которым необходимо получить информацию.
Пример корректного заполнения блока:
<ser:request_ids>
<!--1 or more repetitions:-->
<sch:request_id>7a9ef363-1977-437e-b134-cfdffec658f7</sch:request_id>
</ser:request_ids>
В ответ на этот запрос сервер сообщит статус этого запроса:
<soap11env:Envelope xmlns:s0="services.custom_types" xmlns:soap11env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="kmis.services">
<soap11env:Body>
<tns:get_reportResponse>
<tns:get_reportResult>
<s0:audio_reports>
<s0:CallReport>
<s0:request_id>7a9ef363-1977-437e-b134-cfdffec658f7</s0:request_id>
<s0:recipient_phone>7212921006</s0:recipient_phone>
<s0:status>success</s0:status>
<s0:attempt_count>1</s0:attempt_count>
<s0:received_date>2017-08-11T17:22:41.091847+06:00</s0:received_date>
<s0:last_attempt>2017-08-13T17:44:58.703631+06:00</s0:last_attempt>
<s0:call_duration>14</s0:call_duration>
</s0:CallReport>
</s0:audio_reports>
<s0:ts_reports/>
</tns:get_reportResult>
</tns:get_reportResponse>
</soap11env:Body>
</soap11env:Envelope>
Разберём ответ по строкам:
Первая строка возвращает ID запроса:
<s0:request_id>7a9ef363-1977-437e-b134-cfdffec658f7</s0:request_id>
Вторая строка возвращает номер абонента, для которого было адресовано это оповещение:
<s0:recipient_phone>7212921006</s0:recipient_phone>
Третья строка возвращает статус оповещения:
<s0:status>success</s0:status>
Подробнее статусы описаны в документации
Следующая строка показывает количество совершённых попыток:
<s0:attempt_count>1</s0:attempt_count>
Следующая строка показывает точное время получения запроса на оповещение:
<s0:received_date>2017-08-13T17:44:41.091847+06:00</s0:received_date>
Сделующая строка показывает точную дату и время последней попытки:
<s0:last_attempt>2017-08-13T17:44:58.703631+06:00</s0:last_attempt>
Последняя строка показывает общую продолжительность разговора:
<s0:call_duration>14</s0:call_duration>
