0

我正在使用 rasa x。并使用 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用户没有从给定列表中选择数字或输入其他内容。

这在 Rasa X ui 上完美运行。如果我在网络选项卡中检查 rasa 的响应,则会列出 2 条消息。第一个是实际消息 utter_invalid_area,第二个是与表单关联的插槽消息(“选择城市.. 城市列表”)。

在 NOdejs APIs 中,我出于某种原因附加了响应,但在这种情况下,第二条消息对我来说使用较少,

有没有办法修剪第二条消息?或任何其他方法来实现相同的目标?

4

0 回答 0