我正在使用 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 中,我出于某种原因附加了响应,但在这种情况下,第二条消息对我来说使用较少,
有没有办法修剪第二条消息?或任何其他方法来实现相同的目标?