LoginSignup
13
6

More than 1 year has passed since last update.

Azure Bot Service で LINEから事前登録&顔パスシステムを作ろう!(2) Azure Bot Service 編

Last updated at Posted at 2021-08-18

チャットボットで名前や顔写真を事前登録しておくことで、イベント会場で顔パス(顔認証)できたら、きっと便利!
今回は LINE × (Azure Bot Service + Azure Logic Apps + Azure Cognitive Services Face API) + PowerApp を使って、事前登録チャットボット & 顔認証アプリ を作ってみます。

準備

  • Azure サブスクリプション & Face API
  • Bot Framework Composer
    • チャットボットを GUI で作成できるデスクトップアプリです
    • リンク ( Win | Mac | Linux ) からダウンロード、インストールしておきます
  • (1) Azure Logic Apps 編 で作成した、チャットボットから起動するワークフロー。HTTP Post URL をローカルに保存しておきます
  • LINE Messaging API の利用準備を行った LINE チャンネル

手順

1. Bot Framework Composer から新規チャットボットを作成する

Bot Framework Composer を起動します。+ Create New をクリックして新規チャットボットを作成します。

LINERegiBot202108_BotComposer_01.png

Select a template 画面で #C Empty Bot を選択して、[+次へ]をクリックします。

LINERegiBot202108_BotComposer_02.png

名前 は自分で識別しやすいもの (ここでは LINERegiBot20210818) を入力して [作成] をクリックして作成します。

LINERegiBot202108_BotComposer_03.png

新規チャットボットが作成されると、チャットボットのフローや動作を設定する画面が表示されます。
画面左側の ダイアログ一覧 から 案内 (Greeting) をクリックして選択します。

LINERegiBot202108_BotComposer_04.png

Greeting のダイアログで行われるフローや操作が表示されます。この Greeting ダイアログはチャットボットが起動したときにデフォルトで起動するダイアログになります。
画面中央のフローから Send a response をクリックします。

LINERegiBot202108_BotComposer_05.png

この Send a response は初めてユーザーがチャットボットに接続したときに動作するアクションで、ユーザーへメッセージを送信します。画面右列の Send a response ペインの 応答 の欄をクリックして、メッセージをお好みのものに変更します。入力が終わってポイントが外れると内容は自動保存されます。

LINERegiBot202108_BotComposer_06.png

2. チャットボットに新規ダイアログ、アクションを追加する

初期メッセージを表示した後、ユーザー名や顔写真を登録するダイアログを追加していきます。
案内(Greeting) ダイアログのフローの一番下にある (+) をクリックします。

LINERegiBot202108_BotComposer_07.png

表示されるメニューから ダイアログの管理 > 新しいダイアログの開始 をクリックして選択します。

LINERegiBot202108_BotComposer_08.png

画面右側に表示される 新しいダイアログの開始 ペインにある Dialog Name の欄をクリックし +新しいダイアログの作成 をクリックして選択します。

LINERegiBot202108_BotComposer_09.png

ダイアログの作成 画面が表示されたら 名前StartMenu と入力、[OK] をクリックして作成します。

LINERegiBot202108_BotComposer_10.png

作成した StartMenu ダイアログが画面に表示されます。画面左側のダイアログ一覧から StartMenu の下にある BeginDialog をクリックしてフロー画面を表示します。

LINERegiBot202108_BotComposer_11.png

画面中央に表示されるフローにアクションを追加していきます。まずは登録者の名前を聞くためのプロンプトを作成します。フローに表示されている (+) をクリックします。

LINERegiBot202108_BotComposer_12.png

表示されるメニューから 質問する > テキスト をクリックして選択します。

LINERegiBot202108_BotComposer_13.png

画面右側に表示される Prompt for text ペインで Bot Response - 応答 に入力を依頼するメッセージを入力します。Add alternative をクリックします。

LINERegiBot202108_BotComposer_14.png

ここでは 登録する人の名前を入力してください という趣旨のメッセージを入力しておきます。

LINERegiBot202108_BotComposer_15.png

Prompt for text ペインで ユーザーによる入力 タブをクリックします。Property の欄に user.name と入力します。これによりユーザーの入力が user.name というオブジェクトに格納されます。

LINERegiBot202108_BotComposer_16.png

同様に、画面中央のフロー にある (+) をクリックして、今度は 質問する > ファイルまたは添付ファイル をクリックして選択します。

LINERegiBot202108_BotComposer_17.png

ファイルまたは添付ファイルの入力を求める... ペインで、顔写真を送るよう依頼するメッセージを入力します。登録する人の顔が良く分かる写真を送ってください としておきます。

LINERegiBot202108_BotComposer_18.png

ファイルまたは添付ファイルの入力を求める... ペインで ユーザーによる入力 タブをクリックして、Property の欄に user.attachment と入力します。これによりユーザーから送られてくるファイル(顔写真)情報が user.attachment に格納されます。

LINERegiBot202108_BotComposer_19.png

画面中央のフロー にある (+) をクリックして、今度は 外部リソースに悪セ氏 > HTTP 要求の送信 をクリックして選択します。

LINERegiBot202108_BotComposer_20.png

画面右側に表示される HTTP 要求の送信 ペインで 以下の情報を入力します。

  • HTTP method : POST
  • URL : ローカルに保存しておいた Azure Logic App の URL
  • Body : = { 'userName': user.name, 'attachment': user.attachment}

HTTP リクエストに対するレスポンスは (デフォルト設定のままで) turn.results に保存されます。

LINERegiBot202108_BotComposer_21.png

フローの次の操作を (+) をクリックして追加します。条件の作成 > 分岐: if/else をクリックし、HTTP リクエストのレスポンス (ステータスコード) によって処理を分岐します。

LINERegiBot202108_BotComposer_22.png

画面右側に表示される 分岐: if/else ペイン の Condition の欄に turn.result.statusCode == 200 と入力します。

LINERegiBot202108_BotComposer_23.png

フロー分岐の True 側にある (+) をクリックして、応答の送信 を選択し、レスポンスコード 200 (正常終了)の場合の応答メッセージを設定します。

LINERegiBot202108_BotComposer_24.png

Send a response ペインの応答欄に 登録完了しました という旨のメッセージを入力します。

LINERegiBot202108_BotComposer_25.png

同様に、フロー分岐の False 側の (+) をクリックして、応答の送信 を選択し、登録失敗しました という旨のメッセージを設定します。

LINERegiBot202108_BotComposer_26.png

データの処理が終わったら、user.name と user.attachment の情報を削除しておきます。
フロー上にある (+) をクリックして プロパティの管理 > プロパティの削除 を選択します。

LINERegiBot202108_BotComposer_27.png

プロパティの削除 ペインで Property の欄に user.name と入力します。

LINERegiBot202108_BotComposer_28.png

同様に再度フロー上にある (+) をクリックして プロパティの管理 > プロパティの削除 を選択、user.attchment のプロパティを削除します。

LINERegiBot202108_BotComposer_29.png

最後に、再度ユーザーから話しかけられたときにこの StartMenu ダイアログを呼び出せるように設定しておきます。

画面左側のダイアログ一覧から 不明なインテント をクリックします。
画面中央のフローにデフォルトで設定されている Send a response をクリックして、最初の応答メッセージを適切なものに書き換えます。

LINERegiBot202108_BotComposer_30.png

フロー上にある (+) をクリックして ダイアログの管理 > 新しいダイアログの開始 を選択します。

LINERegiBot202108_BotComposer_31.png

画面右側に表示される 新しいダイアログの開始 ペインにある Dialog NameStartMenu を選択して設定します。

LINERegiBot202108_BotComposer_32.png

3. Bot Framework Composer でチャットボットの動作を確認

作成したチャットボットは Bot Framework Composer 内で動作を確認することができます。
Bot Framework Composer の上部バー右上にある [▷ Start Bot] をクリックして、ローカルでチャットボットを起動します。

LINERegiBot202108_BotComposer_33.png

チャットボットの通信がファイアウォールでブロックされているメッセージが出る場合は、適時アクセスを許可します。

ボットが起動してローカルランタイムマネージャーが表示されたら、[Web チャットを...] をクリックして チャット画面を表示します。

LINERegiBot202108_BotComposer_35.png

画面右側に表示されるチャット画面で入力を行い、チャットボットの挙動を確認します。登録完了のメッセージが表示されたら完了です。

LINERegiBot202108_BotComposer_36.png

4. Bot Framework Composer から Azure Bot Service に発行

Bot Framework Composer で作成したチャットボットアプリを Azure Bot Service に直接発行 (デプロイ) します。

左列メニューの 公開 (クラウドアイコン) をクリックします。Publishing Profile タブを選択、新規追加 をクリックして 公開プロファイルを作成します。

LINERegiBot202108_BotComposer_37.png

Creating a publishing profile 画面で、以下を設定して [次へ] をクリックします。

  • 名前 : お好みの分かりやすい名前をものを入力
  • 発行先 : Publish bot to Azure を選択

LINERegiBot202108_BotComposer_38.png

Azure へのサインインダイアログが表示されたら、お使いの Azure サブスクリプションを利用できるユーザーアカウントでサインインを行います。

Creating a publishing profile 画面(その2) で、Create new resources をクリックして、必要なリソースを新規作成します。[Next] をクリックして進みます。

LINERegiBot202108_BotComposer_39.png

Configure resources 画面で、作成するリソースの情報を以下のように設定します。

  • Subscription : ご利用中の Azure Subscription を選択
  • Resource Group : (1)Azure Logic App 編で作成したリソースグループ、または新規作成してお好みの分かりやすい名前を入力します
  • App Service : 今回のチャットボットのベースは C# なので Windows を選択(デフォルト)
  • Resource details
    • name : Azure Bot Service の名前としてお好みの分かりやすい名前を入力 (ここでは LINERegiBot20210818)
    • Region : 東日本(japaneast)
    • LUIS region : 米国西部 (※今回は作成しませんので選択肢から適時選ぶのみでOK)

[Next] をクリックして次のステップに進みます。

LINERegiBot202108_BotComposer_40.png

Add resources 画面で、追加で作成するリソースを選択します。
今回は最小セットで動かしますので、外せるチェックボックスをすべて外します。隠れているところも忘れずに。[Next] をクリックします。

LINERegiBot202108_BotComposer_41.png

Review resources to be created 画面で作成する Azure リソースの最終確認を行います。変更がなければ [Create] をクリックして作成します。

LINERegiBot202108_BotComposer_42.png

しばらくして [プロビジョニングの成功] と表示されたらリソースの作成は終了です。
[公開] タブをクリックしてチャットボットアプリの公開に進みます。

LINERegiBot202108_BotComposer_43.png

ボットの チェックボックス☑ をオンにして、ターゲットには前の手順で作成したプロファイルを選択します。選択したボットを公開する をクリックして、チャットボットアプリの公開手順に進みます。

LINERegiBot202108_BotComposer_44.png

[公開] 画面で [OK] をクリックすると、チャットボットアプリが Azure リソース上に公開 (デプロイ) されます。

LINERegiBot202108_BotComposer_45.png

ボットの公開 画面で 状態が , Success と表示されたら公開完了です。

LINERegiBot202108_BotComposer_46.png

Azure Portal でリソースを作成、公開したリソースグループを開き、リソースが作成されていることを確認してください。

LINERegiBot202108_BotComposer_47.png

チャットボットを公開した Azure Bot Service を開きます。
左列メニューから Web チャットでテスト をクリックします。

LINERegiBot202108_BotComposer_48.png

チャット画面で入力を行い、チャットボットが Bot Framework Composer 上と同じ動作になるのが確認できます。

LINERegiBot202108_BotComposer_49.png

今度は Face API を操作する Azure Function App (ここでは LINERegiBot20210818Logic) を開きます。チャットボット画面での入力が反映されてログが残っていることが確認できます。ログをクリックします。

LINERegiBot202108_BotComposer_50.png

正しく Logic App が稼働し、公開したチャットボットから ContentUrl (添付ファイルの画像URL) を正しく取得して Face API に登録できていることが確認できます。

LINERegiBot202108_BotComposer_51.png

5. Azure Bot Service と LINE Messaging API の接続

公開した Azure Bot Service を LINE Messaging API に接続し、LINE からチャットボットを呼び出しできるようにします。

LINE Developer Portal で Azure Bot Service のチャットボットを接続するアカウントを表示し、チャンネルシークレット および チャンネルアクセストークンをコピーします。

LINERegiBot202108_BotComposer_52.png
LINERegiBot202108_BotComposer_53.png

Azure Portal からチャットボットを公開した Azure Bot Service (ここでは LINERegiBot20210818 )を開き、左列メニューから [チャンネル] を選択、表示される チャンネルに接続 画面で LINEのアイコンをクリックします。

LINERegiBot202108_BotComposer_54.png

コピーしたチャンネルシークレットとチャンネルアクセストークンを貼り付けて [保存] をクリックして設定を保存します。Webhool の URL をコピーします。

LINERegiBot202108_BotComposer_55.png

LINE Developer Portal に戻り、Messaging API 設定 にある Webhook URL に Azure Portal からコピーした URL を貼り付けて保存します。保存した後、[検証] をクリックして OK (200) と表示されたら設定は完了です。

LINERegiBot202108_BotComposer_56.png

LINE から アカウントを追加して、動作を確認します。Azure Bot Service 上と同じ動作となることが確認できます。

13
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
6