【问题标题】:How to use session entity in dialogflow's inline editor?如何在对话流的内联编辑器中使用会话实体?
【发布时间】:2020-07-24 10:58:01
【问题描述】:

我的问题是在意图的钩子之间传递参数。

例如:在一个钩子上,我向自己的后端发出请求并收到一个 sessionId。我需要将 sessionId 传递给另一个意图,以便在它的钩子中进行第二个请求。

我该怎么做?我找不到任何示例、文档或最佳实践。

感谢您的关注!

【问题讨论】:

    标签: dialogflow-es dialogflow-es-fulfillment


    【解决方案1】:

    您可以使用 contexts 来做到这一点。

    在您的第一个意图中,您会执行以下操作:

    function firstIntentHandler(agent){
      return axios.get(`https://yourserver.com`)
       .then(function (response)  {
        agent.add(response.data.sessionId);
    
        const context = {'name': 'yourcontextname', 'lifespan': 3, 'parameters': 
                         {'sessionid': response.data.sessionId }}; 
        agent.setContext(context);
    
            }).catch(function (error) {
        agent.add("An error occured.");
      });
    }
    

    sessionId 是服务器发送的 json 数据中的变量名。

    在您的其他意图中,您可以像这样访问这些数据:

    function otherIntentHandler(agent) {
      const context = agent.getContext("yourcontextname");
      const sessionid = context.parameters.sessionid;
      // do something with this session id
      });
    } 
    

    请小心使用驼峰命名的上下文名称。我有种大写字母存储为小写字母的感觉...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-25
      • 1970-01-01
      • 2019-04-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多