Skip to main content

A flexible and easy-to-use package for building Alexa skill applications.

Project description

alexa-skill

alexa-skill is flexible, easy to use and extend package for creating Alexa skill applications.

This package is based on alexa documentation.

Installing

Install and update using pip:

pip install -U alexa-skill

Examples

Define intent class

from alexa_skill.intents import BaseIntents


class ExampleIntents(BaseIntents):
    @property
    def mapper(self):
        return {
            'EXAMPLE.hello': self.hello,
        }

    def hello(self):
        return self.response('Hello. Nice to meet you.'), True

Define intent class with slots

from alexa_skill import dates
from alexa_skill.intents import BaseIntents


class DateIntents(BaseIntents):
    @property
    def mapper(self):
        return {
            'EXAMPLE.date_intent': self.date_intent,
        }

    def date_intent(self, slots):

        date, date_type = dates.AmazonDateParser.to_date(slots['dateslot']['value'])

        text = "Your date is <say-as interpret-as='date'>{}</say-as> and it is a {}".format(
            date.strftime('%Y%m%d'),
            date_type
        )

        return self.response(text), True

Define buildin intents

from alexa_skill.intents import BuildInIntents


buildin_intents = BuildInIntents(
    help_message='Say "HI" to us',
    not_handled_message="Sorry, I don't understand you. Could you repeat?",
    stop_message='stop',
    cancel_message='cancel'
)

Falcon

Initiate intents in fulfiller webhook for Alexa

import logging

import alexa_skill
import falcon


class Fulfiller(object):

    def on_post(self, req, resp):
        get_response = alexa_skill.Processor(
            req.media,
            buildin_intents,
            'Welcome to Alexa skill bot',
            'Good bye',
            ExampleIntents(),  # Insert created Intents as arguments
            DateIntents(),
        )
        json_response, handled = get_response()

        logging.info('Response was handled by system: {}'.format(handled))

        resp.media = json_response

app = falcon.API(media_type=falcon.MEDIA_JSON)
app.add_route('/v1/alexa/fulfiller', Fulfiller())

Flask

import logging

import alexa_skill
from flask import Flask, request, jsonify


app = Flask(__name__)


@app.route("/v1/alexa/fulfiller", methods=['POST'])
def fulfiller():
    get_response = alexa_skill.Processor(
        request.json,
        buildin_intents,
        'Welcome to Alexa skill bot',
        'Good bye',
        ExampleIntents(),
        DateIntents(),
    )
    json_response, handled = get_response()

    logging.info('Response was handled by system: {}'.format(handled))

    return jsonify(json_response)

Documentation

Auto generate documentation

cd docs/

sphinx-apidoc -o ./source/_modules/ ../alexa_skill/

make html

Project details


Release history Release notifications

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for alexa-skill, version 0.1.0
Filename, size & hash File type Python version Upload date
alexa_skill-0.1.0-py2-none-any.whl (24.7 kB) View hashes Wheel py2
alexa_skill-0.1.0.tar.gz (10.3 kB) View hashes Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page