如何在Dialogflow的Fulfillment中控制对话流程并跳转指定意图?
嘿,你的需求完全可以通过Dialogflow的Fulfillment配合**上下文(Contexts)**来实现,我给你梳理具体的实现思路和代码示例:
核心实现思路
Dialogflow的流程跳转本质是靠上下文来控制意图匹配优先级的。你需要在Fulfillment里根据数据库查询结果,手动设置或清除上下文,引导Dialogflow匹配到你想要的意图:
- 当查询到不存在的文档类型时,激活Intent1对应的上下文,强制回到输入文档类型的状态
- 当查询到存在的文档类型时,激活Intent3对应的上下文,让后续对话匹配Intent3
具体代码示例(Node.js版本)
假设你用的是Dialogflow的Firebase Fulfillment,以下是实现逻辑的代码:
const functions = require('firebase-functions'); const {WebhookClient} = require('dialogflow-fulfillment'); const admin = require('firebase-admin'); admin.initializeApp(); exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => { const agent = new WebhookClient({ request, response }); // 处理Intent2的逻辑 async function handleDocumentType(agent) { // 获取用户输入的Document Type参数 const docType = agent.parameters['Document Type']; // 连接Firebase Realtime Database查询数据 const dbRef = admin.database().ref('documents').child(docType); const snapshot = await dbRef.once('value'); if (!snapshot.exists()) { // 情况1:文档类型不存在,回到Intent1 agent.add('该内容不在数据库中'); // 清除所有现有上下文,避免干扰Intent1的匹配 agent.clearContexts(); // 激活Intent1的输入上下文,确保后续对话优先匹配Intent1 agent.setContext({ name: 'waiting_for_doc_type', lifespan: 5, // 上下文生命周期,可按需调整 parameters: {} }); } else { // 情况2:文档类型存在,跳转到Intent3 agent.add('请输入获取时间?'); // 清除Intent1的上下文,防止再次匹配Intent1 agent.clearContext('waiting_for_doc_type'); // 设置Intent3的输入上下文,同时传递文档类型参数给Intent3 agent.setContext({ name: 'waiting_for_time', lifespan: 5, parameters: { 'Document Type': docType } }); } } // 将处理函数绑定到Intent2 const intentMap = new Map(); intentMap.set('Intent2', handleDocumentType); // 替换成你的Intent2名称 agent.handleRequest(intentMap); });
关键配置注意事项
- 给Intent1配置输入上下文:在Intent1的设置里,添加
waiting_for_doc_type作为输入上下文,这样只有当这个上下文活跃时,Dialogflow才会优先匹配Intent1。 - 给Intent3配置输入上下文:在Intent3的设置里,添加
waiting_for_time作为输入上下文,确保当这个上下文活跃时,后续用户输入会优先匹配Intent3。 - 参数传递:如果Intent3需要用到之前的文档类型参数,可以通过上下文的parameters传递,这样Intent3就能直接获取到该参数,无需用户重复输入。
- 上下文生命周期:lifespan值代表上下文会持续多少轮对话,一般设为3-5就足够覆盖用户的后续输入,避免过早失效。
内容的提问来源于stack exchange,提问作者Jatu Tung
相关产品推荐
相关产品推荐

