🤖

Azure Bot Service を使ってみる

2022/07/05に公開

はじめに

以下のデプロイガイドをもとに Azure Bot Service を使ってみましたが、いくつか詰まるところがあったので、メモ残しておきます。
https://docs.microsoft.com/ja-jp/azure/bot-service/bot-service-quickstart-create-bot?view=azure-bot-service-4.0&tabs=csharp%2Cvs
https://docs.microsoft.com/ja-jp/azure/bot-service/abs-quickstart?view=azure-bot-service-4.0&tabs=userassigned
https://docs.microsoft.com/ja-jp/azure/bot-service/tutorial-publish-a-bot?view=azure-bot-service-4.0&tabs=csharp

ローカルで Bot を作る

今回は VS Code/CLI でやります。まず事前に NET Core SDK ダウンロード バージョン 3.1 以降をダウンロードしてインストールします。問題なければ以下でコマンドでバージョンが確認できます。

dotnet --version


3 つの Bot Framework C# テンプレート (エコー、コア、空のボット テンプレート) をインストールします。

dotnet new -i Microsoft.Bot.Framework.CSharp.EchoBot
dotnet new -i Microsoft.Bot.Framework.CSharp.CoreBot
dotnet new -i Microsoft.Bot.Framework.CSharp.EmptyBot

以下コマンドで echo bot を作成します。このとき、現在操作しているディレクトリに各種ソースがダウンロードされます。

dotnet new echobot -n <your-bot-name>


作成したecho bot のディレクトリに移動し、Bot を起動します。

cd <your-bot-name>
dotnet run


Bot Framework Emulator で動作確認します。インストーラは以下から入手できます。
https://github.com/Microsoft/BotFramework-Emulator/releases/


Bot Framework Emulator を起動して、[Open Bot] をクリック、Bot URL に "http://localhost:3978/api/messages" を入力、その他は空欄で [Connect] をクリックします。


メッセージを入力して、Echo されれば正常に動作しています。

Bot Service と App Service をデプロイ

次に Azure 上にデプロイをします。
まず Bot Service を作成します。こちらはガイドの通りなので、説明は割愛します。
https://docs.microsoft.com/ja-jp/azure/bot-service/abs-quickstart?view=azure-bot-service-4.0&tabs=userassigned#create-the-resource

次に Bot の ID 情報を確認して、先ほどローカルで展開した Bot の 「appsettings.json」に情報を追記します。今回はユーザー割り当てマネージド ID を使います。

プロパティ
MicrosoftAppType UserAssignedMSI
MicrosoftAppId ユーザー割り当てマネージド ID のクライアント ID
MicrosoftAppPassword 空白のまま
MicrosoftAppTenantId テナント ID

値は Azure Bot の[構成] から確認できます。


追記のイメージはこちらです。


次に App Service を準備します。こちらは、.NET Core で作成すれば、あとの構成は任意かと思います。相互に操作できるように Bot Service と同じマネージド ID を使えるように割り当てます。


App Service にローカルの Bot をデプロイする準備をします。 CLI で Bot のルートディレクトリに移動し、以下コマンドを実行します。

az login
az account set --subscription <subscription-id>
az bot prepare-deploy --lang Csharp --code-dir "." --proj-file-path ".\<your-bot-name>.csproj


以下コマンドでルートディレクトリ配下のファイルを zip 圧縮します。

Compress-Archive -Path .\* -DestinationPath .\src.zip


以下コマンドで App Service に zip デプロイします。

az webapp deployment source config-zip --resource-group "<resource-group-name>" --name "<name-of-web-app>" --src "<project-zip-path>"


デプロイに成功している場合、 App Service の URL にアクセスすると、以下のページが表示されます。


Bot Service の [構成] を開き、メッセージングエンドポイントに "https://<App Service の FQDN>/api/messages" を入力します。

動作確認

ここまでデプロイがうまくいっていると、[Web チャットでテスト] から動作確認が可能です。以下のように echo bot が動作していれば正常です。

Discussion