如何在Dialogflow中通过Fulfillment从跟进意图触发另一个意图
Dialogflow Fulfillment 触发跟进意图解决方案
问题描述
各位开发者好,我正在Dialogflow中设计智能代理,想要通过Events和Fulfillment从一个跟进意图中触发另一个意图。我没有开发背景,所以一直在网上查找相关帮助。
我找到的相关教程和我正在处理的使用场景十分相似,教程里在Mockable中使用了如下代码:
{ "followupEventInput": { "name": "eventname" } }
我尝试在Fulfillment板块的内联编辑器中使用这段代码,但一直报错。希望能获得各位的专业指导,我很想学习相关知识,想要自己动手实现而不是直接找别人帮我写代码,非常感谢大家的帮助!
此致
Kristel
解决方案
报错原因
你找到的这段是Dialogflow webhook响应的原生JSON结构,不能直接放到内联编辑器中运行。Dialogflow内联编辑器默认基于Node.js的Dialogflow Fulfillment SDK开发,需要遵循SDK的语法规范编写逻辑。
实现步骤
- 第一步:提前在目标触发意图的「事件」配置项中添加对应事件,确保事件名和后续代码中使用的名称完全一致
- 第二步:在内联编辑器的对应意图处理函数中,调用SDK封装的
agent.setFollowupEvent()方法触发事件,参考代码结构如下:
const functions = require('firebase-functions'); const { WebhookClient } = require('dialogflow-fulfillment'); exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => { const agent = new WebhookClient({ request, response }); // 当前触发webhook的意图的处理函数 function currentIntentHandler(agent) { // 此处可添加你的业务逻辑 // 触发目标事件 agent.setFollowupEvent('eventname'); } // 配置意图和处理函数的映射关系,替换单引号内容为你实际的意图名称 let intentMap = new Map(); intentMap.set('你当前使用的意图名称', currentIntentHandler); agent.handleRequest(intentMap); });
- 第三步:修改完成后点击内联编辑器顶部的「部署」按钮,等待部署完成后再进行功能测试
拓展说明
如果需要在触发事件的同时给目标意图传递参数,可以按如下写法传入配置对象:
agent.setFollowupEvent({ name: 'eventname', parameters: { "参数名1": "参数值1", "参数名2": "参数值2" } });
部署前可以切换到内联编辑器的package.json标签页,确认dialogflow-fulfillment依赖包版本为最新稳定版,避免版本兼容问题。
内容的提问来源于stack exchange,提问作者Kristel Serra
相关产品推荐
相关产品推荐

