メディアを添付ファイルとしてアップロード (original) (raw)
このガイドでは、Google Chat API の Media リソースで upload メソッドを使用して、メディア(ファイル)を Google Chat にアップロードし、メッセージに添付する方法について説明します。
ユーザーがアプリにメッセージを送信すると、Google Chat は MESSAGE インタラクション イベントをディスパッチします。アプリが受け取るインタラクション イベントには、リクエスト本文が含まれます。これは、添付ファイルを含むインタラクション イベントを表す JSON ペイロードです。添付ファイルのデータは、添付ファイルがアップロードされたコンテンツ(ローカル ファイル)か、ドライブに保存されているファイルかによって異なります。Media リソースは、画像、動画、ドキュメントなど、Google Chat にアップロードされたファイルを表します。Attachment リソースは、メッセージに添付されたメディア(ファイル)のインスタンスを表します。Attachment リソースには、添付ファイルが保存されている場所など、添付ファイルに関するメタデータが含まれます。
前提条件
Python
- Google Chat へのアクセス権を持つ Business または Enterprise の Google Workspace アカウント。
- 環境を設定します。
- Google Cloud プロジェクトを作成します。
- OAuth 同意画面を構成する。
- Chat 用アプリの名前、アイコン、説明を使用して、Google Chat API を有効にして構成します。
- Python Google API クライアント ライブラリをインストールします。
- デスクトップ アプリケーション用の OAuth クライアント ID 認証情報を作成します。このガイドのサンプルを実行するには、認証情報を
credentials.jsonという名前の JSON ファイルとしてローカル ディレクトリに保存します。
- ユーザー認証をサポートする認可スコープを選択します。
添付ファイルとしてアップロードする
メディアをアップロードしてメッセージに添付するには、リクエストで次の情報を渡します。
chat.messages.createまたはchat.messages認証スコープを指定します。- 次の Google Chat メソッドを呼び出します。
- ファイルをアップロードするには、Media リソースの upload メソッドを呼び出します。
parentは、ファイルをホストするスペースのスペース名に設定します。body(リクエストの本文)で、filenameをアップロードされたファイル添付ファイルの名前に設定します。- アップロードするファイルのインスタンスとして
media_bodyを設定します。
- アップロードしたファイルを添付してメッセージを作成するには、Messages リソースの create メソッドを呼び出します。
- Media リソースで upload メソッドを呼び出したレスポンスとして
attachmentを設定します。attachmentフィールドにはリストを指定できます。
- Media リソースで upload メソッドを呼び出したレスポンスとして
- ファイルをアップロードするには、Media リソースの upload メソッドを呼び出します。
次の例では、PNG 画像ファイルをアップロードしてメッセージに添付します。
Python
- 作業ディレクトリに
chat_media_and_attachment_upload.pyという名前のファイルを作成します。 chat_media_and_attachment_upload.pyに次のコードを含めます。
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
from googleapiclient.http import MediaFileUpload
# 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 uploads a file as media, creates a message, and
attaches the file to the message.
'''
# Authenticate with Google Workspace
# and get user authorization.
flow = InstalledAppFlow.from_client_secrets_file(
'credentials.json', SCOPES)
creds = flow.run_local_server()
# Build a service endpoint for Chat API.
service = build('chat', 'v1', credentials=creds)
# Upload a file to Google Chat.
media = MediaFileUpload('test_image.png', mimetype='image/png')
# Create a message and attach the uploaded file to it.
attachment_uploaded = service.media().upload(
# The space to upload the attachment 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',
# The filename of the attachment, including the file extension.
body={'filename': 'test_image.png'},
# Media resource of the attachment.
media_body=media
).execute()
print(attachment_uploaded)
# Create a Chat message with attachment.
result = service.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.
#
# Must match the space name that the attachment is uploaded to.
parent='spaces/SPACE',
# The message to create.
body={
'text': 'Hello, world!',
'attachment': [attachment_uploaded]
}
).execute()
print(result)
if __name__ == '__main__':
main() - コードで、
SPACEを添付ファイルをアップロードするスペースの名前に置き換えます。スペースの名前は、Chat API の spaces.list メソッドまたはスペースの URL から取得できます。 - 作業ディレクトリで、サンプルをビルドして実行します。
python3 chat_media_and_attachment_upload.py Chat API は、アップロードされたファイルの詳細を含む attachmentDataRef を含むレスポンス本文を返します。
制限事項と考慮事項
ファイルをアップロードしてメッセージに添付する際は、次の制限事項と考慮事項に注意してください。
- アップロードできるファイルの最大サイズは 200 MB です。
- 一部のファイル形式はサポートされていないため、アップロードできません。詳しくは、Google Chat でブロックされるファイルの種類をご覧ください。
- メッセージにはアクセサリ ウィジェットを含めないでください。
- メディアを添付ファイルとしてダウンロードする
- メッセージの添付ファイルに関するメタデータを取得する