📜  如何从 Rasa Chatbot 的自定义操作发送自定义 Json 响应?(1)

📅  最后修改于: 2023-12-03 14:51:46.291000             🧑  作者: Mango

如何从 Rasa Chatbot 的自定义操作发送自定义 Json 响应?

Rasa 是一个开源的聊天机器人开发框架,它允许开发者构建智能的对话系统。其中的自定义操作(Custom Actions)允许开发者扩展机器人的功能,包括从自定义操作中发送自定义的 JSON 响应。下面将介绍如何在 Rasa Chatbot 中实现这一功能。

步骤1:创建自定义操作

首先,在 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 []

在这个示例中,自定义的操作类名为 CustomActionname 方法定义了自定义操作的名称,run 方法定义了自定义操作的逻辑。通过 dispatcher.utter_message(json_message=json_response) 发送自定义的 JSON 响应。

步骤2:将自定义操作添加到域文件中

在 Rasa Chatbot 项目的域文件中(domain.yml),将自定义操作添加到 actions 字段中,让 Rasa Chatbot 能够识别并执行自定义操作。

# domain.yml
actions:
  - action_custom_action
步骤3:进行自定义操作的训练

为了让 Rasa Chatbot 能够识别和响应自定义操作,请确保在进行训练之前更新 Rasa Chatbot 的训练数据,在故事文件或对话流中包含与自定义操作相关的示例。

步骤4:启动 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