В этой статье расскажем как отправлять различные СМС сообщения пользователям, позвонившим в контакт-центр Октелл и запросившим такую информацию: информация по текущим тарифам, инструкции по смене тарифа или подписки и прочее.
Настройки в личном кабинете системы «Ростелеком СМС Реклама»
«Ростелеком СМС Реклама» позволяет отправлять СМС, используя простой API. После заключения договора и получения доступа к личному кабинету, необходимо настроить этот самый API. Для это в личном кабинете нажимаем на свой логин в правом верхнем углу и выбираем раздел «Общие настройки»:

Откроется окно настроек профиля. Здесь нажимаем кнопку «API-рассылки»:

Откроется список всех настроенных на данный момент подключений (если они уже настроены). Существующее подключение невозможно редактировать, пока оно работает. Вы можете только посмотреть его, приостановить или завершить, если в этом есть необходимость. Нажимаем кнопку «Настроить подключение»:

В открывшемся окне настроим параметры для нашего подключения.

Здесь необходимо задать следующие настройки:
- Тип рассылки - в нашем случае, это HTTP. Октелл будет присылать POST-запросы.
- Название рассылки – любое произвольное название.
- Время жизни СМС – можно задать время от 1 до 24 часов. Если по истечение этого времени СМС не будет доставлена, отправка отменяется.
- IP-адрес клиента – здесь нужно указать «белый» IP, с которого будут приходить запросы. Если адреса нет в списке, авторизация не пройдет и СМС отправляться не будут.
После нажатия кнопки «Продолжить» статус рассылки изменится на «Подготовка», здесь нужно нажать кнопку «Сохранить» и ожидать результата.

На этой странице, кроме параметров самой рассылки, так же приведены параметры для подключения: URL, login и пароль. Эти параметры всегда можно посмотреть на странице “API-рассылки”, выбрав нужное подключение из списка.
Так же необходимо создать и согласовать короткое имя, которое будет отображаться в поле «Отправитель» при получении СМС. Это нужно сделать в разделе «Ресурсы» - «Имена отправителей». Этот параметр понадобится нам далее.

Этих настроек достаточно, чтобы можно было отправлять СМС посредством API. Теперь переходим к настройке системы Октелл.
Настройка системы Октелл
Все пояснения по взаимодействию с API Ростелекома изложены в инструкции «HTTP API для отправки сообщений (JSON)».
POST-запрос отправляется на URL, указанный в настройках подключения в личном кабинете. Каждый запрос должен пройти авторизацию. Авторизация происходит по методу HTTP Basic Auth, логин/пароль для авторизации так же указаны в личном кабинете в настройках подключения.
Для отправки сообщения в самом запросе нам нужны три значения:
- MSISDN – это номер адресата. В формате 7 и 10-значный федеральный номер, (например: 79091234567)
- Shortcode – имя отправителя, созданное в личном кабинете ранее
- Text – непосредственно сам текст сообщения. Для переноса строки в тексте следует использовать последовательность символов
Итак, для отправки СМС я создал отдельный сценарий. Входным параметром для него является значение сессионной переменной.

Далее, в самом сценарии, в зависимости от значения этой переменной, подставляется соответствующий текст для тела сообщения:

Рассмотрим сценарий детальнее.
Проверка и корректировка АОН
На первом этапе проверяем АОН. Так как у нас звонки приходят с двух разных транков, на одном из них АОН выдается в формате 79091234567, а на другом 89091234567. Для использования в запросе мы должны использовать формат с 7-кой в начале номера, и то, что не соответствует данному формату, нам нужно преобразовать:

При входе мы сравниваем АОН с числом 8 000 000 00 00. Если АОН меньше этого числа, он проходит без изменений и мы присваиваем его значение переменной msisdn
, которую будем использовать далее в POST-запросе. Иначе нам необходимо вычесть из АОНа число 1 000 000 00 00, и уже получившееся значение поместить в переменную msisdn
:

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

Отправка запроса
После того, как у нас есть значения всех переменных, мы переходим непосредственно к отправке самого POST-запроса (предварительно все ветви сходятся в элементе «уведомление», которое выводит текст сформированного сообщения и номер абонента. Это элемент отладки и на работу сценария никак не влияет). Запрос будет сформирован и отправлен с помощью инструмента WEB-запрос:

Здесь используем следующие параметры:
- URL – адрес, указанный для отправки в параметрах соединения в личном кабинете
- Базовая авторизация – не использовать. В документации заявлено, что это поле позволяет использовать необходимый нам метод HTTP Basic Auth, однако на деле, при включении данной опции, авторизация у Ростелекома не проходит.
- Метод – POST
- Тип контента - application/json (нужно написать вручную)
- Тип запроса – аргумент
- Запрос – использован вот такой текст:
'{"msisdn": ' + [msisdn] + ',"shortcode": "имя из ЛК","text": "' + [smstext] + ' "} '
Где:[msisdn]
– имя переменной, где хранится номер телефона, на который отправляем смс,"имя из ЛК"
– короткое имя, которые мы настроили в личном кабинете,[smstext]
– переменная, где хранится текст самого сообщения.
В самом Октеле это должно выглядеть так (красный шрифт – статический текст, синий – переменные):

Вернемся к окну «Инспектор объектов» (параметры объекта «WEB-запрос»).
Дополнительные заголовки – посредством этого поля мы выполним авторизацию. Для этого установим здесь значение:
Authorization:Basic YTJwdGVzdF9zaWJpcjphMnB0ZXXX
, где YTJwdGVzdF9zaWJpcjphMnB0ZXXX
– это login:pass в base64. Для получения этой строчки выписываем свои логин: пароль и переводим кодируем их в base64 на любом подходящем интернет-ресурсе, например www.base64decode.org
Ответ в переменную – укажем переменную, где будет сохраняться ответ на наш запрос. Нужно, чтобы в дальнейшем с помощью инструмента «Парсер» посмотреть результат запроса.
Элемент «Парсер» настроим так, как указано на картинке ниже:

Тег «status» информирует о результате запроса. Если пришло «OK» - значит, запрос принят, сообщение отправлено. Если пришло «error» - значит, произошла какая-то ошибка. В этом случае, в поле «reason» будет указана ошибка, которую можно расшифровать, используя документацию:

Это основные настройки, которые позволяют отправлять СМС через систему «Ростелеком СМС Реклама» из платформы Октелл