如何在 rasa 中的自定义操作中设置插槽
how to set a slot in a custom action in rasa
我是 rasa 框架的新手。我开始开发一个简单的聊天机器人,并为我的聊天机器人创建了三个插槽。所以我的机器人需要识别当前位置并将其保存在插槽中。我当前的位置是从对话中获取的,我可以将其保存到故事中的插槽中。
但后来我有一个自定义操作,可以从 API 调用中查找天气,我需要在相关槽中保存天气状态和湿度。
class ActionSomeRespThree(Action):
def name(self) -> Text:
return "action_some_resp_three"
def run(self, dispatcher: CollectingDispatcher,
tracker: Tracker,
domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:
cityName = tracker.get_slot('city')
您可以简单地在事件中使用 setSlot 方法。
from rasa_sdk.events import SlotSet
然后在你的运行方法中,你可以在相关的插槽中设置你的值。
假设您的湿度插槽名称是 weather_humidity
。然后想象您从 API 中提取的湿度值是为一个名为 humidity
的变量提取的。然后在您的自定义操作 运行 方法中,只需使用以下行设置插槽值。
SlotSet("weather_humidity", humidity)
确保您已在 domain.yml 文件中定义槽值。
我是 rasa 框架的新手。我开始开发一个简单的聊天机器人,并为我的聊天机器人创建了三个插槽。所以我的机器人需要识别当前位置并将其保存在插槽中。我当前的位置是从对话中获取的,我可以将其保存到故事中的插槽中。
但后来我有一个自定义操作,可以从 API 调用中查找天气,我需要在相关槽中保存天气状态和湿度。
class ActionSomeRespThree(Action):
def name(self) -> Text:
return "action_some_resp_three"
def run(self, dispatcher: CollectingDispatcher,
tracker: Tracker,
domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:
cityName = tracker.get_slot('city')
您可以简单地在事件中使用 setSlot 方法。
from rasa_sdk.events import SlotSet
然后在你的运行方法中,你可以在相关的插槽中设置你的值。
假设您的湿度插槽名称是 weather_humidity
。然后想象您从 API 中提取的湿度值是为一个名为 humidity
的变量提取的。然后在您的自定义操作 运行 方法中,只需使用以下行设置插槽值。
SlotSet("weather_humidity", humidity)
确保您已在 domain.yml 文件中定义槽值。