Alexa.NET - More Than Voice

A presentation at Leeds Sharp in February 2020 in Leeds, UK by Steven Pears

Slide 1

Slide 1

Alexa.NET – More Than Voice Name : Steven Pears Twitter: @stevenpears Github: stoiveyp

Slide 2

Slide 2

Alexa.NET – More Than Voice Name : Steven Pears Twitter: @stevenpears Github: stoiveyp

Slide 3

Slide 3

Little about me Work for Experian 🔥 1 Outage / Decade 📜 Certified Skill Builder

Slide 4

Slide 4

Little about Alexa

Slide 5

Slide 5

Little about Alexa English (AU) English (CA) English (IN) English (UK) English (US) French (CA) French (FR) German (DE) Hindi (IN) Italian (IT) Japanese (JP) Portuguese (BR) Spanish (ES) Spanish (MX) Spanish (US)

Slide 6

Slide 6

Little about Alexa

Slide 7

Slide 7

Little about Alexa 28,000 devices can work with Alexa 150 with Alexa built in No official .NET SDK

Slide 8

Slide 8

Alexa.Net https://github.com/timheuer/alexa-skills-dotnet

Slide 9

Slide 9

Roll Caster

Slide 10

Slide 10

Request Flow “Alexa, open Roll Caster” {Request} Alexa “Hello” {Response} User Female by Noe Araujo from the Noun Project

Slide 11

Slide 11

APIs API by Becris from the Noun Project

Slide 12

Slide 12

Request Flow “Alexa, open Roll Caster” {Request} Alexa “Hello” {Response} User Female by Noe Araujo from the Noun Project

Slide 13

Slide 13

Request Flow {Request} Request Type Request Data Request Context Device Information User Identification API Access {Response} User Female by Noe Araujo from the Noun Project

Slide 14

Slide 14

Slide 15

Slide 15

Progressive Response https://developer.amazon.com/blogs/alexa/post/d9e00269-1c6c-44d1-91ec-0d8c92a919db/keep-users-engaged-entertained-while-processing-skill-responses

Slide 16

Slide 16

Progressive Response Send audio while processing a request Up to five “progressive” responses for each final response Great for passive confirmation

Slide 17

Slide 17

Personalisation https://developer.amazon.com/blogs/alexa/post/32191ba2-6bd4-43c0-99d3-fcc63bf1f9d6/getting-started-with-cake-walk-using-the-alexa-settings-api-to-look-up-the-device-time-zone

Slide 18

Slide 18

Customer Profile Given Name Full Name Mobile Number Address NuGet: Alexa.NET.CustomerProfile

Slide 19

Slide 19

Settings API Time Zone Distance Temperature NuGet: Alexa.NET.Settings

Slide 20

Slide 20

Reminders https://developer.amazon.com/blogs/alexa/post/e65a0e17-2716-4714-8d02-a50210fdd494/now-available-enable-reminders-for-your-skills-with-alexa-reminders-api

Slide 21

Slide 21

Reminders Created while using skill Absolute / Relative time Recurring Confirmed by the user NuGet: Alexa.NET.Reminders

Slide 22

Slide 22

Proactive Events https://developer.amazon.com/blogs/alexa/post/7822f3ee-1735-4eaa-9aa6-5b8e39953c07/proactiveeventsapi-launch-announcement

Slide 23

Slide 23

Proactive Events Sent to the user as required (still confirmed) Specific types of Events (Order status, Weather Alert etc.) Push Notifications NuGet: Alexa.NET.ProactiveEvents

Slide 24

Slide 24

Request Flow “Alexa, open Roll Caster” {Request} APIs Alexa “Hello” {Response} User Female by Noe Araujo from the Noun Project

Slide 25

Slide 25

Request Flow “Alexa, open Roll Caster” {Request} APIs Alexa Directive “Hello” Cards {Response} User Female by Noe Araujo from the Noun Project

Slide 26

Slide 26

Slide 27

Slide 27

Directives rules by Marie Van den Broeck from the Noun Project

Slide 28

Slide 28

Alexa Presentation Language https://developer.amazon.com/blogs/alexa/post/1dee3fa0-8c5f-4179-ab7a-74545ead24ce/introducing-the-alexa-presentation-language-preview

Slide 29

Slide 29

Slide 30

Slide 30

Slide 31

Slide 31

APL

Slide 32

Slide 32

RenderDocument NuGet: Alexa.NET.APL

Slide 33

Slide 33

Basic Controls Text Button Image Video

Slide 34

Slide 34

Slide 35

Slide 35

Layout Controls Container Pager Sequence

Slide 36

Slide 36

Slide 37

Slide 37

Slide 38

Slide 38

Data Binding Items: “${payload.itemlist}” Text: “${data.rollnumber}”

Slide 39

Slide 39

Slide 40

Slide 40

Slide 41

Slide 41

Data Binding When: “${viewport.shape == ‘rectangle’}” When: “${viewport.width > 1024}”

Slide 42

Slide 42

Responsive Controls Background Button Divider Header Footer Image Ordinal Page Counter Text List Item Headline TextListItem

Slide 43

Slide 43

Slide 44

Slide 44

Slide 45

Slide 45

Alexa “Show my history”

Slide 46

Slide 46

Commands Alexa Show Page 1 ExecuteCommandDirective

Slide 47

Slide 47

Commands Alexa Tap #1 UserEventRequest

Slide 48

Slide 48

Commands AutoPage SetPage ScrollToIndex ScrollToComponent SpeakItem Parallel Sequential

Slide 49

Slide 49

ExecuteCommands (v1.1) SetValue AnimateItem Custom Commands OnMount

Slide 50

Slide 50

Slide 51

Slide 51

APLT

Slide 52

Slide 52

APLT

Slide 53

Slide 53

In-Skill Purchasing https://developer.amazon.com/blogs/alexa/post/5d852c9c-8cdf-45c1-9b68-e2f02af26c89/make-money-with-alexa-skills

Slide 54

Slide 54

Products Entitlement Subscription Consumable NuGet: Alexa.NET.InSkillPricing

Slide 55

Slide 55

ConnectionRequest Buy Cancel Upsell

Slide 56

Slide 56

Slide 57

Slide 57

ConnectionResponse Bought Already Owned Purchased

Slide 58

Slide 58

Gadgets https://developer.amazon.com/blogs/alexa/post/ef044c94-db8e-49da-97a6-da124b0f786b/tips-for-building-echo-button-skills-with-the-gadgets-skill-api-beta

Slide 59

Slide 59

Gadgets NuGet: Alexa.NET.Gadgets

Slide 60

Slide 60

Gadgets Alexa Roll Call! StartInputHandler

Slide 61

Slide 61

Gadgets Alexa Device IDs InputHandlerEvent

Slide 62

Slide 62

Gadgets Alexa Events & Patterns StartInputHandler

Slide 63

Slide 63

Gadgets Alexa Event & Timeout InputHandlerEvent

Slide 64

Slide 64

Custom Interfaces ALL THE GADGETS! Pair over Bluetooth to device Messages use Protocol Buffers

Slide 65

Slide 65

Custom Interfaces Alexa ? ALL THE GADGETS!

Slide 66

Slide 66

Custom Interfaces Alexa Do Stuff SendDirective

Slide 67

Slide 67

Custom Interfaces Alexa Tell me stuff StartEventHandler

Slide 68

Slide 68

Custom Interfaces Alexa I DID STUFF! EventsReceived

Slide 69

Slide 69

Personalisation https://developer.amazon.com/blogs/alexa/post/db4c0ed5-5a05-4037-a3a7-3fe5c29dcb65/use-dynamic-entities-to-create-personalized-voice-experiences

Slide 70

Slide 70

Dynamic Entities “Roll {CustomName}” {CustomName}: My Dice

Slide 71

Slide 71

DialogUpdateDynamicEntities “Roll {CustomName}” {CustomName}: My Dice + Fireball + Flaming Hands

Slide 72

Slide 72

Leftovers Leftovers by Claire Jones from the Noun Project

Slide 73

Slide 73

Alexa.NET.Management

Slide 74

Slide 74

Management

Slide 75

Slide 75

Alexa.NET.RequestHandlers

Slide 76

Slide 76

Request Handlers bool CanHandle(SkillInformation information) SkillResponse Handle(SkillInformation information)

Slide 77

Slide 77

Request Handlers Launch Roll RollAgain Breakdown RollHistory BuySpecificProduct BuyAnyProduct PurchasedRollHistory DeclinedRollHistory ErrorRollHistory Help Fallback SessionEnded

Slide 78

Slide 78

Resources Alexa Blogs: https://developer.amazon.com/blogs/alexa/ Design Guide: https://developer.amazon.com/alexa-skills-kit/design Twitter: https://twitter.com/alexadevs

Slide 79

Slide 79

Alexa, end my talk. “Certainly. Are there any questions you’d like answered?”