Determine Alexa users device Name/type - alexa

While building a skill for Amazon Alexa, I would like to know the name of the device (or a code, manufacturer, etc). This is desired for analytics. We can get the supported interfaces from the JSON request to the webhook, but I am also interested in the exact device (Echo, Dot, show, spot, Echo Plus, Fire TV, Alexa App, Eufy Genie, etc.)

Related

Creating a survey in amazon Alexa with open ended questions

I am trying to create a simple survey skill in Amazon Alexa where Alexa asks the user a question and they respond in any manner they feel like (open-ended). For example, if Alexa asks "Do you cook?", a user may respond in many ways such as "Yes I do cook", "My son does the cooking" etc.
The issue I am getting is that the questions can have similar responses so when I create an utterance in the Alexa dev console they overlap (utterance conflicts) and I am redirected to the error handler. (note each question has its own intent)
Is there any other way I can go about creating a survey without using intents?
Can I capture the full user response to a slot?
The reason being I want to store the user's response in a database.
Unfortunately, Alexa Skills aren't designed to do Speech To Text.
When a user talks to a device, the request goes through multiple steps:
Automated Speech Recognition > It does Speech To Text internally
Natural Language Understanding (NLU) > Using Machine Learning, it will understand what the user want to do (Stop a skill, play music, switch on the light, ...)
Depending of the context, if the NLU understand that the user is trying to respond to your skill (the interaction model match what the user is saying), it will send a POST request to your skill. But it will not send you the Speech To Text.
Documentation
Although, the intent AMAZON.SearchQuery will do the job but you will have to use a prefix: My answer is {query} and not directly {query} because all requests will be redirected to this intent otherwise. It will not look like a good & smooth user experience.

Alexa Skill: Get user location for "work"

I know how to get the device address from the Alexa app.
Now I need the addresses located in settings --> my locations. When I add a business address, I can use this address by saying "work".
I would like to use this address in my skill for work as well. How can I get it?
(Maybe the naming of settings is not 100% correct. I translated it myself.)
I don't think Amazon currently offers this to skill developers. Home & Work addresses are part of the user's Alexa account and would likely be accessed through the Customer Profile, but only name, email, and phone number seem to be available for skills to use according to their Customer Profile API docs.
Skills can only access an individual Alexa device's saved address through the Device Address API.
You can submit a feature request on their Developer Voice and Vote site.

Creating Alexa Skill Notifications (like quotemaker)

I need help in sending notifications to alexa device of a user (echo, dot, etc.. not the other non amazon alexa devices) from alexa skill i am building. I see quote maker doing it but, how its doing it is a blackbox.
For example if the user ordered some item through my skill (say abc org). I would like to notify user on their alexa devices about the status of order proactively ( eg, item shipped, or item out for deliver today).
Amazon has this already for amazon shopping, but i dont see much information on implementing the same for skills.
I saw quote maker creating a notification for self, but how its doing it is a blackbox
I had the exact same question and am still not 100% sure about the answer.
As best as I can tell, the Notifications API never made it out of developer preview, and instead has been replaced with the Proactive Events API.
Unfortunately, unless your skill needs to send notifications about trash pickup or sports scores, you're probably out of luck. Here is the complete list of all notifications types that are currently supported:
Weather alert
Sports event update
Message reminder
Order status update
Reservation confirmation
Trash collection reminder
Media content availability notification
Social game invitation notification

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