使用Chatbot管理时间和日期的完整指南

爱码农 2019-06-11 09:30:03
业务挑战

日期是许多业务场景(如请假或差旅请求创建)中必需的关键参数,可为日期或期间的后端数据生成会话报告。但是,记录各种日期格式和组合(一个日期,几个日期,期间)有时似乎是一个挑战。

先决条件

本教程适用于高级用户,因此如果您尚未构建第一个机器人,请按照本教程进行操作。如果您想学习如何使用SAP Conversational AI平台上的bot构建器来掌握内存管理,请首先阅读本文!

从可重用性和统一技能开发的角度来看,这里的最佳实践可能是仅使用一种技能来解决在不同情况下获得单个日期,几个日期或期间的任务。在这种情况下,我们首先捕获从聊天用户收到的任何日期输入实体(可以有两个日期,一个日期或一个也是标准实体的期间)。

我们尝试在“需求”选项卡中捕获至少一个#datetime实体(Date From)(1)或#interval实体(作为Date From和Date To参数)(2):

保存日期从#datetime实体的值,我们捕获日期数组的第一个元素并记录标准实体的ISO部分。这是记录标准化值的非常好的做法,因为它可能对集成至关重要:

在#Interval实体处理中,我们记录时间段的开始和结束,以区分这些内存参数:

此外,如果用户在一条消息中提供两个单独的日期(而不是时间段),我们会将Date To值记录为该技能的Actions选项卡中#datetime数组的第二个元素:

如果我们的场景预先假定两个日期的可用性,但用户最初只提供一个日期,那么我们会额外检查所需的内存参数是否存在(Date To):

如果缺少这样的内存参数(第二个日期,在我们的示例中为Date To),我们要求用户在主要技能中输入适当的日期(例如,请假请求创建),我们调用另一个记录第二个的技能“要求”选项卡中的日期:

在这种情况下,一旦我们已经向用户询问了第二个日期(在我们的例子中为Date To),我们将#datetime数组的第一个元素记录为Date To memory参数:

在这个阶段,我们可能会问自己以下问题:“如果用户决定立即提供日期,而不等待机器人的澄清问题怎么办?”

我们也有这个案例的解决方案。在主要业务技能中,有两种类型的动作块:

1.如果已分配实体且目标参数为空,则直接调用“获取日期”技能,并立即记录日期:

2.如果目标实体未被识别,则我们要求提供日期,并使用等待用户输入选项重定向到获取日期技能:

在这里,我们有一个统一的机制,允许我们记录日期和任何类型的日期输入的任何组合!

0 阅读:8

爱码农

简介:技术交流、资源共享,是程序员的网上乐园。