Rasa对话机器人之HelpDesk (四)

84 篇文章 16 订阅

一、HelpDesk智能对话机器人查询incident状态的完整业务流程解析

首先运行命令rasa visualize可以获取可视化流程图:

下面是命令执行完成后自动弹出的web页面,在这个流程图中,重点看一下关于检查incident状态的流程是如何工作的,从图中可以看到这样一条路径:

START -> utter_greet -> utter_help -> incident_status_form -> action_check_incident_status

当然也可以直接输入信息要求对话机器人查询状态信息。

下面通过Rasa 提供的交互式对话模式来看一下完整的业务运行流程。首先进入交互式模式:

然后需要启动action server:

确保NLU组件duckling处于运行状态,duckling用于从用户输入信息中提取如数字,email等各种实体信息(entity extraction),下面是相关配置信息:

运行状态如下所示:

按照上面所给的查询incident状态的流程路径,首先从跟对话机器人打招呼开始:

确认意图识别正确,继续执行:

按照提示运行utter_greet这个action,对话机器人输出以下信息:

Hallo! I'm your IT Helpdesk Assistant.

确认没问题,继续执行utter_help:

这时对话机器人会给出各种帮助信息,由于我们想查询之前创建的incident的状态,所以输入以下信息:

这时识别到的意图为”incident_status”,符合预期,所以继续执行:

接下来就需要使用form来收集后面查询状态需要用户提供的信息了,检查domain配置中关于这个form的定义:

从定义看,唯一需要向用户收集的信息就是email,继续运行提示的form:

可以看到当前requested_slot的值为email,所以对话机器人输出如下信息:

What is your email address?

输入上篇文章中创建一个incident时使用到的email:

对话机器人正确提取了email的信息,继续执行:

这时slot “email”已经填充了值,继续运行form:

由于这个form只需要收集email的信息,所以接下来就需要调用微服务action_check_incident_status来执行incident的状态查询了:

但是微服务在执行时抛出了异常,前面文章提到HelpDesk对话机器人需要连接第三方的incident管理系统ServiceNow来完成incident的创建,那么要查询已创建的incident的状态也需要登录到ServiceNow系统,从上面的报错信息可以看到,是调用Python的http异步框架asyncio时出现了连接错误,所以未能真正完成查询操作。在这种情况下,对话机器人的回复如下:

Since ServiceNow isn't connected, I'm making this up!                                                                                    

The most recent incident for hiheartfirst@gmail.com has been closed

提示用户当前incident系统不可用。

下面是完成上述流程后的可视化运行图:

二、查询intent状态的微服务解析

执行微服务action_check_incident_status,在action server端的日志输出如下:

这是在domain配置中的定义:

对应的微服务类如下,需要继承自Rasa SDK的Action接口:

需要实现接口Action中的name方法:

实现接口Action中的run方法:

从tracker中获取对话机器人向用户收集的slot  “email”信息,并定义一组incident的状态:

使用localmode(一般用于测试目的),status就从上面定义的值列表中选取,当然也可以把值放入SQLite数据库进行查询:

从第三方incident管理系统中根据用户提供的email取回对应的incident的状态,如果返回结果不为空,则构建消息返回给用户,否则返回错误信息:

在方法的最后,需要重置当前所有slot的值为空,以便为下一次接受用户创建incident的请求做好准备,同时在这里会通过触发SlotSet事件来把当前email的值赋给另外一个slot “previous_email”,这样可以在某些场景下不需要用户再次输入email。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值