Протокол SOAP

SOAP протокол (Simple Object Access Protocol ) — простой протокол доступа к объектам.
Сейчас протокол используется для обмена произвольными сообщениями в формате XML, а не только для вызова процедур. SOAP является расширением протокола XML-RPC.

При интеграции по SOAP с сервером SigmasSMS доступен ряд возможностей. SOAP протокол делает возможным не только подключение к шлюзу для рассылки и приема sms сообщений, но и получение информации с сервера SIGMA messaging о состоянии лицевого счета/счетов, работа со списками контактов, управление сессиями подключения.

С помощью SOAP протокола в нашей системе отрабатываются следующие процедуры:
Управление контактами и группами контактов
Зарос информация о состоянии счетов пользователя системы
Отправка сообщений на произвольный номер
Отправка сообщений адресату из адресной книги или группе
Получение статусов отправленных сообщений
Прием входящих сообщений
Управление сессией подключения

Для настройки API через SOAP протокол необходимо зарегистрироваться в системе SIGMA messaging или обратиться к нашим специалистам любым удобным способом.

Смотрите также:

Протоколы

Справочники

1. Параметры подключения

WSDL (любой из ниже перечисленных):

2. Соглашения

2.1 Входные параметры

Для межъязыковой совместимости все наборы входных параметров обернуты классами.
Далее по тексту:

  • Если не указаны входные параметры, значит, метод не имеет их

2.2 Возвращаемые данные

Методы делятся на два типа:

  • не возвращают никаких данных — данные методы используются для сигнализации
  • возвращают структурированные данные

Базовый класс для всех возвращаемых данных содержит:

errorCode — целое знаковое число
errorDescription — строка описания

Принято следующее соглашение, верное для всех методов:

  • Если errorCode = 0 значит операция выполнилась успешно и, в зависимости от метода, производный класс может содержать дополнительную информацию
  • Если вызов метода завершился ошибкой, то errorCode отлично от 0, и в поле errorDescription хранится описание ошибки, и, в зависимости от метода, производный класс может содержать дополнительную информацию

Далее по тексту:

  • Если не указано возвращаемое значение, значит, метод возвращает базовый класс
  • Сигнальные методы указываются отдельно
3. Методы

3.1 Управление сессией

3.1.1 logon

Начало логической сессии работы с системой.
Если на текущий момент сессия уже была начата, то она закрывается и производится попытка начать новую сессию (которая может не увенчаться успехом)

Входные параметры:

  • userName — логин пользователя
  • password — пароль пользователя

3.1.2 logoff (сигнальный)

Вызов данного сигнального метода сообщает системе о прекращении работы с ней

3.1.3 getSessionState

Метод проверки текущего состояния сессии
Возвращаемые значения:

  • boolResult — состояние сессии
  • strResult — если состояние сессии активно, то возвращается имя пользователя, который начал сессию
3.2 Управление группами контактов

Пользователю доступно управление только публичными группами контактов

3.2.1 addPhoneGroup

Добавление группы
Входные параметры:

  • name — название группы
  • code — код группы (данный код не требуется для работы по средствам SOAP протокола, но может быть использован в других протоколах, например HTTP)

Возвращаемое значение:

  • intResult — идентификатор группы

3.2.2 removePhoneGroup

Удаление группы по её идентификатору
Входные параметры:

  • id — идентификатор группы

3.2.3 modifyPhoneGroup

Изменение настроек группы
Входные параметры:

  • id — идентификатор группы
  • newName — новое название группы, если параметр передан пустым, то данное поле меняться не будет
  • newCode — новый код группы, если параметр передан пустым, то данное поле меняться не будет

3.2.4 clearPhoneGroup

Удаляет всех контактов из группы.
Не физическое удаление контактов, а удаление связи Контакт — Группа (все контакты, не входящие ни в одну группу, автоматически удаляются в течение дня)
Входные параметры:

  • id — идентификатор группы

Возвращаемое значение:

  • intResult — количество удаленных контактов

3.2.5 getPhoneGroupList

Получение списка групп контрагента
Возвращаемое значение:

  • listIntResult — список идентификаторов групп

3.2.6 getPhoneGroupInfo

Получение информации о группе по её идентификатору
Входные параметры:

  • id — идентификатор группы

Возвращаемые значения:

  • strResult — название группы
  • str2Result — код группы
3.3 Управление контактами

3.3.1 addPhone

Добавление контакта
Входные параметры:

phone — телефон
name — название контакта для отображения
desc — описание контакта
eMail — почтовый ящик
gender — пол (возможны варианты f либо m)
fName — имя
mName — отчество
lName — фамилия
position — занимаемая должность
iCQ — номер ICQ
custom1 — произвольное текстовое поле
custom2 — произвольное текстовое поле
allowSince — время, раньше которого нельзя посылать сообщения (в секундах от начала дня — значения между 0 и 86399)
allowTill — время, после которого нельзя посылать сообщения (в секундах от начала дня — значения между 0 и 86399)
groupId — список идентификаторов групп, в которые добавить контакт

Возвращаемое значение:

  • intResult — идентификатор контакта

Если список групп пустой, то контакт будет добавлен без вхождения в группы, но будет автоматически удален системой при следующей чистке.

3.3.2 modifyPhone

Изменения данных контакта
Входные параметры:

  • id — идентификатор телефона
  • phone — новый номер телефона, если пустое, то значение поля не меняется
  • name — новое название контакта для отображения, если пустое, то значение поля не меняется
  • desc — новое описание контакта, если пустое, то значение поля не меняется
  • eMail — новый почтовый ящик, если пустое, то значение поля не меняется
  • gender — новый пол (возможны варианты f либо m), если пустое, то значение поля не меняется
  • fName — новое имя, если пустое, то значение поля не меняется
  • mName — новое отчество, если пустое, то значение поля не меняется
  • lName — новое фамилия, если пустое, то значение поля не меняется
  • position — новая занимаемая должность, если пустое, то значение поля не меняется
  • iCQ — новый номер ICQ, если пустое, то значение поля не меняется
  • custom1 — новое значение произвольного текстового поля, если пустое, то значение поля не меняется
  • custom2 — новое значение произвольного текстового поля, если пустое, то значение поля не меняется
  • allowSince — новое время, раньше которого нельзя посылать сообщения (в секундах от начала дня — значения между 0 и 86399), если пустое, то значение поля не меняется
  • allowTill — новое время, после которого нельзя посылать сообщения (в секундах от начала дня — значения между 0 и 86399), если пустое, то значение поля не меняется

3.3.3 addPhoneToGroup

Добавление контакта в группу
Входные параметры:

  • phoneId — идентификатор контакта
  • groupId — идентификатор группы

3.3.4 removePhoneFromGroup

Удаление контакта из группы
Входные параметры:

  • <phoneId — идентификатор контакта
  • <groupId — идентификатор группы

 

3.3.5 getPhoneListInGroup

Получение списка контактов в группе
Входные параметры:

  • id — идентификатор группы

Возвращаемое значение:

  • listIntResult — список идентификаторов контактов

3.3.6 getGroupListByPhoneId

Получение списка групп, в которые входит контакт
Входные параметры:

  • id — идентификатор контакта

Возвращаемое значение:

  • listIntResult — список идентификаторов групп

3.3.7 searchPhone

Поиск по контактам (по части вхождения в телефоне, или имени, или фамилии, или отчестве, или названии)
Входные параметры:

  • searchString — часть строки для поиска (не допускается пустое, при поиске обрезается до 32 символов)

Возвращаемое значение:

  • listIntResult — список идентификаторов контактов

3.3.8 getPhoneInfo

Получение информации о контакте
Входные параметры:

  • id — идентификатор контакта

Возвращаемое значение:

  • phone — телефон
  • name — название контакта для отображения
  • desc — описание контакта
  • eMail — почтовый ящик
  • gender — пол (возможны варианты f либо m)
  • fName — имя
  • mName — отчество
  • lName — фамилия
  • position — занимаемая должность
  • iCQ — номер ICQ
  • custom1 — произвольное текстовое поле
  • custom2 — произвольное текстовое поле
  • allowSince — время раньше которого нельзя посылать сообщения (в секундах от начала дня — значения между 0 и 86399)
  • allowTill — время после которого нельзя посылать сообщения (в секундах от начала дня — значения между 0 и 86399)

3.3.9 setBirthdayToPhone

Установка дня рождения контакта либо обновление ранее установленной даты
Входные параметры:

  • id — идентификатор контакта
  • specialDate — дата дня рождения

3.3.10 removeBirthdayFromPhone

Удаление дня рождения контакта
Входные параметры:

  • id — идентификатор контакта

3.3.11 getPhoneBirthday

Получение дня рождения контакта
Входные параметры:

  • id — идентификатор контакта

Возвращаемое значение:

  • dTResult — дата рождения контакта
3.4 Информация по счетам

3.4.1 getAccountList

Получение списка счетов контрагента
Возвращаемое значение:

  • listIntResult — список типов счетов контрагента

3.4.2 getAccountInfo

Получение информации о счете по его типу
Входные параметры:

  • id — идентификатор группы

Возвращаемые значения:

  • name — название
  • actualBalance — фактический остаток
  • overDraft — размер овердрафта
  • active — признак активности
  • suspended — признак заморозки счета
3.5 Простая отправка сообщений

3.5.1 sendSimpleSms

Простая отправка SMS сообщения
Входные параметры:

  • sender — имя отправителя
  • phone — номер получателя
  • text — текст (без возможности использовать подстановки)
  • allowSince — время, раньше которого нельзя посылать сообщения (в секундах от начала дня — значения между 0 и 86399)
  • allowTill — время, после которого нельзя посылать сообщения (в секундах от начала дня — значения между 0 и 86399)
  • usePhoneTime — признак, указывающий, что ограничение по времени определяется по времени абонента

Возвращаемое значение:

  • strResult— идентификатор сообщения

3.5.2 sendSimpleFlashSms

Простая отправка flash SMS сообщения
Входные параметры:

  • sender — имя отправителя
  • phone — номер получателя
  • text — текст (без возможности использовать подстановки)
  • allowSince — время, раньше которого нельзя посылать сообщения (в секундах от начала дня — значения между 0 и 86399)
  • allowTill — время, после которого нельзя посылать сообщения (в секундах от начала дня — значения между 0 и 86399)
  • usePhoneTime — признак, указывающий, что ограничение по времени определяется по времени абонента

Возвращаемое значение:

  • strResult — идентификатор сообщения

3.5.3 sendSimpleWapPushSms

Простая отправка WAP push SMS сообщения
Входные параметры:

  • sender — имя отправителя
  • phone — номер получателя
  • text — текст (без возможности использовать подстановки)
  • uRL — url
  • allowSince — время, раньше которого нельзя посылать сообщения (в секундах от начала дня — значения между 0 и 86399)
  • allowTill — время, после которого нельзя посылать сообщения (в секундах от начала дня — значения между 0 и 86399)
  • usePhoneTime — признак, указывающий, что ограничение по времени определяется по времени абонента
  • expiredTime — время истечения действия ссылки

Возвращаемое значение:

  • strResult— идентификатор сообщения
3.6 Отправка сообщений контакту

3.6.1 sendSms

Отправка СМС сообщения контакту
Входные параметры:

  • id — идентификатор получателя
  • sender — имя отправителя
  • text — текст (с возможностью использования подстановок)
  • allowSince — время, раньше которого нельзя посылать сообщения (в секундах от начала дня — значения между 0 и 86399)
  • allowTill — время, после которого нельзя посылать сообщения (в секундах от начала дня — значения между 0 и 86399)
  • usePhoneTime — признак, указывающий, что ограничение по времени определяется по времени абонента

Возвращаемое значение:

  • strResult— идентификатор сообщения

3.6.2 sendFlashSms

Отправка flash СМС сообщения контакту
Входные параметры:

  • id — номер получателя
  • sender — имя отправителя
  • text — текст (с возможностью использования подстановок)
  • allowSince — время, раньше которого нельзя посылать сообщения (в секундах от начала дня — значения между 0 и 86399)
  • allowTill — время, после которого нельзя посылать сообщения (в секундах от начала дня — значения между 0 и 86399)
  • usePhoneTime — признак, указывающий, что ограничение по времени определяется по времени абонента

Возвращаемое значение:

  • strResult— идентификатор сообщения

3.6.3 sendWapPushSms

Отправка WAP push сообщения контакту
Входные параметры:

  • id — номер получателя
  • sender — имя отправителя
  • text — текст (с возможностью использования подстановок)
  • uRL — url
  • allowSince — время, раньше которого нельзя посылать сообщения (в секундах от начала дня — значения между 0 и 86399)
  • allowTill — время, после которого нельзя посылать сообщения (в секундах от начала дня — значения между 0 и 86399)
  • usePhoneTime — признак, указывающий, что ограничение по времени определяется по времени абонента
  • expiredTime — время истечения действия ссылки

Возвращаемое значение:

  • strResult— идентификатор сообщения
3.7 Отправка сообщений группе

3.7.1 sendSmsToGroup

Отправка СМС сообщения группе
Входные параметры:

  • id — идентификатор группы
  • sender — имя отправителя
  • text — текст (с возможностью использования подстановок)
  • gender — пол получателя для фильтрации контактов в группе, если пол не указан, то сообщение отправляется всей группе
  • allowSince — время, раньше которого нельзя посылать сообщения (в секундах от начала дня — значения между 0 и 86399)
  • allowTill — время, после которого нельзя посылать сообщения (в секундах от начала дня — значения между 0 и 86399)
  • usePhoneTime — признак, указывающий, что ограничение по времени определяется по времени абонента

Возвращаемое значение:

  • id — идентификатор группы рассылки
  • sentCount — количество контактов, которым было отправлено сообщение
  • notSentCount — количество контактов, которым НЕ было отправлено сообщение

INFO Если группа содержит более 1000 контактов, вызов метода вернет ошибку, и сообщения отправлены не будут

3.7.2 sendFlashSmsToGroup

Отправка flash СМС сообщения группе
Входные параметры:

  • id — идентификатор группы
  • sender — имя отправителя
  • text — текст (с возможностью использования подстановок)
  • gender — пол получателя для фильтрации контактов в группе, если пол не указан, то сообщение отправляется всей группе
  • allowSince — время, раньше которого нельзя посылать сообщения (в секундах от начала дня — значения между 0 и 86399)
  • allowTill — время, после которого нельзя посылать сообщения (в секундах от начала дня — значения между 0 и 86399)
  • usePhoneTime — признак, указывающий, что ограничение по времени определяется по времени абонента

Возвращаемое значение:

  • id — идентификатор группы рассылки
  • sentCount — количество контактов, которым было отправлено сообщение
  • notSentCount — количество контактов, которым НЕ было отправлено сообщение

INFO Если группа содержит более 1000 контактов, вызов метода вернет ошибку, и сообщения отправлены не будут

3.7.3 sendWapPushSmsToGroup

Отправка WAP push сообщения группе
Входные параметры:

  • id — идентификатор группы
  • sender — имя отправителя
  • text — текст (с возможностью использования подстановок)
  • gender — пол получателя для фильтрации контактов в группе, если пол не указан, то отправляется всей группе
  • uRL — url
  • allowSince — время, раньше которого нельзя посылать сообщения (в секундах от начала дня — значения между 0 и 86399)
  • allowTill — время, после которого нельзя посылать сообщения (в секундах от начала дня — значения между 0 и 86399)
  • usePhoneTime — признак, указывающий, что ограничение по времени определяется по времени абонента
  • expiredTime — время истечения действия ссылки

Возвращаемое значение:

  • id — идентификатор группы рассылки
  • sentCount — количество контактов, которым было отправлено сообщение
  • notSentCount — количество контактов, которым НЕ было отправлено сообщение

INFO Если группа содержит более 1000 контактов, вызов метода вернет ошибку, и сообщения отправлены не будут

3.8 Получение статусов отправленных сообщений

3.8.1 getSingleStatus

Запрос статуса одиночного сообщения
Входные параметры:

  • id — идентификатор сообщения

Возвращаемое значение:

  • status — состояние сообщения
  • count — количество частей сообщений для тарификации
  • closeTime — время получения финального статуса (время может быть возращено в формате UTC)

Статусы могут быть следующие:
SMS_STATUS_SCHEDULED = 0 — сообщение в очереди отправки
SMS_STATUS_ENROUTE = 1 — сообщение передано оператору
SMS_STATUS_DELIVERED = 2 — сообщение доставлено абоненту (финальный статус)
SMS_STATUS_EXPIRED = 3 — сообщение было передано оператору, но не доставлено абоненту в отведенный период времени (финальный статус)
SMS_STATUS_DELETED = 4 — сообщение удалено (финальный статус)
SMS_STATUS_UNDELIVERABLE = 5 — сообщение не доставлено (финальный статус)
SMS_STATUS_ACCEPTED = 6 — сообщение принято
SMS_STATUS_UNKNOWN = 7 — состояние сообщения не известно (финальный статус)
SMS_STATUS_REJECTED = 8 — сообщение отклонено оператором (финальный статус)
SMS_STATUS_ABORTED = 20 — сообщение отменено (финальный статус)
SMS_STATUS_ERROR = 21 — сообщение не было отправлено из-за ошибки (финальный статус)
SMS_STATUS_TIMEOUT = 22 — сообщение не было передано оператору, и истек период отправки данного сообщения (финальный статус)

3.8.2 getGroupStatus

Запрос статуса сообщений по идентификатору группы рассылки
Входные параметры:

  • id — идентификатор рассылки по группе (не путать с идентификатором группы)

Возвращаемое значение:

  • list — список статусов, который содержит следующие поля:
    • id — идентификатор сообщения
    • status — статус сообщения
    • count — количество частей в сообщение
    • closeTime — время закрытия сообщения (время может быть возращено в формате UTC)

Статусы могут быть следующие:
SMS_STATUS_SCHEDULED = 0 — сообщение в очереди отправки
SMS_STATUS_ENROUTE = 1 — сообщение передано оператору
SMS_STATUS_DELIVERED = 2 — сообщение доставлено абоненту (финальный статус)
SMS_STATUS_EXPIRED = 3 — сообщение было передано оператору, но не доставлено абоненту в отведенный период времени (финальный статус)
SMS_STATUS_DELETED = 4 — сообщение удалено (финальный статус)
SMS_STATUS_UNDELIVERABLE = 5 — сообщение не доставлено (финальный статус)
SMS_STATUS_ACCEPTED = 6 — сообщение принято
SMS_STATUS_UNKNOWN = 7 — состояние сообщения не известно (финальный статус)
SMS_STATUS_REJECTED = 8 — сообщение отклонено оператором (финальный статус)
SMS_STATUS_ABORTED = 20 — сообщение отменено (финальный статус)
SMS_STATUS_ERROR = 21 — сообщение не было отправлено из-за ошибки (финальный статус)
SMS_STATUS_TIMEOUT = 22 — сообщение не было передано оператору, и истек период отправки данного сообщения (финальный статус)

3.9 Входящие сообщения

3.9.1 getInboxList

Получение списка идентификаторов входящих ящиков
Возвращаемое значение:

  • listIntResult — список идентификаторов входящих ящиков

3.9.2 getInboxInfo

Получение информации по входящему ящику
Входные параметры:

  • id — идентификатор ящика

Возвращаемое значение:

  • number — входящий номер
  • prefix — результирующий префикс
  • active — состояние активности
  • desc — описание
  • confirmed — состояние подтверждения

3.9.3 getInSms

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

  • text — фильтр текста (будут выведены только сообщения, содержащие данный текст) (может быть пустым, если пусто, то сообщения не фильтруются по данному признаку)
  • status — фильтр статуса (может быть пустым, если пусто, то сообщения не фильтруются по данному признаку)
  • since — нижняя граница периода (может быть пустым, если пусто, то сообщения не фильтруются по данному признаку)
  • till — верхняя граница периода (может быть пустым, если пусто, то сообщения не фильтруются по данному признаку)
  • id — идентификатор ящика (список идентификаторов можно получить с помощью функции getInboxList)

Возвращаемое значение:

  • list — список входящих сообщений, которые содержат следующие поля:
    • id — идентификатор сообщения
    • status — статус
    • sender — номер отправителя
    • target — номер получателя
    • text — текст сообщения
    • created — дата поступления сообщения

Статусы сообщений:
N — New — новый, автоматически после получения помечается на R
R — Read — прочитанный
A — Reply — на это сообщение ответили через WEB интерфейс
F — Forward — данное сообщение было переправлено по протоколу пользователю
M — Forward and Reply — на данное сообщение ответили WEB интерфейс, и также оно было переправлено по протоколу пользователю

4. Ознакомьтесь с примерами использования:
4.1 C#
4.2 PHP
4.3 Java (axis2)

4. Примеры использования

4.1 C#

Для начала необходимо из WSDL, расположенном на сервере, получить все классы для работы, для этого необходимо воспользоваться утилитой wsdl, входящей в состав Microsoft SDKs:
«C:\Program Files\Microsoft SDKs\Windows\v7.0\Bin\wsdl» /l:cs /protocol:SOAP /out:»C:\SOAPTelAccess.cs» http://api.sigmasms.ru/public/soap/index.php?wsdl
— создается файл, который содержит основной класс TelAccess, предоставляющий все выше описанные методы, и дополнительные вспомогательные классы, необходимые для работы.
Работа по данному протоколу разделена на два уровня — физическая и логическая сессия, обеспечением физической сессии занимаются системные компоненты. Для поддержания единой физической сессии первым делом необходимо создание cookie:
CookieContainer cookie = new CookieContainer();

— данный cookie необходимо будет указывать для всех объектов класс TelAccess:
TelAccess soapclient = new TelAccess(); soapclient.CookieContainer = cookie;

— если не использовать cookie, сервер будет считать для разных объектов класса TelAccess различные физической сессии
Начало логической сессии происходит по средствам авторизация методом logon:
InputLogon Param = new InputLogon(); Param.userName = «10234.3»; Param.password = «123»; ReturnValueBase rv = soapclient.logon(Param);
— если авторизация прошла успешно, то в rv.errorCode возвращается 0, в противном случае код ошибки, а в rv.errorDescription текстовое описание ошибки.
Если в течение 1 минуты не было вызвано ни одного метода, логическая сессия будет закрыта автоматически. Также логическую сессию можно закрыть сигнальным методом logoff.
Узнать состояние логической сессии можно, вызвав метод getSessionState
ReturnValueBooleanString rv = TA.getSessionState().@return;

— если метод выполнился успешно, то логическая переменная rv.boolResult говорит о том, активна ли сейчас логическая сессия, а rv.strResult о том, какой пользователь инициировал данную логическую сессию.

INFO При первом вызове любого метода происходит инициализация всех необходимых объектов и компонентов в C#, это может занять до 10-15 секунд, дальнейшие вызовы методов происходят без задержек.
Пример 1
Отправка простого сообщения:

CookieContainer cookie = new CookieContainer();
TelAccess soapclient = new TelAccess();soapclient.CookieContainer = cookie;// Init session
InputLogon Param1 = new InputLogon();
Param1.userName = «11234.5»;
Param1.password = «123»;
ReturnValueBase rv1 = soapclient.logon(Param1);if (rv1.errorCode != 0)
throw new Exception(rv1.errorDescription);// Send simple sms
InputSendSimpleSms Param2 = new InputSendSimpleSms();
Param2.sender = «test-sms»;
Param2.phone = «79876543210»;
Param2.text = «Тестовое сообщение»;
Param2.allowSince = 3600;
Param2.allowSinceSpecified = true;
Param2.allowTill = 72000;
Param2.allowTillSpecified = true;
Param2.usePhoneTime = checkBoxUsePhoneTime.Checked;
Param2.usePhoneTimeSpecified = true;

ReturnValueString rv2 = soapclient.sendSimpleSms(Param2);
if (rv2.errorCode != 0)
throw new Exception(rv2.errorDescription);
else
MessageBox.Show(«Message id: » + rv2.strResult);

// Close session
soapclient.logoff();

Пример 2
Добавление группы

CookieContainer cookie = new CookieContainer();
TelAccess soapclient = new TelAccess();soapclient.CookieContainer = cookie;// Logon
InputLogon Param1 = new InputLogon();
PParam1.userName = «11234.5»;
Param1.password = «123»;
ReturnValueBase rv1 = soapclient.logon(Param1);if (rv1.errorCode != 0)
throw new Exception(rv1.errorDescription);// Add phone group
InputAddPhoneGroup Param2 = new InputAddPhoneGroup();
Param2.name = «Test group»;

ReturnValueInt rv2 = soapclient.addPhoneGroup(Param2);
if (rv2.errorCode != 0)
throw new Exception(rv2.errorDescription);
else
MessageBox.Show(«Group id: » + rv2.intResult);

Пример 3
Добавление контакта (опционально помещение данного контакта в 4 некоторые группы контактов)

CookieContainer cookie = new CookieContainer();
TelAccess soapclient = new TelAccess();soapclient.CookieContainer = cookie;// Logon
InputLogon Param1 = new InputLogon();
PParam1.userName = «11234.5»;
Param1.password = «123»;
ReturnValueBase rv1 = soapclient.logon(Param1);if (rv1.errorCode != 0)
throw new Exception(rv1.errorDescription);// Add phone group
InputAddPhoneGroup Param2 = new InputAddPhoneGroup();
Param2.name = «Test group»;

ReturnValueInt rv2 = soapclient.addPhoneGroup(Param2);
if (rv2.errorCode != 0)
throw new Exception(rv2.errorDescription);
else
MessageBox.Show(«Group id: » + rv2.intResult);

4.2 PHP

Для работы по протоколу SOAP в PHP необходимо подключить модуль php_soap в php.ini
Для Windows надо добавить следующие строчки в php.ini
[PHP_SOAP] extension=php_soap.dll

Для Linux надо добавить следующие строчки в php.ini
[PHP_SOAP] extension=soap.so
Пример 1
Отправка простого сообщения:

<?php
$objClient = new SoapClient(«http://api.sigmasms.ru/public/soap/«, array(‘trace’ => true));

$params = array(‘param’ => array(‘userName’ => «XXXXX.X», ‘password’ => «your_password»));
$objData = $objClient->logon($params);
if ($objData->return->errorCode == 0)
{
$params = array(‘param’ => array(‘sender’ => «test-sms», ‘phone’ => «79991234567», ‘text’ => «SOAP test»));
$objData = $objClient->sendSimpleSms($params);
print «Message send. ID «.$objData->return->strResult;
$objClient->logoff();
}
else
{
echo «Error: «.$objData->return->errorDescription;
}
?>

4.3 Java (axis2)

Для создания всех необходимых классов можно воспользоваться утилитой, входящей в состав axis2
wsdl2java -uri http://api.sigmasms.ru/public/soap/index.php
Пример 1
Отправка простого сообщения

package SoapClient;import java.rmi.RemoteException;
import org.apache.axis2.AxisFault;
import org.apache.axis2.client.Options;
import telecom.srv.sms.*;
import telecom.srv.sms.TelAccessStub.*;public class Test
{
public static void main(String args[])
{
try
{
TelAccessStub soalclient = new TelAccessStub();Options options = soalclient._getServiceClient().getOptions();
options.setManageSession(true);
soalclient._getServiceClient().setOptions(options);InputLogon inparam1 = new InputLogon();
inparam1.setUserName(«11234.5»);
inparam1.setPassword(«123»);
Logon param1 = new Logon();
param1.setParam(inparam1);

ReturnValueBase rv1 = soalclient.logon(param1).get_return();
if (rv1.getErrorCode() != 0)
throw new Exception(rv1.getErrorDescription());

InputSendSimpleSms inparam2 = new InputSendSimpleSms();
inparam2.setSender(«Test»);
inparam2.setPhone(«79876543210»);
inparam2.setText(«Java test message»);

SendSimpleSms param2 = new SendSimpleSms();
param2.setParam(inparam2);

ReturnValueString rv2 = soalclient.sendSimpleSms(param2).get_return();
if (rv2.getErrorCode() != 0)
throw new Exception(rv2.getErrorDescription());

System.out.println(«Message id:» + rv2.getStrResult());

soalclient.logoff();
}
catch (AxisFault e)
{
e.printStackTrace();
}
catch (RemoteException e)
{
e.printStackTrace();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}

Пример 2
Добавление группы

package SoapClient;import java.rmi.RemoteException;
import org.apache.axis2.AxisFault;
import org.apache.axis2.client.Options;
import telecom.srv.sms.*;
import telecom.srv.sms.TelAccessStub.*;public class Test
{
public static void main(String args[])
{
try
{
TelAccessStub soalclient = new TelAccessStub();Options options = soalclient._getServiceClient().getOptions();
options.setManageSession(true);
soalclient._getServiceClient().setOptions(options);InputLogon inparam1 = new InputLogon();
inparam1.setUserName(«11234.5»);
inparam1.setPassword(«123»);
Logon param1 = new Logon();
param1.setParam(inparam1);

ReturnValueBase rv1 = soalclient.logon(param1).get_return();
if (rv1.getErrorCode() != 0)
throw new Exception(rv1.getErrorDescription());

InputAddPhoneGroup inparam2 = new InputAddPhoneGroup();
inparam2.setName(«Java test group»);
AddPhoneGroup param2 = new AddPhoneGroup();
param2.setParam(inparam2);

ReturnValueInt rv2 = soalclient.addPhoneGroup(param2).get_return();

if (rv2.getErrorCode() != 0)
throw new Exception(rv2.getErrorDescription());

System.out.println(«Group id:» + rv2.getIntResult());

soalclient.logoff();
}
catch (AxisFault e)
{
e.printStackTrace();
}
catch (RemoteException e)
{
e.printStackTrace();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}

Пример 3
Добавление контакта (опционально помещение данного контакта в 4 некоторые группы контактов)

package SoapClient;import java.rmi.RemoteException;
import org.apache.axis2.AxisFault;
import org.apache.axis2.client.Options;
import telecom.srv.sms.*;
import telecom.srv.sms.TelAccessStub.*;public class Test
{
public static void main(String args[])
{
try
{
TelAccessStub soalclient = new TelAccessStub();Options options = soalclient._getServiceClient().getOptions();
options.setManageSession(true);
soalclient._getServiceClient().setOptions(options);InputLogon inparam1 = new InputLogon();
inparam1.setUserName(«11234.5»);
inparam1.setPassword(«123»);
Logon param1 = new Logon();
param1.setParam(inparam1);

ReturnValueBase rv1 = soalclient.logon(param1).get_return();
if (rv1.getErrorCode() != 0)
throw new Exception(rv1.getErrorDescription());

InputAddPhone inparam2 = new InputAddPhone();
inparam2.setPhone(«79876543210»);
inparam2.setFname(«Test»);
inparam2.setLname(«Testov»);
inparam2.setCustom1(«Очень тестовый клиент»);
inparam2.setIcq(«111222333»);
int [] groupid = new int[2];
groupid[0] = 2770;
groupid[1] = 2771;
inparam2.setGroupId(groupid);

AddPhone param2 = new AddPhone();
param2.setParam(inparam2);

ReturnValueInt rv2 = soalclient.addPhone(param2).get_return();

if (rv2.getErrorCode() != 0)
throw new Exception(rv2.getErrorDescription());

System.out.println(«Phone id:» + rv2.getIntResult());

soalclient.logoff();
}
catch (AxisFault e)
{
e.printStackTrace();
}
catch (RemoteException e)
{
e.printStackTrace();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}

3.4 Информация по счетам
3.5 Простая отправка сообщений
3.6 Отправка сообщений контакту
3.7 Отправка сообщений группе
3.8 Получение статусов отправленных сообщений
3.9 Входящие сообщения
4. Примеры использования