📅  最后修改于: 2023-12-03 15:40:19.708000             🧑  作者: Mango
在开发机器人时,经常需要使用用户交互界面,其中下拉菜单是一个常用而又方便的选择。本文将介绍如何在机器人框架中使用下拉菜单,帮助程序员更加方便地开发机器人。
在机器人框架中使用下拉菜单,通常需要用到以下代码片段:
from typing import List
from rasa_sdk.forms import FormAction
from rasa_sdk.types import DomainDict, Tracker
from rasa_sdk.executor import CollectingDispatcher
from rasa_sdk import Action, Tracker
from rasa_sdk.events import SlotSet
class MyForm(FormAction):
def name(self) -> Text:
return "my_form"
@staticmethod
def required_slots(tracker: Tracker) -> List[Text]:
return ["option"]
def slot_mappings(self) -> Dict[Text, Union[Dict, List[Dict]]]:
return {
"option": [
self.from_entity(entity="option"),
self.from_intent(intent="affirm", value=True),
self.from_intent(intent="deny", value=False),
],
}
def submit(
self,
dispatcher: CollectingDispatcher,
tracker: Tracker,
domain: DomainDict,
) -> List[Dict]:
book = tracker.get_slot("option")
dispatcher.utter_message(text=f"You selected {book}")
return [SlotSet("option", book)]
在上述代码中,我们定义了一个名为MyForm
的表单,它包含一个名为option
的槽位,表示下拉菜单的选择项。slot_mappings
方法指定了option
槽位的值来源,包括从实体、意图等多种方式获取。在submit
方法中,我们获取用户最终选择的选项并返回。
为了使用上述代码,你需要按照以下步骤:
my_form.py
;MyForm
类名称,确保它与文件名相同;slot_mappings
和submit
方法中的代码,以确保正确获取用户选择的选项;domain.yml
文件中添加一个新的表单类型,指向刚刚创建的表单类。现在,你的机器人框架已经可以使用下拉菜单了。当用户触发该表单时,机器人界面将显示一个下拉菜单,用户可以选择自己想要的选项,机器人将自动获取该选项并回复用户。