Alexa Skill - Dynamic Invocation Name - alexa

I am working on an Alexa Skill.
Right now I have hard coded my invocation name in my amazon console. I have a ruby admin panel which handles all other activities happening inside.
Is there any way I can put the Invocation Name via an admin panel and pass it on to Alexa skill like an API, which could change my skill's invocation name.

No you can't. Innovation name cannot be changed via an API. You can change your invocation name at any time while developing a skill. You cannot change the invocation name after a skill is certified and published.
ASK-CLI
However, you can use ASK-CLI to deploy/update a skill and you can also change your invocation name in the corresponding interaction model.
More on ASK CLI here

Related

Amazon Alexa Skill: Save user preferences like API Key not through code

Within a custom Alexa skill hosted as a lambda service, I need to call an external API with an API key, that changes for each device. So I can't put the URL or the API Key hard-coded into the skill's code.
Whats the best practice to store user settings locally like an API Key for an Alexa skill? I tried to create an intent, where the user can dictate e.g. the API key, but it doesnt really work quite well and is not that user friendly. Unfortunately, I dindt find a way to create some sort of user preferences site, that might be accessabble for example through the Alexa app on the connected iPhone.
Each request comes with a User ID that uniquely identifies the owner of the device. I use that as a filename for an S3 bucket, retrieving that json file on my Launch intent and storing the info in the session vars. You can store anything you like in the S3 file and retrieve it per user.
There is no way to save any info without writing the code to do so. When the skill is first loaded, all session vars are empty. You need to write code to use the user id to lookup necessary info.

Custom Slot for Full Name of User and Linking multiple account in Single alexa skill

I have two queries related to Alexa Skill -
I am using the Account Linking feature, But when I logged in with one account I am unable to login with another account, any idea? for more information on this please refer here
https://forums.developer.amazon.com/questions/233563/how-to-delinking-an-linked-account-from-my-alexa-s.html
For User Full Name I have created a custom Slot, but unable to fetch Exact Full Name spoken to Echo show device by the user, for example, Use speaks Danny Stone but Alexa device capture it as "Danny", Dannys tone", "Danni" etc.
Any help would be appreciated
For the name, do a two or three slot response pattern on that intent. First name can use Amazon's built in first name slot type. For the other(s), you'll need custom slots with lots of examples.
For unlinking an account, check out this option: https://developer.amazon.com/en-US/docs/alexa/account-linking/skill-activation-api.html#disable-and-unlink
I read your query on the other forum. I would suggest you clear the cache of your Alexa app if you are logging on to your phone. If it does not help then open an incognito browser and disable enable the skill and link the desired account.
Use custom AMAZON.FirstName intent or AMAZON.Person intent for the names. I am not sure that it will be able to recognize some tricky names.

What are the required steps to add provisioned concurrency to a published Alexa Skill?

I have a published Alexa Skill that I want to configure with provisioned concurrency. I have tried to create a new version and assign the new Alexa Skill trigger to the Skill's endpoint in the Alexa developer console and I have tried creating a new alias and assign its Alexa Skill trigger to the Skill's endpoint in Alexa Skill developer console, but each time I get the below error:
The trigger setting for the Lambda arn:aws:lambda:us-east-1:1234567890123:function:MyFunction:1 is invalid. Error code: SkillManifestError
I have tried running the "validation" function under certification tab in the Alexa Skill developer console and I have tried re-uploading the function's code to the Lambda function.
What are the required steps to add provisioned concurrency to a published Alexa Skill?
First, I would strongly recommend using an Alias instead of a Version to reference the skill, that way it can be updated. A blue/green set of aliases would probably work nicely to coordinate deployments in the Alexa console.
Second, don't focus on provisioned concurrency first, that can be added or removed after the fact. The actual goal is to have Alexa use a Version or Alias.
You most likely need to add the permission for Alexa to invoke the version, that is why it is failing. If you use an Alias, you would add them there. You likely only have this permission set on $LATEST.
Once you have Alexa invoking the Version or Alias then you can add the provisioned concurrency. This has no impact on your running function. You can also remove provisioned concurrency with no impact on the ability of the function to run.
I'd also recommend setting up Auto Scaling for the provisioned concurrency set to 70%, that should balance cost and performance nicely.

Alexa skill to change a variable on a website

I have an alexa skill and a website. I need to send requests from the alexa skill to change a certain variable on a website.
for examble, I have a name on the website lets say "michael", I want to be able to change that name to "zack" from alexa.
Alexa skill SDK allows you to perform remote calls to third-party APIs.
In your case, you can implement an API endpoint to change that field. Then you can call that endpoint with the data you need.
You can capture the name your user has been said.
By doing that, you would need to think how you will authenticate the user. Basically, you need to know how to match the user who is using Alexa with the user on your website. I don't think you want to change the name for the random user.

How to make phone call from custom alexa skill

My intent to call the specified phone number from my own skill.
For example
Me: Alexa, ask <invocation> to find the customer service number
Alexa: Sure, the customer service number is 1800-xxx-xxx-xxx. Would you like to call
Me: Yes
[HOW TO MAKE CALL NOW?]
It would be possible to open a phone call from your programmed skill (alexa skill service). But for sure you not just want to start the call but also that the user can speak into alexa? But it's not possible to get the voice from the user.
Amazon Alexa transfers the speech input into text.
Your skill service only get JSON requests from the amazon skill interface with intents and spoken things as text.
So there is no chance to the get the audio track from the alexa user. Also stated in the forum
There is a feature request - you should watch this feature and vote for it.
Or you implement something like a callbackservice that you interconnect users telephone to service customer number. E.g. via an app on the phone - see this
You can make a call using your echo device or using the Alexa app as long as contact is in your list using Alexa Calling. Calling is only supported in U.S., U.K., Canada, and Mexico.
Here is another link to help you setup
https://au.pcmag.com/gallery/60053/how-to-call-someone-from-your-amazon-echo

Resources