このページでは、Google Chat アプリとデベロッパーが Chat ユーザーを特定して指定する方法について説明します。
次のいずれかを行うには、Chat 用アプリまたはデベロッパーがユーザーを指定する必要があります。
- ユーザーを@ メンションするメッセージを作成します。
- 既存のスペースにユーザーを招待または追加するか、新しいスペースにユーザーを追加します。
- Chat 用アプリと指定したユーザーの間、または 2 人のユーザー間のダイレクト メッセージを検索します。
- スペース内のユーザーのメンバーシップの詳細を取得します。
- ユーザーにプライベート メッセージを送信します。
- Google Workspace Events API を使用してユーザーをサブスクライブし、メンバーシップの変更に関するイベントを取得します。
Chat でユーザーを識別する仕組み
Google Chat API は、Chat を使用するユーザーとアプリごとに User リソースを生成します。User リソースには次のフィールドが含まれています。
name: リソース名。users/{user}の形式で指定します。{user}は一意で安定した識別子を表します。users/appは、呼び出し元の Chat 用アプリのエイリアスとして使用できます。displayName: 出力のみ。ユーザーの表示名。avatarUrl: 出力のみ。ユーザーのアバター画像の URL。email: 出力のみ。ユーザーのメール アドレスです。domainId: ユーザーの Google Workspace ドメインの固有識別子。type: ユーザーのタイプ。ユーザーが Chat 用アプリ(BOT)か、ユーザー(HUMAN)かを示します。isAnonymous: 出力のみ。trueの場合、ユーザーが削除されたか、プロフィールが表示されないことを示します。
ユーザー プロフィールの詳細と可視性ルール
ユーザー認証を使用して Messages API と Memberships API を呼び出すと、Google Chat API は User リソースにプロフィールの詳細を入力します。この API は、内部ユーザー(Google Workspace 組織内)と外部ユーザー(外部組織または個人の Google アカウント内)の両方に対して displayName、email、avatarUrl を入力します。
API がユーザー プロファイルを移入する場所の例は次のとおりです。
Messageのsender。- メッセージ
annotations内のユーザー(ユーザー@mentionsなど)。 Membershipリソース内のmember。
プライバシーと公開設定のルール
ユーザーのプライバシーを保護するため、Google Chat API はユーザーのプロフィール詳細を入力するかどうかを判断する際に、特定の可視性ルールを適用します。
- 入力済みのプロフィール: ユーザーがスペースへの招待を承諾している(スペースのメンバーである)場合、または呼び出し元のユーザーとの間に以前の親近感(ダイレクト メッセージのやり取りの履歴など)がある場合、API はプロフィールの詳細(
displayName、email、avatarUrlが存在し、isAnonymousがfalse)を入力します。 - 匿名プロファイル: メンバーではなく、通話しているユーザーとの親近感もないユーザーがスペースで言及された場合、そのユーザーのプロファイルは匿名のままになります。匿名ユーザーの場合、
isAnonymousはtrueになり、displayName、email、avatarUrlなどの詳細は省略されます。ただし、アプリ認証を使用して行われた API リクエストの場合、displayNameフィールドには常に値が入力されます。
次の JSON の例は、API レスポンスまたはインタラクション イベントで返される、プロファイルの詳細が入力された User リソースを示しています。
{
"name": "users/12345678901234567890",
"displayName": "Sasha",
"domainId": "123abc",
"avatarUrl": "https://lh3.googleusercontent.com/.../photo.jpg",
"email": "sasha@example.com",
"type": "HUMAN",
"isAnonymous": false
}
次の JSON の例は、ユーザー プロファイルの詳細が呼び出し元に表示されない匿名の User リソースを示しています。
{
"name": "users/10987654321098765432",
"type": "HUMAN",
"isAnonymous": true
}
Google Chat API への呼び出しでユーザーを指定する
ユーザーを指定するには、{user} 値に次の値を使用します。
Google Workspace 組織のユーザーの場合は、次のいずれかの方法を使用します。
- Chat API の
Userリソースのname(users/123456789など)。 - People API の
Personリソースの名前の{person_id}。ここで、resourceNameはpeople/{person_id}です。たとえば、Chat API のusers/123456789は、People API のpeople/123456789と同じ人物を表します。 - Directory API の
Userリソースのid(例: Chat API のusers/123456789)は、Directory API のusers/123456789と同じ人物を表します。 - ユーザー認証を使用して行われた API リクエストの場合、ユーザーのメールアドレスをエイリアスとして使用します(例:
users/EMAIL_USERNAME@WORKSPACE_DOMAIN.com)。
- Chat API の
外部の Google Workspace 組織のユーザー、または Google アカウントを使用するユーザーの場合は、次のいずれかを使用します。
- メール エイリアス(
users/EMAIL_USERNAME@WORKSPACE_DOMAIN.comやusers/EMAIL_USERNAME@gmail.comなど)。 - 以前の API 呼び出しまたはインタラクション イベントから取得した
Userリソースの正規name(users/12345678901234567890など)。
- メール エイリアス(
API レスポンスまたはインタラクション イベントからユーザーを特定する
API 呼び出しまたは受信イベントから返されたユーザーを特定する方法はいくつかあります。
- Messages API:
Message.senderから送信者の ID を取得するか、Message.annotations[].userMention.userから言及されたユーザーを取得します。 - Memberships API:
Membership.memberからメンバーの ID を取得します。 - インタラクション イベント: ユーザーが Chat 用アプリを操作すると、Chat は
Event.userにユーザーの ID を含むインタラクション イベントを送信します。
ユーザー認証を使用すると、Google Chat API は内部ユーザーと外部ユーザーの両方のプロフィールを入力するため、デベロッパーは Directory API を呼び出してメンバーとメッセージ送信者の名前やメールアドレスを解決する必要はありません。
関連トピック
- Google Chat ユーザーとして認証と認可を行う。
- スペースにユーザーを追加します。
- スペースのメンバーを管理する。
- メッセージでユーザーの名前リンク付き投稿をする。
Userリソースの REST API リファレンス。