3

If our backend receive a request for say AMAZON.YesIntent or any other custom intent. Can we Elicit slot of a different intent than the triggered intent as response.

Ex:

...
user: Yes
     (Amazon.YesIntent is mapped)
Alexa: Which city do you want to stay in?
     (elicit slot of another intent)
...
Athul Kc
  • 61
  • 4

1 Answers1

4

Yes this is now possible, read the update section

Unfortunately you can't. Only updated intent of same type can be sent with a Dialog.ElicitSlot directive.

Note that you cannot change intents when returning a Dialog directive, so the intent name and set of slots must match the intent sent to your skill.

You will receive an "Invalid Directive" card and "There was some problem with the requested skills response" as error message.

Update (April, 8th 2019)

Use updateIntent object to specify the new intent whose slot has to be triggered. When you update the Intent object originally sent to your skill with the new updateIntent, include all of the slots, including any empty slots you are not changing.

{
  "type": "Dialog.ElicitSlot",
  "slotToElicit": "slotOfSomeOtherIntent",
  "updatedIntent": {
    "name": "SomeOtherIntent",
    "confirmationStatus": "NONE",
    "slots": {
      "slotOfSomeOtherIntent": {
        "name": "slotOfSomeOtherIntent",
        "value": "string",
        "resolutions": {},
        "confirmationStatus": "NONE"
      }
    }
  }
}

Read more about Change the intent or update slot values during the dialog
Read more about ElicitSlot Directive

johndoe
  • 4,387
  • 2
  • 25
  • 40
  • Is this still true? The docs you link to make it sound possible to pass the other intent in updatedIntent even under ElicitSlot Directive: "Use this to change intents during the dialog or set slot values and confirmation status." – Jay A. Little Mar 25 '19 at 05:05
  • 1
    At the time of writing it was not possible. Now it's possible using updatedIntent. I will update my answer shortly. Thank you for pointing it out. – johndoe Mar 25 '19 at 05:10