Skip to main content
Join the official 2019 Python Developers SurveyStart the survey!

Django library for creating skills for the Amazon Echo (Alexa)

Project description

django-echo

Django library for creating skills for the Amazon Echo (Alexa)

Getting Started

django-echo is mainly composed of three classes:

  • echo.skill.EchoSkill: A subclass of Django’s generic.View that handles routing intents and dealing with request data.
  • echo.request.EchoRequest: A small wrapper around the JSON data in the request from Amazon.
  • echo.response.EchoResponse: A subclass of Django’s http.HttpResponse that knows how to generate a valid Amazon Echo response.

Creating a Skill

A skill is a class that subclasses EchoSkill that provides intent handlers:

from echo.skill import EchoSkill

class HoroscopeSkill(EchoSkill):
    def get_horoscope(self, request, sign):
        # Ignore the sign because astrology is bunk.
        return self.respond(
            "Today you need to act first and ask questions later!",
            card=None,
            should_end_session=True
        )

On the Amazon side you would setup an intent called GetHoroscope that has a sign slot, and when that intent is called this get_horoscope method will be called with the slot data.

The self.respond is a helper method that essentially just acts as a pass-through to EchoResponse. You can also use SSML directly and EchoResponse will set the response up correctly:

self.respond("<speak>Today you need to ask questions first and act later!</speak>")

Then you just need to wire the skill up to your urls.py:

from django.conf.urls import url

from .views import HoroscopeSkill

urlpatterns = [
    url(
        regex=r'^horoscope/$',
        view=HoroscopeSkill.as_view(),
        name='horoscope_skill'
    )
]

Responding With A Card

EchoSkill provides a helper to create a simple card:

return self.respond(
    "What alexa should say",
    card=self.create_simple_card("The card title", "The card's content")
)

Session Handling

EchoSkill sets self.request to an instance of EchoRequest (it also saves the http request to self.http_request.) EchoRequest provides the session attributes via a session attribute:

sign = self.request.session.get('sign')

request.session.update({
    'has_requested_horoscope': True
})

If you use EchoSkill.respond this session data will be automatically attached to the response, otherwise you’ll need to pass it when creating the response:

return EchoResponse("Output text", session=self.request.session)

Project details


Download files

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

Files for django-echo, version 0.2.2
Filename, size File type Python version Upload date Hashes
Filename, size django-echo-0.2.2.tar.gz (8.9 kB) File type Source Python version None Upload date Hashes View hashes

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