本文继续围绕工业级业务对话平台和框架Rasa,对Rasa对话机器人项目实战之保险行业Insurance Bot微服务代码结合现场实验进行分析。
一、Rasa对话机器人项目实战之保险行业Insurance Bot微服务代码逐行解析及现场实验剖析
- ValidateQuoteForm三大Slot校验源码详解及实验分析
这个类用于对quote_form收集的slots进行验证,继承自FormValidationAction:
这是验证slot “AA_quote_insurance_type”的方法,首先从tracker中获取slot的值,然后检查slot的值是否是domain里这个slot定义提供的4个值之一,如果不满足条件则提示用户重新输入并清空slot的值,否则就设置这个slot的值为用户输入的值:
这是验证slot “quote_state”的方法,首先从tracker中获取entity “state”的值,然后检查这个entity的值是否是US的states,如果不满足条件则提示用户重新输入并清空slot “quote_state”的值,否则就设置这个slot的值为entity的值:
这是验证slot “quote_number_persons”的方法,首先从tracker中获取最新的intent的值,然后检查这个intent的值是否是stop,如果是则在return语句里设置slot的值为None,否则在try block里面验证用户输入值是否是有效整数,并且需要是>=1的整数,否则提示用户重新输入并设置slot的值为None:
实验分析部分:
输入信息:
这时会调用方法validate_ AA_quote_insurance_type对slot “AA_quote_insurance_type”的值进行校验,由于验证通过后方法的return语句会重新填充slot的值,所以在下面的输出信息里可以看到有两条slot设置信息,这种情况下会使用最新的slot的值覆盖以前的值:
输入信息:
运行”quote_form”,输出信息:
输入信息:
运行”quote_form”后输出信息,输