Собственная CRM & CDP
Термины
Бот – сущность на платформе Fasttrack, которая поддерживает работу с несколькими каналами: Telegram, VK, OK, FB, etc.
Чат – непосредственный канал общения клиента из соц. сети/мессенджера с ботом на платформе.
Профиль – клиент на платформе Fasttrack, у него может быть несколько чатов; привязываются по номеру телефона.
Обмен ключами (опционально)
Fasttrack на своей стороне заводит глобальное приложение CDP. У приложения есть client_id
и client_secret
. Эти параметры выдаются платформе CDP/CRM.
Далее, CDP/CRM в своем личном кабинете для клиента выводит интеграцию с Fasttrack. Затем пользователь может на нее нажать и после процесс выглядит следующим образом:
Браузер переадресовывает пользователь на страницу авторизации Fasttrack
Пример URL:
<https://dashboard.fstrk.io/integrations/oauth/?client_id=XXX&redirect_uri=https://enkod.io/endpoint_xxx/&state=dummy&code=code>
client_id
иclient_secret
– ранее выданные ключи;redirect_uri
– куда переадресовать пользователя;state
– доп. значение, которое нужно передать в GET-параметрах для redirect_uri;code
– временный код.
На странице Fasttrack пользователь выбирает проект (чат-бот), который хочет авторизовать (у пользователя может быть их много);
Браузер переадресовывает юзера обратно на CDP.CRM, на URL переданный параметром
redirect_url
(пример:https://CDP.io/api/auth/{uuid}/), с добавлением ранее параметраstage
и кода авторизацииcode
–https://CDP.io/api/auth/{uuid}/?stage={str}&code={str};Бэкенд CDP/CRM обращается на бэкенд Fasttrack, обменивая временный код на постоянный
access_token
.
Пример POST запроса:
{
"client_id": "XXX",
"client_secret": "YYY",
"grant_type": "code",
"code": "ПОЛУЧЕННЫЙ_КОД"
}
Затем CDP/CRM сохраняет полученный
access_token
в профиле клиента и все последующие запросы подписывает в заголовке `Authorization: Bearer <access_token>
Фронтенд CDP/CRM ни в коем случае не ходит на бэкенд Fasttrack, все запросы должны через бэкенд CDP/CRM.
Получение и отправка сообщений
Данная интеграция актуальна для CRM при необходимости для оператора/продавца вести переписку из профиля пользователя в CRM. Для интеграции с CDP это интеграция не нужна.
Настройка webhook для событий/сообщений от пользователя
Пользователь может написать боту, затем это событие прилетит на указанный URL.
HTTP-метод:
PUT
{
"webhook_url": "https://example.com/receive_webhook/{uuid}/"
}
Пример события, когда пишет клиент:
{
"event_type": "message_created",
"payload": {
"chat": {
"uuid": "2220b01d-9d51-4006-bad5-857156444b06",
"avatar": null,
"platform": "Telegram",
"phone": null,
"name": "Иван Пупкин"
},
"profile": {
"uuid": "9305e2f9-6ee8-4b97-9ef9-7f87f84c575c",
"integrations": {}
},
"message": {
"uuid": "048b22ae-7da6-4d43-b72b-6669a8b67d18",
"type": "text",
"text": "как дела?"
},
"session_title": null,
"session_context": null,
"session": {
"title": null,
"context": null,
"team": {
"id": 1303,
"name": "Нераспределенные"
}
}
},
"timestamp": 1650891884304
}
Чтобы отключить посылку уведомлений, просто отправьте пустой webhook_url
.
Настройка webhook для событий/сообщений от пользователя
Пользователь может написать боту, затем это событие прилетит на указанный URL.
HTTP-метод:
PUT
{
"webhook_url": "https://example.com/receive_webhook/{uuid}/"
}
Пример события, когда пишет клиент:
{
"event_type": "message_created",
"payload": {
"chat": {
"uuid": "2220b01d-9d51-4006-bad5-857156444b06",
"avatar": null,
"platform": "Telegram",
"phone": null,
"name": "Иван Пупкин"
},
"profile": {
"uuid": "9305e2f9-6ee8-4b97-9ef9-7f87f84c575c",
"integrations": {}
},
"message": {
"uuid": "048b22ae-7da6-4d43-b72b-6669a8b67d18",
"type": "text",
"text": "как дела?"
},
"session_title": null,
"session_context": null,
"session": {
"title": null,
"context": null,
"team": {
"id": 1303,
"name": "Нераспределенные"
}
}
},
"timestamp": 1650891884304
}
Вебхук когда пишет клиент из вне на платформу
Пример события:
{
"event_type": "message_created",
"payload": {
"chat": {
"uuid": "b1c99ecb-76f8-4b22-9c1d-fb87f311e5e5",
"avatar": "https://",
"platform": "Telegram",
"phone": null,
"name": "Ivan Pupkin"
},
"profile": {
"uuid": "007fddc5-c121-483f-9962-016c4952eedf"
},
"message": {
"uuid": "5429be43-acc8-468c-9a79-b8b64b25bc53",
"type": "text",
"text": "Привет! Это сообщение прилетело из Телеграм-бота"
},
"session": {
"title": null,
"context": null,
"team": {
"id": 1,
"name": "Нераспределенные"
}
}
},
"timestamp": 1678901065779
}
Вебхук когда оператор пишет клиенту
Пример события:
{
"event_type": "operator_replied",
"payload": {
"chat": {
"uuid": "b1c99ecb-76f8-4b22-9c1d-fb87f311e5e5",
"avatar": "https://",
"platform": "Telegram",
"phone": null,
"name": "Ivan Pupkin"
},
"profile": {
"uuid": "007fddc5-c121-483f-9962-016c4952eedf"
},
"message": {
"type": "text",
"text": "Привет сообщение от оператора.",
"uuid": "6e4a6ad9-74e1-4b09-bdf0-2affe452519e"
},
"session": {
"title": null,
"context": null,
"team": {
"id": 1,
"name": "Нераспределенные"
},
"operator": {
"uuid": "ff713022-1ef3-49b9-8a71-83ea07295666",
"name": "Operator 1",
"avatar": null
}
}
},
"timestamp": 1678901061322
}
Отправка сообщения пользователю через UUID чата
Если в п. 1.1 прилетело событие от подписчика, вы можете на него ответить, используя следующий формат:
HTTP-метод:
POST
{
"event": "message_created",
"chat": {
"uuid": "2220b01d-9d51-4006-bad5-857156444b06"
},
"message": {
"type": "text",
"text": "Привет, у меня все отлично!"
},
"sender": {
"name": "Иван Пупкин"
},
"timestamp": 1624607235580
}
Отправка PUSH-сообщения по профилю (UUID/номер телефона) для CDP
Предусловие. Настроенная интеграция по передаче информации профиля Fasttrack в CDP (настраивается на стороне Fasttrack кастомно или продуктизировано).
Отправить сообщение по UUID:
HTTP-метод:
POST
{
"profile": {
"uuid": "00000000-0000-0000-0000-000000000000"
},
"content": {
"type": "TEXT",
"text": "Текст сообщения"
}
}
Отправить сообщение по номеру телефона:
HTTP-метод:
POST
{
"profile": {
"phone_number": "+79999999999"
},
"content": {
"type": "TEXT",
"text": "Текст сообщения"
}
}
Отправка платного сообщения WABA пользователю при инициации (написать первым) или за пределами 24-х часового окна для CDP и CRM
Предварительно шаблоны должны заведены быть на платформе Fasttrack и согласованы провайдером (в текущий момент поддерживаются EDNA и SMS Traffic).
HTTP-метод:
POST
{
"profile": {
"phone_number": "+79999999999"
},
"content": {
"type": "WHATSAPP_TEMPLATE",
"whatsapp_template": {
"pid": "hello_world"
},
"whatsapp_template_variables": {
"v1": "Иван"
}
}
}
Отправка сообщения используя “каскад” для CDP или CRM
Отправка одного запроса для отправки на несколько каналов пошагово.
Endpoint: https://cascades.fstrk.io/
HTTP-метод:
POST
{
"phone_number": "79991234567",
"routing": [
"BOT",
"WHATSAPP",
"VIBER",
"VK",
"SMS"
],
"validity_period_seconds": 120,
"whatsapp_template_name": "hello_world",
"whatsapp_template_variables": {
"v1": "Иван"
}
}
Список шаблонов WABA
Созданные и добавленные.
Данный сценарий не является необходимым для отправки шаблонов, может использоваться для визуализации шаблонов в CDP и CRM.
HTTP-метод:
GET
Пример ответа:
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"provider_template_id": "test",
"name": "test",
"status": "NOT_WORKED",
"sections": [
"CHAT_CENTER",
"BROADCAST_CAMPAIGNS",
"CONSTRUCTOR"
],
"text": "Hello: {{ v1 }}.",
"variables": [
"v1"
],
"buttons": [
{
"text": "test"
}
]
}
]
}
Доставка статусов WABA
Имеется возможность дополнительно в настройках в учетке Fasttrack установить специальный URL адрес, на который будут приходить статусы о доставках. Можно при необходимости добавить end-point в рамках интеграции (п.0)
Пример события:
{
"timestamp": 1651777267.2949505,
"type": "update",
"model": "message",
"data": {
"uuid": "7feeec45-8013-4757-afb2-6326b358082e",
"status": "sent",
"detail": null,
"messages": [
{
"status": "undelivered",
"error": "failed"
}
]
}
}
Доставка статусов по каскадным отправкам
Позволяет получать статусы доставок, выполненные по цепочке. Посылка пакета со статусами происходит в том случае, когда транзакция завершается. Устанавливается вручную, через техническую поддержку.
Пример события:
{
"event_type": "transaction.done",
"payload": {
"uuid": "04191c1d-e7dd-4572-a544-6eb9c2855a5e",
"done_at": "2022-05-05T18:41:00.831294Z",
"done_status": "MESSAGE_SENT",
"successful_routes": [
"WHATSAPP"
],
"route_details": {
"BOT": {
"uuid": "cfa41bcb-fdf6-4a34-a8a7-4334e5014bbc",
"state": "ERROR",
"response_status": null,
"response_description": null
},
"WHATSAPP": {
"uuid": "855d6d27-58d4-4ae4-9deb-de6c504cc845",
"state": "SENT",
"response_status": "DELIVERED",
"response_description": null
}
}
},
"timestamp": 1651776060.8439758
}
Last updated