📅  最后修改于: 2023-12-03 14:51:46.291000             🧑  作者: Mango
Rasa 是一个开源的聊天机器人开发框架,它允许开发者构建智能的对话系统。其中的自定义操作(Custom Actions)允许开发者扩展机器人的功能,包括从自定义操作中发送自定义的 JSON 响应。下面将介绍如何在 Rasa Chatbot 中实现这一功能。
首先,在 Rasa Chatbot 项目的根目录下创建一个名为 actions
的文件夹。然后在该文件夹中创建一个 Python 文件,命名为custom_actions.py
(可以使用其他的文件名,只要后缀是.py
即可)。
在 custom_actions.py
文件中,导入 Rasa SDK,并创建一个自定义的操作类,继承自Action
类。自定义的操作类负责处理从聊天机器人接收到的消息,并根据需要发送自定义的 JSON 响应。
# Import necessary modules from Rasa SDK
from typing import Any, Text, Dict, List
from rasa_sdk import Action, Tracker
from rasa_sdk.executor import CollectingDispatcher
# Define custom action class
class CustomAction(Action):
def name(self) -> Text:
return "action_custom_action"
def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:
# Your code to handle custom logic here
# Customize and send JSON response
json_response = {
"response_key": "response_value"
}
dispatcher.utter_message(json_message=json_response)
return []
在这个示例中,自定义的操作类名为 CustomAction
,name
方法定义了自定义操作的名称,run
方法定义了自定义操作的逻辑。通过 dispatcher.utter_message(json_message=json_response)
发送自定义的 JSON 响应。
在 Rasa Chatbot 项目的域文件中(domain.yml
),将自定义操作添加到 actions
字段中,让 Rasa Chatbot 能够识别并执行自定义操作。
# domain.yml
actions:
- action_custom_action
为了让 Rasa Chatbot 能够识别和响应自定义操作,请确保在进行训练之前更新 Rasa Chatbot 的训练数据,在故事文件或对话流中包含与自定义操作相关的示例。
在命令行中进入 Rasa Chatbot 项目的根目录,并执行以下命令来启动 Rasa Chatbot:
rasa run actions
rasa shell
rasa run actions
命令将启动 Rasa Chatbot 的自定义操作服务器,rasa shell
命令将启动对话模型的聊天窗口。
现在,当与 Rasa Chatbot 进行对话时,通过自定义操作 action_custom_action
发送自定义的 JSON 响应。
注意:确保在 domain.yml
和自定义操作文件中的类名、方法名和自定义操作的名称一致。
希望本文能帮助你了解如何从 Rasa Chatbot 的自定义操作发送自定义 JSON 响应。详细信息可参考 Rasa 官方文档:Custom Actions。