Помощен център GMS API Съвместимост

GMS API Съвместимост

SMSBAT поддържа слой за съвместимост с GMS API. Това ви позволява да мигрирате вашите съществуващи интеграции, предназначени за GMS, директно към SMSBAT, без да се налага да променяте вашите схеми за маршрутизиране на съобщения, структури на полезен товар или слушатели на обратно извикване.


Настройки на връзката

За да маршрутизирате заявки през SMSBAT, актуализирайте основния URL адрес и идентификационните данни за удостоверяване във вашата интеграция:

  • Основен URL: https://restapi.smsbat.com
  • Крайна точка: POST /api/GMSMessage/send_message
  • Формат на заявката: application/json
  • Удостоверяване: HTTP Basic Authentication (използва вашите идентификационни данни за SMSBAT API)

Параметри на заявката

API за съвместимост на GMS приема JSON обект със следните параметри от най-високо ниво:

ПараметърТипЗадължителноОписание
phone_numberнизДаТелефонен номер на получателя в международен формат (напр. 380501234567).
tagнизДаРегистрирано име на подател/алфа име.
channelsмасивДаСписък с канали, които да опитате, в приоритетен ред. Поддържани стойности: viber, sms, push. Например ["viber", "sms"].
channel_optionsобектДаКарта, съдържаща опции за всеки активен канал (вижте по-долу).
extra_idнизНеВашият вътрешен идентификатор на съобщение от страна на клиента.
callback_urlнизНеURL адрес на крайна точка във вашата система за получаване на обратни извиквания за статус на доставка.
division_codeнизНеНезадължителен идентификатор на код на разделяне (по подразбиране main).

Настройки на опциите на канала

Обектът channel_options съдържа специфични за канала конфигурации.

=== „Съобщение във Viber“

Използва се, когато `viber` е посочено в масива `channels`.

| Параметър | Тип | Задължително | Описание |
| :--- | :--- | :--- | :--- |
| `text` | низ | **Да** | Основен текст на съобщението. |
| `ttl` | цяло число | **Да** | Време за живот за секунди. |
| `img` | низ | Не | Обществен HTTPS URL адрес на изображението за показване. |
| `caption` | низ | Не | Текстов етикет на бутона. |
| `action` | низ | Не | Целеви URL адрес при щракване върху бутона. |
| `survey_options` | масив | Не | Масив от низове (2 до 5 елемента) за показване като опции за проучване. |
| `carousel_items` | масив | Не | Масив от слайд обекти за показване като въртележка на Viber (вижте структурата в раздела). |

**Пример за заявка във Viber:**
```json
{
  "phone_number": "380501234567",
  "tag": "MySender",
  "channels": ["viber"],
  "channel_options": {
    "viber": {
      "text": "Hello from SMSBAT!",
      "ttl": 60,
      "img": "https://www.example.com/image.png",
      "caption": "Open",
      "action": "https://www.example.com"
    }
  }
}
```

=== „Viber с резервен SMS“

Активира Viber съобщения с автоматичен резервен SMS, ако доставката на Viber е неуспешна в рамките на TTL.

**Пример за резервна заявка:**
```json
{
  "phone_number": "380501234567",
  "tag": "MySender",
  "channels": ["viber", "sms"],
  "channel_options": {
    "viber": {
      "text": "Your order is ready!",
      "ttl": 60,
      "caption": "Details",
      "action": "https://www.example.com/order"
    },
    "sms": {
      "text": "Your order is ready: https://www.example.com/order",
      "alpha_name": "MySender",
      "ttl": 60,
      "ctr": false
    }
  }
}
```

Използва се, когато sms е в списъка в масива channels.

ПараметърТипЗадължителноОписание
textнизДаОсновен текст на съобщението.
alpha_nameнизДаАлфа име на изпращача.
ttlцяло числоДаВреме за живот за секунди.
ctrбулевоНеАктивирайте проследяването на CTR при кликване върху връзки в текст (true/false).

Пример за SMS заявка:

{
  "phone_number": "380501234567",
  "tag": "MySender",
  "channels": ["sms"],
  "channel_options": {
    "sms": {
      "text": "Your verification code is 1234",
      "alpha_name": "MySender",
      "ttl": 60,
      "ctr": false
    }
  }
}

Формат на отговора

Крайната точка връща отговори във JSON формат с код за състояние HTTP 200 OK.

Успешен отговор

{
  "MessageId": "6f0d5e28-7f3a-4df3-91a2-3d58d9e09b9a",
  "ErrorCode": null,
  "ErrorText": null
}

Отговори за грешка

Ако проверката или обработката са неуспешни, ще бъде върнат отговор за грешка с ненулево ErrorCode и подробно ErrorText.

{
  "MessageId": "00000000-0000-0000-0000-000000000000",
  "ErrorCode": 10221,
  "ErrorText": "This type of Message is not supported by the system"
}

=== „Невалиден брой опции за анкета“ json { "MessageId": "00000000-0000-0000-0000-000000000000", "ErrorCode": 10221, "ErrorText": "There can be from 2 to 5 survey options." }

{
  "MessageId": "00000000-0000-0000-0000-000000000000",
  "ErrorCode": 400,
  "ErrorText": "Cannot send to international number: alpha name 'ALPHA' is not registered."
}

Формат за доставка на обратно извикване

Ако callback_url е посочено в заявката, SMSBAT изпраща актуализации на състоянието на доставката като JSON POST полезен товар до вашата крайна точка.

Пример за заявка за обратно повикване

POST /your-callback-endpoint HTTP/1.1
Host: yoursystem.com
Content-Type: application/json

{
  "number": "380501234567",
  "time": 1719237600000,
  "status": 2,
  "substatus": 23,
  "hyber_status": 23033,
  "message_id": "6f0d5e28-7f3a-4df3-91a2-3d58d9e09b9a",
  "extra_id": "ORDER-12345",
  "sent_via": "viber",
  "matching_template_id": 0
}

Описание на полетата за обратно извикване

ПолеТипОписание
numberнизТелефонен номер на получателя.
timeномерВремево клеймо на събитието в Unix милисекунди.
statusномерОпростен идентификатор на състояние (вижте таблицата с кодове на състояние).
substatusномерПодробен идентификатор на състоянието (вижте таблицата с кодове на подстатуси).
hyber_statusномерПодробен код за вътрешно състояние на SMSBAT (вижте таблицата за състояние на Hyber).
message_idнизИдентификатор на SMSBAT съобщение (GUID), генериран при изпращане.
extra_idнизID от страна на клиента, предоставен в оригиналната заявка.
sent_viaнизКанал, обработил съобщението: viber, sms или rcs.
matching_template_idномерСтатус на съответствие на шаблона на Viber (където е приложимо).

Съпоставяне на състоянието

1. Опростен статус (status)

КодЗначение
1Съобщението е прието или се доставя.
2Съобщението е доставено.
3Грешка при обработката или доставката.

2. Подробно състояние (substatus)

КодЗначение
12Приет за обработка.
23Доставено.
24Видяно/прочетено.
35Не е доставен в рамките на TTL (изтекъл).
36Грешка при доставката.

3. Тип канал (sent_via)

КаналОписание
viberСтатус, произведен от Viber канал.
smsСтатус, произведен от SMS канал.
rcsСтатус, произведен от RCS канал.

4. Подробно състояние на SMSBAT (hyber_status)

КодКаналСтатусПодстатусЗначение
23033viber223Съобщението във Viber е доставено.
24013viber224Viber съобщение, прочетено от получателя (Seen).
36013viber336Вътрешна грешка на Viber.
36023viber336Невалиден или недостъпен ID на услугата Viber.
36033viber336Невалидни данни за Viber.
36037viber336URL адресът на изображение във Viber е твърде дълъг.
36038viber336Невалиден URL адрес на изображение във Viber.
36039viber336Текстът на Viber е твърде дълъг.
36044viber336Празен текст във Viber.
36053viber336Неподдържан тип съобщение във Viber.
36063viber336Невалидни параметри на Viber.
36073viber336Време за изчакване на доставчика на Viber.
36083viber336Подателят на Viber е блокиран от получателя.
36093viber336Получателят не е регистриран като потребител на Viber.
36103viber336Не е намерено устройство с Android/iOS с поддръжка на Viber.
36113viber336Неоторизиран IP адрес за изпращане на Viber.
36123viber336Открито е дублирано съобщение във Viber.
36143viber336Грешка при таксуване на Viber.
36153viber336Съобщението е блокирано от черния списък на платформата.
36163viber336Грешка при вътрешна обработка на платформата Viber.
36173viber336Грешен или липсващ Viber етикет.
36183viber336Невалидна TTL стойност на Viber.
12011sms / rcs112SMS/RCS се приемат.
36011sms / rcs112SMS/RCS на път.
23011sms / rcs223Доставени SMS/RCS.
35015sms / rcs335SMS/RCS е изтекъл (не е доставен в рамките на TTL).
36021sms / rcs336SMS/RCS съобщението е изтрито.
36031sms / rcs336SMS/RCS не може да бъде доставен.
36041sms / rcs336Неизвестно състояние на доставка на SMS/RCS.
36051sms / rcs336SMS/RCS съобщението е отхвърлено.