SMS¶
Отправка¶
Для отправки SMS-сообщения необходимо:
- Согласовать имя отправителя в личном кабинете.
- Вызвать POST /sms/messages, передавая параметры сообщения в теле запроса и данные авторизации в заголовке.
Параметры запроса¶
Параметр | Тип данных | Описание |
---|---|---|
includeSegmentId (optional) |
boolean | Если true , то в ответе также будет указан массив с ID для каждого сегмента SMS-сообщения. По умолчанию false . |
shortenUrl (optional) |
boolean | При К примеру, если параметр активен, ссылка По умолчанию |
Тело запроса¶
Параметр | Тип данных | Описание |
---|---|---|
messages | array[Message] | Массив сообщений. Одновременно можно отправлять до 32 тысяч сообщений. |
Message¶
Параметр | Тип данных | Описание |
---|---|---|
from | string | Согласованное имя отправителя. |
to | string | Номер телефона в международном формате, согласно стандарту E.164. |
text | string | Текст сообщения: ○ до 17085 символов включительно при использовании кириллицы. ○ до 34170 символов включительно при использовании латиницы. |
validity (optional) |
integer | Срок жизни сообщения в секундах. Минимальное значение: 0 |
scheduledTime (optional) |
string | Запланированное UTC время отправки сообщения. |
priority (optional) |
string | Приоритет отправки сообщения.
|
callbackUrl (optional) |
string | URL, на который система будет отправлять уведомления об изменениях статуса сообщения. Любой валидный URL со схемой |
options (optional) |
object | Данные, которые будут указаны в коллбэке со статусом сообщения. Любой массив вида |
Пример запроса¶
{
"messages": [
{
"from": "sendersName",
"to": "79483547434",
"text": "Hello",
"validity": 0,
"scheduledTime": "2022-09-09T08:52:27.319Z",
"priority": "HIGH",
"callbackUrl": "https://www.callback-url.com/",
"options": {
"key1": "value1",
"key2": "value2"
}
}
]
}
Параметры ответа¶
Параметр | Тип данных | Описание |
---|---|---|
code | string | Указывает на результат обработки сообщения. 1. |
messageId | string | ID сообщения. Указывается только при "code": "OK" . |
segmentsId | array[string] | Массив ID сегментов сообщения. Указывается только при "code": "OK" . |
reasons | array | Массив ошибок, произошедших во время обработки сообщения. Указывается только при "code": "REJECTED" . |
reasons.key | string | Код ошибки. |
reasons.ref | string | Ссылка на параметр, в котором произошла ошибка. |
reasons.defaultMessage | string | Сообщение с описанием ошибки. |
Коды ошибок¶
Код | Параметр | Описание |
---|---|---|
not.available | messages[i].from | Неправильно указан отправитель. |
to.format.invalid | messages[i].to | Неправильно указан номер телефона получателя. |
scheduledTime.is.invalid | messages[i].scheduledTime | Неправильно указано запланированное время отправки сообщения. |
text.length.too.long | messages[i].text | Превышена максимальная длина текста сообщения. |
validity.is.invalid | messages[i].validity | Неправильно указан срок жизни сообщения. |
priority.is.not.match | messages[i].priority | Неправильно указан приоритет отправки сообщения. |
callbackUrl.format.invalid | messages[i].callbackUrl | Неправильно указан URL для отправки коллбэков. |
Примеры ответов¶
{
"result": [
{
"code": "OK",
"messageId": "3701172084729885952",
"segmentsId": [
"3701172084729885952",
"3701172084729885953"
]
}
]
}
{
"result": [
{
"code": "REJECTED",
"messageId": null,
"segmentsId": null,
"reasons": [
{
"key": "to.format.invalid",
"ref": "to",
"defaultMessage": "Error: Invalid field value. Value: string"
}
]
}
]
}
Входящие сообщения¶
Как подключить
Для получения входящих SMS по HTTP свяжитесь с менеджером компании или обратитесь в техническую поддержку.
Для получения входящих SMS по SMPP необходимо иметь подключение по SMPP.
Параметры¶
Параметр | Тип данных | Описание |
---|---|---|
incomingMessageId | string | ID входящего сообщения в Devino.Online. |
to | string | Имя или номер получателя. |
from | string | Номер телефона отправителя. |
text | string | Текст сообщения. |
transactionId | string | ID транзакции от оператора. |
prefix | string | Ключевое слово (префикс) в начале сообщения. |
operator | string | Оператор связи. |
countryName | string | Код страны. |
ts | long | Время получения сообщения (timestamp) в миллисекундах. |
Пример¶
{
"incomingMessageId": "3777714415805253122",
"to": "MyCompany",
"from": "79101111111",
"text": "Входящее сообщение",
"transactionId": "a7d76677f699",
"prefix": "2135",
"operator": "MTS",
"countryName": "ru",
"ts": "1587721283000"
}
Коллбэки¶
Как подключить
Для настройки коллбэков со статусами сообщений необходимо обратиться к менеджеру компании или в техническую поддержку.
Возможные статусы¶
Код | Описание |
---|---|
ACCEPTED | Сообщение было принято. |
SCHEDULED | Сообщение запланировано к отправке. |
ENROUTE | Сообщение находится в процессе отправки оператору. |
SENT | Сообщение было отправлено в сеть оператора. |
DELIVERED | Сообщение доставлено абоненту. |
EXPIRED | Истек срок жизни сообщения. |
CLICKED | Получатель перешел по ссылке в сообщении. |
UNDELIVERABLE | Сообщение невозможно доставить. |
REJECTED | Сообщение было отклонено оператором или Devino.Online. |
UNKNOWN | Произошла неизвестная ошибка. |
Примеры коллбэков¶
[
{
"messageId": "3597944866766620289",
"ts": 1613404835977,
"status": "DELIVERED",
"errorCode": 0
}
]
[
{
"messageId": "3597944866766620289",
"ts": 1613404835977,
"status": "REJECTED",
"errorCode": 2005
}
]
Запрос статуса¶
Помимо коллбэков возможно также запрашивать статус сообщений через запрос POST /sms-stat/statuses/get-by-ids, передавая массив ID сообщений. Одновременно можно передать не более 500 значений.
Статусы сообщений будут те же, что и в обычных коллбэках.
Пример запроса¶
curl -X POST https://api.devino.online/sms-stat/statuses/get-by-ids \
-H 'Authorization: Key QWxhZGRpbjpvcGVuIHNlc2FtZQ==' \
-H 'Content-Type: application/json' \
-d '[ "3482512350952730368" ]'
import requests
message_ids = [ "3482512350952730368" ]
resp = requests.post(
'https://api.devino.online/sms-stat/statuses/get-by-ids',
json=message_ids
)
print(resp.json())
Пример ответа¶
{
"result": [
{
"smsId": 3701172084729885700,
"status": "DELIVERED",
"statusDateTime": "2022-09-09 19:29:34"
}
]
}
Детализация¶
Для получения детальных сведений об отправленных сообщениях необходимо вызвать GET /sms-stat/detail, передавая параметры фильтров и данные авторизации в заголовке.
Параметры запроса¶
Параметр | Тип данных | Описание |
---|---|---|
limit | integer | Количество сообщений в результатах поиска. |
offset | integer | Смещение результатов поиска. То есть, к примеру, если в параметре будет указано число 5 , полученный массив сообщений будет отображаться, начиная с 5 позиции. |
taskId (optional) |
integer | ID рассылки, по которой нужно получить детализацию. Можно узнать при создании сценария рассылки. Используется в обязательной комбинации параметров. |
triggerId (optional) |
integer | ID триггера рассылки. Можно узнать при получении сценария рассылки. Используется в обязательной комбинации параметров. |
dateTimeFrom (optional) |
datetime | Дата начала поиска сообщений. Используется в обязательной комбинации параметров. Формат YYYY-MM-DD+hh:mm:ss . |
dateTimeTo (optional) |
datetime | Дата окончания поиска сообщений. Используется в обязательной комбинации параметров. Формат YYYY-MM-DD+hh:mm:ss . |
messageIds (optional) |
array[integer] | ID сообщений, по которым нужно получить детализацию. Используется в обязательной комбинации параметров. |
bySegments (optional) |
boolean | Если Если |
calculateTotalCount (optional) |
boolean | Если |
countryId (optional) |
integer | ID страны. |
mogId (optional) |
integer | ID группы мобильных операторов. |
order (optional) |
string | В каком порядке выводить результаты запроса. Возможные значения: |
orderField (optional) |
string | Поле, по которому будут отсортированы результаты запроса. |
outFields (optional) |
array[string] | Поля в результатах поиска. Неуказанные в этом параметре поля будут исключены. |
recipient (optional) |
string | Номер телефона получателя. |
searchText (optional) |
string | Поиск ключевого слова в текстах сообщений. Доступен поиск одного слова на английском языке. |
sourceAddress (optional) |
string | Согласованное имя отправителя. |
status (optional) |
string | Статус сообщений в результатах поиска. Возможные значения: |
timeOffset (optional) |
integer | Часовой пояс получателя. Формат - смещение в минутах, например, 180 для Москвы (GMT+3). |
userId (optional) |
integer | ID пользователя, проводившего рассылку. |
Комбинации параметров¶
Для корректной работы метода в запросе необходимо использовать одну из этих комбинаций параметров в соответствии со списком:
- ID рассылки:
taskId
- ID рассылки и триггера:
taskId
,triggerId
- Даты начала и окончания поиска сообщений:
dateTimeFrom
,dateTimeTo
- ID рассылки, триггера; даты начала и окончания поиска сообщений:
taskId
,triggerId
,dateTimeFrom
,dateTimeTo
- ID сообщений:
messageIds
Поля для параметров orderField
и outFields
¶
Используются в параметрах orderField
для сортировки результатов поиска и outFields
для отбора полей.
Название поля | Описание |
---|---|
COMPANY_ID | ID компании. |
COMPANY_NAME | Название компании. |
CONTACT_ID | ID получателя из списка контактов. |
COUNTRY_ID | ID страны. |
COUNTRY_NAME | Название страны. |
ERROR_CODE | Код ошибки. |
EVENT_DATE_TIME | Дата и время последнего обновления статуса сообщения. |
MESSAGE_ID | ID сообщения. |
MOG_ID | ID группы мобильных операторов. |
MOG_NAME | Название группы мобильных операторов. |
MO_ID | ID мобильного оператора. |
MO_NAME | Название мобильного оператора. |
PRICE | Стоимость сегмента сообщения. |
PROVIDER_MESSAGE_ID | ID сообщения у оператора. |
RECIPIENT | Номер телефона получателя. |
RECIPIENT_ZONE_NAME | Часовой пояс получателя. |
ROUTE | Маршрут, по которому было отправлено сообщение (например: SMSGW101 ). |
SEGMENT_COUNT | Количество сегментов в сообщении. |
SEGMENT_ID | ID сегмента. |
SENT_DATE_TIME | Дата и время отправки. |
SOURCE_ADDRESS | Имя отправителя. |
STATUS | Статус сообщения. |
TASK_ID | ID рассылки. |
TASK_NAME | Название рассылки. |
TASK_TYPE | Тип рассылки. |
TEMPLATE | Название шаблона сообщения. |
TEMPLATE_ID | ID шаблона сообщения. |
TEXT | Текст сообщения. |
TRAFFIC | Тип трафика. Возможные значения: |
TRIGGER_CONTACT_GROUP | Название списка контактов, по которому проходила рассылка. |
IS_CONTACT_GROUP_DELETED | Удален ли список контактов, контакту которого было отправлено сообщение. |
TRIGGER_ID | ID триггера рассылки. |
USER_ID | ID пользователя, отправившего сообщения. |
USER_LOGIN | Логин пользователя, отправившего сообщения. |
Примеры запросов¶
curl -X GET https://api.devino.online/sms-stat/detail?calculateTotalCount=true&dateTimeFrom=2023-02-12+00:00:00&dateTimeTo=2023-02-24+00:00:00&limit=20&offset=1
-H 'Authorization: Key QWxhZGRpbjpvcGVuIHNlc2FtZQ==' \
curl -X GET https://api.devino.online/sms-stat/detail?taskId=8742&triggerId=2312&limit=20&offset=1
-H 'Authorization: Key QWxhZGRpbjpvcGVuIHNlc2FtZQ==' \
Параметры ответа¶
Параметр | Тип данных | Описание |
---|---|---|
data | array[object] | Массив объектов с детальной информацией по каждому сообщению. Параметры определяются полями, которые были заданы в изначальном запросе. |
size | integer | Количество элементов на странице и сообщений в результатах поиска. Задается параметром limit . |
offset | integer | Смещение результатов поиска. То есть, к примеру, если в параметре будет указано число 5 , полученный массив сообщений будет отображаться, начиная с 5 позиции. |
number | integer | Номер полученной страницы. Определяется параметром ○ Если значение параметра ○ Если ○ Если |
pageExists | boolean | Существует ли отображаемая страница. |
total | integer | Общее количество сообщений, по которым можно получить детализацию. |
pages | integer | Общее количество страниц, по которым можно получить детализацию. Определяется целочисленным делением параметра total на limit (total / limit ). |
more | boolean | Индикатор: существуют ли страницы после текущей, указанной в параметре number . |
Пример ответа¶
{
"result": {
"offset": 1000,
"number": 21,
"size": 50,
"pageExists": true,
"data": [
{
"messageId": "234567865432456787634",
"sentDateTime": "2022-12-14 05:55:32",
"segmentId": "234567865432456787634",
"sourceAddress": "sendersName",
"recipient": "79001112233",
"status": "DELIVERED",
"eventDateTime": "2022-12-14 05:54:52",
"companyId": 234,
"companyName": "MyCompany",
"userId": 88,
"userLogin": "79991112233",
"countryId": 12,
"countryName": "Russia",
"mogId": 0,
"mogName": "MOG",
"moId": 234,
"moName": "Operator Name",
"taskId": 88888888,
"taskName": "SimpleCampaign",
"taskType": "SIMPLE",
"triggerId": 2345678,
"text": "Hello",
"errorCode": 0,
"traffic": "ADVERTISING",
"recipientZoneName": "UTC +03:00",
"triggerContactGroup": "contactGroup",
"isContactGroupDeleted": "No"
},
...
],
"more": true,
"pages": 100,
"total": 1000
}
}
Статистика сообщений¶
Для получения общей статистики по статусам сообщений необходимо вызвать GET /sms-stat/statistics/of-group, передавая параметры фильтров и данные авторизации в заголовке.
Параметры запроса¶
Параметр | Тип данных | Описание |
---|---|---|
groupBy | string | Группировка результатов: |
startDate | datetime | Дата начала периода сбора статистики. Формат - YYYY-MM-DDThh%3Amm%3Ass . |
endDate | datetime | Дата окончания периода сбора статистики. Формат - YYYY-MM-DDThh%3Amm%3Ass . |
taskId (optional) |
integer | ID рассылки, по которой нужно получить статистику. |
triggerId (optional) |
integer | ID триггера рассылки, по которому нужно получить статистику. |
timeOffset (optional) |
integer | Часовой пояс получателя. Формат - смещение в минутах, например, 180 для Москвы (GMT+3). |
Пример запроса¶
curl -X GET https://api.devino.online/sms-stat/statistics/of-group?startDate=2022-10-06T13%3A45%3A30&endDate=2023-02-06T13%3A45%3A30&groupBy=MONTH
-H 'Authorization: Key QWxhZGRpbjpvcGVuIHNlc2FtZQ==' \
Параметры ответа¶
Параметр | Тип данных | Описание |
---|---|---|
messages | array[MessageStatusObject] | Количество сообщений по выбранному периоду, сгруппированных по статусам. |
segments | array[MessageStatusObject] | Количество сегментов сообщений по выбранному периоду, сгруппированных по статусам. |
MessageStatusObject¶
Объект содержит информацию о количестве сообщений со статусами:
Код | Описание |
---|---|
accepted | Сообщение было принято. |
scheduled | Сообщение запланировано к отправке. |
enrouted | Сообщение находится в процессе отправки оператору. |
sent | Сообщение было отправлено в сеть оператора. |
deleted | Сообщение было удалено. |
delivered | Сообщение доставлено абоненту. |
expired | Истек срок жизни сообщения. |
seen | Сообщение было прочитано получателем. |
clicked | Получатель перешел по ссылке в сообщении. |
rejected | Сообщение было отклонено оператором или Devino.Online. |
undeliverable | Сообщение невозможно доставить. |
unknown | Произошла неизвестная ошибка. |
Каждый статус включает в себя параметры:
Параметр | Тип данных | Описание |
---|---|---|
date | string | Дата сбора статистики в зависимости от значения параметра groupBy . |
amount | integer | Количество сообщений. |
Пример ответа¶
{
"result": {
"messages": {
"accepted": [
{
"date": "2023-01-01 00:00:00",
"amount": 100
}
],
"sent": [
{
"date": "2022-12-01 00:00:00",
"amount": 2
}
],
"deleted": [],
"delivered": [
{
"date": "2023-01-01 00:00:00",
"amount": 67
},
{
"date": "2022-10-01 00:00:00",
"amount": 1
},
{
"date": "2022-12-01 00:00:00",
"amount": 72
},
{
"date": "2023-02-01 00:00:00",
"amount": 3
}
],
"enrouted": [],
"expired": [],
"seen": [],
"clicked": [],
"rejected": [],
"scheduled": [],
"undeliverable": [],
"unknown": []
},
"segments": {
"accepted": [
{
"date": "2023-01-01 00:00:00",
"amount": 2
},
{
"date": "2023-02-01 00:00:00",
"amount": 4
}
]
...
}
}
}