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までお問い合わせ下さい。
詳細・お問い合せはこちら

%d人のブロガーが「いいね」をつけました。