Как получить данные аналитики Dialogflow

Вопрос или проблема

Итак, что я пытаюсь сделать, так это настроить связь между Dialogflow CX, телефонным шлюзом, проектом на React и бэкендом на Python. Что я пытаюсь добиться: когда я загружаю страницу фронтенда, она вызывает бэкенд, который получает аналитические данные из Dialogflow и передает их в React JS, который использует библиотеку React Flow для отображения потока и аналитических данных на этих потоках/страницах.

Под аналитическими данными я подразумеваю: какие потоки были наиболее популярны во время звонка, какие потоки были пропущены, какие намерения/вопросы задавались чаще всего и где пользователи чаще всего завершали звонок и т.д.

Что я пытался сделать, так это вызывать вебхук на каждой странице и записывать путь пользователя в базу данных. Затем, когда страница загружается, я получаю потоки и страницы Dialogflow CX на Python,


def get_dialogflow_flows(parent):
    try:
        print("Потоки и намерения вызваны")
        os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = current_app.config['GOOGLE_APPLICATION_CREDENTIALS']

        flow_client = dialogflowcx.FlowsClient()
        page_client = dialogflowcx.PagesClient()

        start_time = time.time()

        flows = flow_client.list_flows(parent=parent)
        print("Потоки получены --- %s секунд ---" % (time.time() - start_time))
        flow_data = []

        # start_time = time.time()
        for flow in flows:
            # Получаем страницы для каждого потока с помощью PagesClient
            pages = list(page_client.list_pages(parent=flow.name))
            flow_pages = []

            for page in pages:
                # Получаем полные детали страницы, включая маршруты переходов
                page_details = page_client.get_page(name=page.name)
                transitions = []

                for route in page_details.transition_routes:
                    transitions.append({
                        'target_page': route.target_page,
                        'target_flow': route.target_flow,
                        'condition': route.condition
                    })

                flow_pages.append({
                    'page_name': page.display_name,
                    'page_id': page.name,
                    'transitions': transitions  # Включаем маршруты переходов
                })

            flow_data.append({
                'flow': flow.display_name,
                'flow_id': flow.name,
                'pages': flow_pages
            })

        # print("Второй --- %s секунд ---" % (time.time() - start_time))
        return make_response(message="Данные успешно получены", success=True, data=flow_data, status=200)
    except Exception as e:
        current_app.logger.error(e)
        return make_response(message=str(e), success=False, data=None, status=500)

Используя эти данные, я пытаюсь отобразить поток из консоли Dialogflow CX в своем фронтенде на React, используя библиотеку React Flow. Но это делается нескладно, потому что мне нужно управлять вызовами вебхуков и записями в базу данных для каждой страницы/потока.

Итак, есть ли способ сделать это лучше? Я знаю, что в консоли Dialogflow CX есть страница аналитики, есть ли способ получить эти данные?

Ответ или решение

Чтобы получить аналитику Dialogflow CX и улучшить ваш проект, вам нужно будет использовать API для доступа к аналитическим данным, которые предоставляет Google. В приведенной вами реализации вы собираете данные о вызовах, но если вас интересует аналитика на более высоком уровне, вы можете рассмотреть возможность использования Google Cloud Monitoring или Google Analytics для сбора и анализа необходимой информации.

Шаги для улучшения вашего подхода:

  1. Использование Dialogflow CX API для аналитики:
    Хотя Dialogflow CX не предоставляет API конкретно для извлечения аналитических данных, вы можете использовать Google Cloud Monitoring для получения информации о производительности вашего агента. Убедитесь, что у вас включена учетная запись Google Cloud Monitoring и Kubernetes Engine. Затем вы сможете настроить метрики и логи для получения необходимой информации о вызовах.

  2. Сбор пользовательских событий:
    Вы правильно начали с ведения журнала каждого действия пользователя через вебхуки. Но вместо того, чтобы хранить данные в базе, вы можете отправлять их в Google Analytics или Firebase Analytics. Это позволит вам собирать и анализировать данные о том, какие потоки посещаются чаще всего, какие намерения вызываются и на каком моменте пользователи обычно завершают звонок.

    Пример кода отправки события в Google Analytics на стороне клиента (React):

    import ReactGA from 'react-ga';
    
    // инициализация
    ReactGA.initialize('UA-XXXXXXXXX-X');
    
    // отправка события
    const logEvent = (category, action) => {
       ReactGA.event({
           category: category,
           action: action,
       });
    };
    
    // Вызовите logEvent на каждом шаге взаимодействия
    logEvent('Flow Interaction', 'Flow A started');
  3. Использование Cloud Functions для автоматизации:
    Вместо вызова вебхуков на каждой странице, вы можете использовать Google Cloud Functions для создания функции, которая будет обрабатывать автоматическую аутентификацию и запись данных в базу только один раз в определенные моменты. Например, сбор данных в определенные точки потока, а не на каждой странице.

  4. Аналитика в консоли Dialogflow:
    Если вы хотите получить данные о производительности потока прямо из консоли Dialogflow CX, вам нужно регулярно проверять панель аналитики, чтобы понять, какие потоки и намерения наиболее популярны. Программа не предоставляет API для получения этих отчетов напрямую, поэтому придется полагаться на ручной просмотр отчета или работать с Google Data Studio для визуализации данных.

  5. Интеграция Data Studio:
    Вы можете настроить Google Data Studio, чтобы визуализировать ваши данные из BigQuery (если вы их туда загружаете), а затем связать это с вашими пользовательскими событиями, отправленными в Google Analytics. Это обеспечит высокоуровневую аналитику и покажет, как пользователи взаимодействуют с вашим голосовым интерфейсом.

Заключение:

Ваш текущий подход является неплохим, но для более надежного и масштабируемого решения стоит рассмотреть вышеизложенные методы. Это не только упростит процесс сбора данных, но и обеспечит более глубокое понимание взаимодействия пользователей с вашим ботом через Dialogflow CX. Помните о необходимости соблюдения политики конфиденциальности данных при сборе и обработке пользовательских событий.

Оцените материал
Добавить комментарий

Капча загружается...