none
無料で Bot Framework/Azure Bot Service を使ったアプリケーションを試す方法について RRS feed

  • 全般的な情報交換

  • こんにちは。Azure Bot Service Support Team です。

     

    今回は Bot Framework を使って無料で Bot アプリケーションを試す方法について、いくつか紹介します。

     

    具体的には、以下の 4 つが考えられます。方法 1) 2) は、Bot アプリケーションをデバッグしたい時にも利用できます。

     

    方法 1) Visual Studio 等を利用してローカル上で Bot アプリケーションを動作させ、ローカル上で動作する Bot アプリケーションに Bot Framework Emulator を使ってアクセスする

     

    方法 2) Visual Studio 等を利用してローカル上で Bot アプリケーションを動作させ、ngrok を利用してインターネットに公開し、Free プランのボット チャンネル登録 (Bot Channels Registration) を使って Bot アプリケーションを登録する

     

    方法 3) Free プランの App Service (Azure Web Apps) を使って Web アプリ ボット (Web App Bot) を作成する

     

    方法 4) Bot アプリケーションを「インターネットから」および「インターネットに」接続可能なサーバー上に配置し、Free プランのボット チャンネル登録 (Bot Channels Registration) を使って Bot アプリケーションを登録する

     

    以下、それぞれの方法について、参考となる資料や補足等を記載します。

     

    方法 1) Visual Studio 等を利用してローカル上で Bot アプリケーションを動作させ、ローカル上で動作する Bot アプリケーションに Bot Framework Emulator を使ってアクセスする

    ====================

    ローカル上で Visual Studio Visual Studio Code を使って Bot アプリケーションを作成および動作させ、そして、Azure Bot Service は利用せずに、Bot Framework Emulator というアプリケーションを利用して直接 Bot と会話する方法になります。

     

    Azure Bot Service を利用しないため、これまでに紹介してきた Web アプリ ボット (Web App Bot) やボット チャンネル登録 (Bot Channels Registration) を作る必要はありませんが、Azure Bot Service の機能として用意している複数のチャンネル (Teams チャンネルや DirectLine チャンネル等) を介した Bot との会話はできません。

     

    そのため、Bot アプリケーションが正しく動作するかをテストするために利用できます。

     

    Bot アプリケーションを Visual Studio 2017/2019 Visual Studio Code を利用して開発したり動作させる方法については、以下の公式の資料が参考になります。

     

      // C# で開発したい場合

      Bot Framework SDK for .NET を使用したボットの作成

      https://docs.microsoft.com/ja-jp/azure/bot-service/dotnet/bot-builder-dotnet-sdk-quickstart?view=azure-bot-service-4.0

     

      // Node.js を利用して開発したい場合 (Node.js が利用できる環境になっていることが前提条件となります)

      Bot Framework SDK for JavaScript を使用したボットの作成

      https://docs.microsoft.com/ja-jp/azure/bot-service/javascript/bot-builder-javascript-quickstart?view=azure-bot-service-4.0

     

    C# で開発する場合は、Visual Studio 2017/2019 をインストールしたマシンに、下記からダウンロード可能な Bot Framework 用のプロジェクト テンプレートを追加していただき、上述の docs の手順で Bot Framework のプロジェクトを作成し、動作を確認してください。

     

      Bot Framework v4 SDK Templates for Visual Studio

      https://marketplace.visualstudio.com/items?itemName=BotBuilder.botbuilderv4

     

    Node.js で開発する場合は、Yeoman および generator-botbuilder という npm パッケージを利用してプロジェクト テンプレートを作成し、動作を確認してください。

     

    なお、いずれで開発した場合も、既定では Bot アプリケーションは http://localhost:3978/api/messages でホストされ、Bot と会話するツールとして Bot Framework Emulator を利用します。

     

    microsoft/BotFramework-Emulator

    https://github.com/Microsoft/BotFramework-Emulator/releases/

     

    Bot アプリケーションを動作させるマシンと同じマシンにインストール後、Bot Framework Emulator を起動し、 Bot URL に上述の URL を指定して接続すれば、Bot と会話可能です。

     

     

    なお、Echo Bot は話しかけた内容をそのまま返してくるオウム返しの Bot ですが、その他の多数のサンプル プログラムが下記の github で公開されているため、Visual Studio のテンプレートから作成するのではなく、以下で公開されているサンプルに実装を加えていくのも一つの方法になります。ぜひご参考ください。

     

       microsoft/BotBuilder-Samples

       https://github.com/microsoft/BotBuilder-Samples

     

     

    方法 2) Visual Studio 等を利用してローカル上で Bot アプリケーションを動作させ、ngrok を利用してインターネットに公開し、Free プランのボット チャンネル登録 (Bot Channel Registration) を使って Bot アプリケーションを登録する

    ====================

    ローカル上で Visual Studio Visual Studio Code を使って Bot アプリケーションを作成および動作させ、その Bot アプリケーションを ngrok を利用してインターネットに公開して利用する方法です。この方法の一連の手順は Azure Bot Service の以下の公式資料や Bot Framework の公式ブログ等で紹介されている方法になります。

     

       検査ミドルウェアを使用してボットをデバッグする

       https://docs.microsoft.com/ja-jp/azure/bot-service/bot-service-debug-inspection-middleware?view=azure-bot-service-4.0&tabs=javascript

     

      Debug any Channel locally using ngrok

    https://blog.botframework.com/2017/10/19/debug-channel-locally-using-ngrok/

     

    前回の記事でも紹介した通り、Azure Bot Service を利用して Bot アプリケーションを動作させたい場合、以下の 2 点が必要になりますが、この方法では 1 Visual Studio Visual Studio Code および ngrok を利用して実現し、2 をボット チャンネル登録 (Bot Channels Registration) で実現します。

     

       1. Bot アプリケーションを動作させるサーバーを用意し、開発した Bot アプリケーションを配置する

       2. Azure Bot Service の機能 (Standard チャネルや Premium チャネル等) を利用できるように、1 で配置した Bot アプリケーションを登録する

     

    1 は方法 1) を実施いただくことになります。C# Bot を開発される場合は Visual Studio 2017/2019 を、Node.js Bot を開発される場合は Visual Studio Code を利用して、まずは Bot アプリケーションをローカルで動作できることを確認します。

     

    次に、ボット チャンネル登録 (Bot Channels Registration) を作成して、Azure Bot Service を利用できるように登録しますが、無料で試したい場合でも、Azure のサービスを利用するために Azure のサブスクリプションは必要となりますので、もしサブスクリプションをお持ちではない方は Azure の無料アカウントを事前に作成してください。

     

       Azure の無料アカウントに含まれるサービスを作成する

       https://docs.microsoft.com/ja-jp/azure/billing/billing-create-free-services-included-free-account

     

       Azure 無料アカウント

       https://azure.microsoft.com/ja-jp/offers/ms-azr-0044p/

     

    Azure ポータルからボット チャンネル登録 (Bot Channels Registration) を作成しますが、その際に無料で利用できるようにするために、赤枠のような構成にしてください。

     

    1 では Azure Bot Service の料金 (こちらの記事をご覧ください) Free プランにしています。

    2 では Application Insights の作成をオフにしています (運用される Bot ではトラブルシュートができるように有効にすることを推奨しますが、料金が発生するため、ここではオフにします)Application Insights についてはこちらの記事をご覧ください。

     

     

    ボット チャンネル登録の作成が完了したら、ボット チャンネル登録と共に作成したアプリ ID (App ID) とシークレット (App Password/Secret) と呼ばれる情報を Bot アプリケーションに設定する必要があります。アプリ ID とシークレットはいくつかの方法で管理したり確認できますが、ボット チャンネル登録を作成したリソース グループの [デプロイ] から、対象のリソースのデプロイ名を選択し、確認する方法が簡単です。

     

     

     

    確認ができたら、アプリ ID とシークレットの情報を、作成した Bot アプリケーションのプロジェクトに設定します。C# (Visual Studio) で開発した場合は appsettings.json ファイル、Node.js (Visual Studio Code) で開発した場合は .env ファイルに以下のような入力項目があるので、それぞれ ID とパスワードを設定します。

     

    設定例

    ----------

    {

      "MicrosoftAppId": "357b822a-e833-40d0-b000-2421a2d312c6",

      "MicrosoftAppPassword": "bX7842Z%Uh$%y8g(66NL%s_[|X)]8)"

    }

    ----------

     

    続けて、ローカルで動作しているBot アプリケーションをインターネットに公開して、Azure Bot Service からもアクセスできるようにするために、ngrok というツールを利用します。ngrok は弊社が開発したツールではありませんが、インターネット上に使い方等が記載された日本語の記事も多数ありますので、そちらをご覧ください。

     

       Public URLs for testing on mobile devices.

       https://ngrok.com/

     

    また、ngrok Bot Framework Emulator を使って、ローカル以外で動作する Bot Framework を利用した Bot アプリケーション (Web App Bot を含む) にアクセスする際にも利用します。

     

    ngrok をダウンロード後、任意のパスに配置し、Bot アプリケーションをデバッグ (もしくはデバッグ無しで) 実行してホストしている (http://localhost:3978/api/messages から Bot と会話できる) 状態で、以下のようなコマンドで ngrok を実行します。

     

      >ngrok http 3978 -host-header="localhost:3978"

      *3978 は公開したいアプリケーションのポート番号です

     

      実行例

     

    これで実行結果の Forwarding に記載された URL (以下の実行例の場合、http://08707dbb.ngrok.io https://08707dbb.ngrok.io) を使って、ngrok を実行している間はインターネット上からアクセスできるようになります。

     

    最後に、ボットチャンネル登録のエンドポイントとして、上記公開した URL を登録します。これにより、そのボット チャンネル登録に登録したチャンネル経由でアクセスすると、登録したエンド ポイントの bot にメッセージが転送されるようになります。

     

    ボットチャンネル登録のエンドポイントは、Azure ポータルから対象の Bot を開き、[設定] という項目にあります。既定では Bot アプリケーションは /api/messages というパスに対して処理を行うため、ngrok で公開されている Forwarding URL + /api/messages で登録し、[保存] ボタンを押して設定を保存します。

     

     

    以上で完了になります。試したい場合は、ボット チャンネル登録のリソース画面にある [Web チャットでテスト] 画面から話しかけることができます。

     

     

     

    方法 3) Free プランの App Service (Azure Web Apps) を使って Web アプリ ボット (Web App Bot) を作成する

    ====================

    この方法は、前回の記事の Web App Bot を利用して作成する方法になります。Azure Bot Service の公式資料で言えば以下の内容になります。

     

      Azure Bot Service を使用してボットを作成する

    https://docs.microsoft.com/ja-jp/azure/bot-service/abs-quickstart?view=azure-bot-service-4.0

     

    Azure ポータル (portal.azure.com) から Web App Bot を作成していただくことになりますが、無料で試したい場合はいくつかのポイントがあります。

     

    1. Free App Service プランを事前に作成しておく

    ----------

    既定では Web App Bot を作成しようとした際、既存の App Service プランが無い場合は新規に作成しようとしますが、新規に作成する App Service プランは既定で Standard が選択されており、Standard の場合は料金が発生します。

     

    App Service の価格

    https://azure.microsoft.com/ja-jp/pricing/details/app-service/windows/

     

    もちろん Free よりは Standard の方がスペックやサポートされている機能等が多く、運用環境では Standard 以上のプランで App Service を動作させることを推奨していますが、試すだけであれば Free プランで問題ありません。

     

    App Service プランは Azure ポータルから新規にリソースを作成する際に App Service プランを検索していただくと見つかります。作成する際に、オペレーティング システムとして Windows を選択し、SKU とサイズが既定では [Standard S1] になっていますので、下図のように [Free F1] としてあらかじめ作成しておいてください。

     

     

    2. Web アプリ ボット作成時に「Bot Service の価格は Free」「テンプレートは Echo Bot」「App Service プランは 1 で作成したプラン」「Application Insights はオフ」を選択する。

    ----------

    1 が終わったら実際に Azure Bot Service Bot アプリケーションを Web アプリ ボット リソースから作成しますが、その際に上記 4 点の選択をしていただくことで、無料で Bot アプリケーションを試していただくことが可能です。

     

    以下が Web アプリ ボットの作成画面ですが、赤枠の選択がポイントです。

     

    1 では Azure Bot Service の料金 (こちらの記事をご覧ください) Free プランにしています。

    2 では Azure Storage Cognitive Service 等の他のサービスと連携しない Bot アプリケーションのサンプルを作るために、Echo Bot を選択しています。以下の例では言語として C# を選んでいますが、Node.JS を選択しても問題ありません。

    3 では事前に作成しておいた、Free プランを選択して App Service プランを選択しています。

    4 では Application Insights の作成をオフにしています (運用される Bot ではトラブルシュートができるように有効にすることを推奨しますが、料金が発生するため、ここではオフにします)Application Insights についてはこちらの記事をご覧ください。

     

     

    上記を選択して [作成] ボタンを押した後、リソースの作成が無事完了すれば、Web アプリ ボットが出来ているはずです。試したい場合は、方法 2) と同じように、Web アプリ ボットのリソース画面を開き、[Web チャットでテスト] 画面から話しかけることができます。

     

    ちなみに、作成した Echo Bot のコードは下記ドキュメントを参考にダウンロードすることも可能です。ダウンロードして、Visual Studio 等を利用してコードを変更して再度アップロードすることで、変更を反映することができます。

     

       コードをダウンロードする

       https://docs.microsoft.com/ja-jp/azure/bot-service/abs-quickstart?view=azure-bot-service-4.0#download-code

     

    上述の方法 1) の最後に記載した github 上のサンプル プログラムも、ダウンロードしたコードにサンプル プログラムの実装に変更することで利用できるので、ご参考いただければと思います。

     

     

    方法 4) Bot アプリケーションを「インターネットから」および「インターネットに」接続可能なサーバー上に配置し、Free プランのボット チャンネル登録 (Bot Channels Registration) を使って Bot アプリケーションを登録する

    ====================

    Bot Framework を利用した Bot アプリケーションを「インターネットから」および「インターネットに」接続可能な任意のサーバーに配置し、Free プランのボット チャンネル登録のエンドポイントに Bot アプリケーションの URL を登録する、という方法になります。

     

    方法 2 では、Azure Bot Service を利用して Bot アプリケーションを動作させたい場合に必要な以下の 2 点を、1 Visual Studio Visual Studio Code および ngrok を利用して実現しましたが、この方法の場合は開発した Bot アプリケーションをローカルで動作させ、ngrok を使ってインターネットに公開するのではなく、「インターネットから」および「インターネットに」接続可能な任意のサーバーに Bot アプリケーションを配置して実現することになります。

     

       1. Bot アプリケーションを動作させるサーバーを用意し、開発した Bot アプリケーションを配置する

       2. Azure Bot Service の機能 (Standard チャネルや Premium チャネル等) を利用できるように、1 で配置した Bot アプリケーションを登録する

     

    例えば、「インターネットから」および「インターネットに」接続可能な DMZ 上のサーバー上に配置する等が考えられます。

     

    Bot アプリケーションを任意のサーバーでインターネットに公開できたら、後の手順は方法 2 と変わらず、ボット チャンネル登録 (Bot Channels Registration) を作成して、App ID App Password/Secret を取得したら Bot アプリケーションに構成し、ボットチャンネル登録のエンドポイントに、Bot アプリケーションの公開 URL + /api/messages を指定していただくことになります。

     

    上記のような方法で、Bot Framework を使った Bot を試したり、Azure Bot Service の機能を使って Bot を拡張することも無料で試していただけるので、ぜひ触ってみていただければと思います。

     

    それでは、また。


    2019年9月6日 8:09
    所有者