分发器¶
分发器是 CollectingDispatcher
类的一个实例,用于生成响应来发送回用户。
CollectingDispatcher¶
CollectingDispatcher
有一个 utter_message
方法和一个 messages
属性。它用于动作的 run
方法中,用来向返回到 Rasa 服务器的有效负载添加响应。Rasa 服务器依次将 BotUttered
事件添加到每个响应的追踪器。因此,使用调度程序添加的响应不应作为事件显式返回。例如,如下自定义动作不显式返回任何事件,但将返回响应“Hi, User!”给用户:
class ActionGreetUser(Action):
def name(self) -> Text:
return "action_greet_user"
async def run(
self,
dispatcher: CollectingDispatcher,
tracker: Tracker,
domain: Dict[Text, Any],
) -> List[EventType]:
dispatcher.utter_message(text = "Hi, User!")
return []
CollectingDispatcher.utter_message
¶
utter_message
方法可用于向用户返回任意类型的响应。
参数:
utter_message
方法采用如下可选参数。不传递任何参数将导致向用户返回一条空消息。传递多个参数将导致向用户返回丰富的响应(例如文本和按钮)。
-
text
:返回给用户的文本。 -
image
:用于向用户显示图像的 URL 或文件路径。 -
json_message
:字典格式的自定义 JSON 有效负载。它可用于发送特定于频道的响应。如下示例将在 Slack 中返回日期选择器:date_picker = { "blocks":[ { "type": "section", "text":{ "text": "Make a bet on when the world will end:", "type": "mrkdwn" }, "accessory": { "type": "datepicker", "initial_date": "2019-05-21", "placeholder": { "type": "plain_text", "text": "Select a date" } } } ] } dispatcher.utter_message(json_message = date_picker)
-
response
:返回给用户的响应的名称。此响应应在对话机器人领域中指定。 -
attachment
:要返回给用户的附件的 URL 或文件路径。 -
buttons
:返回给用户的按钮列表。每个按钮都是一个字典,应该有一个text
和一个payload
键。一个按钮可以包含其他键,但只有在特定频道查找它们时才会使用这些键。如果用户单击按钮,按钮的payload
将作为用户消息发送。 -
elements
:特定于使用 Facebook 作为消息传递频道。有关预期格式的详细信息,请参阅 Facebook 的文档。 -
**kwargs
:任意关键字参数,可用于指定响应变化中变量的值。例如。给定如下响应:你可以使用如下命令指定名称:
返回类型:
None