Rasa聊天机器人可以发起对话吗?

时间:2018-11-24 01:54:47

标签: rasa-nlu rasa-core

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

3 个答案:

答案 0 :(得分:2)

一种简单的方法是将用户消息从监视系统发送到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"
}' 

答案 1 :(得分:1)

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

对于当前的RASA版本,要运行RASA Core服务器,cli命令为:

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

并且指定的curl请求@Tobias在当前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中的{TW} sender_idconversation_id是同一事物的不同名称。

答案 2 :(得分:0)

当然。但是rasa_nlu与此无关,您将push_message从后端发送一个rasa_nlu从那里到聊天客户端。