チームまたはチャット メンバーをフェッチするための Teams ボット API の変更
注:
API と TeamsInfo.GetMembersAsync
API のTeamsInfo.getMembers
非推奨プロセスが開始されました。 最初は、1 分あたり 5 つの要求に大幅に調整され、チームごとに最大 10,000 人のメンバーが返されます。 これにより、チーム サイズが大きくなると、完全な名簿が返されません。
Bot Framework SDK のバージョン 4.10 以降に更新し、ページ分割された API エンドポイントまたはシングル ユーザー API に TeamsInfo.GetMemberAsync
切り替える必要があります。 これは、古い SDK が メンバーの追加 イベント中にこれらの API を呼び出すので、これらの API を直接使用していない場合でもボットにも適用されます。 今後の変更の一覧を表示するには、「 API の変更」を参照してください。
現在、チャットまたはチームの 1 人以上のメンバーの情報を取得する場合は、C# 用または TypeScript API TeamsInfo.GetMembersAsync
または TeamsInfo.getMembers
Node.js API 用の Microsoft Teams ボット API を使用できます。 詳細については、「 名簿またはユーザー プロファイルをフェッチする」を参照してください。
これらの API には、次の欠点があります。
- 大規模なチームの場合、パフォーマンスが低下し、タイムアウトが発生する可能性が高くなります。Teams が 2017 年初めにリリースされて以来、チームの最大サイズはかなり大きくなりました。
GetMembersAsync
メンバー リスト全体を返す場合、getMembers
大規模なチームに対して API 呼び出しが返されるまでに長い時間がかかり、呼び出しがタイムアウトになるのは一般的であり、もう一度やり直す必要があります。 - 1 人のユーザーのプロファイルの詳細を取得するのは困難です。1 人のユーザーのプロファイル情報を取得するには、メンバー リスト全体を取得し、目的のユーザーを検索する必要があります。 Bot Framework SDK には、よりシンプルにするためにヘルパー関数がありますが、効率的ではありません。
organization幅広いチームの導入により、これらの API を Microsoft 365 のプライバシー制御により適切に調整する必要があります。 大規模なチームで使用されるボットは、Microsoft Graph のアクセス許可と同様の基本的なプロファイル情報を User.ReadBasic.All
取得できます。 テナント管理者は、テナントで使用できるアプリとボットを十分に制御できますが、これらの設定は Microsoft Graph とは異なります。
次のコードは、Teams ボット API によって返される内容のサンプル JSON 表現を提供します。
[{
"id": "29:1GcS4EyB_oSI8A88XmWBN7NJFyMqe3QGnJdgLfFGkJnVelzRGos0bPbpsfJjcbAD22bmKc4GMbrY2g4JDrrA8vM06X1-cHHle4zOE6U4ttcc",
"name": "Anon1 (Guest)",
"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47",
"userRole": "anonymous"
}, {
"id": "29:1bSnHZ7Js2STWrgk6ScEErLk1Lp2zQuD5H2qQ960rtvstKp8tKLl-3r8b6DoW0QxZimuTxk_kupZ1DBMpvIQQUAZL-PNj0EORDvRZXy8kvWk",
"objectId": "76b0b09f-d410-48fd-993e-84da521a597b",
"givenName": "John",
"surname": "Patterson",
"email": "johnp@fabrikam.com",
"userPrincipalName": "johnp@fabrikam.com",
"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47",
"userRole": "user"
}, {
"id": "29:1URzNQM1x1PNMr1D7L5_lFe6qF6gEfAbkdG8_BUxOW2mTKryQqEZtBTqDt10-MghkzjYDuUj4KG6nvg5lFAyjOLiGJ4jzhb99WrnI7XKriCs",
"objectId": "6b7b3b2a-2c4b-4175-8582-41c9e685c1b5",
"givenName": "Rick",
"surname": "Stevens",
"email": "Rick.Stevens@fabrikam.com",
"userPrincipalName": "rstevens@fabrikam.com",
"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47",
"userRole": "user"
}]
API の変更
今後の API の変更を次に示します。
- チャットまたはチームのメンバーのプロファイル情報を取得するための新しい API が作成
TeamsInfo.GetPagedMembersAsync
されます。 この API は、Bot Framework バージョン 4.8 以降の SDK で使用できるようになりました。 その他のすべてのバージョンで開発する場合は、 メソッドを使用しますGetConversationPagedMembers
。
注:
次のように、Microsoft Bot Framework SDK の最新バージョンにアップグレードします。
- Bot Framework SDK v3: バージョン 3.30.2 以降にアップグレードします。
- Bot Framework SDK v4: バージョン 4.8 以降にアップグレードします。
1 人のユーザーのプロファイル情報を取得するための新しい API が作成
TeamsInfo.GetMemberAsync
されます。 これは、チームまたはチャットの ID と、Microsoft Entra オブジェクト ID、または Teams ユーザー IDobjectId
id
をパラメーターとして取得し、そのユーザーのプロファイル情報を返す UPNuserPrincipalName
です。注:
objectId
が にaadObjectId
変更され、Bot Framework メッセージのActivity
オブジェクトで呼び出される内容と一致します。 新しい API は、Bot Framework SDK のバージョン 4.8 以降で使用できます。 Teams SDK 拡張機能 Bot Framework 3.x でも使用できます。 一方、 REST エンドポイントを使用できます。TeamsInfo.GetMembersAsync
C# とTeamsInfo.getMembers
TypeScript または Node.js では正式に非推奨です。 新しい API が使用可能になったら、それを使用するようにボットを更新する必要があります。 これは、 これらの API が使用する基になる REST API にも適用されます。2022 年後半までに、ボットはチャットまたはチームのメンバーの または
email
プロパティを事前に取得userPrincipalName
できません。 ボットは、Graph API を使用して必要な情報を取得する必要があります。 新しいGetConversationPagedMembers
API は、 プロパティとemail
プロパティをuserPrincipalName
2022 年後半から返すことはできません。注:
Graph APIとアクセス トークンを使用して情報を取得することをお勧めします。
関連項目
Platform Docs
フィードバック
https://aka.ms/ContentUserFeedback。
近日公開予定: 2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub イシューを段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、以下を参照してください:フィードバックの送信と表示