我用的是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中,出于某种原因,我添加了响应,但在这种情况下,第二条消息对我来说用处不大
有没有办法删减第二条消息?或者任何其他方法来实现同样的目标
目前没有回答
相关问题 更多 >
编程相关推荐