该存储库将不会更新。存储库将以只读模式保持可用。
在此 Code Pattern 中,我们将使用 Watson Assistant Slots 功能构建一个接受披萨订单的聊天机器人。与以前版本的 Assistant 不同,所需的信息(例如尺寸、类型和成分选择)都可以在一个 Assistant Node 中输入。
当读者完成本 Code Pattern 后,他们将了解如何:
注意:此 Code Pattern 已更新,包含有关访问在 IBM Cloud Pak for Data 上运行的 Watson Assistant 的说明。这些更新可以在本地部署应用程序或将应用程序部署到 OpenShift on IBM Cloud 的具体说明中找到。所需的主要更改是您的应用程序将需要额外的凭证才能访问托管 Watson Assistant 服务的 IBM Cloud Pak for Data 集群。
单击此处了解有关 IBM Cloud Pak for Data 的更多信息。
注意:此 Code Pattern 使用 Watson Assistant 体验。 2021 年 10 月 8 日之后,所有实例(非标准)都可以在经典和新 Watson Assistant 体验之间切换,方法是转至 Watson Assistant 屏幕右上角并单击管理图标位于助手屏幕的右上角。单击“切换到经典体验”或单击“切换到新体验”以在两者之间切换。
在 IBM Cloud 上使用 Cloud Foundry | 使用 IBM Cloud 的 Kubernetes 服务 |
---|---|
单击以下选项之一以获取有关部署应用程序的说明。
Slots 的强大之处在于它如何减少在 Watson Assistant Dialog 中实现逻辑所需的节点数量。这是使用旧方法的部分对话 Dialog:
这是一个使用槽的更完整的对话框,它将所有逻辑放在Pizza ordering
节点中。
打开对话框,我们看一下:
每个槽代表聊天机器人中要填充的字段: pizza_size
、 pizza_type
和pizza_topings
。如果它们不存在,将从顶部开始提示用户,直到通过关联变量( $pizza_size
、 $pizza_type
等)填充所有内容。
单击配置添加更多功能:
在这里,我们可以添加此槽何时被填充(找到)的响应。逻辑可用于一种成分:
或者如果添加了一种以上成分:
我们添加了逻辑来解决“有额外的配料吗?”这个问题的是或否答案:
点击3个圆圈 然后选择Open JSON editor
直接编辑 json:
在这里,我们为 context: {"pizza_topings"} 字段设置了一个空值,以便我们可以通过填充此槽来退出循环。
最后,一旦槽位全部填满,我们就会添加响应:
我们从“pizza_toppings”的情况开始,通过检测数组的大小>0。在这里,我们首先处理可选的“pizza_place”槽已填满的情况,然后处理未填满的情况。
最后,我们添加一个处理程序,用于处理未找到用户对提示的答案的情况。我们为意图“帮助”添加了一个处理程序。
我们有一个对话节点来处理#reset
意图,它将所有字段重置为null
:
让我们看一个示例对话和关联的 json。当您的 Watson Pizzeria 运行时,启动一个对话并首先告诉 Pizza Bot 您想要一个大披萨:
“用户输入”向您显示“输入”{“文本”}字段,以及主要用于助理跟踪内部状态的“上下文”。向下滚动到Watson Understands
并查看intents
:
请注意,检测到“订单”的意图。实体“pizza_size”现在是一个已填充的槽。我们还有 2 个必需的槽位,“pizza_type”和“pizza_toppings”。系统将提示用户,直到填写完毕:
我们现在可以看到所有必需的槽位都已填充:
如果我们想告诉 Watson Pizzeria 我们想在餐厅里吃披萨怎么办?为时已晚! “pizza_place”的槽是可选的,因此不会提示用户输入,一旦所需的槽被填满,我们就退出“Pizza Ordering”对话框节点。用户需要先填写可选栏位。输入重置以重新开始并通过添加短语“在那里吃饭......”来测试这一点:
cf push
进行部署会给出: FAILED Could not find service
如果您将服务命名为wcsi-conversation-service
,这应该可以工作。当您使用cf push
时,它会尝试绑定到manifest.yml
中列出的服务。
因此,有两种方法可以让它发挥作用:
注意:
Deploy to IBM Cloud
按钮通过动态创建服务(使用正确的名称)解决了此问题。
此 Code Pattern 已根据 Apache 软件许可证版本 2 获得许可。此 Code Pattern 中调用的单独第三方代码对象由其各自的提供商根据其自己单独的许可证进行许可。贡献须遵守开发者原产地证书 1.1 版 (DCO) 和 Apache 软件许可证 2 版。
Apache 软件许可证 (ASL) 常见问题解答