Эта интеграция позволяет вашей команде общаться с клиентами через любой канал обмена сообщениями через пользовательскую реализацию.
Шаг 1: Перейдите к Настройки > Каналы
Шаг 2: Щелкните Добавить канал > Пользовательский канал > Подключиться
Шаг 3: Введите URL назначения Webhook, где будут отправляться исходящие сообщения.
Шаг 4: Выберите тип ID для канала > нажмите Далее
Типы идентификаторов используются для идентификации пользователей и используются для связи с вашим пользовательским сервером интеграции.
Существует два типа идентификаторов:
Телефонный номер: Используйте это, если поставщик услуг обмена сообщениями распознает контакты на основе их телефонного номера.
Формат примера: +60177872890
Пользовательский ID: Используйте, если поставщик услуг обмена сообщениями распознает контакты на основе пользовательского ID.
Максимальная длина символа - 50.
A-Z
,a-z
,0-9
,_
,=
,+
,/
и@
разрешены.
Шаг 5: Следующий диалог предоставитканал ID,API TokenиURL Webhookнапр.
ID канала:gfd8g7fd89dgfd
API Token:aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd
Webhook URL:https://app.respond.io/custom/channel/webhook/
Использование типа Номер телефона позволяет инициировать разговор и отправить первое сообщение контакту.
URL-адрес веб-перехватчикаиспользуется для публикациисообщений,сообщений эхаисообщений квитанцийна платформе response.io.
Предоставленный код вызовет webhook на respond.io, создаст контакт, если это необходимо, и сохранит сообщение под этим Контактом.
Пример для сообщений
curl -X POST \\
https://app.respond. o/custom/channel/webhook/ \\
-H 'authorization: Bearer aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \\
-H 'cache-control: no-cache' \\
-H 'content-type: application/json' \\
-d '{
"channelId": "gfd8g7fd89dgfd",
"contactId": "+60177872890",
"events": \[
{
"type": "message",
"mId": "xcvzzxcxczxc",
"timestamp": 21321321000,
"message": {
"type": "text",
"Текст": "Приветствуем мир"
}
}
\],
"contact": {
"firstName": "John",
"lastName": "Doe",
"profilePic": "",
"Код страны": "MY",
"email": "john@respond. o",
"телефон": "+60177872890",
"язык": "ru"
}
}'
Пример для сообщений Echoes
curl -X POST \\
https://app.respond. o/custom/channel/webhook/ \\
-H 'authorization: Bearer aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \\
-H 'cache-control: no-cache' \\
-H 'content-type: application/json' \\
-d '{
"channelId": "gfd8g7fd89dgfd",
"contactId": "+60177872890",
"events": \[
{
"type": "message\_echo",
"mId": "xcvzzxcxczxc",
"timestamp": 21321321000,
"message": {
"type": "text",
"Текст": "Приветствуем мир"
}
}
\],
"contact": {
"firstName": "John",
"lastName": "Doe",
"profilePic": "",
"Код страны": "MY",
"email": "john@respond. o",
"телефон": "+60177872890",
"язык": "ru"
}
}'
Пример для отправки квитанций
curl -X POST \\
https://app.respond. o/custom/channel/webhook/ \\
-H 'authorization: Bearer aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \\
-H 'cache-control: no-cache' \\
-H 'content-type: application/json' \\
-d '{
"channelId": "gfd8g7fd89dgfd",
"contactId": "+60177872890",
"events": \[
{
"type": "message\_status",
"mId": "xcvzzxcxczxc",
"timestamp": 21321321000,
"status": {
"value": "sent|delivered|read|failed",
"message": "Ошибка: отправка не удалась из-за неверного токена"
}
\]
}'
Поле | Описание | Проверка |
---|---|---|
ID канала | Уникальный ID канала | Обязательно. Уникальное поле. Создается через respond.io. |
contactId | Уникальный ID контакта | Обязательно. Уникальный respond.io контактный id. Макс. 50 символов. |
events.type | Тип события | Обязательно. Доступный тип: сообщение, message_echo, message_status. |
events.mld | ID сообщения | Обязательно. Уникальный идентификатор сообщения. Макс. 50 символов. |
events.timestamp | Время Эпохи UNIX (миллисекунд) | Обязательно. Время события, вызвавшего ответ. |
events.message.type | Тип сообщения | Обязательно. Доступные типы сообщений: текст, вложение, местоположение и быстрый ответ. См. раздел "Тип сообщения" для других образцов типов сообщений. |
events.message.text | Текст сообщения | Обязательно. Максимальная длина 7,000 символов. |
events.status.value | Текст | Требуется если event.type является message_status. Доступные значения статуса: отправлено, доставлено, прочитано и не удалось. |
events.status.message | Текст | Требуется если events.status.value не удался. |
contact.firstName | Имя | Необязательно. Макс. 50 символов. |
contact.lastName | Фамилия | Необязательно. Макс. 50 символов. |
contact.profilePic | URL Pic профиля | Необязательно. Размер аватара не должен превышать 100 кб. Рекомендуется 720 x 720. |
Локаль contact.locale | Код языка | Необязательно. Список значений можно найти здесь. |
contact.countrycode | Код страны | Необязательно. Код страны - ISO ALPHA-2. |
часовой пояс contact.time | Часовой пояс | Необязательно. (мин: -24) (макс: 24). |
contact.email | Email Address | Необязательно. Макс. 50 символов. |
contact.phone | Номер телефона | Необязательно. Максимум 18 символов. |
Язык контакта | Язык | Необязательно. ISO 639-1. |
Ответ - Успех (HTTP статус → 200)
"OK"
response.io вызовет конечную точку<API Base URL>/message
Убедитесь, что вы применили кодИсходящего сообщенияна маршруте
/message
вашего веб-сервера.
Вот пример cURL respond.io вызова конечной точки:
curl -X POST \\
/message \\
-H 'authorization: Bearer aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \\
-H 'cache-control: no-cache' \\
-H 'content-type: application/json' \\
-d '{
"channelId": "gfd8g7fd89dgfd",
"contactId": "+60177872890",
"message": {
"type": "text",
"Текст": "Привет, Мир"
}
}'
Ответ - Успех (HTTP статус → 200)
{
"mId": "1640141607842"
}
Аутентификация должна происходить в конечной точке перед отправкой сообщения поставщику услуг обмена сообщениями.
Вот's пример использования экспресс-middleware для этой цели:
const {validationResult} = require('express-validator');
const validateToken = (req, res, next) => {
const apiToken = <>
const bearerToken = req. eaders.authorization;
если (!bearerToken)
возвращает с. end(401)
const token = bearerToken.substring(7, bearerToken.
if (apiToken !== token) {
return res. end(401)
}
следующей();
};
module.exports = {
validateToken
};
Мы'включили пример пользовательского канала, который вы можете тестировать на вашем сервере. Посмотрите наш проект GitHub здесь.
Образец текста
{
"type": "text",
"text": "Добро пожаловать в respond.io",
}
Поле | Описание | Проверка |
---|---|---|
тип | Тип сообщения | Обязательно. текст |
текст | Текст сообщения | Обязательно. Максимальная длина 7,000 символов. |
Пример для медиа файла
{
"type": "attachment",
"attachment": {
"type": "image|video|audio|file",
"url": "https://abc/japan. ng",
"mimeType": "image/png",
"fileName":"логотип компании. ng",
"Описание": "последний логотип компании"
}
}
Поле | Описание | Проверка |
---|---|---|
тип | Тип сообщения | Обязательно. прикреплено. |
тип приложения | Тип вложения | Обязательно. Доступные типы вложений: изображение, видео, аудио и файл. |
attachment.url | URL | Обязательно. Макс. 2000 символов. Убедитесь, что это публичная ссылка, чтобы пользователи или контакты могли видеть содержимое. |
крепление.mimeType | Mime тип приложения | Опционально |
приложить имя файла | Имя файла | Необязательно. Имя файла должно включать расширение. Максимум 256 символов (включая расширение файла). Отправка файла без расширения или неправильного расширения может привести к тому, что контакт или пользователь не сможет открыть файл. |
добавление.описание | Описание файла | Необязательно. Максимум 256 символов. Применяется только для прикрепленного типа = изображения. |
Убедитесь, что URL-адрес вложения является't принудительно скачан браузером. Заголовок HTTP ответа's Content-Disposition
должен иметь значение по умолчанию, то есть inline
.
Пример для местоположения
{
"type": "location",
"latitude": 0.123456,
"longitude": -0.1234,
"address": "Sky Suites, Jalan P. Ramlee, Kuala Lumpur, 50250 Kuala Lumpur, Wilayah Persekutuan Kuala Lumpur"
}
Поле | Описание | Проверка |
---|---|---|
тип | Тип сообщения | Обязательно. местоположение. |
широта | Координаты | Обязательно. Широта (±90°) в пределах допустимых диапазонов. |
longtitude | Координаты | Обязательно. Долгота (±180°) в пределах допустимых диапазонов. |
адрес | Адрес местоположения | Необязательно. Максимум 256 символов. |
Пример для быстрого ответа
{
"type": "quick\_reply",
"title": "Выберите предпочитаемый язык",
"Ответы": \[
"Малай",
"English"
\]
}
Поле | Описание | Проверка |
---|---|---|
тип | Тип сообщения | Обязательно. быстрое _reply. |
название | Заголовок быстрого ответа | Обязательно. Максимум 256 символов. |
ответов | Текст ответа | Обязательно. Максимум 10 ответов максимум 256 символов для каждого ответа. |
Error (HTTP Status → 4xx)
Шаг 1: Нажмите Параметры > Каналы
Шаг 2: Найдите пользовательский канал > нажмите Управление
Шаг 3: на странице Пользовательской конфигурации канала вы увидите следующие конфигурации:
Значок канала - Загрузите изображение, которое служит иконкой для пользовательского канала.
Название канала - Название канала можно изменить, оно используется внутри для идентификации канала.
Webhook URL для исходящих сообщений — Webhook URL для исходящих сообщений в этот канал.
Webhook URL для входящего сообщения — Webhook URL для входящих сообщений на этот канал.
ID Type — Они используются для идентификации пользователя и используются для связи с вашим пользовательским сервером интеграции.
Channel ID — Unique Channel ID для идентификации пользовательского канала.
API Token — уникальный идентификатор, используемый для аутентификации пользователя для доступа к API.
Шаг 4: Нажмите Сохранить изменения для обновления конфигурации пользовательского канала.
Да, вы можете. Ниже перечислены три шага:
В respond.io, введите URL-адрес вебхука назначения с другой платформы в поле URL-адрес Webhook для входящего сообщения.
На другой платформе настройте URL-адрес webhook со ссылкой на respond.io, позволяя Контактам отправлять вам сообщения.
Вам'понадобится сервер пользовательской интеграции для интерпретации API как с respond.io, так и с другой платформы, что позволяет обмениваться сообщениями между ними.
Убедитесь, что с другой платформой возможны первые два шага.
При подключении пользовательского канала сообщения отправляются на ответ. , через вебхуки всегда возвращают 200 статус-кода немедленно, независимо от того, было ли сообщение успешно передано в respond.io. Это обусловлено характером вебхуков, которые предназначены для возврата немедленного ответа без проверки успеха доставки сообщения.
Соответствующие статьи 👩💻