rasa 分支策略

rasa 分支实现

示例,表单填完后是否重新填写表单

1、设定slot,其名为form_ok,设定填写该slot的表单form_is_ok_or_not

form_ok:
  type: rasa.shared.core.slots.TextSlot
  initial_value: null
  auto_fill: true
  influence_conversation: false
  
form_is_ok_or_not:
  required_slots:
    form_ok:
    - type: from_text

2、当表单填写完毕后,填写表单form_is_ok_or_not,实际上是填槽form_ok。for_ok有两个值:正确和错误。

#表单完成后,对form_ok槽进行赋值
- rule: submit form
  condition:
  - active_loop: infor_form
  steps:
  - action: infor_form
  - active_loop: null
  - action: form_is_ok_or_not
  - active_loop: form_is_ok_or_not

3、使用custom action判断form_ok的值,从而进入不同的分支。

#对form_ok赋值后,进入自定义操作action_rewrite_form_or_not
#action_rewrite_form_or_not通过form_ok的不同值,进入不同操作分支。
- rule: form is ok or not
  condition:
  - active_loop: form_is_ok_or_not
  steps:
  - action: form_is_ok_or_not
  - active_loop: null
  #下方这个自定义action根据不同的form_ok值,返回不同的行为。
  - action: action_rewrite_form_or_not
  wait_for_user_input: false

4、custom action的代码实现

class ActionRewriteFormOrNot(Action):
    def name(self) -> Text:
        return "action_rewrite_form_or_not"
    def run(self,
           dispatcher: CollectingDispatcher,
           tracker: Tracker,
           domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:
        temp = tracker.get_slot('form_ok')
        if temp == '错误':
        #form_ok是错误,那么重新填写信息:重置表单,激活表单
            dispatcher.utter_message(text="对不起,马上为您重新填写信息。")
            return [AllSlotsReset(),FollowupAction(name = "infor_form")]
        else:
     #form_ok是正确,那么进行下一步操作,这里是我的下一个环节。
            return [FollowupAction(name = "action_utter_question")]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值