Когда приложение записывает журнал в Stackdriver, оно может записать либо строку текста, либо структурированную полезную нагрузку.Это зависит от написания заявления о том, что оно хочет написать.Похоже, что поток диалога записывает строку текста в форме:
Dialogflow Request : <Rest of text>
, где <Rest of text>
представляется строкой JSON.Если это так, то можно утверждать, что Dialogflow не воспроизводит прекрасно с записью Stackdriver, но могут быть истории, с которыми мы не знакомы.В любом случае, у нас есть то, что у нас есть.
Теперь нам нужно подумать о преобразовании этих данных в форму, которую вы можете использовать.Если мы предполагаем, что все, что вам нужно, - это JSON-представление запроса Dialogflow, то мы будем извлекать записи из Stackdriver и находить строки textPayload.Если они начинаются с Dialogflow Request :
, тогда мы отбрасываем это после анализа остатка строки как JSON, и у нас есть наши данные.
Есть много способов сделать это, и выбор будет зависеть от того, как вы хотитеобрабатывать данные.Предполагая, что вам не требуется анализ в реальном времени в реальном времени, я бы экспортировал журналы Stackdriver в виде объектов (файлов) GCS и передавал их через инструмент ETL, такой как Datafusion (или ваш собственный рукописный анализатор).Полученные данные затем можно записать в новые файлы GCS и импортировать в BigQuery.
Если вам потребуется обработка в реальном времени, можно будет записать сообщения журнала Stackdriver в PubSub, а облачная функция получит каждую запись.как написано.Эта функция может анализировать ваши данные и записывать их в BigQuery.