Xanxir
Xanxir

Reputation: 486

Only getting single word parameters from Alexa Skills Kit

I'm writing an Alexa Skill, and I can only get single word parameters into my code.

Here is the intent schema:

    {
  "intents": [
    {
      "intent": "HeroQuizIntent",
      "slots": [
        {
          "name": "SearchTerm",
          "type": "SEARCH_TERMS"
        }
      ]
    },
    {
      "intent": "HeroAnswerIntent",
      "slots": [
        {
          "name": "SearchTerm",
          "type": "SEARCH_TERMS"
        }
      ]
    },
    {
      "intent": "AMAZON.HelpIntent"
    }
  ]
}

and my sample utterances are:

HeroQuizIntent quiz me
HeroAnswerIntent is it {SearchTerm}

For the HeroAnswerIntent, I'm checking the SearchTerm slot, and I'm only getting single words in there.

So, "Peter Parker" gives "Parker", "Steve Rogers" gives "Rogers", and "Tony Stark" gives "Stark".

How do I accept multiple words into a slot?

Upvotes: 7

Views: 3874

Answers (4)

Deep Singh Baweja
Deep Singh Baweja

Reputation: 418

AMAZON.SearchQuery

So you can use this in your utterances, and it will detect all words that the user speaks in between, Its rather accurate

It will solve your problem.

Ref Link: Alexa SearcQuery

Upvotes: 0

qix
qix

Reputation: 7912

The solution @Xanxir mentioned works equivalently with the newer custom slots format. In this case, you'd just put multiple length examples in your custom list of values for your slot type.

Upvotes: 1

Rostyslav Antonov
Rostyslav Antonov

Reputation: 31

I've had same problem with my skill and that's the only solution which is worked for my skill to use several words, but you need to check are these slots not empty and concatenate them

Intent schema:

{
  "intent": "HeroAnswerIntent",
  "slots": [
    {
      "name": "SearchTermFirst",
      "type": "SEARCH_TERMS"
    },
    {
      "name": "SearchTermSecond",
      "type": "SEARCH_TERMS"
    },
    {
      "name": "SearchTermThird",
      "type": "SEARCH_TERMS"
    }
  ]
},

Sample utterance

HeroAnswerIntent is it {SearchTermFirst} HeroAnswerIntent is it {SearchTermFirst} {SearchTermSecond} HeroAnswerIntent is it {SearchTermFirst} {SearchTermSecond} {SearchTermThird}

And last one you need to put every of your words in separate line in SEARCH_TERMS slot definition

Also using AMAZON.LITERAL sometimes not pass variable into skill at all even if you test it using service simulator (skill console, test tab)

Upvotes: 3

Xanxir
Xanxir

Reputation: 486

I had to change the Slot type to AMAZON.LITERAL.

The trick was that in the sample utterances, I also had to provide multiple utterances to demonstrate the minimum and maximum sizes of literals that Alexa should interpret. It's wonky, but works.

Here's the reference for it: https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/alexa-skills-kit-interaction-model-reference

Upvotes: 0

Related Questions