Can Two Alexa skills have same invocation name? - alexa

I want to use one invocation name but it's already used by another skill in Alexa. I saw few skills have same invocation name.

Fortunately invocation names are not unique. Every user can choose and activate the skills they want.
See also:
https://forums.developer.amazon.com/questions/107549/invocation-name-unique-duplications.html
And: https://developer.amazon.com/docs/custom-skills/choose-the-invocation-name-for-a-custom-skill.html

Related

How to call multiple intents at once when the slot value is shared by multiple intents?

For example, I have a skill that tells the user about food interactions with medications. The user tells Alexa which medication they want to know about.
Each intent corresponds to a different medication interaction (e.g., grapefruit juice, antacids, etc.). Under the GrapefruitDrugs slot-type, I have several slot values (all of them are drug names). When the GrapefruitIntent is called, it gives the user a warning about this interaction. The problem is that I have other slot-types that share the same drugs and their warnings also need to be communicated to the user.
'Drug X', however, will interact with both grapefruit juice AND antacids. So the slot-type AntacidDrugs also has 'Drug X' listed as a slot value. I want both intents to be called.
How do I make sure that both intents get called? I've looked into chaining intents, however I have yet to see an example other than one that links an intent to the LaunchRequest.
Intents are here just to point out what kind of sentence you have received on your webhook. Webhook can be on lambda or can be your custom server (e.g. Java, PHP, NodeJs …). In any case, here is your code and logic. Here you know at what state your conversation is and how should given intent be interpreted.
So in some conversation states you will react the same for two intents, while in some cases you might interpret the same intent in two different ways.

Watson Assistant - entity reference in Intents - I need to understand what I'm missing

I'm using watson assistant (plus) and I'm actually fighting with the correct usage of entity usage inside intent examples. First of all, inside the webUI I can't find trace of what mentioned in the documentation about entity suggestions, entity annotation inside intents examples..(we are on frankfurt server).
I have many intents in one skill and I decided to use entity mentions in intents examples. Having no trace of simplified way to add entity inside the single example, I directly wrote it inside the phrase.
From "What I need to activate MySpecificService ABC ?" to "What I need to activate #services:(MySpecificService ABC)", the same syntax used in dialog nodes.
I have used this method diffusely on my skill, according the documentation.
My problems starts here. Assistant refuse to detect the right intent when I try it.
If I ask "What I need to activate MyService Name?" the assistant detect a totally wrong intent, with low confidence (0.40 or less), and the correct intent does not appear neither as 2nd or 3rd intent (it correctly detect the entity).
No similar examples using exaclty #services:(MySpecificService ABC) in other intents, but I used other references to #services or #services:(otherservice name) in other intents.
I read documentation many times, I googled around, watched videos.. but nothing. Evidently I've misunderstood something.
Can You help me?
Intents are the actions/verbs that the user is trying to achieve. In this case, an intent could be the activation itself (no matter what is he trying to activate).
So you should write different examples of an activation question:
"How can I activate my service?", "I need to activate this service", etc.
The entities are the objects/substantives. In your case, services.
So in your dialog, if you are need the assistant to detect the intent+entity. So create a node with the condition #activation && #service:MySpecificService
Be aware that if you have several nodes in your dialog, their order will impact the way that your assistant analyzes the input. If the #activation && #service node is before the #activation && #service:MySpecificService node; the first one will be triggered as "MySpecificService" is one of the #services.
Hope that this helps!
im dealing with entities in intents as well and i think we're also on the frankfurt server.
Since youre on the frankfurt server im pretty sure the reason youre not seeing the annotation options is that youre using german language.
Annotations as mentioned in the documentation is only available for english language (unfortunately)
kr

Alexa - Using a slot right after the invocation for skill-internal routing

I have skill with an Invocation like this: "Alexa, ask SuperDuperEvent".
But I want to be able to do this: "Alexa, ask SuperDuperEvent location". Where location is going to be a city.
Because my Skill is heavily location based I need to know the location that is requested before anything else happens. Is this possible?
Is it possible to start the skill with a location, too? Like so: "Alexa, start SuperDuperEvent location".
Is this at all possible with creating a new skill for every location?
I want to avoid using this type of dialog:
User: "Alexa, start SuperDuperEvent"
Alexa: "What location do you want to know about?"
User: "Brussels"
Alexa: "What do you want to know about the SuperDuperEvent in Brussels?"
This is probably the way to go, but it does not feel fluid or engaging.
Cheers
Yes, you can do it if you have the intent location defined. You can find more information at https://developer.amazon.com/docs/custom-skills/understanding-custom-skills.html
The only problem that I see is that the invocation name is only one word. Surely it will not pass the certification process.
As you can see in the developer console:
Invocation name requirements
Your invocation name should be two or more words, and can contain only lower-case alphabetic characters, spaces between words, possessive apostrophes (for example, "sam's science trivia"), or periods used in abbreviations (for example, "a. b. c."). Other characters like numbers must be spelled out. For example, "twenty one".
Invocation names cannot contain any of the Alexa skill launch phrases such as "launch", "ask", "tell", "load", "begin", and "enable". Wake words including "Alexa", "Amazon", "Echo", "Computer", or the words "skill" or "app" are not allowed. Learn more about invocation names for custom skills.
Changes to your skill's invocation name will not take effect until you have built your skill's interaction model. In order to successfully build, your skill's interaction model must contain an intent with at least one sample utterance. Learn more about creating interaction models for custom skills.

Alexa Skill is using previous invocation name even after rebulding

I had to change my invocation name, because I got some issues when I submitted it for certification. I rebuilt my skill after changing the invocation name, but when I was testing it, the new invocation name was not working, and I realised that my skill was being launched with the old invocation name, instead of the new one.
Rebuilding is not the complete solution, if you contact Amazon support, they would tell that your skill is using the new invocation name, because it's right.
The hack for making changes to take effect is to rebuild your skill, switch off "Test is enabled for this skill" on test tab, and then switch on again.
After this, the skill will be using the new invocation name while testing it.
I friend of mine had the same issue, and this solved it.
Had this problem. The new invocation name takes almost 30 minutes or so to change. The Best Solution is Change the invocation name before going to sleep, and when you wake up, the new invocation name will work like a charm.

How to fire fallbackIntent even if user's dialogue fall into some other intent

I am developing an app and everything is working good. One condition are there where I have set the utterances but if user is speaking something else, I am throwing it to the fallbackIntent. One of my utterance is {name} so user can speak any name. But I have define range of name as well that user is allowed only these names. So my problem is if the user is choosing defined names, everything working great and if user said something else like what is weather of chicago, it is going to fallbackIntent as well but the issue is if user speak some name which is not in the list, then too it is coming into defined intent. What i want that if user speak something which is correct but not in my defined name then too redirect it to the fallbackIntent. Is there any way I can call intent in giving condition? I am using php.
When you define a custom slot, Alexa take it's values as samples. So values which are not in the slot-value-list will also be passed to you. And with respect your intent, those slot values are valid, hence that intent is triggered.
The solution is to validate the slot values at your backend and return an appropriate response.
In your case, if u get any other names other than those you have defined, respond back with an error or give FallbackIntent's response.
When you create a custom slot type, a key concept to understand is
that this is training data for Alexa’s NLP (natural language
processing). The values you provide are NOT a strict enum or array
that limit what the user can say. This has two implications
1) words and phrases not in your slot values will be passed to you,
2) your code needs to perform any validation you require if what’s
said is unknown.

Resources