Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Conversation as a Platform 大全

291 views

Published on

Chat-Bot を作るために、単なるコーディングプレイにならないよう、技術の基本、設計の安置パターンなどをまとめてみました!

Published in: Technology
  • Be the first to comment

Conversation as a Platform 大全

  1. 1. #azurejp https://www.facebook.com/dahatake/ https://twitter.com/dahatake/ https://github.com/dahatake/ https://daiyuhatakeyama.wordpress.com/ https://www.slideshare.net/dahatake/
  2. 2. LINE ID:@ms_rinna
  3. 3. EmotionalProductivity 明日の天気は 晴れです。 どこか 出かける予定でもある の? 明日晴れるかなぁ?
  4. 4. C:
  5. 5. 対人間
  6. 6. こんにちは。○○株式会社の□□と申します。 本日△△さんと11:00からお約束しておりま す。 Intent: MTG Entities CompanyName:○○株式会社 VisitorName: □□ RequesterName: △△ MeetingDateTime: Today, 11:00 □□様、お待ちしておりました。 ××番の会議室までお越しください。
  7. 7. ユーザーさん、こんにちは! いかがいたしましょうか? イベント ステージ アメニティ どんなイベントに興味が ありますか? 音楽 コメディ 映画 レーザー ドーム スペクタクル 劇場 どんな音楽がお好みですか? (ちなみに、次にアクセスした ときは「音楽イベントを 探しています」と入力すれば、 それに対応します。) ユーザーをガイドする チャネルでは、具体的なメニューやすばやいアクションなどを提供する ボットでできることをユーザーが見つけられるようにする
  8. 8. アダプティブ カード オ ー プ ン ソ ー ス の フ レ ー ム ワ ー ク 複 数 の キ ャ ン バ ス 通知 Microsoft Teams Skype Android iOS
  9. 9. アダプティブ カード固定テンプレート 完全制御 柔軟性なし 単調な更新 HTML キャンバス 一貫性なし 制御なし セキュリティの問題 80% のニーズに対応できる柔軟なペイロード ホストがスタイルとセキュリティの強力な制御を維持
  10. 10. Star Trek の映 画の楽曲が聞 きたいのだけ ど、どの映画 だったかわす れちゃいまし た。どのイベ ントでそれを やっているの ですか?
  11. 11. 部屋を探しています。 私は家を探しています。3-4の部屋があって、毎月2万円から5万円 くらいで 管理できる庭があって、品川から電車で45分、その最寄り駅から 徒歩10分圏内で、そこから徒歩5分以内にジムがある部屋を探して います。
  12. 12. 旅行 Bot Conversational Agent 宿泊予約 飛行機 の予約 ご挨拶 (Hello!) 会員確認Dialogs/Tasks Parameters (なし) チェックイン 日 チェックアウ ト日 人数 (部屋の種類) 概算見積もり 出発場所 ….. 到着場所 認証 特別オファー
  13. 13. 認証 検索 購入
  14. 14. 認証 検索 購入 いらっしゃい ませ、 畠山さん はい、こちら に。 承りました。 ご利用ありが とうございま
  15. 15. 旅行 Bot Conversational Agent 宿泊予約 飛行機 の予約 ご挨拶 (Hello!) 会員確認Dialogs/Tasks Parameters (なし) チェックイン 日 チェックアウ ト日 人数 (部屋の種類) 概算見積もり 出発場所 ….. 到着場所 認証 特別オファー
  16. 16. 場所 交通手段 カテゴリ 説明 アラスカ 飛行機、車、 船 自然 野生動物の生息地として 有名であり、冒険好きな 人々に人気の場所である。 カリフォルニア 飛行機、車 自然、都市、 ビーチ さまざまな体験をする ことができる。 ハワイ 飛行機、船 自然、 ビーチ リラックスしたい人々に とって最適な保養地で ある。
  17. 17. [自然、都市、ビーチ]
  18. 18. QueryParser Search Engine Analyzer IndexWriter インデックスSimple lucene Analyzed terms Query terms Query tree Query text Documents terms Analyzed terms Retrieve Ingest Analyzer ドキュメント 検索処理 • クエリーを元に トークン引き当て • ランキング処理 クエリ文を解析し内部 クエリ―形式に変換 テキスト解析を行いトークンの 展開、変換、削除などを行う 転置インデックス インデックス生成処理
  19. 19. /<インデックス名>/docs?... &$filter=session eq ‘DEV‘ &search=Azure
  20. 20. { "name": "qnakb", "fields": [ { "name":"id", "type":"Edm.String", "key":true, "searchable":false, "filterable":false, "sortable":false, "facetable":false }, { "name":"question", "type":"Edm.String", "searchable":true, "filterable":false, "sortable":false, "facetable":false,"analyzer":“ja.lucene"}, { "name":"answer", "type":"Edm.String", "searchable":true, "filterable":false, "sortable":false, "facetable":false,"analyzer":"ja.lucene"}, { "name":"category", "type":"Edm.String", "searchable":false, "filterable":true, "sortable":true, "facetable":true }, { "name":"url", "type":"Edm.String", "searchable":false, "filterable":false, "sortable":false, "facetable":false }, { "name":"tags", "type":"Collection(Edm.String)", "searchable":false, "filterable":true, "sortable":false, "facetable":false } ], … } question, answer フィールド は searchable
  21. 21. { "fields": […], "scoringProfiles": [ { "name": "weightedFields", "text": { "weights": { "question": 9, "answer": 1 } } } ] } & searchMode=any & queryType=full & search=“キーワード” & scoringProfile=weightedFields ( & $filter=category eq ‘カテゴリ’ ) • 特定フィールドに絞る場合 はフィールドスコープ指定 (question:キーワード) • ここではanswerフィールド を 考慮するため指定しない カテゴリ絞りをする場合 スコアリングのフィールドウェイト を question を 9 に対して answer に1を設定
  22. 22. ボットから人間への完全なハンドオフ すべての情報をご提供いただきまして、 ありがとうございます。ここからは、 ジョンがあなたをサポートします。 こんにちは。ジョンです。コンピューターの 電源が入らないのですね。いくつかの サービス オプションを確認しましょう。
  23. 23. ボットから人間への管理されたハンドオフ これらの手順をすべて試したのですが、コンピューターの 電源がまだ入りません。 すばらしい。ありがとうございます。 ハードウェア サービスのリクエストをご提案します。サービス エンジニアに、お客様のコンピューターを確認させることができます。 オペレーターへの注意: ユーザーはハードウェアの交換が 必要のようです。次のステップはなんですか ? ユーザーへの 謝罪 ハードウェア サービスの提案 自分で入力
  24. 24. ボット Web サービス あなたの ボット コード ボット コネクター サービス メッセージの入力 <> 出力 状態管理 その他のサービス、API、 データベース、 Azure Machine Learning、 Azure Search など… Bot Builder SDK エンティティ 抽出 音声認識 画像/顔認識自然言語 翻訳 + Microsoft Cognitive Services 検索 感情検出 Knowledge API … 会話キャンバス/チャネル …… … Web チャット Direct Line… メール Facebook GroupMe Kik Skype Slack Telegram Twilio (SMS) Bot Builder SDK ボット コード
  25. 25. ダイアログ形式の コミュニケーションを実 装 (C#, Node.js) BOT アプリをメッセージ ングサービスに接続 Bing, Cortana などから利 用できるディレクトリに 登録
  26. 26. http://aka.ms/bf-bc-vstemplate https://aka.ms/bf-bc-emulator https://github.com/Microsoft/botbuilder https://docs.botframework.com/en-us/node/builder/overview/
  27. 27. Dialog2Dialog1 Dialog3 Dialog4
  28. 28. # データのセット BotData userData = await activity.GetStateClient().BotState.GetUserDataAsync(activity.ChannelId, activity.From.Id); userData.SetProperty<int>("AuthProcess", 0); # セットしたデータの取得 BotData userData = await stateClient.BotState.GetUserDataAsync(activity.ChannelId, activity.From.Id);
  29. 29. アプリを登録
  30. 30. Intent と Entity を登録 登録した Intent と Entity への対応付けを学習
  31. 31. [LuisModel("78685ddf-f144-4a10-9840-xxxxxxxxxxxx", "0fc3f088e3ab402f822fxxxxxxxxxxxx")] [Serializable] class HelpDeskOrderDialog : LuisDialog<HelpDeskOrder> { [LuisIntent("")] public async Task None(IDialogContext context, LuisResult result) { await context.PostAsync("I'm sorry, I didn't understand you."); context.Wait(MessageReceived); } [LuisIntent("InstallSoftware")] public async Task ProcessInsallSoftware(IDialogContext context, LuisResult result) { string software = result.Entities[0].Entity; await context.PostAsync($"So, you want to install {software}. I will put your request into the system. "); context.Wait(MessageReceived); } …
  32. 32. https://dev.botframework.com/ https://www.luis.ai/ https://dev.botframework.com/ https://www.luis.ai/
  33. 33. Your conversation logic 作成する Bot LUIS LuisDialog FormFlow1 FormFlow2 FormFlow3 Web Service Social Media DB Access
  34. 34. [LuisIntent("GetProductInfo")] public async Task ProcessMSProductForm(IDialogContext context, LuisResult result) { var entity = result.Entities.FirstOrDefault(); var productForm = new FormDialog<MyProduct>(new MyProduct(), MyProduct.BuildMyProductForm, FormOptions.PromptInStart, new List<EntityRecommendation>(result.Entities)); context.Call<MSProduct>(productForm, MyProdcutFormComplete); } ※参考 https://github.com/Microsoft/BotBuilder/blob/master/CSharp/Samples/PizzaBot/PizzaOrderDialog.cs
  35. 35. https://docs.botframework.com/en-us/csharp/builder/sdkreference/forms.html
  36. 36. { "References": [ "MyJsonFormBotApp.dll" ], "type": "object", "required": [ "AzureService", "Term" ], "Templates": { "NotUnderstood": { "Patterns": [ "悪いけど「"{0}"」だと何を言っているのか分からな いです。", "もう一回試してもらっていいですか?" ] } }, "properties": { "AzureService": { "Prompt": { "Patterns": [ "どの {&} が好きですか? {||}" ] }, "Before": [ { "Message": [ "Microsoft Azure アンケート回収 Bot へよ うこそ!" ] } ], "Describe": { "Image": "https://www.p2vsystems.com/wp- content/uploads/2016/09/ms-azure.png" }, "type": [ "string", "null" ( 中略 ) internal static IDialog<JObject> MakeRootDialog() { return Chain.From(() => FormDialog.FromForm(BuildJsonForm)); } public static IForm<JObject> BuildJsonForm() { using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("M yJsonFormBotApp.MyJsonForm.json")) { var schema = JObject.Parse(new StreamReader(stream).ReadToEnd()); return new FormBuilderJson(schema) .AddRemainingFields() .Build(); } }
  37. 37. USERS FILES MAIL CALENDAR TASKSGROUPS Microsoft Graph API (graph.microsoft.com) 関係性や知見を収集
  38. 38. Azure Active Directory (AD)アプリ Microsoft Graph
  39. 39. "This is the text that will be displayed." "This is the text that will be spoken." await
  40. 40. Create your skill logic using the Bot Framework • Build a bot using the Bot Builder SDK • Use Cognitive Services (LUIS) for natural language understanding Add the Cortana channel • Register your bot as a Cortana skill • Configure Cortana- specific data and features Publish your skill • Make your skill discoverable by all Cortana users
  41. 41. http://aka.ms/LUISBot
  42. 42. 表現手段
  43. 43. 表現手段

×