如何在Google Actions的Dialogflow意图中设置Else分支及配置配送地域响应
问题1:如何为Dialogflow意图设置Else分支?
Dialogflow里没有直接叫“Else分支”的功能,但我们可以通过上下文或后续意图来实现相同的逻辑,具体操作步骤如下:
- 打开Dialogflow控制台,定位到你要设置分支的目标意图
- 如果你要处理的是用户输入不匹配当前意图训练短语的场景,可以直接复用系统自带的
Default Fallback Intent;但如果是针对特定意图上下文的Else逻辑(比如用户在当前意图的对话流程里说了不符合预期的内容),可以这么做:- 给当前意图添加一个输出上下文,比如
delivery_inquiry_active,设置合适的存活轮次(比如5轮,避免上下文一直占用) - 创建一个新的自定义意图,比如命名为
Delivery_Inquiry_Else,把刚才的delivery_inquiry_active设为该意图的输入上下文 - 在这个新意图的训练短语里,添加用户可能会说的非预期内容,或者直接勾选“Use webhook call for fulfillment”,通过代码判断输入是否不符合要求
- 在这个Else意图里配置对应的回复内容,这样当用户在原意图的上下文范围内输入不匹配的内容时,就会触发这个分支
- 给当前意图添加一个输出上下文,比如
问题2:实现仅印度支持配送的逻辑处理
作为新手,用Webhook来处理这个条件判断会更灵活,也方便后续扩展功能,我给你拆解下具体步骤:
- 确认实体配置:先确保你已经正确使用了Dialogflow的
$geo-country系统实体,能准确识别用户提及的国家名称 - 启用Webhook:在处理配送查询的目标意图(比如
Delivery_Location_Check)里,勾选“Use webhook call for fulfillment”,让意图的回复逻辑交由代码处理 - 编写Webhook逻辑:
- 从Dialogflow的请求数据中提取
geo-country参数的返回值(注意:实体返回的可能是英文名称如"India",或者国家代码如"IN",建议先测试确认格式) - 添加条件判断:如果参数值等于印度对应的标识,就返回“配送服务覆盖$geo-country”;否则返回“抱歉,我们暂不支持在$geo-country提供配送服务”
- 从Dialogflow的请求数据中提取
- 测试验证:在Dialogflow的测试面板里,分别输入“印度能配送吗?”和“美国可以配送吗?”,验证回复是否符合预期
如果你暂时不想写代码,也可以试试条件响应的方式:
- 在意图的“Responses”模块里,点击“Add condition”
- 设置条件为
$geo-country == 'India'(注意和实体返回值格式一致),并添加对应的回复内容 - 再添加一个无任何条件的默认回复,作为其他国家的提示
需要注意的是,Dialogflow的条件判断对实体值的大小写、格式很敏感,一定要先测试确认$geo-country的返回值后再写判断规则。
内容的提问来源于stack exchange,提问作者Midhilaj
相关产品推荐
相关产品推荐

