FormAction slot filling with type list

Hey,

I have a slot of type list set in my domain.

slots:
       key_features:
              type: list

When i extract the value of the slot in my code

tracker.get_slot(“key_features”)

I get a list of the features which is the expected behavior, now when i use the FormAction implementation things get unexpected as i walk through the interactive learning process

class ActionDummyClass(FormAction):

RANDOMIZE = False

@staticmethod
def required_fields():
    return [
        EntityFormField("key_feature", "key_features"),
        ....
    ]

def name(self):
    return 'action_dummy_class'

after each input, the nlu is shown to correctly detect the entities and put them in a list as expcted

slot{“key_features”: [“feature 1”, “feature 2”]}

but when the action class is called

  action_dummy_class

only the first value of the list is recorded and shown as type text

slot{“key_features”: “feature 1”}

I went through the code to see how EntityFormField is implemented.

in the extract method

value = next(tracker.get_latest_entity_values(self.entity_name), None)

is there a reason for calling next only once and just taking the first value?

Hey man , i think my reply won’t be much of a help to you but why don’t you use custom actions for the work ? you would just need to return UserUtteranceReverted post checking whether the slots are filled or not , basically you would have to write a bit of code , vut you will be able to do it in your own way :slight_smile:

This is just standard slot filling behaviour, we didn’t take into account list slots at the time. We’re merging a new version of forms soon though: https://github.com/RasaHQ/rasa_core/pull/1013

@akelad: Is there a solution for this now? I tried it with 0.12.x and a list slot is still set to a string.

hmm, what kind of thing did you try? like what entities got extracted? can you create an issue on the core_sdk repo with these details please, because that’s not expected behaviour