📜  机器人框架-使用下拉菜单(1)

📅  最后修改于: 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方法中,我们获取用户最终选择的选项并返回。

使用方法

为了使用上述代码,你需要按照以下步骤:

  1. 在你的机器人框架项目中创建一个新的文件,例如my_form.py
  2. 将上述代码复制到该文件中;
  3. 修改代码中的MyForm类名称,确保它与文件名相同;
  4. 根据你的具体情况修改slot_mappingssubmit方法中的代码,以确保正确获取用户选择的选项;
  5. 在你的机器人框架项目中的domain.yml文件中添加一个新的表单类型,指向刚刚创建的表单类。

现在,你的机器人框架已经可以使用下拉菜单了。当用户触发该表单时,机器人界面将显示一个下拉菜单,用户可以选择自己想要的选项,机器人将自动获取该选项并回复用户。