# Set multiple Slots

**URL:** <https://forum.rasa.com/t/set-multiple-slots/493>\
**Category:** Rasa Open Source\
**Created:** [August 16, 2018, 12:23pm UTC](https://forum.rasa.com/t/set-multiple-slots/493 "2018-08-16T12:23:07Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![mjoellnier](https://avatars.discourse-cdn.com/v4/letter/m/b782af/32.png) [@mjoellnier](https://forum.rasa.com/u/mjoellnier)\
**Post date:** [August 16, 2018, 12:23pm UTC](https://forum.rasa.com/t/set-multiple-slots/493/1 "2018-08-16T12:23:07Z")

</div>

Hey there!

Is `return[SlotSet("key", "value")]` the only way to set slots? I’d like to set multiple slots from within a python `if` statement.

Thanks!

---

<div class="post-metadata">

**Author:** ![hendr-ik](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.rasa.com/hendr-ik/32/377_2.png) [@hendr-ik](https://forum.rasa.com/u/hendr-ik)\
**Post date:** [August 16, 2018, 12:42pm UTC](https://forum.rasa.com/t/set-multiple-slots/493/2 "2018-08-16T12:42:47Z")

</div>

I have the same issue: How do you set multiple slots at once?

---

<div class="post-metadata">

**Author:** ![souvikg10](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.rasa.com/souvikg10/32/93_2.png) [@souvikg10](https://forum.rasa.com/u/souvikg10)\
**Post date:** [August 16, 2018, 12:45pm UTC](https://forum.rasa.com/t/set-multiple-slots/493/3 "2018-08-16T12:45:37Z")

</div>

I may be wrong here but isn’t that an array you are returning

```auto
return [SlotSet("key","value1"), SlotSet("key2","value2"]

```

this won’t work?

---

<div class="post-metadata">

**Author:** ![hendr-ik](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.rasa.com/hendr-ik/32/377_2.png) [@hendr-ik](https://forum.rasa.com/u/hendr-ik)\
**Post date:** [August 16, 2018, 12:47pm UTC](https://forum.rasa.com/t/set-multiple-slots/493/4 "2018-08-16T12:47:48Z")

</div>

That does not work for me - second SlotSet gets ignored…

---

<div class="post-metadata">

**Author:** ![souvikg10](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.rasa.com/souvikg10/32/93_2.png) [@souvikg10](https://forum.rasa.com/u/souvikg10)\
**Post date:** [August 16, 2018, 12:53pm UTC](https://forum.rasa.com/t/set-multiple-slots/493/5 "2018-08-16T12:53:26Z")

</div>

Sorry I use the HTTP API /continue and send events of type slots

```auto
({"event": "slot", "name": "cuisine", "value": "mexican"},{"event": "slot", "name": "location", "value": "CA"})

```

[https://rasa.com/docs/core/http/](https://rasa.com/docs/core/http/)

---

<div class="post-metadata">

**Author:** ![mjoellnier](https://avatars.discourse-cdn.com/v4/letter/m/b782af/32.png) [@mjoellnier](https://forum.rasa.com/u/mjoellnier)\
**Post date:** [August 16, 2018, 1:26pm UTC](https://forum.rasa.com/t/set-multiple-slots/493/6 "2018-08-16T13:26:39Z")

</div>

Could it be possible to solve via the training stories? By calling multiple times `- slot{"key":"value"}`

---

<div class="post-metadata">

**Author:** ![mjoellnier](https://avatars.discourse-cdn.com/v4/letter/m/b782af/32.png) [@mjoellnier](https://forum.rasa.com/u/mjoellnier)\
**Post date:** [August 16, 2018, 1:48pm UTC](https://forum.rasa.com/t/set-multiple-slots/493/7 "2018-08-16T13:48:03Z")

</div>

> [@mjoellnier](#):
>
> Could it be possible to solve via the training stories? By calling multiple times `- slot{"key":"value"}`

okay that doesn’t seem to work. Is there something like `tracker.set_slot("key", "value")` equivalent to the method `tracker.get_slot("key")`? That would be something good to call out of a python method.

---

<div class="post-metadata">

**Author:** ![hendr-ik](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.rasa.com/hendr-ik/32/377_2.png) [@hendr-ik](https://forum.rasa.com/u/hendr-ik)\
**Post date:** [August 16, 2018, 2:09pm UTC](https://forum.rasa.com/t/set-multiple-slots/493/8 "2018-08-16T14:09:51Z")

</div>

Okay - in my case, problem was one of the keys got a value “None” - filled it with a “0” and it works fine now

---

<div class="post-metadata">

**Author:** ![mjoellnier](https://avatars.discourse-cdn.com/v4/letter/m/b782af/32.png) [@mjoellnier](https://forum.rasa.com/u/mjoellnier)\
**Post date:** [August 16, 2018, 2:17pm UTC](https://forum.rasa.com/t/set-multiple-slots/493/9 "2018-08-16T14:17:12Z")

</div>

Yes in fact I also got it to work with multiple SlotSets in return of `submit`

Thanks guys!

---

<div class="post-metadata">

**Author:** ![souvikg10](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.rasa.com/souvikg10/32/93_2.png) [@souvikg10](https://forum.rasa.com/u/souvikg10)\
**Post date:** [August 16, 2018, 4:17pm UTC](https://forum.rasa.com/t/set-multiple-slots/493/10 "2018-08-16T16:17:07Z")

</div>

Can you post your solution? It might help others 🙂

---

<div class="post-metadata">

**Author:** ![deepshet](https://avatars.discourse-cdn.com/v4/letter/d/f05b48/32.png) [@deepshet](https://forum.rasa.com/u/deepshet)\
**Post date:** [August 16, 2018, 5:50pm UTC](https://forum.rasa.com/t/set-multiple-slots/493/11 "2018-08-16T17:50:11Z")

</div>

Setting multiple slot works fine for me . When you say ignored what do you mean - It might be the slot is set but things are not working (or perhaps your custom action is throwing an error )- if you use interactive mode , you can see the set slots etc and if any error got thrown

I have something like this in my CustomAction which works slot\_set.append(SlotSet(“x”, y)) if (x != ‘zero’) : available\_x = psc.get\_x(res) slot\_set.append(SlotSet(“available\_x”,list(available\_x))) return slot\_set and both can set

Also which version of rasa ?

---

<div class="post-metadata">

**Author:** ![hendr-ik](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.rasa.com/hendr-ik/32/377_2.png) [@hendr-ik](https://forum.rasa.com/u/hendr-ik)\
**Post date:** [August 17, 2018, 7:34am UTC](https://forum.rasa.com/t/set-multiple-slots/493/12 "2018-08-17T07:34:16Z")

</div>

Yes works for me too now - problem was one of the keys got a value “None” - i filled it with a “0” and that did it

rasa\_core~=0.10.2

---

<div class="post-metadata">

**Author:** ![lgrinberg](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.rasa.com/lgrinberg/32/1659_2.png) [@lgrinberg](https://forum.rasa.com/u/lgrinberg)\
**Post date:** [August 19, 2018, 2:17am UTC](https://forum.rasa.com/t/set-multiple-slots/493/13 "2018-08-19T02:17:12Z")

</div>

SlotSet is a class. So what you can do is create a list of class SlotSet objects and then return it.  
Like this:

```
        for key in slot_keys_values.keys(): 
             slot=SlotSet(key, slot_keys_values[key])
             slots.append(slot)
        return slots
```

---

<div class="post-metadata">

**Author:** ![mjoellnier](https://avatars.discourse-cdn.com/v4/letter/m/b782af/32.png) [@mjoellnier](https://forum.rasa.com/u/mjoellnier)\
**Post date:** [August 20, 2018, 6:43am UTC](https://forum.rasa.com/t/set-multiple-slots/493/14 "2018-08-20T06:43:15Z")

</div>

Sure thing! It’s as easy as:

`return[SlotSet("Key1", "Value1"), SlotSet("Key2", "Value2")]`

Of course this way only can be done with a fixed number of slots to fill

---

<div class="post-metadata">

**Author:** ![agonzalezcollins](https://avatars.discourse-cdn.com/v4/letter/a/ba9def/32.png) [@agonzalezcollins](https://forum.rasa.com/u/agonzalezcollins)\
**Post date:** [September 6, 2018, 4:17pm UTC](https://forum.rasa.com/t/set-multiple-slots/493/15 "2018-09-06T16:17:52Z")

</div>

Hello, a have a question: If a need excute an Action in RASA CORE 0.11.2…

I use core.sdk so:

- last version: tracker.update(SlotSet(“my\_slot”, “value”)) OR tracker.slots[‘my\_slot’] = value

dispatcher.utter\_message(’…’, tracker, {‘name’ : tracker.get\_slot(‘my\_slot’) })

return[SlotSet(“my\_slot”, “value”)]

- new version ? tracker.slots[‘my\_slot’] = value //None so: utter\_message value is None

Thanks!

---

<div class="post-metadata">

**Author:** ![carltondaniel](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.rasa.com/carltondaniel/32/17903_2.png) [@carltondaniel](https://forum.rasa.com/u/carltondaniel)\
**Post date:** [November 13, 2021, 3:31pm UTC](https://forum.rasa.com/t/set-multiple-slots/493/16 "2021-11-13T15:31:54Z")

</div>

> [@souvikg10](#):
>
> `return [SlotSet("key","value1"), SlotSet("key2","value2"]`

works perfectly as expected

![DeepinScreenshot_select-area_20211113205919](https://europe1.discourse-cdn.com/flex013/uploads/rasa/original/3X/5/1/515854fc98679dc48a9661417ad7353ad0f2cedb.png)

return [SlotSet(“rating”,None), SlotSet(“relation\_operator”,None)]

![DeepinScreenshot_select-area_20211113210109](https://europe1.discourse-cdn.com/flex013/uploads/rasa/original/3X/1/a/1afd7eeb73896f2df2e1ea86a47041aae49f75e4.png)
