如果您没有使用某个集成选项,则必须编写与最终用户直接交互的代码。您还必须针对每轮对话直接使用 Dialogflow API 进行互动,以发送最终用户表述和接收意图匹配。下图展示了使用该 API 进行互动的处理流程。
- 最终用户输入文字或讲述一段话语。
- 您的服务在检测意图请求消息中将此最终用户表述发送到 Dialogflow。
- Dialogflow 向您的服务发送检测意图响应消息。此消息中包含下列相关信息:匹配的意图以及为该意图定义的操作、参数和响应。
- 您的服务会根据需要执行操作,如数据库查询或外部 API 调用。
- 您的服务向最终用户发送响应。
- 最终用户看到或听到响应。
项目设置和身份验证
在调用 API 之前,您需要设置 GCP 项目和身份验证。您可以按照设置快速入门中的步骤进行操作。
构建代理
在大多数情况下,您应该使用 Dialogflow ES 控制台(访问文档,打开控制台)来构建代理。您可以按照控制台快速入门页面上的步骤来创建代理。您还可以使用 Dialogflow API 为高级场景构建代理。许多概念页面侧重于使用控制台来构建代理,但它们也提供了相关 API 类型的链接。
REST、gRPC 和客户端库
您可以通过 REST、gRPC 或所提供的某个客户端库访问 Dialogflow API。如需详细了解这些选项,请参阅 API 使用概览。
会话
会话表示 Dialogflow 代理与最终用户之间的对话。您可以在对话开始时创建会话,并在每轮对话中使用该会话。对话结束后,您将停止使用该会话。
在同一时间与不同最终用户进行对话时,不应使用同一个会话。Dialogflow 会为每个活跃会话维护当前活跃的上下文。会话数据将由 Dialogflow 存储 20 分钟。
每个会话均由系统生成的会话 ID 唯一确定。您可以在检测意图请求中提供新的会话 ID 来创建新会话。会话 ID 是一个字符串,最长 36 个字节。系统负责生成不重复的会话 ID。它们可以是随机数字、经过哈希处理的最终用户标识符或任何其他便于生成的值。
检测意图
使用 API 进行互动时,您的服务会直接与最终用户互动。对于每轮对话,您的服务均会调用 Sessions
类型的 detectIntent
或 streamingDetectIntent
方法将最终用户表述发送给 Dialogflow。Dialogflow 会使用与匹配意图、操作和参数相关的信息以及针对该意图定义的响应来做出响应。服务会根据需要执行操作(例如数据库查询或外部 API 调用),并向最终用户发送消息。此过程会一直持续到对话结束。
您可以在 API 快速入门页面和操作方法页面中找到调用检测意图的示例。