dialogflow-es - 在 dialogflow-fulfillment 中访问先前的跟进意图参数

标签 dialogflow-es

我正在使用内联编辑器中提供的默认 dialogflow 代码,基于 dialogflow-fulfillment ^0.5.0 来整理通过几个后续意图给出的所有参数。我有一个设置,其中后续意图提出问题,从而产生一个包含所有问题的最终意图。

从对话流控制台内的先前意图中提取数据以包含在响应中将仅使用即 #order-cream-followup.chocolate-type从以前的意图或 $quantity 获取参数从当前意图获取参数。但同时 agent.parameters['quantity']$quantity ,我找不到相当于 #order-cream-followup.chocolate-type 的方法在对话流实现中

抱歉,如果这是一个明显的答案,我会在各种不同的文档中迷失方向,这些文档通常在 google 上进行。

我的代码:(目前只是在添加代码来处理推送数据之前登录到控制台)

// 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 placeOrder(agent) {
    console.log('placing order:');
    console.log(agent.context.get('order-cream-followup').parameters['choctype']);
    agent.add('Thanks ' + agent.parameters['name'] + ', please collect your order from the window.');
  }

  // Run the proper function handler based on the matched Dialogflow intent name
  let intentMap = new Map();
  intentMap.set('order - cream - marshmallow - check - yes - name - submit', placeOrder);
  agent.handleRequest(intentMap);
});

最佳答案

要获得仍处于事件状态的上下文(即 - 它的 lifespanCount 尚未达到 0),您可以使用 agent.context.get() .所以你的例子看起来像

agent.context.get('order-cream-followup').params['chocolate-type']

(这是在库的 0.6.0 版中引入的。)

但是……这要求上下文仍然有效。如果您使用 Followup Intents(可能会变得困惑),则生命周期最初仅设置为 2,因此它们可能已过期。

你应该做两件事:
  • 不要使用后续意图。虽然在某些情况下很有用,但它们可能会过多地缩小响应选项的范围,并且可能会进行非常生硬的对话。
  • 使用您控制的具有较长生命周期的 Context 来收集结果作为 webhook 的一部分。因此,在您收集新信息的每个 Intent 之后,您将其存储在一个名为“订单”的上下文中,该上下文的生命周期在每次更新后重置为 99。
  • 关于dialogflow-es - 在 dialogflow-fulfillment 中访问先前的跟进意图参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53156526/

    相关文章:

    javascript - 在 Dialogflow 中返回 Promise 输出

    c# - c# 中的 dialogflow 简单实现 webhook 不起作用

    Java : How to extract parameters from Google Dialogflow V2 response

    node.js - 我可以仅使用 Dialogfow 的默认履行 Webhook 代码作为 Azure 上的起点吗?

    request - 对 Google Dialogflow 使用 HTTP 请求

    python - 使用 python 将 Dialogflow 代理导出/转换为 csv 或 excel 文件

    dialogflow-es - 如何让别人的Android手机使用你未发布的Google Action测试版?

    dialogflow-es - 错误 : Dialogflow server in 'us' received request for resources located in 'europe-west2-dialogflow.googleapis.com.'

    dialogflow-es - Dialogflow 如何将几个代理合并为一个

    dialogflow-es - 如何在 Dialogflow Fullfilment 中使用 SSML(荷兰语)