1 of 54

Get Talking

with Actions on Google

2 of 54

Abraham Williams

Pearl Latteier

Senior Engineers at Bendyworks

Google Developer Experts

Google Developer Group Organizers

​

3 of 54

slides.today

To follow along with today’s slides.

4 of 54

Voice is the new platform

5 of 54

Siri

Bixby

Alexa

Cortana

Google Assistant

6 of 54

AI is

the new platform

7 of 54

Google Assistant

8 of 54

Assistant SDK

Actions on Google

Smart Home

9 of 54

​

Movie Maven

​

10 of 54

Press 1 for our updated menu

11 of 54

Be cooperative

12 of 54

Instill confidence

13 of 54

Act natural

14 of 54

Hey Google, let me talk to Movie Maven

15 of 54

{

"conversation": {

"conversation_id": "...",

"type": "ACTIVE",

"conversation_token": "..."

},

"inputs": [{

"intent": "assistant.intent.action.MAIN",

"raw_inputs": [{

"query": "..."

}]

}]

}

Actions SDK

16 of 54

Dialogflow

17 of 54

Dialogflow Agent

​

18 of 54

Agent

19 of 54

INTENT

Agent

ACTION

Blah Blah Blah

20 of 54

Intents

21 of 54

Intents

22 of 54

Entities

23 of 54

Entities

24 of 54

Prebuilt Agents

25 of 54

Food delivery

26 of 54

Food delivery

27 of 54

Fulfillment

28 of 54

Dialogflow makes HTTP request

29 of 54

const { DialogflowApp } = require('actions-on-google');

​

const app = new DialogflowApp({

request: request,

response: response

});

30 of 54

app.handleRequest(function() {

let actionMap = new Map();

actionMap.set(WELCOME_ACTION, welcome);

actionMap.set(ASK_GENRE_ACTION, askGenre);

actionMap.set(GET_MOVIE_ACTION, getMovie);

...

return actionMap;

});

Runs method assigned to action

31 of 54

Server tells Dialogflow how to respond

32 of 54

Assistant ask/tell

function quit(app) {

app.tell("OK, see you later.");

}

​

function askGenre(app) {

app.ask("What genre would you like?")

}

33 of 54

SSML support

<speak>

Here are <say-as interpret-as="characters">SSML</say-as> samples.

I can pause <break time="3s"/>.

I can speak in cardinals. Your number is <say-as interpret-as="cardinal">10</say-as>.

</speak>

34 of 54

Store data between requests

​

​

​

function getLastGenres(app) {

return app.data.last_genres;

}

​

function setLastGenres(app, genres) {

app.data.last_genres = genres;

}

35 of 54

Train and Test

Your Bot!

36 of 54

Training

37 of 54

Testing

38 of 54

39 of 54

Language Support

  • English
  • German
  • Japanese
  • Korean
  • French
  • Portuguese
  • Spanish
  • Italian

40 of 54

Distribution & Discovery

41 of 54

Distribution

42 of 54

43 of 54

App Directory

44 of 54

Invocation

“Hey Google, let me talk to Movie Maven”

“Hey Google, I’d like a recommendation for a funny movie”

45 of 54

Re-engagement

Daily Updates

Push Notifications

Preview

46 of 54

Where to next?

47 of 54

Actions on Google Codelab

1pm, Room 3

48 of 54

Templates

49 of 54

Apps for Families

Create apps for the Google Assistant that engage the whole family.

50 of 54

Transactions API

51 of 54

Profit

52 of 54

slides.today

53 of 54

We design and build software that stands the test of time, specializing in Ruby on Rails, JavaScript, Clojure, and Ionic.

​

Craft a project with us at bendyworks.com

54 of 54

Find today’s slides at slides.today

Pearl Latteier

pearl@bendyworks.com

twitter.com/pblatteier

github.com/pearlbea

Abraham Williams

abraham@bendyworks.com

twitter.com/abraham

github.com/abraham

​