1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
//! # Alexa SDK
//!
//! `alexa_sdk` implements stucts corresponding to the [Alexa JSON specification](https://developer.amazon.com/docs/custom-skills/request-and-response-json-reference.html)
//! along with helper functions for common uses of the `Request` and `Response` objects.
//!
//! ## Usage
//!
//! Simplest possible Alexa "Hello, World" skill:
//!
//! ```rust
//! extern crate lambda_runtime as lambda;
//! extern crate alexa_sdk;
//!
//! use lambda::{lambda, Context, error::HandlerError};
//! use alexa_sdk::{Request,Response};
//! use std::error::Error;
//!
//! fn my_handler(_req: Request, _ctx: Context) -> Result<Response,HandlerError> {
//! Ok(Response::simple("hello", "hello world"))
//! }
//!
//! fn main() -> Result<(), Box<dyn Error>> {
//! lambda!(my_handler);
//!
//! Ok(())
//! }
//! ```
//!
//! A more complete skill, handling multiple locales and a slot:
//!
//! ```rust
//! extern crate lambda_runtime as lambda;
//! extern crate alexa_sdk;
//!
//! use lambda::{lambda, Context, error::HandlerError};
//! use alexa_sdk::{Request,Response};
//! use alexa_sdk::request::{IntentType, Locale};
//! use std::error::Error;
//!
//! fn handle_help(_req: &Request) -> Result<Response,HandlerError> {
//! Ok(Response::simple("hello", "to say hello, tell me: say hello to someone"))
//! }
//!
//! fn handle_hello(req: &Request) -> Result<Response,HandlerError> {
//! let res = match req.locale() {
//! Locale::AustralianEnglish => Response::simple("hello", "G'day mate"),
//! Locale::German => Response::simple("hello", "Hallo Welt"),
//! Locale::Japanese => Response::simple("hello", "こんにちは世界"),
//! _ => if let Some(ref s) = req.slot_value("name") {
//! Response::simple("hello", (String::from("hello ") + s).as_str())
//! } else {
//! Response::simple("hello", "hello world")
//! },
//! };
//! Ok(res)
//! }
//!
//! fn handle_cancel(_req: &Request) -> Result<Response,HandlerError> {
//! Ok(Response::end())
//! }
//!
//! fn my_handler(req: Request, _ctx: Context) -> Result<Response,HandlerError> {
//! match req.intent() {
//! IntentType::Help => handle_help(&req),
//! IntentType::User(_) => handle_hello(&req),
//! _ => handle_cancel (&req)
//! }
//! }
//!
//! fn main() -> Result<(), Box<dyn Error>> {
//! lambda!(my_handler);
//!
//! Ok(())
//! }
//! ```
pub mod request;
pub mod response;
pub use self::request::{Request};
pub use self::response::{Response};