2.1 意图(Intent)
什么是意图?
意图(Intent)可以理解为 “用户想做什么”。比如用户说了一句话:“今天天气怎么样?”,这里用户的意图就是查询天气。
用更简单的比喻说明:
- 用户说:“我想点一杯拿铁。”
- 意图:“点咖啡”(用户真正想做的事就是点咖啡。)
Dialogflow的核心功能就是识别用户表达的意图。
如何定义和理解用户的意图?
在Dialogflow中,意图通过两种核心要素定义:
- 训练短语(Training phrases):用户可能会说的话。
- 响应(Responses):识别出意图后,机器人回复用户的话。
举例:
意图(Intent) | 训练短语示例 | 响应示例 |
---|---|---|
天气查询 | “今天的天气怎么样?”、“会不会下雨?” | “请告诉我您要查询哪个城市的天气?” |
预定餐厅 | “帮我订个餐厅”、“我要预订晚餐” | “请问要订几个人的座位?” |
当用户输入类似“今天会不会下雨?”时,Dialogflow会识别出“天气查询”的意图,并返回相应的回答。
2.2 实体(Entity)
实体的作用
实体(Entity)是句子中最关键的信息,类似填空题里的空格:
例如:
用户说:“帮我订明晚7点两个人的餐厅。”
- 意图 是“订餐厅”。
- 实体 就是具体的信息:“明晚7点”和“两个人”。
简单的比喻:
用户说:“我明天要飞北京。”
这里的实体就是:
- 时间:“明天”
- 地点:“北京”
系统实体和自定义实体的区别
Dialogflow有两种实体:
-
系统实体(System Entities):预定义好的常用实体,比如日期 (
@sys.date
)、时间 (@sys.time
)、地名 (@sys.geo-city
)等。- 例如:“我后天要去上海”,系统自动识别“后天”和“上海”为系统实体。
-
自定义实体(Custom Entities):针对特殊场景自己定义的实体。
- 例如做一个点餐机器人时,可以定义自定义实体
@菜品
,包含“宫保鸡丁”、“鱼香肉丝”等选项。
- 例如做一个点餐机器人时,可以定义自定义实体
举例对比说明:
类型 | 用户说 | 实体类型 | 实体示例 |
---|---|---|---|
系统实体 | “我要订后天的票” | @sys.date(日期) | 后天 |
自定义实体 | “我要一份宫保鸡丁” | @菜品(自定义的实体) | 宫保鸡丁 |
2.3 上下文(Context)
什么是上下文?
上下文(Context)就是机器人能记住前面说过的内容或对话状态的功能。
用通俗易懂的比喻:
你去买咖啡,服务员问:“要大杯还是小杯?”
你说:“大杯”,
服务员接着问:“冰的还是热的?”
这里服务员记住了你在买咖啡,并继续询问。这种“记忆”就是上下文。
上下文在对话中的作用(示例演示)
在Dialogflow中,上下文有两大作用:
- 保持对话连续性(记忆用户之前的回答)
- 避免重复询问用户同样的问题
实例演示:
用户与机器人对话实例:
用户: 帮我订个餐厅
机器人: 几个人用餐?
用户: 三个人
机器人: 什么时间?
用户: 明晚七点
机器人: 好的,帮您订了明晚7点,三个人的座位。
上下文具体作用说明:
- 当用户说“三个人”时,机器人知道这是针对“订餐”这个意图的回答。
- 机器人记住了“三个人”这个信息,在下一步再询问用餐时间。
2.4 对话管理与Fulfillment
什么是Fulfillment?
Fulfillment 就是Dialogflow根据用户意图去完成任务的过程,简单来说就是:
用户说:“明天天气如何?”
机器人识别出意图,然后去外部查找天气信息,再反馈给用户,这个“去外面查找信息”的过程叫Fulfillment(“完成用户需求”)。
简单比喻:
- 意图识别是:“明白用户想做什么”
- Fulfillment是:“帮用户去完成这件事”(如查询天气,查数据库,执行程序)
Webhook和云函数的基本概念
Webhook是实现Fulfillment的一种常见方式,就是让Dialogflow通过互联网去请求一个外部程序或服务,以便获取或处理数据。
通俗的图示说明:
用户 -> Dialogflow -> Webhook程序(云函数或外部服务器)-> 返回结果 -> Dialogflow -> 用户
举例说明:
- 用户问:“明天北京天气?”
- Dialogflow将城市和时间发送给Webhook程序。
- Webhook程序去天气API查询天气。
- Webhook程序把查询到的天气信息发送回Dialogflow。
- Dialogflow再将天气信息回复给用户。
Webhook使用场景举例:
- 天气查询机器人(Webhook去天气网站查询最新天气)
- 快递查询机器人(Webhook去物流公司查询快递状态)
- 客户资料管理(Webhook从公司数据库查找客户信息)
本章小结
通过本章学习,你应该已经掌握Dialogflow最核心的概念:
- 意图(Intent): 理解用户“想做什么”。
- 实体(Entity): 提取用户表达中的关键“具体信息”。
- 上下文(Context): 记住和管理对话内容与流程。
- Fulfillment与Webhook: 实现真正的任务执行,如查询数据或外部处理。
下一章,我们将通过实际操作,帮助你一步一步地实现这些基本概念。