Spika for Business × Microsoft Azure Bot Serviceでチャットボットを作ってみた


はじめに


前回は「IBM Watson Conversation Service」と、弊社のリアルタイムチャットソリューション「Spika for Business」(以下、Spika)を連携しました。

今回は、Microsoft Azure(以下、Azure)にて提供されている「Azure Bot Service」と「Azure Functions」を使い、Spikaにチャットボットを作成してみたいと思います!


Azure Bot Serviceとは


Azure Bot Serviceは、Microsoft Azureから提供されているBotを簡単に作成できるサービスです。
※ 現在(2017年4月時点)はプレビュー版です

Microsoft Bot FrameworkとAzure Functionsで構成されており、以下のような特徴があります。
・5つのテンプレートからBotを作成することができる
ブラウザ上の開発環境が提供されているので、作成後すぐに開発・使用できる
・LUISやQnA MakerなどのMicrosoft Cognitive Servicesと連携するためテンプレートも用意されている

さらに、作成したBotをSlackやSkype、Facebook Messengerなどのチャットサービスで使用することが簡単にできます。




構成



今回は、以下の構成でAzure Bot Serviceで作成したBotを、Spikaで使用できるようにしました。

[構成図]

Spikaには前回も記載したとおり、Webhook機能が搭載されているので、外部サービスとのメッセージのやりとり(つまり、Bot連携)が簡単に行えます。

Webhook機能でメッセージの送受信ができるように、Azure Functionsを経由してAzure Bot Serviceと連携しています。

Azure Bot Serviceには、作成したBotをREST APIとして使えるようにするDirect Line APIという接続方法が提供されています。

今回は、BotをこのDirect Line APIを利用して、
Azure Bot ServiceとAzure Functions間のやりとりを行います。


Azure Functions


Azure Functionsについては、以前Azureを触ってみる(Azure FunctionsとAzure SQL Databaseの連携)という記事にてご紹介させていただいたので、詳細はそちらをご参照ください!

まず、Azure PortalからFunction Appを作成します。



Function Appに実装する処理は以下の通りです。
[参考資料:webhook または API Azure Function を作成する]
  1. SpikaからWebhookで送信されたメッセージを受け取る
  2. 受け取ったメッセージをAzure Bot Serviceに送る
  3. Azure Bot Serviceからの返答メッセージをWebhookでSpikaに送る

「Get function URL」ボタンをクリックすると、このFunctionのURLが表示されます。



このURLをコピーします。



コピーしたURLをSpikaのWebhookの送信先URLとして設定します。



ここで合わせて受信用のWebhookも作成しておきましょう(FunctionからSpikaへのWebhookにて使用します)。

これで、対象のルームからメッセージを送信すると、Function Appにデータが送信されます。


Azure Bot Serviceを使ってみる


Azure PortalからAzure Bot Serviceを作っていきます。



Botのデプロイが終わると、以下画面が表示されるので、案内にそってApp IDを作成します。



ここで生成されるパスワードは1度限りしか表示されないので、確実にコピーして保存しましょう。



言語はC#とNode.JSが選択できます。今回はNode.JSを選択。
Botのテンプレートは、Basicを選択してみます。



しばらくすると、Botが編集できるようになります。
ブラウザでも開発できますが、ソース一式をダウンロードできるので、お好みのエディタで開発することもできます。

ChannelsタブからDirect Lineの「Add」ボタンをクリックします。


Direct Lineの設定画面に遷移するので、「Add new site」を選択し、名前を設定します。
今回はSpikaと接続するので、「Spika」としてみました。


作成後に発行される「Secret keys」をコピーしておきます。



Direct Line API


ここで、Azure Function Appに戻ります。
BotとSpikaがやりとりをするための処理が必要なので、Direct Line APIの処理をFunction Appに実装しました。
[参考資料:Direct Line APIのドキュメント]
  1. conversation IDを取得する
  2. Botにメッセージを送る
  3. Botから返答メッセージを受け取る

1.conversation IDを取得する

先ほどコピーした「Secret keys」のうちの一つをAuthorizationとしてheaderに設定しHTTPリクエストを送るだけです。
送信先のエンドポイントは、「https://directline.botframework.com」です。


レスポンスの「conversationId」を使用し、以降のメッセージ送受信を行います。


2. Botにメッセージを送る

HTTPリクエストのbodyのtextに、Botに送るメッセージを送信するだけです。


これで、Botへのメッセージ送信は完了です。


3. Botから返答メッセージを受け取る

最後に、Bot側で生成された返答メッセージを受け取る必要があります。
ここでは、bodyに何も設定する必要はありません。


最初に送ったメッセージと返答メッセージとが配列に入って返されます。


Spika for Businessと連携する


Azure Bot Serviceでは、受け取ったメッセージに「!!」をつけて返答するBotを作成しました。

こちらが、3の返答メッセージを受け取った結果です。


「テストです。」と送信すると、「テストです。!!」と返ってきました

前回同様に、Spika側にWebhookを設定すると、以下のようにBotと連携することができました!




今回、受け取ったメッセージに「!!」をつけるだけの処理でしたが、Azure Bot Serviceでは、Microsoft Cognitive Servicesの各サービス(QnA MakerやLUIS)と簡単に連携できるので、様々な用途に応じたBotを作成することができそうですね!





「Spika for Business」を使用してみませんか?

ご興味持った方はisana.netまでお問い合わせ下さい。
詳細・お問い合せはこちら

Spika for Business × Microsoft Azure Bot Serviceでチャットボットを作ってみた Spika for Business × Microsoft Azure Bot Serviceでチャットボットを作ってみた Reviewed by Blog Isananet on 14:18:00 Rating: 5
Powered by Blogger.