创建由 Dialogflow 提供支持的 RBM 代理(基本版)

在此 Codelab 中,您将学习如何使用 Dialogflow 创建对话接口,为 RBM 代理提供支持,而无需编写任何代码。

您将在此 Codelab 中构建什么?

  • 为 RBM 代理的对话提供支持的 Dialogflow 代理
  • 虚构披萨餐厅的对话界面,可向用户提供折扣优惠,允许他们查看该餐馆的菜单

本文内容

  • 如何使用 Dialogflow intent 的主要构造创建对话界面
  • 如何从 Dialogflow 创建 RBM 响应类型,以便为用户打造丰富的 RBM 体验

所需条件

  • 您的 RBM 平台 Google 帐号

创建和查询您的第一个代理

持续时间:30:00

创建您的第一个 Dialogflow 代理

如需创建 Dialogflow 代理,请执行以下操作:

  1. 打开新标签页并登录 Dialogflow
  2. 点击左侧导航栏中的创建代理

  3. 输入“CodelabRBMPizzaPlace”作为代理的名称,并将“英语”作为默认语言,并将默认时区设置为您的时区。

  4. 点击创建

Dialogflow 控制台

您现在应该会看到 Dialogflow 控制台。如果您正在使用较小的屏幕并且左侧导航栏已隐藏,请点击左上角的导航按钮。设置按钮会将您转到当前代理的设置。

页面中间显示了代理的意图列表。默认情况下,Dialogflow 代理从两个意图开始。如果代理理解不了用户所说的内容,则会匹配默认后备意图默认欢迎 intent 会问候用户。您可以更改这些 intent 以自定义体验。

右侧是 Dialogflow 模拟器。这样,您就可以通过说出或输入消息来试用代理。

查询代理

Dialogflow 代理的最佳描述方式是 NLU(自然语言理解)模块。它们可包含在您的应用、产品或服务中,以将自然用户请求转换为可操作的数据。

是时候试用代理了!在右侧模拟器中,点击显示立即试用 (Try it now) 的文本字段,输入“Hi”后按 Enter 键。

Dialogflow 会识别查询,与默认欢迎意图匹配,然后以一般问候语做出响应。这之所以可行,是因为 Dialogflow 会使用一些示例问候语自动训练默认欢迎 intent

创建 RBM 代理

登录 Business Communications Developer Console,然后点击创建代理

在“名称”字段中,输入“您的姓名的披萨店”(如“西安披萨店”),选择区域并点击创建代理

将 RBM 代理连接到 Dialogflow

创建 RBM 代理后,点击该代理以查看其概览页面。点击左侧导航栏中的 Integrations(集成)链接。

默认情况下,RBM 代理使用 Google Cloud Pub/Sub 处理用户消息。如需将 RBM 代理连接到先前创建的 Dialogflow 代理,请点击 Dialogflow 集成。

在对话框中,点击连接现有模型。按照说明向 RBM 代理授予调用 Dialogflow 代理的权限。完成说明后,点击下一步

最后,您需要提供 Dialogflow 项目 ID。在与 Business Communications Developer Console 不同的浏览器标签页中,转到 Dialogflow 并打开您之前创建的 CodelabRBMPizzaPlace 代理。点击左侧导航栏中的项目名称旁边的齿轮图标。

点击此选项后,您会转到模型的设置。在 GOOGLE 项目下,找到并复制项目 ID

返回到打开了 Business Communications Developer Console 的标签页,将项目 ID 粘贴到对话框中,然后点击开始集成

此过程大约需要两分钟才能完成。完成后,您应该会看到突出显示了 Dialogflow 集成选项和可用的 View agent 链接。

现在,CodelabRBMPizzaPlace Dialogflow 代理会处理进出代理的所有消息。

邀请测试设备并发送消息

在深入了解 Dialogflow 之前,我们先设置您的测试设备。如果您还没有可以接收 RBM 消息的设备,请按照此指南准备好您的设备。

在 Business Communications Developer Console 中,点击左侧导航栏中的 Devices(设备)。在表单中输入采用 E.164 格式的设备的完整电话号码(例如 +12223334444),然后点击添加

在您的设备上,您会收到测试邀请。点按让我成为测试人员

在浏览器中,从设备列表中找到您的设备并向设备发送一条测试消息。如果您在您的设备上收到来自 RBM 代理的消息,那么您就可以继续学习此 Codelab。

创建欢迎意图

通常,借助由 Dialogflow 提供支持的 RBM 代理,您需要发起 API 调用来指定用户的电话号码和开始对话的 Dialogflow intent(通常是您的代理的欢迎 intent)。对于此 Codelab,我们将跳过此步骤,并改为在上一步中通过 Business Communications Console 中的测试设备创建对话线程。但是,如果您想详细了解此 API 功能,请参阅此指南

首先,将 RBM 响应添加到默认欢迎 intent,以便 Dialogflow 能够将其与您的 RBM 代理一起使用。首先,导航到已打开 Dialogflow 的浏览器标签页。点击左侧导航栏中的 Intent 链接。 点击右上角的“垃圾桶回复”示例垃圾桶。然后,点击默认欢迎 intent,向下滚动到响应 (Responses) 部分,点击响应类型列表中的 +,然后选择 RCS Business Messaging (RBM)

点击添加回复,然后选择简单回复。在 Simple Response(简单响应)的文本字段中,输入“Sean’s Pizza Place of the day!”买任意 12 英寸披萨,免费送一块!”(将 Sean 替换为您的名称),然后点击 Save

发起对话

现在您已配置了欢迎 intent,请返回测试设备并发送“Hi”消息。此消息会触发默认欢迎 intent,您应该会看到类似下图的内容。

更新您的欢迎意图

现在,Dialogflow 已发送一条简单的消息,接下来让我们更新该消息,使其更具吸引力。我们不仅要发送有关当天交易的消息,而且还要发送图片来吸引接收方的用户,并向他们提供他们可能希望采取的一些其他操作。

让我们将简单的响应披萨广告消息替换为包含图片的卡片,并提供查看完整菜单和餐馆网站的选项。

默认欢迎 intent响应部分,选择 RCS 商家消息 (RBM) 标签页。使用“欢迎访问 Sean’s Pizza Place”更新现有的 Simple Response 文本。立即查看促销优惠!”. 接下来,点击添加回复并选择独立复合搜索卡

在独立复合信息卡表单中,输入以下内容:

  • 卡片标题:购买任意 12 英寸披萨,免费获赠一个!
  • 卡片说明:在任意参与活动时显示此消息,以兑换此优惠。优惠将于 2 月 17 日过期。
  • 选择卡片方向:垂直
  • 图片/视频网址:https://storage.googleapis.com/df-rbm-codelab/duck-ad-coupon.png
  • Select Media Height(选择媒体高度):中等

点击添加建议,然后输入以下内容:

  • 建议文字:“查看”菜单
  • 建议回传:Reply_view_menu

点击添加建议,从下拉菜单中选择“打开网址操作”,然后输入以下内容,以添加网址操作:

  • 建议文字:查看网站
  • 建议回传:Reply_view_website
  • 要打开的网址:https://www.google.com(或任何有效的网址)

点击保存

试试看!

模型显示“代理训练完成”后,返回您的设备,并向代理发送消息“Hi”。您现在应该会看到简单响应,然后是您刚刚设计的独立复合卡

请尝试点按“查看”菜单。请注意,系统会触发默认后备 intent。这是因为您的 Dialogflow 代理不知道如何处理您为这条建议配置的回传数据“reply_view_menu”。

让我们一起解决这个问题。

创建您的菜单 intent

Dialogflow 使用意图来分类用户的意图。意图包含训练短语,它们是用户可能会向代理说出的内容示例。例如,可能想知道菜单的用户可能会问:“你的菜单是什么?”“我能吃什么”或“我能订购什么?”。

所有这些查询都是唯一的,但它们的意图都是相同的:获取有关菜单的信息。

为了涵盖此查询,请创建一个“菜单”intent:

  1. 在左侧导航栏中,点击意图旁边的 +
  2. 对于意图名称,输入“菜单”。
  3. 训练短语 (Training Phrases) 下,点击添加用户表达 (Add user expression),然后输入以下内容,每次输入后按 Enter 键:

    • What's your menu?
    • What can I eat?
    • What can I order?
    • reply_view_menu

    最后一个训练短语用于映射您在上一部分中使用此意图配置的回传数据。

为了响应此 intent,我们将创建一个显示各种菜单选项的轮播界面。对于较大的菜单,您可能需要链接到网站或共享菜单的单张图片。

  1. Responses(响应)下方,点击 +,然后选择 RCS Business Messaging (RBM)
  2. 点击添加回复,然后选择轮播界面复合信息卡
  3. 选择卡片宽度选项设为
  4. 在宽度选项下,点击添加卡片两次。这会使卡片数量增加到总共 4 张。
  5. 在卡片 1 中,输入以下内容:
    • 卡片标题:香肠和意大利香肠
    • 卡片说明:香肠、意大利香肠、橄榄和辣椒
    • 图片/视频网址:https://storage.googleapis.com/df-rbm-codelab/sausage-duck.jpg
  6. 在卡片 3 中,输入以下内容:
    • 卡片标题:意大利语
    • 卡片说明:番茄酱、奶酪和香肠
    • 图片/视频网址:https://storage.googleapis.com/df-rbm-codelab/italian-duck.jpg
  7. 在卡片 2 中,输入以下内容:
    • 卡片标题:Margherita
    • 卡片说明:圣马萨诺番茄、马苏里拉奶酪、新鲜罗勒、盐和特级橄榄油
    • 图片/视频网址:https://storage.googleapis.com/df-rbm-codelab/margarita-duck.jpg
  8. 在卡片 4 中,输入以下内容:
    • 卡片标题:Supever
    • 卡说明:香肠、意大利香肠、汉堡、加拿大培根、洋葱、橄榄、蘑菇和辣椒
    • 图片/视频网址:https://storage.googleapis.com/df-rbm-codelab/supreme-duck.jpg

在卡片项后面,我们还需要为用户提供继续对话的方式。如需支持此操作,请点击添加响应并选择简单响应,然后输入文本“Want to do something else”。

在简单响应中,点击 Add Suggestion(添加建议)并输入以下内容:

  • 建议文字:查看促销活动
  • 建议回传:hi

点击保存

试试看!

现在,请试着向代理询问菜单。在设备的 RBM 代理对话中,输入“菜单上的内容”并向您的代理发送消息。

您的代理现在可正确响应查询。请注意,虽然您的查询与训练短语“(菜单上是什么?”相比,“您的菜单是什么”)略有不同,Dialogflow 仍然将查询与正确的意图相匹配。您还可以尝试点按复合信息卡中的查看菜单项。

Dialogflow 使用训练短语作为机器学习模型的示例,以将用户查询与正确的意图匹配。机器学习模型会根据代理中的每个意图检查查询并为每个意图打分,然后匹配得分最高的意图。如果得分最高的 intent 得分非常低,系统会匹配后备 intent。

捕获意图而不响应

即将大功告成,但我们还需要执行最后一项操作。如果您返回到测试设备并点按初始复合信息卡中的查看网站建议,您会发现点按此建议不仅会打开关联的网址,还会收到由默认后备 intent 触发的消息。

这是因为打开网址操作会在您点按操作时将“reply_view_website”的回传文本发送到 Dialogflow,Dialogflow 会将其映射到默认的后备意图

为了捕获回传数据而不立即对其进行响应,我们将创建一个包含与回传数据匹配的训练短语的 intent,并删除该 intent 的所有响应。Dialogflow 会将回传数据与意图匹配,但不会做出响应,因为意图没有任何已定义的响应。

创建“无响应”意图

为了涵盖要忽略的操作,请创建一个“无响应”意图:

  1. 在左侧导航栏中,点击意图旁边的 +
  2. 对于意图名称,输入“No response”。
  3. 训练短语 (Training Phrases) 下,点击添加用户表达 (Add user expression),然后输入以下内容,在每次输入后按 Enter 键:
    • reply_view_website
  4. 向下滚动到回复,并使用垃圾箱图标移除所有回复。

点击保存

试试看!

在设备的 RBM 代理对话中,输入“hi”并向代理发送消息。这将触发默认欢迎 intent 中的促销优惠。点击“查看网站”建议,您会观察到网站在浏览器中打开,并且不会发送任何代理响应。

大功告成!

持续时间:1:00

表现不错!

您已完成构建由 Dialogflow 提供支持的简单 RBM 代理的所有阶段。

如果您有兴趣了解详情,请查看我们的高级 Codelab

针对这个激动人心的新平台开展开发工作!