Alexa Skills Kit SDK for Node.js version 2 (ask-sdk) is very useful to create own Alexa Skill.
But some time we have to write long source code to handle Alexa's request.
const HelpIntentHandler = { canHandle (handlerInput) { return handlerInput.requestEnvelope.request.type === 'IntentRequest' && handlerInput.requestEnvelope.request.intent.name === 'AMAZON.HelpIntent' }, ...
I think the code handlerInput.requestEnvelope.request.type === 'IntentRequest' && handlerInput.requestEnvelope.request.intent.name === 'AMAZON.HelpIntent'
can be more shorty.
So I've launched utility packages for ask-sdk.
What is ask-utils
?
ask-utils
is utility packages for ask-sdk.
Install
$ npm i -S ask-utils
Easy to handle request
Before ask-utils
const HelpIntentHandler = { canHandle (handlerInput) { return handlerInput.requestEnvelope.request.type === 'IntentRequest' && handlerInput.requestEnvelope.request.intent.name === 'AMAZON.HelpIntent' }, ...
After ask-utils
const { canHandle } = require('ask-utils') const HelpIntentHandler = { canHandle (handlerInput) { return canHandle(handlerInput, 'IntentRequest', 'AMAZON.HelpIntent') }, ...
Easy to create random message
Alexa blog says Let's randomize your response!
.
Alexa Skill Recipe: Randomize Your Responses to Add Variety to Your Skill
https://developer.amazon.com/ja/blogs/alexa/post/37e732b7-48fa-4940-9f12-9ffde7eeeaf8/alexa-skill-recipe-randomize-your-responses-to-add-variety-to-your-skill
So ask-utils
provides helper function to make randomize response.
Before ask-utils
You have to make function to create random paharse.
function randomPhrase(myData) { // the argument is an array [] of words or phrases var i = 0; i = Math.floor(Math.random() * myData.length); return(myData[i]); } const welcomeGreetings = ['hello','howdy','hi', 'good day']; const speachText = randomPhrase(welcomeGreetings);
After ask-utils
ask-utils
provides helper function.
const { getRandomMessage } = require('ask-utils') const welcomeGreetings = ['hello','howdy','hi', 'good day']; const speachText = getRandomMessage(welcomeGreetings);
And More features !
Get slot value
const { canHandle, getSlotValueByName } = require('ask-utils') const ExampleIntentHandler = { canHandle (handlerInput) { return canHandle(handlerInput, 'IntentRequest', 'ExampleIntent') }, handle (handlerInput) { const yourName = getSlotValueByName(handlerInput, 'nameSlot') const speechText = `Hello ${yourName} ! Welcome to our skill !`
Progressive response
const { enqueueProgressiveResponseDirective } = require('ask-utils') const GetFirstEventHandler = { canHandle (handlerInput) { const request = handlerInput.requestEnvelope.request return request.type === 'IntentRequest' && request.intent.name === 'GetFirstEventIntent' }, async handle (handlerInput) { try { await enqueueProgressiveResponseDirective(handlerInput, 'Please wait for a while') } catch (err) { // if it failed we can continue, just the user will wait longer for first response console.log(err) } // call some api const content = await get() return responseBuilder .speak(content) .getResponse() } }
Need your feedback !
The package is developing in GitHub.
https://github.com/ask-utils/ask-utils
And I provides example project too.
https://github.com/ask-utils/example
If you have interest to the packages, please try it and give me feedback, feature request, pul request !
Thanks !
Top comments (0)