Отправка смс по протоколу SOAP

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.3 Управление группами контактов

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

3.3.1 addPhoneGroup

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

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

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

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

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

3.3.2 removePhoneGroup

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

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

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

3.3.3 modifyPhoneGroup

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

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

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

3.3.4 clearPhoneGroup

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

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

  • id — идентификатор группы
  • Возвращаемое значение:

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

    3.3.5 getPhoneGroupList Получение списка групп контрагента

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

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

    3.3.6 getPhoneGroupInfo

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

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

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

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

    • strResult — название группы
    • str2Result — код группы

    3.4 Управление контактами

    3.4.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.4.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.4.3 addPhoneToGroup

    Добавление контакта в группу

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

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

    3.4.4 removePhoneFromGroup

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

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

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

    3.4.5 getPhoneListInGroup

    Получение списка контактов в группе

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

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

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

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

    3.4.6 getGroupListByPhoneId

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

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

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

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

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

    3.4.7 searchPhone

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

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

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

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

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

    3.4.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.4.9 setBirthdayToPhone

    Установка дня рождения контакта либо обновление ранее установленной даты

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

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

    3.4.10 removeBirthdayFromPhone

    Удаление дня рождения контакта

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

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

    3.4.11 getPhoneBirthday

    Получение дня рождения контакта

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

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

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

    • dTResult — дата рождения контакта

    3.5 Информация по счетам

    3.5.1 getAccountList

    Получение списка счетов контрагента

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

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

    3.5.2 getAccountInfo

    Получение информации о счете по его типу

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

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

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

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

    3.6 Простая отправка сообщений

    sendSimpleSms

    Простая отправка SMS сообщения

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

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

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

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

    3.6.1 sendSimpleFlashSms

    Простая отправка flash SMS сообщения

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

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

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

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

    3.6.2 sendSimpleWapPushSms

    Простая отправка WAP push SMS сообщения

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

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

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

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

    3.7 Отправка сообщений контакту

    3.7.1 sendSms

    Отправка СМС сообщения контакту

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

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

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

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

    3.7.2 sendFlashSms

    Отправка flash СМС сообщения контакту

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

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

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

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

    3.7.3 sendWapPushSms

    Отправка WAP push сообщения контакту

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

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

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

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

    3.8 Отправка сообщений группе

    3.8.1 sendSmsToGroup

    Отправка СМС сообщения группе

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

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

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

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

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

    3.8.2 sendFlashSmsToGroup

    Отправка flash СМС сообщения группе

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

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

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

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

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

    3.8.3 sendWapPushSmsToGroup

    Отправка WAP push сообщения группе

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

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

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

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

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

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

    3.9.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.9.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.10 Входящие сообщения

    3.10.1 getInboxList

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

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

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

    3.10.2 getInboxInfo

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

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

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

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

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

    3.10.3 getInSms

    Получение списка входящих сообщений

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

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

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

    • 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#

    Для начала необходимо из WSDL, расположенном на сервере, получить все классы для работы, для этого необходимо воспользоватся утилитойwsdl, входящей в состав Microsoft SDKs:

    "C:\Program Files\Microsoft SDKs\Windows\v7.0\Bin\wsdl" /l:cs /protocol:SOAP
    /out:"C:\SOAPTelAccess.cs" http://api.smsdirector.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.smsdirector.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.smsdirector.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();
    }
    }
    }

    Мобильный оператор «СМАРТС» продан компаниям «Мегафон» и «МТС»

    Мобильный оператор «СМАРТС» продан компаниям «Мегафон» и «МТС»

    Мобильный оператор "Смартс" с 1 февраля 2016 года присоединился к мобильным операторам "Мегафон" и "МТС".

    Изменение цен на СМС рассылку по оператору Мегафон

    Изменение цен на СМС рассылку по оператору Мегафон

    Компания Мегафон повышает цены на СМС сообщения для коммерческих клиентов.

    МТС меняет тарифные планы

    МТС меняет тарифные планы

    С 1 января 2016 года по инициативе оператора МТС изменяется цена на СМС сообщения для корпоративных клиентов

    ТЕЛЕ2 меняет тарифные планы

    ТЕЛЕ2 меняет тарифные планы

    Компания предлагает своим клиентам отправлять СМС-сообщения на новых условиях