如何让Dialogflow返回“今天”而非完整日期(API V1法语环境)
嘿,这个问题我刚好踩过坑!在Dialogflow V1的法语环境下,要让Google Assistant用更自然的口语化方式播报日期(比如把用户说的“今天”转换成法语的aujourd'hui,“明天”转换成demain),可以按下面的方法来操作:
具体解决步骤
1. 利用日期实体的相对类型做语义映射
Dialogflow的@sys.date实体本身就能识别法语里像aujourd'hui、demain这类口语化日期,但如果你直接把实体返回的原始日期值(比如2018-02-25)丢给Assistant,它就会生硬地读数字串。你需要在响应逻辑里做一层转换:
- 不管是用Webhook还是Dialogflow内置的条件响应,都可以通过
@sys.date实体的relative-type元数据字段判断日期类型:比如当用户说“今天”时,这个字段的值是today;说“明天”时是tomorrow。 - 把这些相对类型映射成对应的法语口语词汇,而不是输出冰冷的日期字符串。
2. 无Webhook的简单实现:用条件响应
如果你的场景不需要复杂的后端逻辑,直接在Dialogflow意图里就能搞定:
- 打开目标意图,切换到「响应」标签,点击「添加条件响应」。
- 第一个条件设置为
#sys.date.relative-type = "today",对应的响应文本写aujourd'hui。 - 第二个条件设置为
#sys.date.relative-type = "tomorrow",响应文本写demain。 - 最后加一个默认响应,处理具体日期的情况:把日期格式化成法语的自然读法,比如写
le @sys.date.day_of_month @sys.date.month @sys.date.year——Dialogflow会自动把实体的月份部分替换成法语的月份名称(比如février而不是02),这样Assistant会读作“le vingt-cinq février deux mille dix-huit”,完全符合法语的口语习惯。
3. 有Webhook的进阶实现
如果你的业务逻辑更复杂,需要通过Webhook处理响应:
- 在Webhook代码里获取
@sys.date实体的metadata字段,拿到relative-type的值。 - 根据这个值返回对应的法语词汇:比如
relative-type为today就返回aujourd'hui,为tomorrow返回demain。 - 对于具体日期,把日期字符串转换成法语的标准日期格式(比如
le 25 février 2018)再返回,避免Assistant读数字。
4. 测试验证
设置完成后,一定要在Dialogflow的测试控制台里多测几种情况:
- 输入
aujourd'hui,确认响应文本是aujourd'hui,播报自然。 - 输入
demain,检查响应和播报是否正确。 - 输入具体日期比如
25 février 2018,确认Assistant的播报是符合法语习惯的自然读法。
内容的提问来源于stack exchange,提问作者Raphaël
相关产品推荐
相关产品推荐

