チームまたはチャット メンバーをフェッチするためのボット API の変更をTeamsする
注意
API と API のTeamsInfo.getMembers``TeamsInfo.GetMembersAsync
非推奨プロセスが開始されました。 最初は、1 分間に 5 つの要求に大きく調整され、チームあたり最大 10,000 人のメンバーが返されます。 これにより、チーム のサイズが大きくなると、完全な名簿は返されません。
バージョン 4.10 以降の Bot Framework SDK に更新し、ページ分割された API エンドポイントまたは TeamsInfo.GetMemberAsync
単一ユーザー API に切り替える必要があります。 これは、古い SDK が membersAdded イベント中にこれらの API を呼び出すので、これらの API を直接使用していない場合でも、ボットにも適用されます。 今後の変更の一覧を表示するには、「 API の変更」を参照してください。
現在、チャットまたはチームの 1 人以上のメンバーの情報を取得する場合は、C# または TypeScript または TeamsInfo.getMembers
Node.js API のMicrosoft Teams ボット API をTeamsInfo.GetMembersAsync
使用できます。 詳細については、 フェッチ名簿またはユーザー プロファイルに関するトピックを参照してください。
これらの API には、次の欠点があります。
- 大規模なチームでは、パフォーマンスが低下し、タイムアウトが発生する可能性が高くなります。Teamsが 2017 年初頭にリリースされて以降、最大チーム サイズは大幅に増加しています。
GetMembersAsync
メンバー リスト全体を返すかgetMembers
、API 呼び出しが大規模なチームに戻るまでに時間がかかり、呼び出しがタイムアウトし、もう一度やり直す必要があるのが一般的です。 - 1 人のユーザーのプロファイルの詳細を取得するのは困難です。1 人のユーザーのプロファイル情報を取得するには、メンバー リスト全体を取得し、目的のユーザーを検索する必要があります。 Bot Framework SDK には、よりシンプルにするためのヘルパー関数がありますが、効率的ではありません。
組織全体のチームの導入により、これらの API をOffice 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
。注意
v3 または v4 では、それぞれ 3.30.2 または 4.8 以降の最新のポイント リリースにアップグレードすることをお勧めします。
1 人のユーザーのプロファイル情報を取得するための新しい API が作成
TeamsInfo.GetMemberAsync
されます。 チームまたはチャットの ID と UPNuserPrincipalName
(Microsoft Azure Active Directory (Azure AD) オブジェクト IDobjectId
、またはTeamsユーザー ID をid
パラメーターとして受け取り、そのユーザーのプロファイル情報を返します。注意
objectId
は、Bot Framework メッセージのオブジェクトで呼び出されたものとActivity
一致するようにaadObjectId
変更されます。 新しい 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 では、2022 年後半からプロパティとemail
プロパティを返userPrincipalName
すことはできません。 ボットは、アクセス トークンと共にGraph APIを使用して情報を取得する必要があります。