Coder Social home page Coder Social logo

echokit's Introduction

echokit

Lightweight SDK for the Alexa Skills Kit (Python 3.6)

Why?

I felt other solutions were either too clunky, or not quite focused on deployment in AWS Lambda (execution time is money!). That's why echokit has no dependencies!

Installation

Requirements:
  • Python >= 3.6 (that's it!)

Using pip:

$ pip install echokit

From GitHub:

Clone/download this repo and run this from the echokit/ directory:

$ python setup.py install

Sample

A sample skill using echokit can be found at this repo: https://github.com/arcward/echokit-example

Documentation

More comprehensive documentation can be found on ReadTheDocs:

http://echokit.readthedocs.io/en/latest/

Getting Started

When you configure your Lambda function, you need to specify a handler. And when you configure your skill in the Alexa dev portal, you'll be provided an application ID for your skill. Set these at the top of your module:

import echokit

# Set as your skill's handler in Lambda
handler = echokit.handler
# Set as your application ID from the Alexa dev portal
echokit.application_id = "your_application_id"

If your module is main.py, in your Lambda configuration, you'd set main.handler as your handler.

Example

import echokit
from echokit import Response, PlainTextOutputSpeech, SimpleCard

handler = echokit.handler
echokit.application_id = "my_app_id"

@echokit.on_session_launch
def session_started(request_wrapper):
    return echokit.ask('Hello!')

@echokit.on_session_ended
def session_ended(request_wrapper):
    # Print statement will log the reason to CloudWatch
    print(request_wrapper.request.reason)

@echokit.on_intent('OrderIntent')
@echokit.slot('MenuItem', dest='menu_item')
def order_intent(request_wrapper, menu_item):
    print(menu_item)
    request = request_wrapper.request
    menu_item = request.intent.slots['MenuItem'].value
    return echokit.tell(f"You just ordered {menu_item}")\
        .simple_card(title="Previous order", content=menu_item)

Creating a Lambda deployment package

For reference, see the official docs.

echodist

echodist is a script included to help create ZIP deployment packages. If you installed via setup.py, you can run it from the command line (try echodist --help).

Specify your top-level package directory with --dir. For example, if your __init__.py is located at ~/somepy/somepy/__init__.py you would run:

~ & echodist --dir ~/somepy/somepy

This would create somepy.zip in your home directory (or whever you ran the command). If you unzip it, you can see it includes the entire subtree of the directory you specified, as well as an echokit/ directory.

Manually

Your ZIP file should be created from within your top-level package (don't just zip the enclosing directory). You'll need to download/clone echokit and include echokit/ in in that same top-level directory. So if your __init__.py is in ~/my_project/ you should have ~/my_project/echokit.

See the official docs for more info.

echokit's People

Contributors

arcward avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.