Create Bot for Microsoft Graph with DevOps 8: Dialog 201 – Make conversation easier with DialogPrompt

In this article, I use DialogPrompt and add create events feature to O365Bot DialogPrompt As a developer, you need to consider the following things. Reply content: Just text string or rich contents such as buttons and/or images. Input validation: If a user send valid data, such as date time or integer as developer expects. Retry:… Read more

Create Bot for Microsoft Graph with DevOps 7: BotBuilder features – Dialog 101

I already setup basic DevOps CI/CD pipeline, I will focus on BotBuilder features from now on. Let’s start from Dialog system. Overview What makes a chatbot intelligent is understanding conversation or dialog. However, if you think about implementing such function to remember previous conversations with users and handle it later is tedious but troublesome. BotBuilder… Read more

Create Bot for Microsoft Graph with DevOps 6: Continuous Deployment – Release Definition

This time, I create a Release Definition to complete the CI/CD pipeline. While build definition defines how to build the source, release definition defines how to release the compiled bits. I include following three tasks. Infrastructure as a Code (ARM template for Azure) to automate infrastructure. Release Function Test You can find the detail of… Read more

Create Bot for Microsoft Graph with DevOps 5: Function Test

I already added unit testing, but to complete entire test, I need function test. Function Test for Bot Framework There are several ways to achieve this, but I see many people utilizes Direct Line, so I will follow them. Direct Line is one of channels Bot Connecter supports, and you can connect to the bot… Read more

Create Bot for Microsoft Graph with DevOps 4: Continuous Integration – Build Definition

As I have basic application, it’s time to setup CI (Continuous Integration). Create Build Definition 1. Go to Visual Studio Team Services and go to Build & Release | Build. Click [New definition]. 2. Select ASP.NET (PREVIEW) template. 3. Set name. 4. Select [Get sources] and select the repo. As you see, you can use… Read more

Create Bot for Microsoft Graph with DevOps 3: Unit Testing with Moq, AutoFac and Fakes

In this article, I create an unit test for the feature I implemented in the last article. Mocking the service To do unit testing, you need to mock all dependencies. In this case, Graph Service and AuthBot are the ones. Mocking AuthBot By looking into the source code of AuthBot, it add extend method to… Read more

Create Bot for Microsoft Graph with DevOps 2: Get your appointment from Microsoft Graph and OAuth 2.0 with AuthBot

As we already setup VSTS and unit testing framework, let’s implement actual bot which can get my Outlook appointment. We can use OAuth 2.0 for Microsoft Graph, and AuthBot is the best module for our bot. AuthBot You can see the detail of AuthBot here. 1. Add AuthBot NuGet Package to O365Bot project. You need… Read more

Create Bot for Microsoft Graph with DevOps 1: Unit Testing Bot Framework application

In this series, I will develop a chat bot by using Microsoft Bot Framework and Graph API with VSTS to enable DevOps. Unit Tests for Bot Framework Testing is one of the key concept to make DevOps successful, but unit testing of Bot Framework is different from other projects such as MVC. The article below… Read more

Bot Framework と Microsoft Graph で DevOps その 22 : ダイレクトライン

今回はダイレクトラインについて。一応これでシリーズは終わりにします。まだまだネタはありますが、きりがない。。 概要 ボットコネクターは Skype、Facebook、電子メールなど複数のチャネルとの接続を提供しますが、LINE や独自アプリなどネイティブにサポートされていないアプリを接続する仕組みとして、REST 形式でアクセスできるダイレクトラインが提供されます。DevOps 観点でこのダイレクトラインが重要なのは、ファンクションテストで使っているからです。 機能 以下のことが出来ます。API 詳細はこちら。 REST API に対する認証 会話の開始と終了 メッセージの送受信 また接続方法は通常の HTTP 要求またはWebSocket が利用できます。 制限 WebSocket を使わない場合、ボットアプリからの通知をリアルタイムに順次受けることはできません。動作としては以下のようになります。 1. 会話を開始して、メッセージを送信。 2. ボットアプリ内ですべての処理が終わった時点でメッセージ送信処理が完了とみなされる。処理内でボットアプリからメッセージを返信していても、この時点では取得できない。 3. メッセージの受信を要求。キューされたすべてのメッセージを受信する。尚、自分が送信したメッセージも同時に受信。 差分受信 同一会話内でメッセージを送受信する場合は、Watermark と呼ばれる値をリクエストに付与することで、前回受信した以降のメッセージだけを受信可能。 ファンクションテスト DirectLineHelper.cs でダイレクトラインの機能を使っています。会話の開始とメッセージの送受信だけを行う、非常にシンプルな仕組みです。 WebSocket での利用 ファンクションテストは通常の HTTP 要求しか使っていないため、WebSocket のサンプルを作ってみましょう。 1. ボットアプリソリューションに新しくコンソールアプリプロジェクトを追加。O365Bot.StreamClient としました。 2. NuGet より DirectLine と WebSocketSharpモジュールを追加。また System.Configuration を参照に追加。 3. App.config に DirectLine… Read more

Bot Framework と Microsoft Graph で DevOps その 21 : コルタナを利用したボットアプリの音声対応

今回は音声対応について。Bot Framework の音声対応は二種類あります。 コルタナやエミュレーターなど音声出力をサポートするチャネル向け機能 Skype 向けの音声サポート Skype 向けの音声サポートは、これまで開発したコードの再利用ができないため今回は紹介しません。詳細はこちらをご覧ください。以降はコルタナなど音声出力をサポートするチャネル向け機能のみについて記載します。 音声の入出力 ユーザー視点では音声の入力と出力があります。BotBuilder は出力用の設定のみ可能で、実際に音声として出力されるかはチャネルの機能に依存します。また入力はチャネル側でテキストに変換してから送信する必要があります。尚、コルタナチャネルは現在英語のみサポートしています。 Speak プロパティ Acivity.Speak プロパティに音声出力用のデータを設定可能で、表示用と別に音声出力に最適な値が使えます。PromptDialog の場合には、speak/retrySpeak 引数に設定できます。値は単純な文字列、または Speech Synthesis Markup Language (SSML) が使えます。SSML を使うとボリュームやスピード、アクセントなど細かな制御が可能です。SSML の詳細はこちら。 インプットヒント インプットヒントを使うと、ユーザーに応答をした後、次のインプットを待機するか、終了するかを指示できます。 AcceptingInput: マイクはオフにして、音声の返信を待機しない。 ExpectingInput: マイクをオンにして、音声の返信を待機する。 IgnorningInput: テキスト入力およびマイク共にオフにして、入力を無視する。 既定値は処理によって変わります。 PromptDialog: プロンプトを使っているので回答を期待するため、ExpectingInput が既定。 単純な返信: AcceptingInput が既定。 連続した返信: 最後の返信を送るまでは、IgnorningInput。最後は AcceptingInput。 ボットアプリの構成 コルタナ対応のボットはマイクロソフトアカウントで登録する必要があります。 1. https://dev.botframework.com にログイン。 2. 登録済のボットを選択。 3. Add a channel よりコルタナを選択。… Read more