Перейти к содержанию

Диалоги

Для выпуска токена канала нужен ключ с правом на диалоги и полным доступом. Без этого права POST /admin/dialogs/provider_tokens.json возвращает 403. Опубликованному приложению это право в кабинете партнёра не выдаётся, поэтому запрос также возвращает 403.

После получения токена провайдер работает через Provider API на messengers.insales.ru.

Токен провайдера диалогов

Чтобы выпустить токен, используйте POST /admin/dialogs/provider_tokens.json. Передайте поле messenger_type на верхнем уровне JSON. Если вложить его в provider_token, поле будет проигнорировано, а ответ совпадёт с ответом на пустой запрос. Чтение через GET не поддерживается и возвращает 404.

Параметр messenger_type принимает sms, telegram, viber, email или vk. Значение sms относится к каналу «Диалогов»; метод не выпускает код входа покупателя на витрину.

При успехе API возвращает 200 и пару токенов, каждый из 128 шестнадцатеричных символов. Повторный запрос для того же messenger_type выпускает новую пару. Прежние токены больше не подходят для работы с Provider API.

Ошибки этого метода также возвращаются с HTTP-статусом 200. Проверяйте наличие поля error в теле ответа.

При удалении пароля приложения его токены также удаляются. Запрос к Provider API с прежним api_token после этого возвращает 401.

POST/admin/dialogs/provider_tokens.json
Параметр Описание
messenger_type обязательный
строка
sms, telegram, viber, email или vk.
POST /admin/dialogs/provider_tokens.json
Authorization: Basic API_KEY:API_PASSWORD
Accept: application/json
Content-Type: application/json

{
  "messenger_type": "telegram"
}

Ответ · 200

{
  "api_token": "…128 шестнадцатеричных символов…",
  "webhook_token": "…128 шестнадцатеричных символов…"
}

Пустой messenger_type и тело без этого поля отвечают 200:

{
  "error": "Please, specify messenger_type to issue a token"
}

Provider API

Отправляйте запросы на https://messengers.insales.ru. В заголовке Authorization передавайте значение api_token без префиксов Basic или Bearer. Для чужого токена API возвращает 401 и {"error":"Not authorized"}.

Пока магазин не переключил канал на этого провайдера, поле active равно false. Переключить канал через Provider API нельзя.

GET/api/messengers/provider/v1/settings
GET /api/messengers/provider/v1/settings
Host: messengers.insales.ru
Authorization: API_TOKEN
Accept: application/json

Ответ · 200

{
  "send_message_url": null,
  "settings_url": null,
  "active": false
}

POST тех же настроек отвечает 201.

POST/api/messengers/provider/v1/settings
Параметр Описание
send_message_url необязательный
строка
Адрес, на который магазин шлёт исходящее сообщение.
settings_url необязательный
строка
Адрес, на который магазин шлёт gateway_token.
POST /api/messengers/provider/v1/settings
Host: messengers.insales.ru
Authorization: API_TOKEN
Accept: application/json
Content-Type: application/json

{
  "send_message_url": "https://example.com/insales-dialogs",
  "settings_url": "https://example.com/insales-dialogs-settings"
}

Ответ · 201

{
  "send_message_url": "https://example.com/insales-dialogs",
  "settings_url": "https://example.com/insales-dialogs-settings",
  "active": false
}

Для отправки сообщения InSales вызывает send_message_url POST-запросом с заголовками Authorization: webhook_token и Content-Type: application/json. Текстовое сообщение имеет следующий вид:

{
  "to": "chat-id",
  "internal_id": 100,
  "account_id": 233686,
  "body": "текст",
  "type": "text"
}

Если сообщение содержит файл, вместо body и type: text передаются type: file и files: [{url, name}].

Сервис должен вернуть 200 и JSON с status и external_id. Допустимы статусы scheduled, wait_for_capture, complete и error. Другой HTTP-статус или неизвестный status считаются ошибкой. Повторной отправки вебхука нет.

При изменении токена шлюза магазина InSales отправляет на settings_url запрос с телом {"gateway_token":"…","account_id":233686} и тем же заголовком авторизации.

Чтобы передать входящее сообщение клиента в InSales, провайдер отправляет POST /api/messengers/provider/v1/messages. Если active равен false, API возвращает 422.

POST/api/messengers/provider/v1/messages
Параметр Описание
from обязательный
строка
Идентификатор отправителя в канале: телефон, email или другой id.
external_id обязательный
строка
Идентификатор сообщения у провайдера.
time обязательный
строка
Время сообщения.
body необязательный
строка
Текст. Нужен body, files или meta_type.
POST /api/messengers/provider/v1/messages
Host: messengers.insales.ru
Authorization: API_TOKEN
Accept: application/json
Content-Type: application/json

{
  "from": "+79990000000",
  "external_id": "docs-1",
  "time": "2026-10-21T22:22:00+03:00",
  "body": "Здравствуйте"
}

Ответ · 422

{
  "errors": [
    "Provider was deactivated by user. You can't send messages to user while it's deactivated"
  ]
}

POST /api/messengers/provider/v1/message_status принимает external_id и status: scheduled, complete, wait_for_capture, error. Неизвестное сообщение отвечает 404, тело {}.