Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.
Информация

В сценарии рецепте рассылки в WhatsApp с последующим стартом ботов используется два независимых друг от друга сервиса:

  • Сервис нотификаций(рассылок) - отправка первого сообщения
  • Сервис чатов - дальнейший сценарий общения бота

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

Оглавление
maxLevel1

Шаг 1 - Отправка рассылки

WhatsApp

Для отправки сообщения используем следующий метод:

Метод: POST

Authorization: Bearer Token

URL: https://notify.twin24.ai/notify/api/v1/messages

Блок кода
languageyml
themeDJango
titlecURL
curl --location 'https://notify.twin24.ai/notify/api/v1/messages' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {auth_token} \
--data '{
    "messages": [
        {
            "channels": {
                "chat": {
                    "chatId": "2daadc7bbce7d22e-2b7cdde6-4fa34427-822fb391-6ce3b2337f94ebbdfda44de6",
                    "botId": "913d39f6bce7d22e-066ddde6-4bee4427-b6f7b391-c3fdeb321c50ebbdfda44de6",
                    "messengerType": "WHATSAPPTELEGRAM",
                    "chatSessionName": "Название сессииbce7d22e-dde6-4427-b391-ebbdfda44de6",
                    "provider": "TWIN",
					"text": "bce7d22e-dde6-4427-b391-ebbdfda44de6"
                }
            },
            "callbackUrl": "http://example.com",
            "callbackData": "123",
            "destinations": [
                {
                    "variables": {
                        "name": "Иван",
                        "age": "23"
                    },
                    "phonemessengerUserId": "74992868344123456789"
                }
            ]
        }
    ]
}'
Предупреждение
titleТребование

В полях chatSessionName и text указываем идентификатор во внешней системе для последующего удобного поиска и маппинга данных. 

Примечание
titleПодробнее

С подробной информацией по составлению данного запроса можно ознакомиться в нашей статье - [Рассылки] Создание рассылки (массовая отправка сообщений)

В ответ вы получите массив со всеми кандидатами которые были в рассылке:

Информация

Объекты с идентификаторами в ответе будут идти ровно в таком же порядке, как были отправлены кандидаты в destinations в запросе

Блок кода
languageyml
themeDJango
titleОтвет на запрос
linenumberstrue
[
    {
        "id": "a06bc3d9bce7d22e-7980dde6-42834427-a5ecb391-77fb8133c50bebbdfda44de6",
        "bulkId": "b973b50ebce7d22e-988adde6-4cb94427-ad92b391-93d7cbe4d8d9ebbdfda44de6",
        "groupId": "fb4c65dcbce7d22e-993cdde6-430f4427-a68db391-8fa1c149697febbdfda44de6",
        "flowId": "83f5d058bce7d22e-8ed8dde6-47f74427-bddbb391-dd69a9b249a8ebbdfda44de6",
        "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

Блок кода
languageyml
themeDJango
titlecURL
curl --location 'https://analyse.twin24.ai/analyse/api/v1/statisticssearch/messaging/messages?limit=1000&from=2023-11-22T12%3A00%3A00%2B00%3A00&to=2023-11-22T23%3A00%3A00%2B00%3A00&pages=0&channel=CHAT&fields=id%2CproviderMessageId%2Cstatuskeyword=%22bce7d22e-dde6-4427-b391-ebbdfda44de6%22' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {auth_token}' \
Предупреждение
titleТребование

Обязательно использовать поля "id","providerMessageId" и "status"В keyword указываем идентификатор, который на прошлом шаге прокинули в chatSessionName и text

Примечание
titleПодробнее

С подробной информацией по составлению данного запроса можно ознакомиться в нашей статье  - [Рассылки] Получение статистики по рассылке

Ответ:

В полученном ответе мы получаем результат рассылки. 

Блок кода
languageyml
themeDJango
titleОтвет на запрос
{
    "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 - Используем метод получения статистики по чат сессиям

Метод: GET

Authorization: Bearer Token

URL: https://analyse.twin24.ai/api/v1/statistics/chat/sessions

Блок кода
languageyml
themeDJango
titlecURL
linenumberstrue
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}
Примечание

С подробной информацией по составлению данного запроса можно ознакомиться в нашей статье  - [Рассылки] Получение статистики по диалогам, запущенным рассылкой

Ответ:

Блок кода
languageyml
themeDJango
linenumberstrue
{
    "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
Отказ
Подсказка
titleСовет

Используйте поле fields для фильтрации значений.

Вывод:
Используя вышеперечисленные методы мы установили, что для сообщения с id a06bc3d9-7980-4283-a5ec-77fb8133c50b стартовала сессия с id 15d2652c-ada6-4505-9dee-81ce77b528dc, в результаты которой было записано значение "Отказ".
Используя данную инструкцию можно идентифицировать каждое сообщение из рассылки и получить любую информацию о её результатах, статусе и т.д.

...