"Build Bot Framework bots with Microsoft Graph" を試した

docs.microsoft.com

おそらく仕様が変わっていて、何か所か悩むところがあったので忘れないように残す。

Create a Bot Channels registration

タイトルが Bot Channels Registration になっているけど手順は Azure Bot

Azure Bot 作成時にシングルテナント、マルチテナント、マネージド ID の選択肢が出てくる。 手順通りに進めるならマルチテナント。シングルテナントとマネージド ID は前は選べなかったっぽい。

手順 13 以降が Bot Channel Registration の設定になっているけど、この手順は不要。

Add Microsoft identity platform authentication

appsettings.json が若干違った。

{
  "MicrosoftAppType": "",
  "MicrosoftAppId": "YOUR_BOT_APP_ID_HERE",
  "MicrosoftAppPassword": "YOUR_BOT_CLIENT_SECRET_HERE",
  "MicrosoftAppTenantId":  "YOUR_TENANT_ID_HERE",
  "ConnectionName": "GraphBotAuth"
}

コードをそのまま使うとログアウトに失敗する。(BotFrameworkAdapter にキャストできない。)

以下 2 行を

var botAdapter = (BotFrameworkAdapter)innerDc.Context.Adapter;
await botAdapter.SignOutUserAsync(innerDc.Context, ConnectionName, null, cancellationToken);

以下のように修正する。

var userTokenClient = innerDc.Context.TurnState.Get<UserTokenClient>();
await userTokenClient.SignOutUserAsync(innerDc.Context.Activity.From.Id, ConnectionName, innerDc.Context.Activity.ChannelId, cancellationToken).ConfigureAwait(false);

docs.microsoft.com

Test authentication

ここで指定する Microsoft App ID は Graph Calendar Bot Auth ではなく Azure Bot 作成時に作られたアプリの方の Application ID。

Endpoint URL が https になっているが正しくは http。

謎のエラーが出たが Bot Framework Emulator と ngrok を最新化すると解消。

認証用のコードを入力する画面は表示されない。

Get the logged on user

ユーザーに写真が設定されていないとユーザー取得に失敗する。