Martin Šimeček: Chytré boty do každé rodiny

Post on 22-Jan-2018

71 views 0 download

transcript

@deeedx

Co je potřeba vyřešit?

1. Proč bot a proč botem??

2. Jak se neztratit v konverzaci

3. Jak udělat bota chytřejšího

4. Kde hostovat

Užitečný bot

Užitečný bot

Bot přímo k věci

AzureBot pro správu cloudu

Bot přímo k věci

AzureBot pro správu cloudu

Bot přímo k věci

AzureBot pro správu cloudu

Bot přímo k věci

AzureBot pro správu cloudu

Proč bot? A proč je to cool?

Protože zůstává i na mobilu...

Žádný další login

Žádná synchronizace aplikací

Multiplatformní

Legrační (ale chytrý) bot

Murphy

Legrační (ale chytrý) bot

Murphy

Legrační (ale chytrý) bot

Murphy

Legrační (ale chytrý) bot

Emogram

Legrační (ale chytrý) bot

Emogram

http://aka.ms/emogrambot2

Bot

Entity

ExtractionSpeech

Bot

Clipboard w

entities

Natural

LanguageTranslation

+ Intelligent Services

Bing

Knowledge

User

Preferences

Image

Intelligence

Message input <> output

State Management

Bot Connector Service

………

Další služby, API,

databáze, Azure Machine

Learning, Azure Search,

atdc…

Bot Builder SDK

Web Chat

Direct Line…

Email

Facebook

GroupMe

Kik

Skype

Slack

Telegram

Twilio (SMS)

Bot Builder SDK

Tady je váš kód

Bot Builder SDK

https://github.com/Microsoft/BotBuilder

Případ 1: Emogram

https://github.com/msimecek/SellerNotesBot

Případ 2: SellerNotesBot

Případ 3: E-shop Bot

private async Task MessageReceivedAsync(IDialogContext context, IAwaitable<object> result)

{

ShowOptions(context);

}

private void ShowOptions(IDialogContext context)

{

var choices = new List<string>() {

Tasks.LocateStore,

Tasks.OrderStatus,

Tasks.QnA,

Tasks.Service

};

PromptDialog.Choice(context,

AfterTaskSelected,

choices,

"What can I help you with?",

promptStyle: PromptStyle.Keyboard,

attempts: 99

);

}

private async Task AfterTaskSelected(IDialogContext context, IAwaitable<string> result)

{

var res = await result;

switch (res)

{

case Tasks.LocateStore:

context.Call(new LocateStoreDialog(), AfterTaskCompleted);

break;

case Tasks.QnA:

context.Call(new QnaDialog(), AfterTaskCompleted);

break;

case Tasks.Service:

context.Call(new ServiceDialog(), AfterTaskCompleted);

break;

case Tasks.OrderStatus:

context.Call(new OrderStatusDialog(), AfterTaskCompleted);

break;

}

}

Případ 4: Přepínání kontextu

IScorablepublic class GlobalMessageHandlersBotModule : Module

{

protected override void Load(ContainerBuilder builder)

{

base.Load(builder);

builder

.Register(c => new SettingsScorable(c.Resolve<IDialogTask>()))

.As<IScorable<IActivity, double>>()

.InstancePerLifetimeScope();

builder

.Register(c => new CancelScorable(c.Resolve<IDialogTask>()))

.As<IScorable<IActivity, double>>()

.InstancePerLifetimeScope();

}

}

No C# or Node? No problem!

Testujeme lokálně

Umí i tlačítka

JSON zprávy

Bot Framework Emulator

https://aka.ms/bf-bc-emulator

Cognitive Services

Emogram Bot používá Emotion API

Další boti třeba LUIS

https://www.microsoft.com/cognitive-services/en-us/emotion-api

Emotion API

https://www.microsoft.com/cognitive-services/en-us/computer-vision-api

Computer Vision API

Face API

VisionLUIS

Language Understanding

Intelligent Service

Intent: TextToSpeechContent: NewsHeadlines

Read me the headlines

Play yesterday’sDaily Show

Intent: PauseDeviceDateTime.duration: 5 Minutes

Pause for5 minutes

Intent: PlayEpisodeContent: Daily ShowDateTime.date: T-1 Day

Hostování bota

Bot je vlastně webové API

Přijme zprávu (POST), zpracuje a odešle odpověď

=> dá se hostovat kdekoliv

Azure Functions

Kde co je?

Bot Frameworkhttps://dev.botframework.com/

Azure Bot Servicehttps://azure.microsoft.com/en-us/services/bot-service/

Cognitive Serviceshttps://www.microsoft.com/cognitive-services

@deeedx