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

Ключ

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

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

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

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

Оглавление
maxLevel1

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

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

Метод: POST

Authorization: Bearer Token

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

Блок кода
languageyml
themeDJango
titlecURL
curl --location 'https://twin24.ai/notify/api/v1/messages' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {auth_token} \
--data '{
    "messages": [
        {
            "channels": {
                "chat": {
                    "chatId": "bce7d22e-dde6-4427-b391-ebbdfda44de6",
                    "botId": "bce7d22e-dde6-4427-b391-ebbdfda44de6",
                    "messengerType": "TELEGRAM",
                    "chatSessionName": "bce7d22e-dde6-4427-b391-ebbdfda44de6",
                    "provider": "TWIN",
					"text": "bce7d22e-dde6-4427-b391-ebbdfda44de6"
                }
            },
            "destinations": [
                {
                    "variables": {
                        "name": "Иван",
                        "age": "23"
                    },
                    "messengerUserId": "123456789"
                }
            ]
        }
    ]
}'
Предупреждение
titleТребование

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

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

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

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

Информация

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

Блок кода
languageyml
themeDJango
titleОтвет на запрос
linenumberstrue
[
    {
        "id": "bce7d22e-dde6-4427-b391-ebbdfda44de6",
        "bulkId": "bce7d22e-dde6-4427-b391-ebbdfda44de6",
        "groupId": "bce7d22e-dde6-4427-b391-ebbdfda44de6",
        "flowId": "bce7d22e-dde6-4427-b391-ebbdfda44de6",
        "status": "CREATED",
        "channel": "CHAT",
        "error": null
    }
]

Шаг 2 - Используем метод статистики для получения информации по рассылке

Метод: GET

Authorization: Bearer Token

URL: https://analyse.twin24.ai/api/v1/statistics/messaging/messages

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

В keyword указываем идентификатор, который на прошлом шаге прокинули в chatSessionName и text

УКАЗЫВАЕМ В КАВЫЧКАХ

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

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

Ответ:

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

Блок кода
languageyml
themeDJango
titleОтвет на запрос
{
    "count": 32,
    "items": [
        {
            "id": "a06bc3d9bce7d22e-7980dde6-42834427-a5ecb391-77fb8133c50bebbdfda44de6",
            "providerMessageIdbulkId": "15d2652cbce7d22e-ada6dde6-45054427-9deeb391-81ce77b528dcebbdfda44de6",
            "statusgroupId": "DELIVERED"bce7d22e-dde6-4427-b391-ebbdfda44de6",
        },
    "flowId": "bce7d22e-dde6-4427-b391-ebbdfda44de6",
   {
            "idtaskId": "a54b4351-ada6-4b6d-a84c-21900e22b77f"null,
            "providerMessageIdstatus": "53129a1e-0bd7-4be2-bfeb-ba51dac34e4dREAD",
            "statusstatusRu": "DELIVEREDСообщение прочитано.",
        },
        {"statusEn": null,
            "idstatusCode": "de1b45f8-e06c-4169-8140-55b4f81841d6"11,
            "providerMessageIdcompanyId": 1,
            "companyName": "a31bfabe-7a1e-4d79-97e0-d2b211c876f5Компания",
            "statuschannel": "PENDINGCHAT",
             }
"destination": "74992868344",
      ]
}

Шаг 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": [
      "from": null,
            "text": null,
            "price": "0.000000",
            "network": null,
            "mccMnc": null,
             {"templateId": null,
            "idtemplateName": "15d2652c-ada6-4505-9dee-81ce77b528dc"null,
            "namevariables": "TWIN TESTnull",
            "clientIdpartCount": "6ca5c47d-0a4c-4ee3-b4a9-5015b9ec0073"1,
            "dialogResultsFromBotJsontracks": {
    [],
            "npsread": "Тест"null,
                "confirmationcreatedAt": "Отказ2023-10-31T04:00:33.135139Z",
                "initialVariablessentAt": []
"2023-10-31T04:01:55.587763Z",
             }"deliveredAt": "2023-10-31T04:02:02.873465Z",
        },
        {
             "idsendAt": "0efdab282023-c7ce-4dc1-b528-138f0aeceb0310-31T04:00:33.135139Z",
                  "nameexpiredAt": "TWIN TEST"null,
            "clientIdbilledAt": "06bf70f82023-5ea0-47ec-9744-6cc120272d2010-31T04:02:02.876837Z",
            "dialogResultsFromBotJsonproviderMessageId": {
    "bce7d22e-dde6-4427-b391-ebbdfda44de6",
            "npsresellerPrice": "Тест0.000000",
                "confirmationresellerCompanyId": "Отказ"1,
                "initialVariablesresellerCompanyName": []
"1 | Компания"
          }
        },
        {
            "id": "a9928f86bce7d22e-42c4dde6-41e04427-8aacb391-921da6fd4dd2ebbdfda44de6",
                  "namebulkId": "TWIN TESTbce7d22e-dde6-4427-b391-ebbdfda44de6",
            "clientIdgroupId": "a9928f86bce7d22e-42c4dde6-41e04427-8aacb391-921da6fd4dd2ebbdfda44de6",
            "dialogResultsFromBotJsonflowId": {
    "bce7d22e-dde6-4427-b391-ebbdfda44de6",
            "npstaskId": "Тестbce7d22e-dde6-4427-b391-ebbdfda44de6",
                "confirmationstatus": "ОтказREAD",
                "initialVariablesstatusRu": []
 "Сообщение прочитано.",
             }"statusEn": null,
        }
    ]
}

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

messageId
chatId
result
a06bc3d9-7980-4283-a5ec-77fb8133c50b
15d2652c-ada6-4505-9dee-81ce77b528dc
Отказ
Подсказка
titleСовет

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

"statusCode": 11,
            "companyId": 1,
            "companyName": "Компания",
            "channel": "CHAT",
            "destination": "74992868344",
            "from": null,
            "text": null,
            "price": "0.000000",
            "network": null,
            "mccMnc": null,
            "templateId": null,
            "templateName": null,
            "variables": "{\"phoneNo\": 74992868344, \"fullName\": \"Иванов Иван Иванович\"}",
            "partCount": 1,
            "tracks": [],
            "read": null,
            "createdAt": "2023-10-31T06:49:45.337901Z",
            "sentAt": "2023-10-31T06:49:49.642247Z",
            "deliveredAt": "2023-10-31T06:49:55.432778Z",
            "sendAt": "2023-10-31T06:49:45.337901Z",
            "expiredAt": null,
            "billedAt": "2023-10-31T06:49:55.439442Z",
            "providerMessageId": "bce7d22e-dde6-4427-b391-ebbdfda44de6",
            "resellerPrice": "0.000000",
            "resellerCompanyId": 1,
            "resellerCompanyName": "1 | Компания"
        }
    ]
}

Шаг 3 - Используем метод получения статистики по чат сессиям

Метод: GET

Authorization: Bearer Token

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

Блок кода
languageyml
themeDJango
titlecURL
linenumberstrue
curl --location 'https://twin24.ai/analyse/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=bce7d22e-dde6-4427-b391-ebbdfda44de6&keyword=bce7d22e-dde6-4427-b391-ebbdfda44de6' \
--header 'Authorization: Bearer {auth_token}
Предупреждение
titleТребование

В keyword указываем идентификатор, который на первом шаге прокинули в chatSessionName и text

УКАЗЫВАЕМ БЕЗ КАВЫЧЕК

Примечание

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

Ответ:

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

Блок кода
languageyml
themeDJango
linenumberstrue
{
    "count": 1,
    "items": [
        {
            "id": "bce7d22e-dde6-4427-b391-ebbdfda44de6",
            "dialogLink": "https://twin24.ai/app/chats/bce7d22e-dde6-4427-b391-ebbdfda44de6/dialogs?sessionId=bce7d22e-dde6-4427-b391-ebbdfda44de6",
            "name": "dialogName",
            "chatId": "bce7d22e-dde6-4427-b391-ebbdfda44de6",
            "chatName": "Имя Чата",
            "markedAsSpam": "Нет",
            "operatorId": "bce7d22e-dde6-4427-b391-ebbdfda44de6",
            "operatorName": "Имя оператора",
            "operatorAssignedAt": null,
            "previousOperators": [],
            "firstOperatorName": null,
            "firstOperatorAssignedAt": null,
            "previousOperatorsAsString": null,
            "botName": "Имя Бота",
            "clientId": "bce7d22e-dde6-4427-b391-ebbdfda44de6",
            "clientExternalId": null,
            "clientIp": null,
            "userAgent": null,
            "messengerType": "WHATSAPP",
            "status": "INACTIVE",
            "startedAt": "2023-10-31 01:00:40",
            "closedAt": "2023-10-31 11:01:00",
            "operatorFirstMessageCreatedAt": null,
            "operatorLastMessageCreatedAt": null,
            "botLastMessageCreatedAt": "2023-10-31 01:00:40",
            "lastMessageCreatedAt": "2023-10-31 01:00:40",
            "clientLastMessageCreatedAt": "2023-10-31 01:00:40",
            "clientOnlineAt": null,
            "clientOfflineAt": null,
            "referer": "",
            "price": "0.000000",
            "messages": [
                {
                    "id": "bce7d22e-dde6-4427-b391-ebbdfda44de6",
                    "authorId": "bce7d22e-dde6-4427-b391-ebbdfda44de6",
                    "authorName": null,
                    "authorType": "CLIENT",
                    "type": "REGULAR",
                    "price": "0.000000",
                    "body": "Ответ Клиента",
                    "attachments": [],
                    "answers": [],
                    "createdAt": "2023-10-31 01:00:40"
                },
                {
                    "id": "bce7d22e-dde6-4427-b391-ebbdfda44de6",
                    "authorId": "bce7d22e-dde6-4427-b391-ebbdfda44de6",
                    "authorName": "Имя Чата",
                    "authorType": "BOT",
                    "type": "REGULAR",
                    "price": "0.000000",
                    "body": "Вопрос Бота",
                    "attachments": [],
                    "answers": [
                        "Вариант ответа 1",
                        "Вариант ответа 2",
                        "Вариант ответа 3"
                    ],
                    "createdAt": "2023-10-31 01:00:40"
                }
            ],
            "messagesAsString": "CLIENT: Ответ Клиента\nBOT: Вопрос Бота\n",
            "operatorMessageCount": 0,
            "botMessageCount": 1,
            "clientMessageCount": 1,
            "messageCount": 2,
            "dialogResultsFromBot": "текст подтверждения",
            "dialogResultsFromBotJson": {
                "nps": "текст nps",
                "confirmation": "текст подтверждения",
                "Var": "значение произвольного результата",
                "markers": [
                    "1",
                    "2"
                ],
                "initialVariables": []
            },
            "dialogResultsFromOperator": "",
            "nps": "текст nps",
            "csi": "",
            "fcr": "",
            "whatsappPhone": "74992868344",
            "markers": "1,2",
            "rating": null,
            "closedBy": null,
            "timerFirstAnswer": 0,
            "timerNextAnswers": 0,
            "operatorFirstAnswer": 0,
            "operatorNextAnswers": 0
        }
    ]
}

Шаг 4 - Связь чат-сессий и рассылок

Связать рассылку и запущенную ей чат-сессию можно по следующим полям:

providerMessageId в рассылках == id в чат-сессиях

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

Варианты экспорта данных

Данные можно получить 2мя способами:

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