このガイドでは、Google Chat API の
messages.create()
メソッドを使用して、次のいずれかを行います。
- テキスト、カード、インタラクティブなウィジェットを含むメッセージを送信します。
- 特定の Chat ユーザーに非公開でメッセージを送信します。
- メッセージ スレッドを開始するか、スレッドに返信します。
- メッセージに名前を付けて、他の Chat API で指定できるようにする できます。
<ph type="x-smartling-placeholder">
Chat アプリでは、messages.create()
メソッドを呼び出すだけでなく、
ユーザーの操作に対するメッセージを作成、送信して、
ユーザーがスペースに Chat 用アプリを追加した後のウェルカム メッセージを
選択します。Chat アプリは、やり取りに応答する際に、他の参加者の
メッセージ機能のタイプ(インタラクティブなダイアログ、リンク プレビューなど)
インターフェースです。ユーザーに返信する場合、Chat アプリは新しい
Chat API を呼び出すことなく、メッセージを同期的に送信できます。学習内容
やり取りへのメッセージの送信については、
Google Chat アプリとのやり取りを受信して応答する
Chat API で作成されたメッセージの表示とアトリビューションの仕組み
messages.create()
メソッドは、次のコマンドを使用して呼び出すことができます。
アプリの認証
ユーザー認証があります。
Chat によってメッセージ送信者のアトリビューションが異なる
何を使用するかを選択できます
Chat アプリとして認証すると、 Chat アプリがメッセージを送信します。
<ph type="x-smartling-placeholder">App
が表示されます。ユーザーとして認証すると、Chat アプリは ユーザーの代わりに メッセージを送信できますChat ではさらに、 メッセージに名前が表示されます。
<ph type="x-smartling-placeholder">また、認証タイプによって、どのメッセージ機能とインターフェースが メッセージに含めることができます。アプリ認証では Chat アプリは、リッチテキスト、 カードベースのインターフェース、 インタラクティブなウィジェットがあります Chat ユーザーはメッセージ内でのみテキストを送信できるため、 ユーザー認証を使用してメールを作成する場合、テキストのみを含めるようにします。 Google Chat 向けの 機能の詳細については、 Google Chat メッセージの概要
このガイドでは、いずれかの認証タイプを使用してメッセージを送信する方法について説明します。 やり取りできます
前提条件
Python
- 企業または大企業 以下へのアクセス権を持つ Google Workspace アカウント Google Chat。
- 環境を設定します。
<ph type="x-smartling-placeholder">
- </ph>
- Google Cloud プロジェクトを作成します。
- OAuth 同意画面を構成します。
- Google Chat API を有効にして構成する。名前、 アプリのアイコン、説明を入力します。
- Python Google API クライアント ライブラリ。
- Google Chat API での認証方法に基づいてアクセス認証情報を作成する
request:
<ph type="x-smartling-placeholder">
- </ph>
- Chat ユーザーとして認証するには、
OAuth クライアント ID を作成する
認証情報を JSON ファイルとして保存し、
client_secrets.json
をローカル ディレクトリに移動します。 - Chat 用アプリとして認証するには、
サービス アカウントの作成
認証情報を JSON ファイルとして保存し、
credentials.json
。
- Chat ユーザーとして認証するには、
OAuth クライアント ID を作成する
認証情報を JSON ファイルとして保存し、
- <ph type="x-smartling-placeholder"></ph> ユーザーとして認証するか、ユーザーとして認証するかに基づいて、承認スコープを選択します。 Chat アプリ。
- 認証されたユーザーまたはスペースでやり取りされる Google Chat スペース 1 人です。ID プロバイダとして認証するには、 Chat 用アプリで Chat アプリをスペースに追加できます。
ユーザーの代わりにテキスト メッセージを送信する
このセクションでは、 ユーザー認証。 ユーザー認証を使用すると、メッセージのコンテンツにテキストしか メッセージ機能は、Google Chat でのみ利用できる カード インターフェースやインタラクティブなウィジェットなどのチャットアプリ。
ユーザー認証を使用して messages.create()
を呼び出すには、
次のフィールドが返されます。
- 認可スコープ
サポートしています。次のサンプルでは、
chat.messages.create
スコープ。 Space
リソース。このリソースには、 選択します。認証されたユーザーは、 選択します。Message
作成します。メッセージの内容を定義するには、text
表示されます。
必要に応じて、次の情報を含めることができます。
messageId
フィールド。これにより、 他の API リクエストで使用するメッセージに名前を付けます。thread.threadKey
フィールドとmessageReplyOption
フィールド スレッドを開始または返信する。スペースが 使用している場合、このフィールドは無視されます。
ユーザーの代わりにテキスト メッセージを送信するには、次の手順を行います。
Python
- 作業ディレクトリに、先ほど作成した
chat_create_message_user.py
。 chat_create_message_user.py
に次のコードを含めます。import os.path from google.auth.transport.requests import Request from google.oauth2.credentials import Credentials from google_auth_oauthlib.flow import InstalledAppFlow from googleapiclient.discovery import build from googleapiclient.errors import HttpError # Define your app's authorization scopes. # When modifying these scopes, delete the file token.json, if it exists. SCOPES = ["https://www.googleapis.com/auth/chat.messages.create"] def main(): ''' Authenticates with Chat API via user credentials, then creates a text message in a Chat space. ''' # Start with no credentials. creds = None # Authenticate with Google Workspace # and get user authorization. flow = InstalledAppFlow.from_client_secrets_file( 'client_secrets.json', SCOPES) creds = flow.run_local_server() # Build a service endpoint for Chat API. chat = build('chat', 'v1', credentials=creds) # Use the service endpoint to call Chat API. result = chat.spaces().messages().create( # The space to create the message in. # # Replace SPACE with a space name. # Obtain the space name from the spaces resource of Chat API, # or from a space's URL. parent='spaces/SPACE', # Optional. Sets custom ID for the message to use in other requests. messageId='client-myfirstusermessage', # The text message to create. body={ 'text': '👋 🌎Hello world! Text messages can contain things like:\n\n' + '* Hyperlinks 🔗\n' + '* Emojis 😄🎉\n' + '* Mentions of other Chat users `@` \n\n' 'For details, see the <https://developers.google.com/workspace/chat/format-messages|Chat API developer documentation>.' } ).execute() # Prints details about the created message. print(result) if __name__ == '__main__': main()
SPACE
は、スペースの ID に置き換えます。name
表示されます。ID を取得するには、spaces.list()
メソッド またはスペースの URL から取得できます。作業ディレクトリでサンプルをビルドして実行します。
python3 chat_create_message_user.py
URL を求められたら、URL を開いて スペースで使用したスコープに基づいて リクエストできます。
Chat アプリがメッセージを作成し、認証済みの
ユーザーがスペースにメッセージを投稿します。コマンドライン インターフェースで、
Chat API は、新しいメッセージの
Message
リソース。
Chat アプリとしてメッセージを送信する
このセクションでは、テキスト、カード、メッセージが含まれる インタラクティブなアクセサリ ウィジェットを アプリの認証。
アプリの認証を使用して messages.create()
を呼び出すには、
次のフィールドが返されます。
chat.bot
認可スコープ。Space
リソース。このリソースには、 選択します。Chat 用アプリは、 メンバーの追加と削除ができます。Message
作成します。メッセージの内容を定義するには、 リッチテキスト (text
), 1 つ以上のカード インターフェース (cardsV2
), または両方を選択できます
必要に応じて、次の情報を含めることができます。
- 含める
accessoryWidgets
フィールド メッセージの下部にあるインタラクティブなボタン。 privateMessageViewer
フィールド。 指定したユーザーに非公開でメッセージを送信します。messageId
フィールド。これにより、 他の API リクエストで使用するメッセージに名前を付けます。thread.threadKey
フィールドとmessageReplyOption
フィールド スレッドを開始または返信する。スペースが 使用している場合、このフィールドは無視されます。
メッセージの最大サイズ(テキストやカードを含む)は 32,000 バイトです。 このサイズを超えるメッセージを送信するには、Chat 用アプリで 複数のメッセージを送信する必要があります。
スペースが含まれている Chat アプリとして投稿されたメッセージを送信するには、 カード、メッセージ下部のクリック可能なボタン 手順は次のとおりです。
Python
- 作業ディレクトリに、先ほど作成した
chat_create_message_app.py
。 chat_create_message_app.py
に次のコードを含めます。from apiclient.discovery import build from google.oauth2 import service_account # Specify required scopes. SCOPES = ['https://www.googleapis.com/auth/chat.bot'] # Specify service account details. CREDENTIALS = service_account.Credentials.from_service_account_file( 'credentials.json', scopes=SCOPES) # Build the URI and authenticate with the service account. chat = build('chat', 'v1', credentials=CREDENTIALS) # Specify the Chat space where the message is posted. Obtain the ID # from the resource name, or from the space's URL. SPACE = 'spaces/SPACE' # Create a Chat message. result = chat.spaces().messages().create( # The Chat space. parent=SPACE, # Optional. Sets custom ID for the message to use in other requests. messageId='client-myfirstappmessage', # The message to create with text, a card, and a button at the # bottom of the message. body= { 'text': '👋 🌎Hello world! I created this message by calling the Chat API\'s `messages.create()` method.', 'cardsV2': [{ 'cardId': 'myCardId', 'card': { 'header': { 'title': 'About this message', 'imageUrl': 'https://fonts.gstatic.com/s/i/short-term/release/googlesymbols/info/default/24px.svg', 'imageType': 'CIRCLE' }, "sections": [ { "header": "Contents", "widgets": [ { "textParagraph": { "text": "🔡 <b>Text</b> which can include hyperlinks 🔗, emojis 😄🎉, and @mentions 🗣️." }}, { "textParagraph": { "text": "🖼️ A <b>card</b> to display visual elements and request information such as text 🔤, dates and times 📅, and selections ☑️." }}, { "textParagraph": { "text": "👉🔘 An <b>accessory widget</b> which adds a button to the bottom of a message." }}, ] }, { "header": "What's next", "collapsible": True, "widgets": [ { "textParagraph": { "text": "❤️ <a href='https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces.messages.reactions/create'>Add a reaction</a>." }}, { "textParagraph": { "text": "🔄 <a href='https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces.messages/patch'>Update</a> or ❌ <a href='https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces.messages/delete'>delete</a> the message." }}, { "textParagraph": { "text": '💡 <b>Pro tip</b>: To specify the message in other API requests, use its custom name: <i>' + SPACE + '/messages/client-myfirstappmessage</i>.' }} ] } ]} }], "accessoryWidgets": [ { "buttonList": { "buttons": [ { "text": "View documentation", "altText": "Opens a new browser tab and navigates to the Google Chat developer documentation website.", "icon": { "material_icon": { "name": "link" } }, "onClick": { "openLink": { "url": "https://developers.google.com/workspace/chat/create-messages" } } } ] } } ] } ).execute() print(result)
SPACE
は、スペースの ID に置き換えます。name
表示されます。ID を取得するには、spaces.list()
メソッド またはスペースの URL から取得できます。作業ディレクトリでサンプルをビルドして実行します。
python3 chat_create_message_app.py
Chat アプリは、メッセージを作成してメッセージを
選択します。コマンドライン インターフェースでは、Chat API が
新しい Pod の
Message
リソース。
メッセージの下部にインタラクティブなウィジェットを追加する
前のセクションのコードサンプルでは、 Chat 用アプリのメッセージでは、画面上部にクリック可能なボタンが表示され、 これはアクセサリ ウィジェットと呼ばれます。アクセサリ ウィジェット メッセージ内のテキストやカードの後に表示されます。これらのウィジェットを使用して ユーザーがさまざまな方法でメッセージに反応できます。たとえば、次のような方法です。
- メッセージの正確性または満足度を評価してください。
- メッセージまたは Chat アプリに関する問題を報告します。
- ドキュメントなどの関連コンテンツへのリンクを開きます。
- Chat アプリから類似のメッセージを閉じる、またはスヌーズする 表示されなくなります。
アクセサリ ウィジェットを追加するには、
accessoryWidgets[]
フィールドをフィールドに追加して、リクエストするウィジェットを 1 つ以上
追加できます
次の図に、メッセージに ユーザーがエクスペリエンスを評価できるアクセサリ ウィジェットを含むテキスト メッセージ やり取りできます。
<ph type="x-smartling-placeholder">![アクセサリ ウィジェット。](https://developers-dot-devsite-v2-prod.appspot.com/static/workspace/chat/images/message-accessory-widgets-reference.png?authuser=0000&hl=ja)
以下は、テキスト メッセージを作成するリクエストの本文を示しています。
2 つのアクセサリ ボタン。ユーザーがボタンをクリックすると、対応する
関数(doUpvote
など)がインタラクションを処理します。
"text": "Rate your experience with this Chat app.",
"accessoryWidgets": [
{
"buttonList": {
"buttons": [
{
"icon": {
"material_icon": {
"name": "thumb_up"
}
},
"color": {
"red": 0,
"blue": 255,
"green": 0
},
"onClick": {
"action": {
"function": "doUpvote",
}
}
},
{
"icon": {
"material_icon": {
"name": "thumb_down"
}
},
"color": {
"red": 0,
"blue": 255,
"green": 0
},
"onClick": {
"action": {
"function": "doDownvote",
}
}
}
]
}
}
]
非公開でメッセージを送信する
Chat アプリは非公開でメッセージを送信できるため、 メッセージはスペース内の特定のユーザーのみに表示されます。特定の Chat アプリがプライベート メッセージを送信します。 は、メッセージが自分だけに表示されていることをユーザーに通知するラベルを表示します。
Chat API を使用してメッセージを非公開で送信するには、
privateMessageViewer
必ず指定してください。ユーザーを指定するには、値を
User
リソース。
Chat ユーザーを表します。また、
name
フィールド
User
リソース。次の例をご覧ください。
{
"text": "Hello private world!",
"privateMessageViewer": {
"name": "users/USER_ID"
}
}
USER_ID
を交換
(例: 12345678987654321
)または一意の ID に置き換えます。
hao@cymbalgroup.com
。ユーザーの指定について詳しくは、このモジュールの
Google Chat ユーザーを特定して指定する。
メッセージを非公開で送信するには、リクエストで次の項目を省略する必要があります。
スレッドを開始または返信する
スレッドを使用するスペースの場合: 新しいメッセージがスレッドを開始するか、新しいメッセージが 削除することもできます。
デフォルトでは、Chat API を使用して作成したメッセージからは、 使用します。スレッドを特定して後で返信できるように、 あります。
- リクエストの本文で、
thread.threadKey
表示されます。 - クエリ パラメータを指定する
messageReplyOption
を使用して、鍵がすでに存在する場合にどうなるかを判断します。
既存のスレッドに返信するメッセージを作成するには:
- リクエストの本文に
thread
フィールドを含めます。設定すると、 「threadKey
作成します。それ以外の場合は、name
表示されます。 - クエリ パラメータ
messageReplyOption
を指定します。
次の JSON は、テキスト メッセージのリクエスト本文の例を示しています。
キー helloWorldThread
を持つスレッドを開始または返信します。
{
'thread': {
'threadKey': 'helloWorldThread',
},
'text': '👋 🌎Hello world!'
}
メッセージに名前を付ける
今後の API 呼び出しでメッセージを取得または指定するには、メッセージに
messages.create()
リクエストに messageId
フィールドを設定します。
メッセージに名前を付けることで、
メッセージのリソース名からシステムによって割り当てられた ID(
name
フィールド)。
たとえば、get()
メソッドを使用してメッセージを取得するには、
して、取得するメッセージを指定します。リソース名は
spaces/{space}/messages/{message}
の形式。{message}
は以下を表します。
システムによって割り当てられた ID、または
表示されます。
メッセージに名前を付けるには、カスタム ID を
messageId
指定する必要があります。messageId
フィールドは、次の値を設定します。
clientAssignedMessageId
Message
リソースのフィールド。
メッセージに名前を付けることができるのは、メッセージの作成時のみです。名前やメールアドレスを 既存のメッセージのカスタム ID を変更できます。カスタム ID は次の条件を満たす必要があります。 要件:
client-
で始まります。たとえば、client-custom-name
は有効なカスタム ID になりますが、custom-name
は一致しません。- 63 文字以下で、英小文字、数字、 使用できます。
- スペース内で一意である。Chat アプリでは、 同じカスタム ID を使用する必要があります。
トラブルシューティング
Google Chat アプリまたは card がエラーを返した場合、 Chat のインターフェースに「エラーが発生しました」というメッセージが表示されている。 または「リクエストを処理できません」が表示されます。場合によっては、Chat の UI が エラー メッセージは表示されませんが、Chat 用アプリまたは 予期しない結果が生じた場合たとえば、カード メッセージに 表示されます。
Chat UI にエラー メッセージが表示されない場合がありますが、 エラーの修正に役立つ、わかりやすいエラー メッセージとログデータ Chat 用アプリのエラーロギングが有効になっている場合。表示のヘルプについては、 エラーの修正について詳しくは、このモジュールの Google Chat のエラーのトラブルシューティングと修正
関連トピック
- カードビルダーを使用: Chat 用アプリ用の JSON カード メッセージの設計とプレビュー。
- メッセージの書式を設定する。
- メッセージの詳細を取得する
- スペース内のメッセージを一覧表示する
- メッセージを更新する。
- メールを削除する。
- Google Chat のメッセージでユーザーを特定する
- 着信 Webhook を使用して Google Chat にメッセージを送信する