如何将自定义事件设置为Dialogflow CX云函数webhook的返回响应
Dialogflow CX Webhook触发自定义事件解决方案
你的原有代码不生效的核心原因是返回的响应结构不符合Dialogflow CX的Webhook规范,自定义事件不能直接放在响应顶层的event字段中,必须按照平台要求的结构返回。
修改后的代码示例
exports.cxWhatsappAgent = (req, res) => { return axios .get( `$apiURL`, { data: {} } ) .then( (result) => { if (result.data.length > 0) { // 符合Dialogflow CX规范的响应结构 res.status(200).send({ fulfillment_response: { // 可选:如果需要同时返回文本回复可以加上messages配置 messages: [ { text: { text: ["Hi Welcome"] } } ], // 触发自定义事件的配置 trigger_event: "REGISTERED-USER" } }); } }, (error) => { console.log(error); // 错误场景也建议返回符合规范的响应,避免会话异常 res.status(200).send({ fulfillment_response: { messages: [ { text: { text: ["服务暂时不可用,请稍后再试"] } } ] } }); } ) .catch((error) => { console.log(error); res.status(200).send({ fulfillment_response: { messages: [ { text: { text: ["服务暂时不可用,请稍后再试"] } } ] } }); }); };
注意事项
- 请提前在Dialogflow CX对应的流中创建好名为
REGISTERED-USER的自定义事件,配置好事件触发后的路由、回复等逻辑,否则事件触发后不会有预期效果 - 响应必须返回200状态码,不要添加平台不识别的顶层字段,避免响应解析失败
- 如果不需要同时返回文本回复,可以删除
messages字段,只保留trigger_event配置即可
内容的提问来源于stack exchange,提问作者Oshini
相关产品推荐
相关产品推荐

