Bot Framework と Microsoft Graph で DevOps その 19 : LUIS と多言語対応ボットの実装編

※2017/6/19 ユニットテストで必要なファイルが抜けていたため、追加 前回は LUIS 応用編ということでエンティティやフォームフローとの連携を紹介しました。今回は開発中のボットアプリに組み込むところとユニットテストについて見ていきます。 多言語対応 将来的に日本語で datetimeV2 が出れば別ですが、今回は英語版の LUIS を使います。よってユーザーからのメッセージは一旦翻訳しましょう。 翻訳サービス Cognitive の翻訳サービスを使います。詳細はこちら。ただ、探し方が悪いのか C# SDK がなかった。。 1. Azure ポータルから Translator Text API のキーを取得します。 2. ボットアプリプロジェクトの Services フォルダに ITranslationService.cs を追加し、コードを差し替え。 using System.Threading.Tasks; namespace O365Bot.Services {     public interface ITranslationService     {         Task<string> Translate(string content, string from, string to);     } } 3. TranslationService.cs を追加し、コードを差し替え。… Read more

Bot Framework と Microsoft Graph で DevOps その 18 : エンティティとフォームフローの連携!LUIS 応用編

前回 LUIS 入門編としてインテントと LUIS ダイアログの簡単な使いかたを紹介しました。今回は応用編として LUIS のエンティティとフォームフローとの密な連携を紹介します。尚、ボットアプリへの本格的な実装は次回で。 エンティティの活用 エンティティとは、文章におけるキーワードをカテゴライズしたものです。 Prebuilt domains 日本語ではまだ対応してませんが、LUIS はよくあるシナリオに関して、事前に定義したインテントとエンティティを追加できます。 1. https://luis.ai より前回作成した O365Bot_EN を開きます。 2. 左のメニューより Prebuilt domains をクリック。Calender を選択します。Learn more クリックすると追加されるインテントとエンティティの情報が表示されます。 3. 追加されたら左のメニューより Intents をクリック。インテント増えていることを確認します。それぞれに例文もあります。 4. Calnder.Add を開いて、どのような例文が登録されているか確認。[] で囲まれているのはエンティティとして認識される場所です。 5. Entities メニューから追加されたエンティティも確認。 6. 内容が重複するため、CreateEvent と GetEvents インテントを削除します。 カスタムエンティティの追加 Prebuild domain 同様、よく使うエンティティも事前定義されています。上記手順では時間についてのエンティティがないため、追加します。 1. 左のメニューより Entities をクリックします。 2. Add prebuild entity をクリック。… Read more

Bot Framework と Microsoft Graph で DevOps その 17 : 自然言語処理を試す LUIS 入門編

今回は LUIS (Language Understanding Intelligent Service) の入門編を。LUIS を使うことで、文章の意図(インテント)とキーワード(エンティティ)を取得することが出来ます。まずはイベント取得とイベント作成のインテントと取れるようにしてみます。 LUIS の登録と作成 1. https://luis.ai にアクセス。アカウントがない場合はアカウントの作成。ある場合はサインイン。 2. New App をクリックして新しいアプリを登録。 3. 日本語用の LUIS アプリをまず作成。 4. Create Intent をクリックして、Add Intent をクリック。 5. インテント名を GetEvents として保存。 6. テキストボックスに例文を入力。最低 5 個は入力して、保存。 7. 同じ手順で CreateEvent インテントも作成。 8. 左のメニューより Train & Test をクリックして、Train Application をクリック。 9. 例文を入力して、結果を確認。登録時とは異なる言い方をしましたが、無事インテント取得出来ました。 10. 左メニューより Publish App を選択して、Add a… Read more

Bot Framework と Microsoft Graph で DevOps その 16 : 会話のインターセプト処理

今回はボットアプリとユーザー間のやり取りを、インターセプトする方法を紹介します。 概要 ミドルウェアを会話の前後に差し込めると、会話のログ取得や、会話のフォワードなど、様々なことを既存のコードに影響を与えることなくできます。 インターセプトの実装 1. ボットアプリの Services フォルダに ActivityLogger.cs を追加し、コードを以下と差し替えます。 using Microsoft.Bot.Builder.History; using Microsoft.Bot.Connector; using System.Diagnostics; using System.Threading.Tasks; namespace O365Bot.Services {     public class ActivityLogger : IActivityLogger     {         public async Task LogAsync(IActivity activity)         {             Debug.WriteLine($”From:{activity.From.Id} – To:{activity.Recipient.Id} – Message:{activity.AsMessageActivity()?.Text}”);         }     } } 2. Global.asax.cs に処理差し込み用のコードを追加します。以下のコードと差し替えます。自分用の IoC Container と登録先を間違えないようにしてください。 using… Read more

Microsoft Cognitive Service を使って Meetup イベントを最適化してみた

昨年 12 月に Azure Meetup で Microsoft Cognitive Service のセッションをやりましたが、その時に紹介したアプリケーションを公開したのでブログでもお知らせを。 Tokyo Azure Meetup #11 – Building Intelligent Applications (46:30 あたりからです。) https://www.youtube.com/watch?v=UH3oJ-gfze8 ソースコード https://github.com/kenakamu/AttendeeAnalyzer なにするアプリケーション? 私も Meetup のイベントを主催していますが、いくつか面倒なことがあり、今回のアプリケーションはそれらを改善するために作りました。 参加者の管理: イベント参加者は RSVP してくれますが、実際に来るかというと話は別。ということで実際に来た人のトラック QA の管理: イベント中に質問が出た場合、回答した/しなかったに関わらず情報は共有したい。よってそれらの管理。 英語: 質問してくれるのはありがたいんですが、たまに英語が聞き取れない。よってその対策。 使っている API や主要テクノロジー Microsoft Cognitive Face API: https://www.microsoft.com/cognitive-services/en-us/face-api Microsoft Cognitive Emotion API: https://www.microsoft.com/cognitive-services/en-us/emotion-api SignalR: https://www.asp.net/signalr Meetup.com API: https://www.meetup.com/meetup_api UWP… Read more