SMS API
Отправка SMS-сообщений
Про процедуру аутентификации и авторизации, которые связывают вызовы API с необходимыми приложениями в Вашей учетной записи см. Авторизация.
Запрос:
Параметры можно передавать в заголовке запроса:
POST/GET https://api.unibell.ru/v2/sms?X-Authorization=AccessKey d8ac9959r12b43545XXXXX&destAddr=7XXXXXXXXXX&sourceAddr=MySender&shortMessage=Текст сообщения
А также в теле запроса:
{
"sourceAddr": "MySender",
"destAddr": "7XXXXXXXXXX",
"shortMessage": "Текст сообщения"
}
Пример запроса с использованием CURL:
curl --location --request POST 'https://api.unibell.ru/v2/sms?X-Authorization=AccessKey%20d8ac9959r12b43545XXXXX&destAddr=7XXXXXXXXXX&sourceAddr=MySender&shortMessage=Текст сообщения'
curl --location 'https://api.unibell.ru/v2/sms?=' \
--header 'X-Authorization: AccessKey d8ac9959r12b43545XXXXX' \
--header 'Content-Type: application/json' \
--data '{
"sourceAddr": "MySender",
"destAddr": "7XXXXXXXXXX",
"shortMessage": "Текст сообщения"
}'
| Параметр | Тип | Описание |
|---|---|---|
| sourceAddr | string | Имя отправителя (только латиница или номер телефона) Поле не должно содержать кириллицы |
| destAddr | string | Номер телефона, на который отправляется SMS-сообщение в формате e.164, например, для Российской Федерации 7XXXXXXXXXX |
| shortMessage | string | Текст сообщения |
Ответ при успешном выполнении запроса:
{
"status": "Created",
"requestId": "11273"
}
Ответ в случае отсутствия destAddr:
{
"status": "Rejected",
"error": "Missing destAddr param"
}
| Параметр | Тип | Описание |
|---|---|---|
| status | string | Статус запроса: Created — Сообщение в системе создано, но ещё не отправлено Rejected — Сообщение не было принято к отправке, уточнение ошибки в error prohibitedForServiceError — Ключ не принадлежит услуге SMS invalidAccessKeyError — Ошибка в ключе авторизации |
| requestId | string | Уникальный идентификатор запроса |
| error | string | Описание ошибок: Missing destAddr param — destAddr отсутствует в запросе Missing sourceAddr param — sourceAddr отсутствует в запросе Missing shortMessage param — shortMessage отсутствует в запросе Field sourceAddr must not contain Cyrillic — в sourceAddr присутствует кириллица |
Массовая отправка SMS-сообщений
Запрос:
POST/GET https://api.unibell.ru/v2/sms_bulk?X-Authorization=AccessKey d8ac9959r12b43545XXXXX
Тело запроса:
{
"sourceAddr": "MySender",
"destAddrs": [
"79123213232",
"2вауц",
"71233212323"
],
"shortMessage": "Текст сообщения"
}
Пример запроса с использованием CURL:
curl --location 'https://api.unibell.ru/v2/sms_bulk' \
--header 'X-Authorization: AccessKey d8ac9959r12b43545XXXXX' \
--header 'Content-Type: application/json' \
--data '{
"sourceAddr": "MySender",
"destAddrs": [
"79123213232",
"2вауц",
"71233212323"
],
"shortMessage": "Текст сообщения"
}'
| Параметр | Тип | Описание |
|---|---|---|
| sourceAddr | string | Имя отправителя Поле не должно содержать кириллицы |
| destAddrs | string | Список телефонных номеров, на которые отправляются SMS-сообщения в формате e.164, например, для Российской Федерации 7XXXXXXXXXX |
| shortMessage | string | Текст сообщения |
Тело ответа при выполнении запроса:
{
"status": "ok",
"results": [
{
"status": "Created",
"requestId": "11276",
"destAddr": "79123213232"
},
{
"status": "Rejected",
"error": "Not valid destAddr",
"destAddr": "2вауц"
},
{
"status": "Created",
"requestId": "11277",
"destAddr": "71233212323"
}
]
}
| Параметр | Тип | Описание |
|---|---|---|
| status | string | Статус запроса: Created — Сообщение в системе создано, но ещё не отправлено Enroute — Сообщение смаршрутизировано и ожидает отправки Delivered — Сообщение доставлено, получен статус доставки от оператора Expired — Истекло время жизни сообщения Deleted — Сообщение было отменено Undeliverable — Сообщение не доставлено по причине: номер не существует, нет места для новых СМС в телефоне Accepted — Сообщение отправлено, статус доставки от оператора ещё не получен Unknown — Неизвестная ошибка Rejected — Сообщение не было принято к отправке, уточнение ошибки в error prohibitedForServiceError — Ключ не принадлежит услуге SMS invalidAccessKeyError — Ошибка в ключе авторизации |
| results | string | Результаты по каждому получателю |
| error | string | Описание ошибки: Missing destAddr param — destAddr отсутствует в запросе Missing sourceAddr param — sourceAddr отсутствует в запросе Missing shortMessage param — shortMessage отсутствует в запросе Field sourceAddr must not contain Cyrillic — в sourceAddr присутствует кириллица Not valid destAddr — Неправильно введен destAddr |
| requestId | string | Уникальный идентификатор запроса |
| destAddr | string | Номер телефона, на который отправляется SMS-сообщение в формате e.164, например, для Российской Федерации 7XXXXXXXXXX |
Получение статуса
Запрос:
Параметры можно передавать в заголовке запроса:
GET https://api.unibell.ru/v2/sms_status?X-Authorization=AccessKey d8ac9959r12b43545XXXXX&requestId=11273
А также в теле запроса:
{
"requestId": "11273"
}
Пример запросов с использованием CURL:
curl --location 'https://api.unibell.ru/v2/sms_status' \
--header 'X-Authorization: AccessKey d8ac9959r12b43545XXXXX' \
--header 'requestId: 11273'
curl --location --request GET 'https://api.unibell.ru/v2/sms_status' \
--header 'X-Authorization: AccessKey d8ac9959r12b43545XXXXX' \
--header 'Content-Type: application/json' \
--data '{
"requestId": "11273"
}'
Тело ответа при успешном выполнении запроса:
{
"id": 9654,
"destAddr": "7XXXXXXXXXX",
"requestId": "11273",
"status": "Rejected",
"networkErrCode": 34,
"mcc": 0,
"mnc": 0,
"ported": 0
}
Ответ в случае отсутствия параметра requestId:
{
"status": "Rejected",
"error": "Missing requestId param"
}
| Параметр | Тип | Описание |
|---|---|---|
| id | integer | Уникальный идентификатор SMS-сообщения |
| destAddr | string | Номер телефона, на который было отправлено SMS-сообщение в формате e.164, например, для Российской Федерации 7XXXXXXXXXX |
| requestId | string | Уникальный идентификатор запроса |
| status | string | Статус запроса отправки SMS-сообщения: Created — Сообщение в системе создано, но ещё не отправлено Enroute — Сообщение смаршрутизировано и ожидает отправки Delivered — Сообщение доставлено, получен статус доставки от оператора Expired — Истекло время жизни сообщения Deleted — Сообщение было отменено Undeliverable — Сообщение не доставлено по причине: номер не существует, нет места для новых СМС в телефоне Accepted — Сообщение отправлено, статус доставки от оператора ещё не получен Unknown — Неизвестная ошибка Rejected — Мобильная сеть отклонила сообщение, скорее всего из-за фильтра или другого ограничения notFound — Запись по запрошенному requestId отсутствует/не найдена |
| networkErrCode | string | Ошибки SS7, смотрите ниже |
| mcc | integer | Mobile Country Code – код страны |
| mnc | integer | Mobile Network Code – код мобильного оператора |
| ported | integer | Информация о том, был ли портирован номер: 1 — если номер был портирован 0 — если не был портирован |
| error | string | Описание ошибок: Missing requestId param — отсутсвтует requestId в запросе |
Получение статусов сообщений на Webhook
Источник запросов:
Webhook будут приходить с IP-адресов 185.175.44.211 и 46.148.235.62, которые необходимо включить в ACL на стороне веб-сервера клиента для обеспечения корректного взаимодействия.
Формат взаимодействия:
Обратные вызовы выполняются по протоколу HTTP.
Данные передаются в формате JSON.
Настройка Webhook происходит по запросу в техническую поддержку.
Отправка запроса:
Запрос отправляется в формате JSON, который имеет следующую структуру:
{
"ported": 0,
"mnc": 0,
"requestId": "35714061",
"destAddr": "7XXXXXXXXXX",
"id": 639073386,
"networkErrCode": 0,
"mcc": 0,
"status": "Delivered"
}
| Параметр | Тип | Описание |
|---|---|---|
| ported | integer | Информация о том, был ли портирован номер: 1 — если номер был портирован 0 — если не был портирован |
| mnc | integer | Mobile Network Code – код мобильного оператора |
| requestId | string | Уникальный идентификатор запроса |
| destAddr | string | Номер телефона, на который отправляется SMS-сообщение в формате e.164, например, для Российской Федерации 7XXXXXXXXXX |
| id | integer | Уникальный идентификатор SMS-сообщения |
| networkErrCode | string | Ошибки SS7, смотрите ниже |
| mcc | integer | Mobile Country Code – код страны |
| status | string | Статус запроса отправки SMS-сообщения: Created — Сообщение в системе создано, но ещё не отправлено Enroute — Сообщение смаршрутизировано и ожидает отправки Delivered — Сообщение доставлено, получен статус доставки от оператора Expired — Истекло время жизни сообщения Deleted — Сообщение было отменено Undeliverable — Сообщение не доставлено по причине: номер не существует, нет места для новых СМС в телефоне Accepted — Сообщение отправлено, статус доставки от оператора ещё не получен Unknown — Неизвестная ошибка Rejected — Сообщение не было принято к отправке, уточнение ошибки в error |
Коды ошибок в статусе
Возможные коды ошибок в статусе SMS (значения networkErrCode).
Все неуказанные коды считаются зависящими от поставщика и не обрабатываются отдельно.
| Код | Расшифровка | Описание |
|---|---|---|
| 1 | unknownSubscriber | Неизвестный абонент Абонент не зарегистрирован в сети |
| 5 | unidentifiedSubscriber | Неопознанный абонент Абонент зарегистрирован, но информация о нем отсутствует или недоступна |
| 9 | illegalSubscriber | Незаконный абонент Абоненту отказано в доступе из-за нарушения правил |
| 11 | teleserviceNotProvisioned | Телекоммуникационная услуга не представлена Абонент не подключен к запрашиваемой услуге |
| 13 | callBarred | Запрещенный вызов Запрет на вызов для данного абонента (например, из-за блокировки или ограничений тарифа) |
| 21 | facilityNotSupported | Услуга не поддерживается Запрошенная услуга недоступна для абонента или сети |
| 27 | adsentSubscriber | Адрес отправителя отсутствует Сообщение не доставлено из-за отсутствия данных об отправителе |
| 31 | subscriberBusyForMT-SMS | Абонент занят для получения MT-SMS Абонент не может принять SMS из-за занятости устройства |
| 32 | sm-DeliverFailure | Ошибка доставки SMS Общая ошибка, связанная с передачей SMS |
| 33 | messageWaitingListFull | Список ожидания сообщений переполнен В памяти устройства абонента нет места для новых сообщений |
| 34 | systemFailure | Системная ошибка Общая ошибка на стороне сети |
| 35 | dataMissing | Отсутствуют данные Не хватает информации для выполнения операции |
| 36 | unexpectedDataValue | Неожиданное значение данных Переданы некорректные или неожиданные данные |