1. All Collections >
  2. Каналы >
  3. Пользовательский канал >
  4. Пользовательский канал быстрого запуска

Пользовательский канал быстрого запуска

Avatar
JQ Lee
2 мин чтения

Эта интеграция позволяет вашей команде общаться с клиентами по любому каналу обмена сообщениями с помощью индивидуальной реализации.

Подключение пользовательского канала

Шаг 1: Перейти к Настройки > Каналы

Шаг 2: Нажмите Добавить канал > Пользовательский канал > Подключиться

Шаг 3: Введите целевой URL-адрес Webhook, на который будут отправляться исходящие сообщения.

Шаг 4: Выберите тип идентификатора для канала > нажмите Далее

Типы идентификаторов используются для идентификации пользователя и связи с вашим пользовательским сервером интеграции.

Доступны два типа идентификаторов:

  1. Номер телефона: Используйте этот вариант, если поставщик услуг обмена сообщениями распознает контакты по номеру телефона.

    1. Пример формата: +60177872890

  2. Пользовательский идентификатор: используйте этот вариант, если поставщик услуг обмена сообщениями распознает контакты на основе пользовательского идентификатора.

    1. Максимальная длина — 50 символов.

    2. AZ,az,0-9,_,=,+,/и@разрешены.

Шаг 5: В следующем диалоговом окне будут указаныИдентификатор канала,Токен APIиURL-адрес веб-перехватчиканапример

  1. Идентификатор канала:gfd8g7fd89dgfd

  2. Токен API:aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd

  3. URL-адрес веб-перехватчика:https://app.respond.io/custom/channel/webhook/

    Использование идентификатора номера телефона позволяет вам начать разговор и отправить первое сообщение контакту.

Передача сообщений на response.io

URL-адрес веб-перехватчикаиспользуется для публикациисообщений,сообщений эхаисообщений квитанцийна платформе response.io.

Предоставленный код активирует веб-хук на response.io, при необходимости создавая контакт и сохраняя сообщение под этим контактом.

Образец для сообщений

curl -X POST \\  
  https://app.respond.io/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": "xcvzzxcxczxczxc",  
      "timestamp": 2132131321000,  
      "message": {  
        "type": "text",  
        "text": "Привет, мир"  
      }  
    }  
  \],  
  "contact": {  
    "firstName": "Джон",  
    "lastName": "Доу",  
    "profilePic": "",  
    "countryCode": "MY",  
    "email": "john@respond.io",  
    "phone": "+60177872890",  
    "language": "en"  
  }  
}'

Образец для сообщений Echo

curl -X POST \\  
  https://app.respond.io/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": "xcvzzxcxczxczxc",  
      "timestamp": 2132131321000,  
      "message": {  
        "type": "text",  
        "text": "Привет, мир"  
      }  
    }  
  \],  
  "contact": {  
    "firstName": "Джон",  
    "lastName": "Доу",  
    "profilePic": "",  
    "countryCode": "MY",  
    "email": "john@respond.io",  
    "phone": "+60177872890",  
    "language": "en"  
  }  
}'

Образец квитанций об отправке сообщений

curl -X POST \\  
  https://app.respond.io/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": "xcvzzxcxczxczxc",  
      "timestamp": 2132131321000,  
      "status": {  
        "value": "sent|delivered|read|failed",  
        "message": "Ошибка: отправка не удалась из-за недопустимого токена"  
      }  
    }  
  \]  
}'

Поле

Описание

Проверка

идентификатор канала

Уникальный идентификатор канала

Необходимый. Уникальное поле. Генерируется response.io.

Идентификатор контакта

Уникальный идентификатор контакта

Необходимый. Уникальный идентификатор контакта response.io. Макс. 50 символов.

события.тип

Тип события

Необходимый. Доступные типы: message, message_echo и message_status.

события.mld

Идентификатор сообщения

Необходимый. Уникальный идентификатор сообщения. Макс. 50 символов.

события.метка времени

UNIX Epoch Time (миллисекунды)

Необходимый. Время события, вызвавшего обратный вызов.

события.сообщение.тип

Тип сообщения

Необходимый. Доступные типы сообщений: текст, вложение, местоположение и quick_reply. Примеры других типов сообщений см. в разделе «Тип сообщения».

события.сообщение.текст

Текст сообщения

Необходимый. Максимальная длина 7000 символов.

события.статус.значение

Текст

Обязательно, если event.type — message_status. Доступные значения статуса: отправлено, доставлено, прочитано и не выполнено.

события.статус.сообщение

Текст

Требуется, если значение events.status не пройдено.

контакт.имя

Имя

Необязательный. Макс. 50 символов.

контакт.фамилия

Фамилия

Необязательный. Макс. 50 символов.

контакт.изображение профиля

URL-адрес фотографии профиля

Необязательный. Размер аватара не должен превышать 100 кб. Рекомендуется 720x720.

контакт.локаль

Код локали

Необязательный. Список значений можно найти здесь.

contact.countryCode

Код страны

Необязательный. Двухбуквенный код страны — код ISO ALPHA-2.

контакт.часовой_пояс

Часовой пояс

Необязательный. (мин: -24) (макс: 24).

контакт.электронная почта

Адрес электронной почты

Необязательный. Макс. 50 символов.

контакт.телефон

Номер телефона

Необязательный. Максимум 18 символов.

контакт.язык

Язык

Необязательный. ИСО 639-1.

Ответ - Успешно (статус HTTP → 200)

"ОК"

Обработка исходящих сообщений от respond.io

response.io вызовет конечную точку<API Base URL>/message

Убедитесь, что вы применили кодисходящего сообщенияна маршруте/messageвашего веб-сервера.

Вот пример cURL для response.io, вызывающего конечную точку:

curl -X POST \\  
  /сообщение \\  
  -H 'Authorization: Bearer aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \\  
  -H 'Cache-Control: no-cache' \\  
  -H 'Content-Type: application/json' \\  
  -d '{  
	"channelId": "gfd8g7fd89dgfd",  
	"contactId": "+60177872890",  
	"message": {  
		"type": "text",  
		"text": "Привет, мир"  
	}  
}'

Ответ - Успешно (статус HTTP → 200)

{  
	"mId": "1640141607842"  
}

Необходимо выполнить аутентификацию на конечной точке перед отправкой сообщения поставщику услуг обмена сообщениями.

Вот пример использования промежуточного программного обеспечения Express для этой цели:

const {validationResult} = require('express-validator');

const validateToken = (req, res, next) => {
    const apiToken = <>;
    const bearerToken = req.headers.authorization;

    if (!bearerToken)
        return res.send(401);

    const token = bearerToken.substring(7, bearerToken.length);

    if (apiToken !== token) {
        return res.send(401);
    }
    next();
};

module.exports = {
    validateToken
};

Вот пример пользовательского канала, который вы можете протестировать на своем сервере. Ознакомьтесь с нашим проектом GitHub здесь.

Тип сообщения

Образец текста

{  
  "тип": "текст",  
  "текст": "Добро пожаловать в respond.io",  
}

Поле

Описание

Проверка

тип

Тип сообщения

Необходимый. текст

текст

Текст сообщения

Необходимый. Максимальная длина 7000 символов.

Образец для медиа-файла

{  
  "тип": "вложение",  
  "вложение": {  
    "тип": "изображение|видео|аудио|файл",  
    "url": "https://abc/japan.png",  
    "mimeType": "image/png",  
    "fileName":"логотип компании.png",  
    "описание": "последний логотип компании"  
  }  
}

Поле

Описание

Проверка

тип

Тип сообщения

Необходимый. вложение.

тип.прикрепления

Тип вложения

Необходимый. Доступные типы вложений: изображение, видео, аудио и файл.

вложение.url

URL

Необходимый. Максимум 2000 символов. Убедитесь, что это общедоступная ссылка, чтобы пользователи или контакты могли видеть ее содержимое.

вложение.mimeType

Тип MIME вложения

Необязательный

вложение.имя_файла

Имя файла

Необязательный. Имя файла должно включать расширение. Максимум 256 символов (включая расширение файла). Отправка файла без расширения или с неправильным расширением может привести к тому, что контакт или пользователь не сможет открыть файл.

вложение.описание

Описание файла

Необязательный. Максимум 256 символов. Применимо только для attach.type = image.

Убедитесь, что URL-адрес вложения не'принудительно загружен браузером. Заголовок HTTP-ответа's Content-Disposition должен иметь значение по умолчанию, то есть inline.

Образец для местоположения

{  
  "тип": "местоположение",  
  "широта": 0,123456,  
  "долгота": -0,1234,  
  "адрес": "Sky Suites, Джалан П. Рамли, Куала-Лумпур, 50250 Куала-Лумпур, Вилайя Персекутуан Куала-Лумпур"  
}

Поле

Описание

Проверка

тип

Тип сообщения

Необходимый. расположение.

широта

Координаты

Необходимый. Широта (±90°) в допустимых диапазонах.

долгота

Координаты

Необходимый. Долгота (±180°) в допустимых диапазонах.

адрес

Адрес местонахождения

Необязательный. Максимум 256 символов.

Образец для быстрого ответа

{  
  "тип": "быстрый_ответ",  
  "заголовок": "Выберите предпочитаемый язык",    
  "ответы": [  
    "Малайский",  
    "Английский"  
  ]  
}

Поле

Описание

Проверка

тип

Тип сообщения

Необходимый. быстрый_ответ.

заголовок

Заголовок быстрого ответа

Необходимый. Максимум 256 символов.

ответы

Текст ответа

Необходимый. Максимум 10 ответов, каждый длиной не более 256 символов.

Коды ошибок

Ошибка (статус HTTP → 4xx)

Конфигурация канала

Шаг 1: Нажмите Настройки > Каналы

Шаг 2: Найдите пользовательский канал > нажмите Управление

Шаг 3: На странице Пользовательской конфигурации канала вы увидите следующие конфигурации:

  • Значок канала - Загрузите изображение, которое будет служить значком для вашего пользовательского канала.

  • Название канала - Название канала можно изменить, оно используется внутри для идентификации канала.

  • URL-адрес веб-перехватчика для исходящих сообщений — URL-адрес веб-перехватчика для исходящих сообщений на этот канал.

  • URL-адрес веб-перехватчика для входящих сообщений — URL-адрес веб-перехватчика для входящих сообщений на этот канал.

  • Тип идентификатора — Они используются для идентификации пользователя и используются для связи с вашим пользовательским сервером интеграции.

  • Идентификатор канала — Уникальный идентификатор канала для идентификации вашего пользовательского канала.

  • API-токен — уникальный идентификатор, используемый для аутентификации пользователя для доступа к API.

Шаг 4: Нажмите Сохранить изменения , чтобы обновить конфигурацию пользовательского канала.

Часто задаваемые вопросы и устранение неполадок

Могу ли я подключить чаты с других платформ с помощью пользовательского канала?

Да, можете. Вот три шага, которые нужно выполнить:

  1. В response.io введите URL-адрес веб-перехватчика назначения с другой платформы в поле URL-адрес веб-перехватчика для входящего сообщения .

  2. На другой платформе настройте URL-адрес веб-перехватчика , указывающий на response.io, что позволит Контактам отправлять вам сообщения.

  3. Вам'понадобится Пользовательский сервер интеграции для интерпретации API как от response.io, так и от другой платформы, что позволит обмениваться сообщениями между ними.

Обязательно подтвердите на другой платформе, что первые два шага осуществимы.

Часто задаваемые вопросы по пользовательским веб-перехватчикам каналов

Почему вебхук возвращает статус 200, даже если сообщение не доставлено на response.io?

При подключении пользовательского канала сообщения, отправленные на response.io через веб-перехватчики, всегда будут немедленно возвращать код статуса 200, независимо от того, было ли сообщение успешно передано на response.io. Это связано с природой веб-хуков, которые предназначены для немедленного возврата ответа без проверки успешности доставки сообщения.

Поделиться этой статьей
Telegram
Facebook
Linkedin
Twitter

Не удается найти то, что вы ищете? 🔎