【问题标题】:In Google Dialogflow, How to save variable till session end在 Google Dialogflow 中,如何保存变量直到会话结束
【发布时间】:2023-10-10 19:31:01
【问题描述】:

在会话结束之前,我无法将 token 保存为变量。此 token 将用于其他 API。 这是我的代码

'use strict';
const axios = require('axios'); 
const functions = require('firebase-functions');
const {WebhookClient} = require('dialogflow-fulfillment');
const {Card, Suggestion} = require('dialogflow-fulfillment');
const {Payload} = require('dialogflow-fulfillment');
var token = "";
  function login(agent) {
    const email = agent.parameters.email;
    const password = agent.parameters.password;
    const baseurl = "http://demo:3000/login/buyerlogin";
    var data = { email: email, password: password };
    return axios
      .get(baseurl, { data: { email: email, password: password } })
      .then((result) => {
        if (result.data.status == 200) {
          agent.add("Login Successfully ????");
          agent.add("Select an option to proceed with other queries ????");
          token = result.data.token; //token will be used for further APIs
          agent.add(
            new Payload(agent.UNSPECIFIED, payloadlog, {
              rawPayload: true,
              sendAsMessage: true,
            })
          );
        } 
      })
      .catch((error) => {
        agent.add("else " + error.message);
      });
  }

我想保存 token 直到会话结束。 请帮我解决这个问题。 谢谢你

【问题讨论】:

    标签: dialogflow-es chatbot dialogflow-es-fulfillment


    【解决方案1】:

    您可以将这些值保存在您设置的持久Context 的参数中,然后在您的 webhook 中读取。

    在 Context 的参数中设置令牌值可能类似于

    agent.context.set('info', 99, {
      token: token
    });
    

    您稍后可以通过类似的方式获取该上下文和令牌值

    const infoContext = agent.context.get('info');
    const token = infoContext.parameters.token;
    

    【讨论】: