Create an Alexa skill with serverless and a conversation

Get the code

Summary

In this developer pattern, we will create an Alexa skill using Watson™ Assistant via the Apache OpenWhisk serverless framework. Alexa is the voice service behind products like Amazon Echo. IBM Cloud Functions (based on Apache OpenWhisk) will be used to integrate Alexa with Watson Assistant. An example conversation is included to demonstrate how to pass context between different intents. You can also use this pattern to try out a conversation from the Bot Asset Exchange (BAE).

Description

Leveraging multiple technologies is common in many workflows, and this developer pattern was created to show how you can integrate an Amazon Alexa skill with Watson Assistant. If you’re a developer focused on chatbots or artificial intelligence, this is for you. This pattern shows you how to take a conversation built with Watson and make it available to Alexa users.

We will create an Alexa skill using Watson Assistant via the Apache OpenWhisk serverless framework. Alexa is the voice service behind products like the Amazon Echo. IBM Cloud Functions (based on Apache OpenWhisk) will be used to integrate Alexa with Watson Assistant. An example conversation is included to demonstrate how to pass context between different intents, resulting in a weather lookup. You can also use this journey to try out a conversation from the Bot Asset Exchange (BAE).

We wanted our conversation to remember the conversation state and be able to request external actions, so we chose Redis to save the state across invocations of our serverless functions, and we built an external action that retrieves the weather forecast. You can extend this to use any Watson Assistant and add your own action code.

When you complete this pattern, you will understand how to:

  • Create an OpenWhisk action in the IBM Cloud Functions serverless platform.
  • Use Redis to store a session’s conversation context across events.
  • Import a conversation from the BAE or a JSON file.
  • Invoke a conversation with Watson using Node.js.
  • Use The Weather Channel data service to look up locations and forecasts.
  • Create an Alexa skill to reach tens of millions of customers.

Flow

flow

  1. User says “Alexa, ask Watson…”
  2. Alexa invokes IBM Cloud Functions with input text.
  3. The action gets the conversation context from Redis (if any).
  4. The action gets a response from Watson Assistant.
  5. The Weather Company data service provides the forecast (when applicable).
  6. The response context is stored in Redis.
  7. The response text is sent back to Alexa.
  8. Alexa replies to the user.

Instructions

Ready to put this code pattern to use? Complete details on how to get started running and using this application are in the README.