#
Трекинг событий Shopping Assistant
Для анализа качества Shopping Assistant передавайте в Gravity Field custom events по ключевым шагам диалога. Эти события помогают понять, открывают ли пользователи чат, отправляют ли сообщения, получают ли ответы и где возникают ошибки или разрывы воронки.
В этом разделе описаны только custom events ассистента.
#
Базовая воронка
Минимальная воронка диалога:
chat_dialog_open -> assistant_message_sent -> assistant_response_received
Если ответ содержит товарную подборку, дополнительно фиксируйте:
assistant_response_received -> assistant_product_selection_received
Ошибки и закрытия анализируются отдельно:
chat_error
chat_dialog_close
chat_dialog_end
#
События ассистента
#
Как считать ответ полученным
Событие assistant_response_received отправляйте после того, как ответ успешно получен и добавлен в интерфейс чата. Если API ответил, но пользователь уже закрыл чат или frontend не смог отрендерить ответ, событие отправлять не нужно.
#
Как считать товарную подборку
Событие assistant_product_selection_received отправляйте, если в ответе ассистента есть блок:
{
"type": "products",
"value": []
}
Если блок products отсутствует или список товаров пустой, событие отправлять не нужно.
#
Рекомендуемые поля
Передавайте технические идентификаторы, которые позволяют связать события одного диалога и одного запроса.
resourceId берите из user.uid Gravity Field. Его можно получить через POST /user.
Не передавайте в event payload текст сообщений, персональные данные, чувствительные данные пользователя и другие данные, которые не нужны для аналитики воронки.
#
Пример custom event
Ниже пример события для API V2. Дополнительные поля передаются в customProps.
{
"type": "assistant_message_sent",
"name": "Assistant Message Sent",
"customProps": {
"threadId": "thread-8f2b1c",
"resourceId": "665f0a000000000000000001",
"messageId": "message-1001",
"requestId": "request-7001",
"trafficType": "test",
"tenant_id": "670ccaae56afcafaf808c146",
"campaignId": "696a3dcf26ec5935e70a7f05",
"experienceId": "69f9fd5a4006ae8b33086404",
"variationId": "69f9fd5a4006ae8b3308640e"
}
}
Для передачи события используйте тот же канал, который уже применяется в вашей интеграции: Web, API или SDK.
#
Диагностика разрывов
Разрыв воронки возникает, когда пользователь отправил сообщение, но frontend не зафиксировал получение ответа:
assistant_message_sent -> нет assistant_response_received
Чтобы такие случаи можно было анализировать, важно:
- использовать стабильный
threadIdна протяжении всего диалога; - передавать
messageIdилиrequestIdдля каждого пользовательского сообщения; - отправлять
chat_error, если frontend получил ошибку; - отправлять
chat_dialog_close, если пользователь закрыл чат; - передавать
latencyMsвassistant_response_receivedиchat_error, если время ожидания известно.