В сценарии рассылки в WhatsApp с последующим стартом ботов используется два независимых друг от друга сервиса:
- Сервис нотификаций(рассылок) - отправка первого сообщения
- Сервис чатов - дальнейший сценарий общения бота
Данный рецепт объясняет как после отправки сообщений связать эти самые сообщения и их идентификаторы с чатами, которые они запустили.
Шаг 1 - Отправка рассылки WhatsApp
Для отправки сообщения используем следующий метод:
curl --location 'https://notify.twin24.ai/api/v1/messages' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {auth_token} \ --data '{ "messages": [ { "channels": { "chat": { "chatId": "2daadc7b-2b7c-4fa3-822f-6ce3b2337f94", "botId": "913d39f6-066d-4bee-b6f7-c3fdeb321c50", "messengerType": "WHATSAPP", "chatSessionName": "Название сессии", "provider": "TWIN" } }, "callbackUrl": "http://example.com", "callbackData": "123", "destinations": [ { "variables": { "name": "Иван", "age": "23" }, "phone": "74992868344" } ] } ] }'
Подробнее
С подробной информацией по составлению данного запроса можно ознакомиться в нашей статье - [WhatsApp] Создание рассылки (массовая отправка сообщений).
В ответ вы получите массив со всеми кандидатами которые были в рассылке:
Объекты с идентификаторами в ответе будут идти ровно в таком же порядке, как были отправлены кандидаты в destinations в запросе
[ { "id": "a06bc3d9-7980-4283-a5ec-77fb8133c50b", "bulkId": "b973b50e-988a-4cb9-ad92-93d7cbe4d8d9", "groupId": "fb4c65dc-993c-430f-a68d-8fa1c149697f", "flowId": "83f5d058-8ed8-47f7-bddb-dd69a9b249a8", "status": "CREATED", "channel": "CHAT", "error": null } ]
Сохраняем ID отправленных сообщений
messageId |
---|
a06bc3d9-7980-4283-a5ec-77fb8133c50b |
Шаг 2 - Используем метод статистики для получения информации по рассылке
Метод: GET
Authorization: Bearer Token
URL: https://analyse.twin24.ai/api/v1/statistics/messaging/messages
curl --location 'https://analyse.twin24.ai/api/v1/statistics/messaging/messages?from=2023-11-22T12%3A00%3A00%2B00%3A00&to=2023-11-22T23%3A00%3A00%2B00%3A00&pages=0&channel=CHAT&fields=id%2CproviderMessageId%2Cstatus' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {auth_token}' \
Требование
Обязательно использовать поля "id","providerMessageId" и "status"
Подробнее
С подробной информацией по составлению данного запроса можно ознакомиться в нашей статье - [WhatsApp] Получение статистики по рассылке.
Ответ:
{ "count": 3, "items": [ { "id": "a06bc3d9-7980-4283-a5ec-77fb8133c50b", "providerMessageId": "15d2652c-ada6-4505-9dee-81ce77b528dc", "status": "DELIVERED" }, { "id": "a54b4351-ada6-4b6d-a84c-21900e22b77f", "providerMessageId": "53129a1e-0bd7-4be2-bfeb-ba51dac34e4d", "status": "DELIVERED" }, { "id": "de1b45f8-e06c-4169-8140-55b4f81841d6", "providerMessageId": "a31bfabe-7a1e-4d79-97e0-d2b211c876f5", "status": "PENDING" } ] }
В полученном ответе нас интересует поле providerMessageId, которое содержит идентификатор начатой чат сессии.
Теперь в нашу таблицу с идентификаторами сообщений можно добавить соответствующий идентификатор чат сессии.
messageId | chatId |
---|---|
a06bc3d9-7980-4283-a5ec-77fb8133c50b | 15d2652c-ada6-4505-9dee-81ce77b528dc |
Шаг 3 - Используем метод получения статистики по чат сессиям
curl --location 'https://analyse.twin24.ai/api/v1/statistics/chat/sessions?from=2023-11-22T13%3A00%3A00%2B07%3A00&to=2023-11-22T15%3A00%3A00%2B00%3A00&withoutCount=false&withoutItems=false&limit=1000&page=0&chatId=15d2652c-ada6-4505-9dee-81ce77b528dc&fields=id%2Cname%2CclientId%2CmessengerType%2Cnps' \ --header 'Authorization: Bearer {auth_token}
С подробной информацией по составлению данного запроса можно ознакомиться в нашей статье - [WhatsApp] Получение статистики по диалогам, запущенным рассылкой
Ответ:
{ "count": 3, "items": [ { "id": "15d2652c-ada6-4505-9dee-81ce77b528dc", "name": "TWIN TEST", "clientId": "6ca5c47d-0a4c-4ee3-b4a9-5015b9ec0073", "dialogResultsFromBotJson": { "nps": "Тест", "confirmation": "Отказ", "initialVariables": [] } }, { "id": "0efdab28-c7ce-4dc1-b528-138f0aeceb03", "name": "TWIN TEST", "clientId": "06bf70f8-5ea0-47ec-9744-6cc120272d20", "dialogResultsFromBotJson": { "nps": "Тест", "confirmation": "Отказ", "initialVariables": [] } }, { "id": "a9928f86-42c4-41e0-8aac-921da6fd4dd2", "name": "TWIN TEST", "clientId": "a9928f86-42c4-41e0-8aac-921da6fd4dd2", "dialogResultsFromBotJson": { "nps": "Тест", "confirmation": "Отказ", "initialVariables": [] } } ] }
Теперь мы можем добавить результат общения бота в конкретной чат сессии и связать его со стартовым сообщением, которое отправили в самом начале.
messageId | chatId | result |
---|---|---|
a06bc3d9-7980-4283-a5ec-77fb8133c50b | 15d2652c-ada6-4505-9dee-81ce77b528dc | Отказ |
Совет
Используйте поле fields для фильтрации значений.