来自 Google 的对话流(早先称为API.ai)是开发多个平台聊天机器人的绝佳平台。早些时候,当Dialogflow被称为API.ai时,他们有一个Android和iOS客户端库,用于将聊天机器人集成到移动应用程序中。但在合并到谷歌之后,现有的图书馆没有得到更新;相反,我们看到Dialogflow被添加到谷歌的云平台,一个新的基于Java的客户端API正在开发中。
在本文中,我将向您展示如何使用新的 Java 客户端 API 集成在 Dialogflow 中开发的聊天机器人。
1. 首先,我们将创建一个对话流代理,我们将命名 FirstActionApp。
请点击此链接。
注意:对话流 V1 API 将于 2020 年 3 月 31 日关闭。
因此,我们正在创建一个具有 V2 API 版本的对话框流应用。此映像中的服务帐户用于为 Java 客户端 API 创建凭据。
对于使用 V1 API 创建聊天机器人,我们使用用于集成 Android 客户端库的客户端访问令牌。要使用 V2 API 创建聊天机器人,我们必须使用服务帐户
-
使用对话流集成创建新密钥并下载创建的 JSON 文件。
2. 现在,我们将创建意图和实体来培训代理。
-
添加同义词以捕获轨道值。
-
创建要提取轨道的参数。
-
启用 Webhook 调用通过 Web 服务部署代码,以向用户提供数据。
默认情况下,代理使用静态响应响应匹配的意图。如果您使用的是集成选项之一,则可以使用履行提供更动态的响应。当您为意图启用履行时,Dialogflow 会通过调用您定义的服务来响应该意图。例如,如果最终用户希望安排在周五理发,您的服务可以检查您的数据库,并响应最终用户周五的可用性信息。
-
最终用户类型或说表达式。
-
对话框流将最终用户表达式与意图匹配并提取参数。
-
对话框流向 Webhook 服务发送 Webhook 请求消息。此消息包含有关匹配意图、操作、参数和为意图定义的响应的信息
您的服务向对话框流发送 Webhook 响应消息。此消息包含应发送给最终用户的响应。
对话框流向最终用户发送响应。
最终用户看到或听到响应。
3. 创建云函数履行以处理 Webhook 请求。根据检测到的跟踪编号,将向用户发送适当的响应。
Dialogflow 控制台具有一个内置的代码编辑器,称为内联编辑器,可用于创建履行代码并将代码部署到 Firebase 的克鲁特函数。内联编辑器用于简单的履行测试和原型设计。准备好构建生产应用程序后,应创建 Webhook 服务。
4. 现在我们的代理已经准备好了,我们现在将集成到Android应用程序。在 build.gradle(应用)中,我们将添加 Android 客户端库和 Java 客户端 API 的依赖项,因为我们将为这两者开发。
xxxxxxx
实现"com.google.云:google-云-对话流:0.67.0-阿尔法"5. 聊天机器人将在 Android 活动的 onCreate 方法中启动。我们将首先使用客户端访问令牌或使用 JSON 密钥配置对话流代理。然后使用唯一 ID 创建新会话,然后使自动程序准备好与用户通信。
-
无法使用客户端访问令牌,因为 V1 API 已使用该令牌。
-
我们使用的是 V2,因此,我们将使用 JSON 密钥。
私人空隙initV2聊天机器人() |
尝试|
输入流流=获取资源()。打开原始资源(R.原始。test_agent_credentials);
谷歌凭据credentials+谷歌凭据。从流(流);
字符串项目 Id= ((服务帐户凭据)凭据。获取项目 Id();
生成器设置生成器 = 会话设置。新建筑商();7会话设置会话设置=设置生成器。设置凭据提供程序(固定凭据提供程序.创建(凭据) )。生成();
8会话客户端=会话客户端。创建(会话设置);
9会话=会话名称。(项目Uuid);
10捕获(例外e) |
11e. .打印堆栈跟踪();
12}
test_agent_credentials
是我们从服务帐户下载的第一步中的 JSON 文件。我们有复制和粘贴该文件在目录应用程序 -> res -> 原始(新目录) 和粘贴。
6. 我们将以异步方式处理与聊天机器人的通信。我们将在将
AsyncTask
用户的请求查询作为请求发送到聊天机器人并捕获响应的地方执行此操作。Java