«Коммуникационная платформа SevenTech» - Руководство по эксплуатации: интеграция по API
- «Коммуникационная платформа SevenTech» - Руководство по эксплуатации: интеграция по API
- 1. Авторизация
- 2. Метод отправки сообщения
- 3. Возврат статуса (callback)
- 4. Передача входящих сообщений (incoming)
1. Авторизация
Есть возможность настроить авторизацию двумя способами:
- Для подключения используется тип авторизации Basic Auth, для организации доступа клиент получает пару логин и пароль и вводит запрашиваемые значения в соответствующие поля:
Authorization: Basic Auth
Username: username
Password: password
- При подключении клиент получает пару логин и пароль, которые требуются для авторизации, для чего необходимо закодировать пару
логин:парольалгоритмом Base64 и передать в виде заголовкаAuthorizationHTTP-запроса или через query-параметр
Пример закодированного заголовка HTTP Basic Authentication:
Authorization: Basic YWhhbWlsdG9uQGFwaWdlZS5jb206bXlwYXNzdzByZAo
2. Метод отправки сообщения
POST https://my.seven.tech/messaging/v1/send
2.1 Параметры
Параметры описываются в формате JSON и могут иметь один или несколько базовых элементов scenario.
| Name | Type | Description |
|---|---|---|
scenariorequired | scenario | Массив элементов описывающий процесс передачи сообщения (структура описана отдельно) |
callbackoptional | string | URI для отправки отчета о доставке. |
clientRequestIdoptional | string | Идентификатор клиентского запроса, макс имальная длина 100 символов |
urlOptionsoptional | object | Параметры сокращения ссылок в сообщении. Для включения такой возможности нужно обратиться к вашему менеджеру. |
trackDataoptional | object | Набор параметров, которые будут возвращены в callback, пример: "trackData": { "tag": "12345678" }, |
2.1.1 scenario — сценарий отправки сообщения
| Name | Type | Description |
|---|---|---|
channelrequired | enum | Канал отправки. Значения: sms - отправка сообщения посредством SMS viber - отправка сообщения в месссенджер Viber vkok - отправка сообщения через соцсети VK и OK (в зависимости от активности абонента в той или иной соцсети) push - отправка сообщения посредством Push нотификации на iOS/Android whatsapp - отправка сообщения в месссенджер WhatsApp tgotp - отправка кодов авторизации в мессенджер Telegram Каналы подключаются по согласованию с менеджером |
recipientrequired | recipient | Получатель сообщения (структура описана отдельно) |
senderrequired | string | Имя отправителя. Для канала sms максимальная длина 11 символов, для других каналов - 21. |
textoptional | string | Текст сообщения. Максимальная длина ограничена 39015 байтами (255 частей), что соответствует 39015 символам ASCII, 19507 символам не ASCII. Наличие emoji в тексте сокращает это значение, так как emoji занимает от 2 до 4 байт |
failoveroptional | object | Стратегия отправки сообщения по альтернативному каналу (структура описана отдельно) |
attachmentsoptional | attachments | Вложения сообщения (структура описана отдельно) |
buttonsoptional | buttons | Кнопка сообщения (структура описана отдельно) |
mobilePushActionoptional | string | DeepLink при нажатии на push сообщение, используется только для канала push |
mobilePushTitleoptional | string | Title для push сообщения, используется только для канала push |
2.1.1.1 recipient — получатель сообщения
| Name | Type | Description |
|---|---|---|
typerequired | enum | Тип получателя. Значения: MSISDN - номер абонента в формате [E.164] (https://en.wikipedia.org/wiki/E.164) |
valuerequired | stringmaxLength: 200 | Значение адреса получателя |
2.1.1.2 attachments — медиаконтент сообщения
| Name | Type | Description |
|---|---|---|
typerequired | enum | Тип контента. Значения: IMAGE — изображение AUDIO — аудио файл VIDEO – видео файл FILE — файл |
urlrequired | string | Ссылка на медиаконтент |
2.1.1.3 buttons — кнопка сообщения
| Name | Type | Description |
|---|---|---|
captionrequired | string | Текст кнопки |
actionrequired | string | Ссылка, которая откроется, при нажатии на кнопку |
2.1.1.4 failover — стратегия отправки по альтернативному каналу (каскадирование)
| Name | Type | Description |
|---|---|---|
ttloptional | integermax:259200 | Время ожидания (в секундах) статуса доставки или прочтения (в зависимости от condition_status). |
condition_status optional | enum | Тип ожидаемого статуса в период ttl:DELIVERED SEEN |
2.1.2 urlOptions — параметры обработки ссылок
| Name | Type | Description |
|---|---|---|
shortenUrlrequired | boolean | Флаг true означает, все ссылки, длина которых более 20 символа, будут заменены на короткие ссылки формата wsl.am/Aa34Zz7. Это позволит сократить длину сообщения и формировать отчеты по переходам по этим ссылкам. |
2.1.3 schedule — параметры отложенной отправки
| Name | Type | Description |
|---|---|---|
sendAfterconditional (обязателен если нет startTime) | string | Дата и время отправки сообщения, в формате формате YYYY-MM-DDTHH:mm:ssZ (RFC 3339), начиная с которых сообщение может быть отправлено. |
startTimeconditional (обязателен если нет sendAfter) | string | Время начала отправки сообщений в формате HH:MM:SS |
stopTimeconditional (обязателен если есть startTime) | string | Время окончания отправки сообщений в формате HH:MM:SS, если сообщение не успевает отправиться до этого времени, то отправка откладывается на следующий день |
useRecipientTimeZone optional | boolean | Учёт часового пояса абонента. Если null или false, сообщение отправляется по врем ени UTC, true - система автоматически определяет часовой пояс абонента по MSISDN и время, указанное в параметрах запроса, рассчитывается относительно времени получателя. |
Возможные комбинации параметров:
sendAftersendAfter + useRecipientTimeZonestartTime + stopTimestartTime + stopTime + useRecipientTimeZonesendAfter + useRecipientTimeZone + startTime + stopTimesendAfter + startTime + stopTime
2.2 Пример запроса
2.2.1 Viber - SMS
Отправка сообщения с сокращением ссылок в канал Viber с каскадированием в канал SMS, в случае неполучения статуса DELIVERED в течении 10 минут, с учетом часового пояса абонента.
{
"scenario": [
{
"channel": "viber",
"recipient": {
"type": "MSISDN",
"value": "79012223344"
},
"sender": "myname",
"text": "Текст сообщения viber",
"attachments": [
{
"type": "IMAGE",
"url": "http://content.url"
}
],
"buttons": [
{
"caption": "button text",
"action": "https://action.url"
}
],
"failover": {
"ttl": 600,
"condition_status": "DELIVERED"
}
},
{
"channel": "sms",
"recipient": {
"type": "MSISDN",
"value": 79012223344
},
"sender": "myname",
"text": "Текст sms-сообщения"
}
],
"callback": "https://callback_endpoint.url",
"clientRequestId": "string",
"trackData": {
"customParamWichWillBeReturned": "customParamValue"
},
"urlOptions": {
"shortenUrl": true
},
"schedule": {
"sendAfter": "2025-03-26T11:20:19.329Z",
"startTime": "10:00:00",
"stopTime": "18:00:00",
"useRecipientTimeZone": true
}
}
2.2.2 Whatsapp
По каналу Whatsapp возможна отправка т олько шаблонированных сообщений. Для получения информации о процессе регистрации шаблонов нужно обратиться к вашему менеджеру.
{
"scenario": [
{
"channel": "whatsapp",
"recipient": {
"type": "MSISDN",
"value": "79012223344"
},
"sender": "myname",
"text": "Текст сообщения whatsapp",
"failover": {
"ttl": 600,
"condition_status": "DELIVERED"
}
}
],
"callback": "https://callback_endpoint.url",
"clientRequestId": "string",
"trackData": {
"customParamWichWillBeReturned": "customParamValue"
}
}
2.2.3 Telegram
По каналу Telegram возможна отправка только кодов авторизации.
{
"scenario": [
{
"channel": "tgotp",
"recipient": {
"type": "MSISDN",
"value": "79012223344"
},
"sender": "Telegram",
"text": "123464",
"failover": {
"ttl": 3600,
"condition_status":"DELIVERED"
}
}
]
}
2.3 Ответ на запрос
2.3.1 Коды HTTP
| Code | Description |
|---|---|
200 | Запрос принят и обработан |
400 | Ошибка в формате запроса |
401 | Доступ API с указанными реквизитами запрещен. Проверить логин/пароль |
403 | Ошибка ав торизации, нет прав для использования API или IP запрещен |
2.3.2 Расширенная информация в теле ответа
| Name | Type | Description |
|---|---|---|
txIdrequired | stringuuid | Идентификатор сообщения в uuid |
updatedAtrequired | stringdatetime | Дата и время обновления состояния сообщения в UTC (ISO 8601 RFC 3339) |
staterequired | enum | Состояние сообщения. Возможные значения: ACCEPTED — сообщение принято FAILED – ошибка при обработке запроса |
trackDataoptional | json | Набор пользовательских параметров, которые будут возвращены в callback, пример: "trackData": { "ptag": "12345678" } |
erroroptional | json | Набор параметров, которые будут возвращены в error, пример: "error": { "code": 400, "message": "Scenario channels not unique" } |
2.3.3 Примеры ответов
Запрос принят и обработан
HTTP/200
{
"txId": "54a004c0-7f0a-4e4b-86e8-2c01d07b74f6",
"updatedAt": "2025-10-03T06:48:54.086559772Z",
"trackData": {
"tag": "0123456789"
},
"state": "ACCEPTED",
"error": {
"code": 0,
"message": "OK"
}
}
Ошибка в формате запроса
HTTP/400
{
"txId": "68f12a47-a9fd-4c55-8376-60b1e6db391e",
"updatedAt": "2025-10-03T07:03:05.445937942Z",
"trackData": {
"tag": "0123456789"
},
"state": "FAILED",
"error": {
"code": 400,
"message": "invalid params: Field 'scenario.channel' is empty"
}
}
Доступ API с указанными реквизитами запрещен
HTTP/401
{
"error": {
"id": "c404f158-824e-4593-80a5-d08d44d2430a",
"status": 401,
"message": "Invalid credentials",
"code": "unauthorized",
"errors": []
}
}
Ошибка авторизации, нет прав для использования API или IP запрещен
HTTP/403
{
"error": {
"id": "6f01542c-1edf-4eda-b1d2-0a291d957087",
"status": 403,
"message": "Access denied",
"code": "forbidden",
"errors": []
}
}
3. Возврат статуса (callback)
3.1. Нотификационная схема
В этом разделе описывается механизм обратных вызовов (callback), который коммуникационная платформа отправляет в сторону клиента. Обратные вызовы позволяют отправлять уведомления клиенту о смене статуса сообщения. Это позволяет клиенту получать актуальную информацию в реальном времени без необходимости опрашивать сервер.
URL для для возврата callback, указывется в запросе на отправку сообщения в параметре callback. Опционально можно задать статичный callback URL, для этого необходимо сообщить адрес службе поддержки или аккаунт-менеджеру.
POST https://partner.url/callback
3.1.1 Параметры запроса
| Name | Type | Description |
|---|---|---|
txIdrequired | stringuuid | Идентификатор сообщения |
updatedAtrequired | stringdatetime | Дата и время обновления состояния сообщения |
staterequired | enum | Состояние сообщения. Возможные значения: DELIVERED — сообщение успешно доставлено NOT_DELIVERED – сообщение не доставлено SEEN — сообщение просмотрено EXPIRED — статус сообщения не получен в течении указанного TTL FAILED — сообщение не отправлено. |
channeloptional | enum | Канал доставки. Значения: sms - СМС-сообщения whatsapp — мессенджер WhatsApp viber - мессенджер Viber tgotp - мессенджер Telegram push - пуш-уведомления из мобильного приложения Параметр может отсутствовать если state FAILED или EXPIRED |
trackDataoptional | json | Набор пользовательских параметров, которые будут возвращены в callback, пример: "trackData": { "ptag": "12345678" } |
erroroptional | error | Код и описание статуса в формате JSON. Расшифровка доступна в разделе Коды ошибок, пример: "error": { "code": 6, "message": "Абонент недоступен. Например, из-за уровня сигнала, выключения мобильного устройства" } |
3.1.2 Коды ошибок
| Code | Description |
|---|---|
0 | Успешная доставка |
1 | Неизвестная причина недоставки сообщения |
4 | Номер абонента (msisdn) не существует. |
6 | Абонент недоступен. Например, мобильное устройство выключено или низкий уровня сигнала сети |
8 | Номер абонента не обслуживается, не распознан оператором, абонент не зарегистрирован в сети оператора и т.п. |
11 | Сервис СМС не предоставляется. Например, услуга СМС не подключена или временно заблокирована |
12 | Ошибка в мобильном устройстве абонента |
13 | У абонента включен запрет на прием сообщений или абонент временно заблокирован оператором (например, в связи с отрицательным балансом) |
245 | Время ожидания статуса доставки истекло |
252 | Заблокировано спам-фильтром: запрещена отправка сообщений на данный номер абонента. |
253 | Заблокировано спам-фильтром: текст сообщения содержит запрещенные слова. |
254 | Заблокировано спам-фильтром: запрещена отправка сообщений с данного имени отправителя. |
255 | Внутренняя ошибка оператора. Например, ошибка маршрутизации, ошибка коммутатора (внутренняя ошибка передачи данных) и т.п. |
300 | Время ожидания статуса доставки истекло |
400 | Ошибка в параметрах запроса на отправку |
401 | Ошибка в реквизитах доступа: логин/пароль |
402 | Превышен лимит сообщений |
403 | Доступ к HTTP API с указанными реквизитами запрещен (не настроено подключение) |
406 | Невалидный формат адреса получателя |
408 | Превышена максимально разрешенная скорость отправки сообщений |
409 | Отправка сообщения-дубликата запрещена |
414 | Превышена максимальная длина текста сообщения |
423 | Отправка сообщения запрещена за фрод |
500 | Абонент заблокировал имя отправителя (для месенджеров) |
501 | У абонента отсутствует приложение для получения сообщения (для мессенджеров и push) |
3.1.3 Пример вызова
Ниже приведен пример callback-вызова, демонстрирующий сигнатуру запроса коммуникационной платформы в сторону клиента.
{
"txId": "7591a05e-f22b-4548-b824-915b617e2778",
"updatedAt": "2020-11-16T10:27:46.595Z",
"state": "DELIVERED",
"channel": "sms",
"trackData": {
"tag": "0123456789",
"otherTag": "0987654321"
},
"error": {
"code": 0,
"message": "Успешная доставка"
}
}
3.2. Опросная схема
Для получения статуса сервер клиента отправляет GET-запрос, передавая идентификатор сообщения, который был получен им при отправке по HTTP. Статус хранится двое суток, забрать статус можно несколько раз, при этом он может изменяться.
GET https://my.seven.tech/messaging/v1/check-status/{txId}
| Name | Type | Description |
|---|---|---|
txIdrequired | stringuuid | Идентификатор сообщения |
Параметры запроса и Коды ошибок такие же, как при нотификационной схеме.
4. Передача входящих сообщений (incoming)
POST https://partner.url/incoming
4.1 Параметры запроса
| Name | Type | Description |
|---|---|---|
txIdrequired | stringuuid | Идентификатор сообщения |
channelrequired | enum | Канал доставки. Значения: sms - СМС-сообщения whatsapp — ме ссенджер Viber viber - мессенджер Viber |
recipientrequired | recipient | Получатель сообщения (абонент, отправивший сообщение) (структура описана отдельно) |
senderrequired | stringmaxLength: 21 | Имя отправителя, на которое отправили сообщение |
textoptional | stringmaxLength: 2000 | Текст сообщения |
attachmentsoptional | attachments | Вложения сообщения (структура описана отдельно) |
acceptedAtoptional | stringdatetime | Дата и время получения сообщения |
outgoingTxIdoptional | stringuuid | txId сообщения на которое ответил абонент |