rasa在响应json中发送多条消息,用于表单应答rasa x

2024-04-28 16:35:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我用的是RasaX。并使用nodejs API访问rasa

我必须填写一张表格,以便显示要选择的城市列表,用户必须选择分配给每个城市的编号。这就是我写动作的方式

class CityRequirementForm(FormAction):
    def name(self):
        return "city_form"

    @staticmethod
    def required_slots(tracker: Tracker):
        return ["area"]

    def slot_mappings(self):
        return {
            "area": self.from_text()
        }
    # method to validate the user entered information in the slot
    def validate_retailer(
            self,
            value,
            dispatcher: CollectingDispatcher,
            tracker: Tracker,
            domain):
        
        # extract the store lists from the slot
        area_list = tracker.get_slot('area_list')

        try:
            if isinstance(int(value),int):
                if int(value) > len(retailer_detail_list):
                    dispatcher.utter_message(template='utter_invalid_area')
                    return {'area': None}
                else:
                    return {'area': value}
        
        except Exception as err:
            dispatcher.utter_message(template='utter_invalid_area')
            return {'area': None}

我返回的区域为None,因为用户没有从给定列表中选择数字或键入其他内容

这在RasaxUI上非常有效。如果我在网络选项卡中检查rasa的响应,则有两条消息的列表。第一个是实际消息utter_invalid_area,第二个是表单所关联的插槽消息(“选择城市..城市列表”)

在NOdejs API中,出于某种原因,我添加了响应,但在这种情况下,第二条消息对我来说用处不大

有没有办法删减第二条消息?或者任何其他方法来实现同样的目标


Tags: theself消息列表returnvaluedefarea