如何在Dialogflow Webhook中使用speechBiasingHints?
在Dialogflow Webhook中实现语音偏向(Speech Biasing)的示例
嘿,作为刚接触Google Action开发的学生,你能想到用语音偏向提升用户体验这点真的很赞!我来给你详细讲讲怎么在Dialogflow的Webhook里设置speechBiasingHints,直接上你需要的代码示例,再补点实用小建议。
核心思路
Dialogflow的Webhook响应可以通过构造ExpectedInput结构来传递语音偏向提示,本质是告诉Google的语音识别引擎:优先识别用户已经存储的这些事件短语。下面是基于Inline Editor(Node.js环境)的完整示例:
// 假设这是你处理事件查询请求的Webhook函数 function handleEventQuery(agent) { // 第一步:从你的存储(比如Firebase Realtime Database/内存变量)里获取用户已保存的事件 // 这里用模拟数据,实际开发中替换成真实的用户事件列表 const userSavedEvents = ["Bob的生日", "Fred的毕业典礼", "Alice的入职纪念日"]; // 先给用户返回常规的询问话术 agent.add("你想查询哪个事件的信息呢?"); // 关键:构造包含语音偏向的后续交互配置 agent.setFollowupEvent({ name: "await_event_selection", // 这个事件需要在Dialogflow控制台提前创建 parameters: {}, inputValueData: { expectedInputs: [ { inputPrompt: { richInitialPrompt: { items: [ { simpleResponse: { textToSpeech: "你想查询哪个事件的信息呢?" } } ] } }, possibleIntents: [ { intent: "actions.intent.TEXT", // 指定接收文本输入的系统Intent inputValueData: {} } ], // 设置语音偏向提示:把用户已存的事件全加进去 speechBiasingHints: userSavedEvents } ] } }); } // 记得在Dialogflow里把这个函数绑定到对应的Intent上 exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => { const agent = new WebhookClient({ request, response }); let intentMap = new Map(); intentMap.set("QueryEventIntent", handleEventQuery); // 替换成你的Intent名称 agent.handleRequest(intentMap); });
关键细节说明
speechBiasingHints接受一个字符串数组,数组里的内容就是你希望语音识别优先匹配的短语- 必须通过
setFollowupEvent来传递这个配置,因为Dialogflow的Webhook需要通过后续事件来携带ExpectedInput结构 - 要提前在Dialogflow控制台创建
await_event_selection这个自定义事件,用来承接后续的用户输入
额外实用建议
- 动态更新偏向列表:每次用户新增/删除事件后,下次交互时要同步更新
speechBiasingHints的内容,保证偏向的是最新的事件 - 结合自定义实体优化:虽然你用了
@sys.any,但可以创建一个自定义实体(比如@user_events),把用户的事件作为实体值和同义词(比如“鲍勃的生日”和“Bob的生日”都加进去),再搭配语音偏向,匹配准确率会更高 - 测试多场景发音:测试时可以模拟用户的不同发音习惯,比如带口音的说法、同义词表述,根据测试结果调整偏向列表的内容
作为学生项目,能考虑到语音偏向这种细节已经很出色啦,加油!
内容的提问来源于stack exchange,提问作者ShadowBearVR
相关产品推荐
相关产品推荐

