如何在Nao 6 QiChat中检测用户输入特定词并给出对应回复?
解决Nao对话中检测特定词汇的问题
需求概述
让Nao向用户提出测验问题:"What's the acronym of small-medium-sized enterprise?",若用户回答包含SME,回复"Correct, S M E stands for Small-Medium-Sized-Enterprise";若回答不包含SME,回复"Wrong, it is S M E."
修正后的Dialog代码
topic: ~EnglishQuiz() language: enu u:([Question Quiz Quizquestion]) ^gotoRandom(quiz) proposal: %quiz What's the acronym of small-medium-sized enterprise? u1:(SME) Correct, S M E stands for Small-Medium-Sized-Enterprise u2:(#!SME) Wrong, it is S M E.
代码说明
u1:(SME):匹配包含SME的用户回答,触发正确回复u2:(#!SME):使用Aldialog的否定匹配语法,匹配不包含SME的所有用户回答,触发错误回复
相关语法补充(对应你参考的文档翻译)
1. 速查表相关语法
Aldialog支持使用#!前缀实现否定模式匹配,用于排除特定词汇或短语的输入。例如(#!关键词)会匹配所有不包含该关键词的用户输入。
2. 条件判断语法补充
如果需要更灵活的逻辑(比如同时判断多个条件),可以结合^if()函数和%matches()方法实现:
u:(*) ^if(!%matches("SME", $0)) Wrong, it is S M E.
$0代表用户的完整输入内容%matches("SME", $0)检查输入是否包含SME,!表示取反^if()函数根据判断结果决定是否触发回复
内容的提问来源于stack exchange,提问作者sas
相关产品推荐
相关产品推荐

