Hi @JulianGerhard I am not sure what you want me to show you, but here is a part of my Form class:
class BusquedaForm(FormAction):
def name(self):
return "busqueda_form"
def slot_mappings(self):
return { "estado_Busqueda" : [
self.from_intent(intent='el_que_sea', value='Todos'),
self.from_entity(entity='estado'),
self.from_entity(entity='lugar'),
],
"municipio_Busqueda" :[
self.from_intent(intent='el_que_sea', value='Todos'),
self.from_entity(entity='municipio'),
self.from_entity(entity='lugar'),
],
"banios_Busqueda" : [
self.from_entity(entity='numero'),
self.from_entity(entity='banios'),
],
"recamaras_Busqueda" :[
self.from_entity(entity='numero'),
self.from_entity(entity = 'recamaras'),
],
"tipo_Busqueda" :[
self.from_entity(entity = 'tipo')
],
"propiedad_Busqueda" :[
self.from_entity(entity = 'propiedad')
],
"banios_Busqueda" :[
self.from_entity(entity = 'banios'),
self.from_entity(entity = 'numero'),
],
"recamaras_Busqueda" :[
self.from_entity(entity = 'recamaras'),
self.from_entity(entity = 'numero'),
],
"alcaldia_Busqueda" : [
self.from_entity(entity = 'alcaldia'),
],
}
@staticmethod
def required_slots(tracker):
if tracker.get_slot('propiedad_Busqueda') in ["terreno", "bodega"]:
if tracker.get_slot('estado_Busqueda') == 'Todos':
return ["tipo_Busqueda", "propiedad_Busqueda"]
elif tracker.get_slot('estado_Busqueda') == 'Ciudad de MĂ©xico':
return ["alcaldia_Busqueda", "tipo_Busqueda", "propiedad_Busqueda" ]
else:
return ["tipo_Busqueda", "estado_Busqueda", "municipio_Busqueda"]
else:
if tracker.get_slot('estado_Busqueda') == 'Todos':
return ["tipo_Busqueda", "propiedad_Busqueda", "banios_Busqueda", "recamaras_Busqueda"]
elif tracker.get_slot('estado_Busqueda') == 'Ciudad de MĂ©xico':
return ["alcaldia_Busqueda", "tipo_Busqueda", "propiedad_Busqueda", "banios_Busqueda", "recamaras_Busqueda", ]
else:
return ["tipo_Busqueda", "propiedad_Busqueda", "estado_Busqueda", "municipio_Busqueda", "banios_Busqueda", "recamaras_Busqueda"]
The remaining part are validations of several slots, and the submit method.
However I managed to modify the rasa_sdk.forms module, specifically the _activate_if_required function and now the Form is filling the corresponding slots with the mappings given in the actions.py script, at the first message, the one that activates the Form.