• isana.net

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」です。


[Direct Line APIのドキュメント]

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

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

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


[Direct Line APIのドキュメント]

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

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

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


[Direct Line APIのドキュメント]

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

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

#azure #bot #SpikaforBusiness

ISANA.NET SOCIAL MEDIA

Copyright © 2019 isana.net

cropped-cropped-cropped-logo_s-1-1.png