8-800-333-16-50
Россия
8-812-313-24-88
Санкт-Петербург
8-495-225-50-36
Москва

Протокол SOAP

 

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

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

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

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

Содержание

  • 1. Параметры подключения
  • 2. Соглашения
  • 2.1 Входные параметры
  • 2.2 Возвращаемые данные
  • 3. Методы
  • 3.1 Управление сессией
  • 3.2 Управление группами контактов
  • 3.3 Управление контактами
  • 3.4 Информация по счетам
  • 3.5 Простая отправка сообщений
  • 3.6 Отправка сообщений контакту
  • 3.7 Отправка сообщений группе
  • 3.8 Получение статусов отправленных сообщений
  • 3.9 Входящие сообщения
  • 4. Примеры использования
  • 4.1 C#
  • 4.2 PHP
  • 4.3 Java (axis2)
  • Смотрите также:

    Протоколы

    протокол HTTP
    протокол SMPP
    протокол SMTP
    протокол XML

    Справочники

  • Модуль для 1С
  • Разрешенные символы в имени отправителя
  • Определение длины сообщения
  • Использование регулярных выражений
  • 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();
    }
    }
    }


    Выбирайте лучшее

    Персональный
    менеджер
    Забота о каждом клиенте
    Провайдер
    с лицензией
    Ответственность за свое дело
    Прямые
    подключения
    Гарантируем качество СМС рассылки
    Удобный
    личный кабинет
    Быстрый старт. Online отчеты
    Низкие
    цены
    Надежность, качество, экономичная цена
    Получить коммерческое предложение

    Оставьте свои контактные данные. С вами свяжется наш менеджер и подробно расскажет о стоимости и возможностях СМС рассылки.