Где я могу увидеть сообщения console.log, зарегистрированные в моей функции выполнения действий Google, или как просто записать в журнал текст отладки? - PullRequest
0 голосов
/ 07 марта 2020

Я разрабатываю действие, которое использует выполнение. Я использую встроенный редактор. Я перемещаю жестко закодированные значения в FireStore, чтобы данные сохранялись внутри самой функции. Запрос FireStore не go, как задумано: хотя вызов выполнения не дает сбоя, он не находит информацию, которую должен. Я пробую старый добрый console.log тип регистрации, чтобы понять, что идет не так. Но эти сообщения журнала нигде не отображаются.

Я посмотрел журнал Firebase функции, но он содержит только основные события c: выполнение начато, завершено и предупреждение.

enter image description here

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

enter image description here

Затем я попытался добавить пользовательскую регистрацию Stackdriver в функцию выполнения Inline следующим образом: https://firebase.google.com/docs/functions/writing-and-viewing-logs Но я получаю ошибку, потому что @google-cloud/logging недоступен в среде nodejs этой встроенной функции. Так что я застрял. Я не могу поверить, что нет простого способа войти в систему, но несколько поисков в Google не дали ничего полезного, на что я мог бы воздействовать.

1 Ответ

0 голосов
/ 08 марта 2020

Вызов console.log() из встроенного редактора в диалоговом потоке должен отображать содержимое в облачных функциях для ведения журнала Firebase.

Для тестирования я использовал код по умолчанию и добавил вызовите console.log() в двух определенных обработчиках намерений.

/ See https://github.com/dialogflow/dialogflow-fulfillment-nodejs
// for Dialogflow fulfillment library docs, samples, and to report issues
'use strict';

const functions = require('firebase-functions');
const {WebhookClient} = require('dialogflow-fulfillment');
const {Card, Suggestion} = require('dialogflow-fulfillment');

process.env.DEBUG = 'dialogflow:debug'; // enables lib debugging statements

exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
  const agent = new WebhookClient({ request, response });
  console.log('Dialogflow Request headers: ' + JSON.stringify(request.headers));
  console.log('Dialogflow Request body: ' + JSON.stringify(request.body));

  function welcome(agent) {
    console.log('welcome');
    agent.add(`Welcome to my agent!`);
  }

  function fallback(agent) {
    console.log('fallback');
    agent.add(`I didn't understand`);
    agent.add(`I'm sorry, can you try again?`);
  }

  // Run the proper function handler based on the matched Dialogflow intent name
  let intentMap = new Map();
  intentMap.set('Default Welcome Intent', welcome);
  intentMap.set('Default Fallback Intent', fallback);
  agent.handleRequest(intentMap);
});

Я убедился, что встроенный редактор включен, развертывание произошло, и затем щелкнул ссылку внизу страницы:

Dialogflow Fulfillment Console

Когда я тестирую его, консоль Firebase показывает его в разделе ведения журнала, как и ожидалось.

Firebase Cloud Functions logging

Эта же запись ведется и в облачной консоли. Обратите внимание, что вам нужно переключить поле Resources с Global на Cloud Function.

Google Cloud Console logging

. не видеть это, я честно не уверен. Некоторые вещи, которые нужно перепроверить, которые легко пропустить:

  • Подтвердите, что запись в журнале находится в функциях, которые должны быть вызваны.
  • Убедитесь, что вы нажали кнопку «Развернуть» в нижней части встроенного редактора после добавления ведения журнала.
  • Убедитесь, что «Включить вызов веб-крюка для этого намерения» включено для всех элементов, которые вы хотите обработать с выполнением. enter image description here
  • Убедитесь, что вы смотрите на тот же проект.
...