building advanced chats bots and voice interactive assistants - stève sfartz - codemotion rome 2017

64
Building advanced Chat Bots & Voice Interactive Assistants Stève SFARTZ API Evangelist - Cisco DevNet [email protected], @SteveSfartz, github://ObjectIsadvantag

Upload: codemotion

Post on 05-Apr-2017

21 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

Building advanced Chat Bots & Voice Interactive Assistants

Stève SFARTZAPI Evangelist - Cisco DevNet

[email protected], @SteveSfartz, github://ObjectIsadvantag

Page 2: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

/Cisco/DevNet/SteveSfartz

• API Evangelist @CiscoDevNet

• Cisco Spark Apps & Tropo APIs

• code addict, nodejs, love story with #golang

• France and all around Europe

• hosted @PIRL – Paris Innovation Center & Research Lab

• twitter://@SteveSfartz

• github://ObjectIsAdvantag

“vision without execution is

hallucination”

-- Thomas Edison

[email protected]

@SteveSfartz

Page 3: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

3

Zeroto advanced Voice Machines & ChatBots

Demoes & Code samples

+39 069 480 4685,

[email protected]

Challenges & Lessons learntT

so what’s on the menu

Page 4: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

From Zero to advancedVoice Machines with Tropo

Page 5: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

What is Tropo ?

Cloud APIs enabling developers to quickly

and easily embed communication capabilities

into their applications and business processes.

Page 6: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

+• Ask

• Call

• Conference

• Hangup

• Record

• Reject

• Say

• Transfer

6

Tropo in a nutshell

Page 7: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

say("hello world");

7

Text to Speech

Page 8: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 8

Play an Audio File

say(“http://.../troporocks.mp3");

Page 9: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

Outbound Voice Call

call("+14155550100");

say("Tag, you’re it!");

9

Page 10: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

Send a Text Message

call("+14155550100",

{network:"SMS"}

);

say("Tag, you’re it!");

1

0

Page 11: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

Asking a Question

var result = ask("What's your favorite

color? Choose red, blue or green.", {

choices:"red, blue, green"

});

say("You said " + result.value);

log("They said " + result.value);

1

1

Page 12: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

Voicemail Application

record("Leave your message. Press

pound when finished.", {

beep:true,

timeout:10,

silenceTimeout:7,

maxTime:60,

terminator:'#',

recordFormat:"audio/mp3",

recordURI:"ftp://.../file.mp3" });1

2

Page 13: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

How to setup your own Voice Machine

• Signup at http://tropo.com

• Create a new Scripting app

• Point to an IVR script: http://bit.ly/TROPO-IVR

• Pick a Phone Number

• Save the application

13

Page 14: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

Globally available

Global Outgoing Calls & Messages

Numbers in 42 countries

80 speech languages

14

Page 15: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

Account Types

• Free

• Low-volume

• Restricted use

• No production

usage

• 24x7 support

Developer

• Pre-paid

• Credit Card

• Self-service

signup

• Shared Cloud

• one minute billing

increments

Production

15

Page 16: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

Check upcoming talksvia CodeMotion Rome’s

Voice Machine

+39 069 480 4685

Page 17: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

CodeMotion Rome Voice MachineIVR = Interactive Voice Responder

• Call +39 069 480 4685 and listen…

• Dial 1 to receive more details by SMS, 2 for next

• Check a session details on your mobile phone

• Text your email to the caller /!\ you’re texting US !!!

• Launch CiscoSpark, and meet the bot…

Page 18: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

{CodeMotion} Rome Voice Machine

18

Page 19: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

How to setup a custom IVR

• The IVR is composed of :

• a local phone number

• a custom script executed by the Tropo Scripting platform

dials #1

+39 069 480 4685

« Welcome »

details via SMScalls

Voice Machine

script

19

Page 20: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

IVR script highlights

• Forking a new session to send a SMS

20

Page 21: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

Join the Cisco DevNet code labshttps://github.com/CiscoDevNet/codemotion-rome-2017

Page 22: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

Serverless is great

• no deployment hurdles, scalability from day 1

… but

• Tedious dev cycles (commit, push, test)

• painful to diagnose (read logs through)

a local Emulator to the rescue

run and debug locally

integrate in a CI/CD tool chain

Lessons learnt

Page 23: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

Tropo Ready!

• Tropo Ready!

• + URL to the project

• Browse the project

https://github.com/ObjectIsAdvantag/tropo-ready-vscode

Page 24: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

Emulator in practicehttps://github.com/ObjectIsAdvantag/tropo-ready-vscode

Page 25: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

Best practices: ChatOpsDiagnose & follow real time activity

“Follow your

application usage in

real-time”

Page 26: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

Best practices: ChatOpsDiagnose & follow real time activity

“Follow your

application usage in

real-time”

Page 27: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

Best practices: ChatOpsDiagnose & follow real time activity

“Diagnose a Serverless script”

Page 28: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

How to setup ChatOps

To stream logs and getinstant view about yourVoice Machine activity:

1. Create a ChatOpsroom

2. Add an IncomingWebhook

3. Post messages

Voice Machine

script

Log2Spark

library

/new

logs

POST

message

« ChatOps »

Room

12

3

28

Page 29: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

From Zero to advancedChat Bots with Cisco Spark

Page 30: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

Cisco Spark

Secure & Open

Complete & Simple

Spark for DevelopersUser Integrations, APIs/SDKs...

Spark Hybrid ServicesCloud + Prem

Partner ServicesInterconnect

Message Meeting Call1:1 and team messaging Cloud-based phone systemAudio, video, and web meetings

30

Page 31: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

‘Your App’

now with

Cisco Collab!

Spark APIs extend Cisco Collaboration Cloud

GET

POST

DELETE

PUT/Rooms

/Memberships

/Messages

/Webhooks

/People

31

/Teams

https://developer.ciscospark.com/

Page 32: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 32

Meet the roomId bot

• Add [email protected] a room

1. The bot enters the room

2. Sniffs the room identifier,

3. Posts the identifier in a 1-1 space,

4. And finally leaves the space you originally invited it to join

• Check the codehttps://github.com/CiscoDevNet/node-sparkbot-samples

Page 33: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

• Nothing more than an API responding to events

• a few lines of code with a Bot framework

What it takes to build a Chat Bot

33

Page 34: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

Run a bot sample

• Leverages the node-sparkbot framework

• aimed at Cisco Spark bot education

• https://github.com/CiscoDevNet/node-sparkbot

• Community frameworks

• Flint: https://github.com/flint-bot/flint

• BotKit: https://github.com/howdyai/botkit

https://github.com/CiscoDevNet/node-sparkbot-samples

Page 35: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

Cisco Spark Cloud

Service

1. interacts in spaces

via a Cisco Spark client

Cisco Spark User

Your Bot code running

On-premise or on a Public Coud

2. posts notifications to

registered WebHooks

Publicly accessible APIs

3. posts messages

as notifications fly in

Bot Architecture

Register WebHookevents your bot is interested to listened to

Messages / created

Memberships / created

As events happen in spaces, receive notifications from Cisco Spark

Page 36: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

Cisco Spark Cloud

Service

1. interacts in spaces

via a Cisco Spark client

Cisco Spark User

DMZ

2. posts notifications to

registered WebHooks

Publicly accessible

3. responds to

Webhook events

Your Bot code running

on-premises

Enterprise secured

2b. forwards notifications

Bot Architecture: on-premises

Page 37: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

Cisco Spark Cloud

Service

1. interacts in Rooms

via the various Spark Clients

Cisco Spark User

Tunneling

infrastructure

Your Bot code running

on your local machine

2. posts notifications to

registered WebHooks

Dev environmentPublicly accessible

2b. forwards

Webhook events

3. responds to

Webhook events

Bot Architecture: dev machine

ngrok, localtunnel…

Page 38: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

Bot Contest

Sign in on CiscoSpark

Meet the Bot

[email protected]

Take the challenge

Win an iPhone7…

Page 39: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

Meet the QuizBot

39

https://github.com/LucaCalabrese/codemotion-spark-bot

Java, AWS, PostGreSQL, WebHooks @LukeCalab

Page 40: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 40

@QuizBot help

Page 41: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

@QuizBot now

41

Page 42: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

Enhance the User Experience

• Help command

• better show at the invite, welcome message

• But how much help do the bot reallyprovide?• /hlp

• Help

• #help

• HELP!!!

• Fallback command

Page 43: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

Fallback command

43

Page 44: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

Add conversations to the game

44

https://github.com/ObjectIsAdvantag/devnet-botkit-sample

Page 45: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

and context storage

45

https://github.com/CiscoDevNet/botkit-ciscospark-samples

Page 46: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 46

Bot Frameworks survey

Page 47: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

Cisco Spark Bot community frameworks

• Flint, https://github.com/flint-bot/flint

• BotKit, https://github.com/howdyai/botkit

Page 48: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

Community frameworks for Cisco Spark

Flint

First Bot framework for Cisco Spark

Highly tuned for the Cisco Spark API (webhooksevents, moderation…)

Basic Key/Value data store

Coding best practices (ES6, exception handling, logs, retries, rate limitation)

BotKit

Largest community Bot framework

Cross platform support with code reuse (no magic convert button: events name, message formatting)

Advanced Key/Value data store (user / space level)

Powerful conversational paradigm

https://github.com/flint-bot/flint https://github.com/howdyai/botkit

Page 49: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

Taking our bots to the next stage

• But who created the bot ?

• What is the usage policy ?

• How can I contact support, send feedback ?

• What about my data privacy ?

Page 50: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

@CiscoDevNet /about

50

Page 51: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

Taking your bot to the next stage

Is the bot down ?

Page 52: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 52

Bot MetadataHealthCheck

Page 53: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

Is the bot down ? a proposal

• Register the Bot in a Universal Database

• Chat services supported

• Healthcheck endpoints

• Author, Policies

• Metadata again…

• chatbot.land domain reserved

• Who’s in ? twitter://@SteveSfartz

53

Page 54: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

Taking your bot to the next stageHosting

• Many options: IaaS, Containers, PaaS

• Concerns: Availability, Scalability, Security, Rate Limitation

• Pricing balance: who’s willing to pay for the bot, and how much

• Heroku PaaS Free Dynos

• AWS/Google/Microsoft free plans

• Currently testing Serverless Functions

Page 55: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

Google functions pricing

55

Page 56: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

The Serverless Functions opportunity

56

https://github.com/ObjectIsAdvantag/devnetexpress-bot

Remember?

a bot is nothing more than a POST endpoint…

with an healthcheck !

Page 57: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

The Serverless Functions opportunity

> gcloud alpha functions deploy sparkbot

--entry-point googlefunction

--stage-bucket objectisadvantag-functions

--trigger-http

--memory 128MB

--timeout 1s

57

https://github.com/ObjectIsAdvantag/devnetexpress-bot

Page 58: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

The Serverless Functions opportunity

• Easy way to remove the Serverless burden

58

https://github.com/ObjectIsAdvantag/devnetexpress-bot

Page 59: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

Taking bots to the next stage

• Pick Bots coding best practices & frameworks

• Exception management, Retries

• Help, Fallback command, Healthcheck

• Conversations (test is challenging)

• Choose the best hosting approach

• Monitor your bot activity

• Chatops + Analytics

• Think twice before going to NLP and thenchoose the best approach (local vs 3rd party)

https://devnetcreate.io/2017 Nick Marus’s Talk

Page 60: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

Taking your bot to the next stageMachine Learning

• The bot: my companion

• Learn from interactions

• Classify my Twitter Followers

• Who’s ready to pay for it ?• Data Privacy vs Real Cost

Page 61: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

Join the Cisco DevNet code labshttps://github.com/CiscoDevNet/codemotion-rome-2017

Page 62: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

Bot Contest

• Sign in on Cisco Spark

• Meet the Bot

[email protected]

• Take the challenge

• Win iPhone7…

Page 63: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public

Meet Cisco at CodeMotion Rome

March 24th 9:40: It's all about Developers, discover Cisco DevNet

11:30: Build advanced Voice Assistants and Chat Bots

14:10: How to embed Video Calls and Messaging without

being a Media, WebRTC, XMPP or SIP expert

All day: Learn by taking a code lab with proctors

March 25th

11:30: Microservices and containers networking: Contiv,

an industry leading open source solution from Cisco

Page 64: Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz - Codemotion Rome 2017

Thank you@CiscoDevNet

@CiscoSparkDev

@SteveSfartz