【问题标题】:Can Rasa chatbot initiate a conversation?Rasa 聊天机器人可以发起对话吗?
【发布时间】:2018-11-24 01:54:46
【问题描述】:

我计划部署基于 rasa 和监控引擎的机器人。因此,如果出现问题,我希望机器人与特定用户开始对话。这可能吗?

【问题讨论】:

    标签: rasa-nlu rasa-core


    【解决方案1】:

    一个简单的方法是从您的监控系统向您的input channel 发送一条用户消息。所以你基本上模仿了发起对话的用户。请注意,我使用 / 作为前缀直接指定意图。 使用暴露的 REST api 启动 Rasa Core:

    python -m rasa_core.run -d models --enable-api
    

    然后你可以向它发送消息,例如:

    curl --request POST \
      --url http://localhost:5005/webhooks/rest/webhook \
      --header 'content-type: application/json' \
      --data '{
      "sender": "<sender_id_of_your_user>",
      "message": "/inform_about_failure"
    }' 
    

    【讨论】:

    • 太好了,我会试试这个
    【解决方案2】:

    @Tobias 的解决方案是在基于拉的聊天机器人引擎(不仅仅是 RASA)中管理外部事件的“旧方法”,当我们想要将通知推送到 sender_id 时仍然有效。

    对于当前的 RASA 版本,要运行 RASA 核心服务器,cli 命令是:

    rasa run --debug --enable-api -m models 
    

    并且 @Tobias 指定的 curl 请求在当前 RASA 版本中仍然有效:

    curl --request POST \
      --url http://localhost:5005/webhooks/rest/webhook \
      --header 'content-type: application/json' \
      --data '{
      "sender": "<sender_id_of_your_user>",
      "message": "/inform_about_failure"
    }' 
    

    另一方面,RASA 现在(版本 1.9.7)建议的方法是使用external events management

    这样您还可以指定实体以及要触发的意图,如示例所示:

    curl \
     -H "Content-Type: application/json" \
     -X POST \
     -d '{"name": "EXTERNAL_dry_plant", "entities": {"plant": "Orchid"}}' \ 
     http://localhost:5005/conversations/<sender_id_of_your_user>/trigger_intent
    

    顺便说一句,在 RASA 中,sender_idconversation_id 是同一事物的不同名称。

    【讨论】:

      【解决方案3】:

      当然。但是rasa_nlu 与此无关,您将从后端向聊天客户端发送push_message,从那里rasa_nlu 接听对话。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多