Public | Automated Build

Last pushed: a month ago
Short Description
docker registry for octoblu/alexa-service
Full Description

Alexa Service





Table of Contents

Introduction

The Alexa Service, is a micro-service that allows Octoblu to react and respond to requests from the Amazon Echo device, or an Alexa App.

Octoblu hosts an instance of the Alexa Service at alexa.octoblu.com and is available for public use.

Getting Started

Install

The Alexa Service can be used by cloning from github

cd /path/to/project_dir
git clone https://github.com/octoblu/alexa-service.git
cd alexa-service
npm install
npm start

Or by using docker. Replace tag with latest and if needed, change the exposed port.

docker pull quay.io/octoblu/alexa-service:v4.3.5
docker run alexa-service:v4.3.5 -p 5000:80

Creating Custom Skill

  1. Create Amazon Developer Account
  2. See the Getting Started Guide by Amazon
  3. Add a new skill on the skill list page.
  4. Skill Information
    1. Select "Custom Interaction Model"
    2. Set your Skill Name
    3. Set the Invocation Name
  5. Interaction Model
    1. Set the Intent Schema to:
      {
      "intents": [
      {
      "intent": "Trigger",
      "slots": [
        {
          "name": "Name",
          "type": "TRIGGER"
        }
      ]
      },
      {
      "intent": "ListTriggers"
      },
      {
      "intent": "AMAZON.HelpIntent"
      },
      {
      "intent": "AMAZON.StopIntent"
      },
      {
      "intent": "AMAZON.CancelIntent"
      }
      ]
      }
      
    2. Create a Custom Slot with a type of "TRIGGER" and the values will be the name of the tasks you want to run. The values should be the same of the "echo-in" node name in your flow (these are currently case sensitive. Also be aware that the Amazon Alexa service may change chase. IE, it was noticed that "ipad" became "iPad", this is easily checked by reading the JSON data).
    3. Add the following generic Sample Utterances
      Trigger give me the {Name}
      Trigger give me {Name}
      Trigger give me a {Name}
      Trigger get me the {Name}
      Trigger get me {Name}
      Trigger get me a {Name}
      Trigger could you set {Name}
      Trigger could you please set {Name}
      Trigger i need {Name}
      Trigger i need {Name} please
      Trigger tell me my {Name}
      Trigger list {Name}
      Trigger i want {Name}
      Trigger create {Name}
      Trigger create a {Name}
      ListTriggers what my triggers are
      ListTriggers give me a list of my triggers
      ListTriggers get me a list of my triggers
      ListTriggers a list of my triggers
      ListTriggers my triggers
      ListTriggers the triggers i have
      ListTriggers what triggers do i have
      
  6. Configuration
    1. Set the Endpoint to HTTPS and https://alexa.octoblu.com/trigger or the url of your hosted Alexa Service.
    2. Set Account Linking to "Yes"
    3. Set the Authorization URL to https://oauth.octoblu.com/alexa/authorize
    4. Create a Oauth Device / Application in Octoblu
      1. Go to your all things page.
      2. Select and create a new Oauth Device
      3. Add a name to the Oauth Device
      4. Set the callbackUrl to the Redirect URL listed on the Configuration Page in your Alexa Skill.
      5. The Oauth device creating in Octoblu should be discoverable by everyone. This can be set on the permissions tab.
      6. The UUID and Token will of the device will be needed for the Alexa Skill. You can get the Token by generating a new one in the device configuration page in octoblu.
    5. The Skill Client ID will be the UUID of the Oauth device you created.
    6. The Following need to be added to the domain list
      • twitter.com
      • facebook.com
      • google.com
      • citrixonline.com
      • github.com
      • octoblu.com
    7. No scope needs to be set
    8. Set the Authorization Grant Type to "Auth Code Grant"
    9. Set the Access Token URI to "https://oauth.octoblu.com/access_token"
    10. Set the Client Secret to the Token of the Oauth Device
    11. Set the Client Authentication Scheme to "HTTP Basic"
    12. Set the terms to "https://app.octoblu.com/terms" or your own terms.
  7. SSL Certificate
    1. Select the option, "My development endpoint has a certificate from a trusted certificate authority"
      • If you are hosting your own Alexa Service you may have different requirements for the SSL configuration.
  8. Publishing Information (If testing this section is optional)
    1. This information is specific to your skill
  9. Privacy & Compliance (If testing this section is optional)
    1. This information is specific to your skill

If you are getting unauthorized, disable and re-enable your skill, by going to http://alexa.amazon.com/spa/index.html#skills/your-skills and clicking on "link". This should open up another tab, authenticating you with Octoblu.

Octoblu Usage

Flows

Custom Flows

  1. Import the base Alexa Flow
  2. An "Echo In" node in the Octoblu Designer receives input into a flow from the Alexa Service. The name of the "Echo In" node should match a value in the Trigger custom slot configuration (this is no longer case-sensitive). When a Alexa Request is received, you will get a callbackUrl in the message and other information about the request.
  3. An "Echo Out" allows you to respond to the Alexa request. You will need to use the callbackUrl from "Echo In" node. The value should be {{msg.callbackUrl}}.
    • You can optionally set the response text.
    • The latest version allows you to respond to an echo-out node with a "response" object. The response object will be passed along to the alexa response. This gives you full access to the Alexa response object.
  4. For every echo-in request, a response needs to be sent through the echo-out node.
  5. The flow must be deployed and online.
Docker Pull Command
Owner
octoblu
Source Repository

Comments (0)