Filling slot with a list of entities

I am trying to get phone number form the user but sometimes the Speach recognition returns charachters instead of numbers, for instance: my contact is zero three one one seven two one one. so to get these values i am using duckling with number dimenssion to detect this. it detects all the numbers as entities, so now what i need is to get all number values from the wntities and conactnate them to get full number and put it’s value in slot. I have tried using self.from_entity('number') but it only returns last value from the list.

is there any way to this, or any work around i should consider.

Hi @usamanawazfrt,

Welcome to Rasa Community!.

Have you approached the way of appending the numbers into a string a.append(self.from_entity('number')) and then reverting back to the slot. While returning in your custom actions return [SlotSet('number',a)]

Thank you @MuraliChandran14 for the help, How should i iterate over the list of entities or how should i stop the iteration. any thoughts on this ?

@usamanawazfrt, If you are using FormAction. You can write like this in your submit method. Adjust the condition on the len(a) > 2 to intake how many numbers you required to fill the slot.

 def submit(self, dispatcher: CollectingDispatcher, tracker: Tracker, 
                domain: Dict[Text, Any],) -> List[Dict]:
            if(len(a) > 2):
               dispatcher.utter_message(text="len is > 2")
               return self.deactivate()
            else:
                a.append(tracker.get_slot('vnumber'))
                c=''.join(a)
                dispatcher.utter_message(text="SlotValue"+c)
                return [SlotSet('vnumber',c)]