当前位置: 首页 > 知识库问答 >
问题:

在firebase上使用Dialogflow实现库v2结束对话?

狄鹏
2023-03-14

如何使用Dialogflow实现库WebhookClient类设置“结束对话”标志?我正在为Firebase使用由云函数支持的内联编辑器,以防万一。

这种情况下,特定意图的访问次数不能超过3次。在第一次和第二次拜访时,你会得到一个回应,它允许你说些什么并继续;第三次访问时,它应该给出响应,然后结束对话/关闭麦克风/关闭应用程序(无论用什么合适的术语)

对于非结尾的响应,我使用WebookClient.add(),我使用丰富的响应和字符串的混合文本到语音。

从我在github(https://github.com/dialogflow/dialogflow-fulfillment-nodejs)上读到的内容来看,我认为WebookClient.end()是我想要的。但是当我使用它时,sript崩溃了,我什么也没得到。以下全部在exports.dialogflowFirebasFulfillment=functions.https.on请求((请求,响应)=

 const agent = new WebhookClient({ request, response });
 const fbContext = 'fallbackcount';

 function fallback(agent) {
      //all fallbacks use this fulfillment, we give up after 3 bunk responses
      //check if we've been here before - we will find a context with a counter if we have
      let countContext = agent.getContext(fbContext);
      let fbcount = 0;
      if (countContext)
      {
           if (typeof countContext.parameters !== "undefined" )
           {
                if(typeof countContext.parameters.count !== "undefined" )
                {
                     fbcount = countContext.parameters.count;
                }
           }
      }

      console.log("current tracking" + fbcount.toString());
      switch(fbcount) {
           case 0:
           {
                agent.add(`Fallback response 1");
                break;
           }
           case 1:
           {
                agent.add("Fallback response 2");
                break;
           }
           default:
           {
                //intention: die on third bunk response
                //reality: following line causes a problem and i get no response, and the app doesn't close
                agent.end("Fallback response 3 - Goodbye!"); 
           }
      }

      let newcount = fbcount + 1;
      console.log("new tracking " + newcount.toString());
      agent.setContext({
        name: fbContext,
        lifespan: 1,
        parameters:{count: newcount}
      });
 }

我做错了什么?

请注意,这不是Google上的操作的重复:无法关闭DialogFlow Fulfillment中的Conva,因为他正在询问有关Google library上的操作的问题,而我正在使用DialogFlow Fulfillment NodeJ

我还看到了webhook请求中的Dialogflow API V2“对话结束”标志,它似乎是在处理原始json,我认为从我在文档中看到的情况来看,这应该是可以避免的


共有2个答案

申阳伯
2023-03-14

这对我很有用:

function close(message){
    let conv = agent.conv();
    conv.close(message); 
    agent.add(conv);
}
仲孙鸿畴
2023-03-14

我不知道在这种情况下这是否是正确的方法,但是我想你可以使用有效载荷响应来结束对话,在其中你将“预期用户响应”设置为“假”:

const googlePayloadJson = {
        "expectUserResponse": false
    };
    let payload = new Payload(agent.ACTIONS_ON_GOOGLE, {});
    payload.setPayload(googlePayloadJson);
    agent.add(payload);
 类似资料:
  • 问题内容: 我正在使用 dialogflow-fulfillment- nodejs 客户端开发Dialogflow webhook,以查找城市的温度。在使用服务获取城市温度时,一切正常,还会生成正确的响应,但是即使调用正确的方法,也不会将响应发送给用户。 这是Dialogflow GitHub存储库中的问题 码 控制台日志 当注释的代码运行时 当未注释的代码运行时 NodeJS Dialogfl

  • 我在DialogFlow的官方网站上使用Node.js找到了这个示例,它运行良好,但我不知道如何将其集成到我的web应用程序中。 我可以将它集成到我的其他javascript jquery代码中吗?这里我需要运行节点index.js,但是如果我与代码集成,我还需要这样做吗? DialogFlow v1使用起来非常简单。我有这样的东西:

  • 我试图使用Firebase的云函数使Dialogflow意图导致发布MQTT消息。我已经设法获得了我需要的数据,但我仍然无法完成的是: 建立到MQTT代理的连接; 发布到所述代理。 由于第二个需要前者,这还不是我关心的。

  • 问题内容: 我正在尝试向dialogflow(api.ai)发送一些参数,例如用户名,电子邮件等,但我无法弄清楚。问题是我无法使用Dialogflow v2 Nodejs SDK获取/设置任何特定的数据(例如用户名,电子邮件等)。我尝试使用 queryParams.payload (v1: originalRequest ),但是它不起作用。另外,我尝试使用数据触发 自定义事件 ,但无法在响应中获

  • 我正在开发一个Android聊天应用程序,似乎我需要通过FCM发送每条消息,还需要保存到实时数据库。 我使用Firebase realtime DB存储和发送消息。我仍然需要发送每个消息(或至少消息id)也通过FCM。我担心如果我不这样做,并且只在应用程序在后台时发送FCM,用户可能会错过一些传入的消息。 将侦听器放在服务上似乎不够可靠(如果android干掉了服务怎么办?直到我重新启动它,我可能

  • 我正在使用AngularFire2进行我的第一个Firebase项目。下面是我的学习项目的总体设计。 用户上传照片,并将其作为图片存储在 Firebase 存储中。 上传的照片列在主页上,根据时间戳进行排序。 下面是我现在开始时的结构。但是我在做连接时感到困难。我应该能够获取每个上传的用户详细信息并能够按时间戳对上传进行排序。 我读过一些博客,将数据结构去规范化。对于我的给定方案,如何最好地重新建