alexa-response

4.2.10 • Public • Published

Alexa Response

Build JSON responses for Amazon Alexa, easily. Alexa Response makes use of a chainable interface to simplify building complex responses. Try it out in the Alexa Playground.

API

ask(speech: String, type: Optional<PlainText|SSML>)

Alexa can ask questions to users and will wait for their responses. The parameters passed to this function can be plain text or SSML.

Response.ask('What would like me to ask?').build();

say(speech: String, type: Optional<PlainText|SSML>)

This is similar to ask except that it closes the current session. The parameters passed to this function can be plain text or SSML.

Response.say('I can say whatever you want me to!').build();

reprompt(speech: String, type: Optional<PlainText|SSML>)

If Alexa doesn't pick up the answer to a question then the reprompt text will be used. The parameters passed to this function can be plain text or SSML.

Response.ask('What would you like me to ask?')
        .reprompt('I can ask questions, what would you like me to ask?')
        .build();

card(options: Object)

Cards show up in the Alexa app. Simple cards have titles and content, you can pass an optional type for different card types.

Response.say("I've put the answer to your question on your phone")
        .card({ title: 'Question and Answer', content: "Here's the answer to your question" })
        .build();

attributes(data: Object)

You can maintain data across sessions using attribute data.

Response.ask("What's your favorite color?")
       .attributes({ question_asked: true })
       .build();

directives(directives: ...Directive)

Used to add directives to the response. A helper is provided to build an audio directive, however, any directive can be used. This function accepts multiple directives.

Response.say("Playing audio")
       .directives(AudioPlayer.play({ url: 'https://stream.com/my-stream.mp3' }))
       .build();

build(attributes: Optional<Object>)

Responses have a chainable API, when you want to finalize the response, call build.

Response.say("I've put the answer to your question on your phone")
        .card({ title: 'Question and Answer', content: "Here's the answer to your question" })
        .build();

AudioPlayer

This helper is provided to build AudioPlayer directives.

import Response, { AudioPlayer } from 'alexa-response';
 
const { play, enqueue, stop, clearQueue } = AudioPlayer;
 
Response.directives(
          play({ url: 'https://stream.com/my-stream-1.mp3' }),
          enqueue({ url: 'https://stream.com/my-stream-2.mp3' })
        )
        .build();

Inline SSML

You can use SSML directly by including babel-plugin-transform-react-jsx in your .babelrc and importing ssml from ssml-jsx in your source file.

{
  "plugins": [
    ["transform-react-jsx", { "pragma": "ssml" }]
  ]
}
import Response from 'alexa-response';
import ssml from 'ssml-jsx';
 
Response.ask(
  <speak>
    <p>Hello world!</p>
    <p>What would you like to do today?</p>
  </speak>
).build();

Package Sidebar

Install

npm i alexa-response

Weekly Downloads

3

Version

4.2.10

License

MIT

Last publish

Collaborators

  • cameronhunter