این راهنما نحوه استفاده از متد upload در منبع Media از API چت گوگل برای آپلود رسانه (یک فایل) در چت گوگل و سپس پیوست کردن آن به یک پیام را توضیح میدهد.
وقتی کاربر پیامی به برنامه شما ارسال میکند، گوگل چت یک رویداد تعاملی MESSAGE ارسال میکند. رویداد تعاملی که توسط برنامه شما دریافت میشود شامل یک بدنه درخواست است که همان JSON payload است که رویداد تعاملی، از جمله هرگونه پیوست، را نشان میدهد. دادههای موجود در پیوست بسته به اینکه آیا پیوست محتوای آپلود شده (یک فایل محلی) است یا فایلی ذخیره شده در Drive، متفاوت است. منبع Media نشاندهنده فایل آپلود شده در گوگل چت، مانند تصاویر، ویدیوها و اسناد است. منبع Attachment نشاندهنده نمونهای از رسانه - یک فایل - است که به یک پیام متصل شده است. منبع Attachment شامل ابردادههای مربوط به پیوست، مانند محل ذخیره آن است.
پیشنیازها
پایتون
- یک حساب کاربری تجاری یا سازمانی Google Workspace با دسترسی به Google Chat .
- محیط خود را تنظیم کنید:
- یک پروژه گوگل کلود ایجاد کنید .
- صفحه رضایت OAuth را پیکربندی کنید .
- API چت گوگل را با نام، آیکون و توضیحات برای برنامه چت خود فعال و پیکربندی کنید .
- کتابخانه کلاینت API گوگل پایتون را نصب کنید.
- ایجاد اعتبارنامههای OAuth client ID برای یک برنامه دسکتاپ. برای اجرای نمونه در این راهنما، اعتبارنامهها را به عنوان یک فایل JSON با نام
credentials.jsonدر دایرکتوری محلی خود ذخیره کنید.
- یک محدوده مجوز انتخاب کنید که از احراز هویت کاربر پشتیبانی کند.
آپلود به عنوان پیوست فایل
برای آپلود رسانه و پیوست کردن آن به پیام، موارد زیر را در درخواست خود وارد کنید:
- دامنه مجوز
chat.messages.createیاchat.messagesرا مشخص کنید. - متدهای گوگل چت زیر را فراخوانی کنید:
- برای آپلود فایل، متد
uploadرا در منبعMediaفراخوانی کنید.- نام فضای
parentبرابر با نام فضایی که فایل در آن قرار دارد قرار دهید. - در
body(بدنه درخواست)،filenameبرابر با نام فایل پیوست آپلود شده قرار دهید. -
media_bodyبه عنوان نمونهای از فایلی که قرار است آپلود شود، تنظیم کنید.
- نام فضای
- برای ایجاد یک پیام با فایل آپلود شده پیوست شده، متد
createرا از منبعMessagesفراخوانی کنید.-
attachmentبه عنوان پاسخ فراخوانی متدuploadدر منبعMediaتنظیم کنید. فیلدattachmentیک لیست را میپذیرد.
-
- برای آپلود فایل، متد
مثال زیر یک فایل تصویری PNG را آپلود کرده و آن را به یک پیام پیوست میکند.
پایتون
- در دایرکتوری کاری خود، فایلی با نام
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، نام فضایی را که میخواهید پیوست را در آن آپلود کنید، قرار دهید. این نام را میتوانید از متدspaces.listدر Chat API یا از URL یک فضا دریافت کنید.در دایرکتوری کاری خود، نمونه را بسازید و اجرا کنید:
python3 chat_media_and_attachment_upload.py
API چت، بدنهی پاسخی حاوی attachmentDataRef و جزئیاتی در مورد فایل آپلود شده را برمیگرداند.
محدودیتها و ملاحظات
هنگام آماده شدن برای آپلود فایلها و پیوست کردن آنها به پیامها، به این محدودیتها و ملاحظات توجه داشته باشید:
- شما میتوانید فایلهایی با حجم حداکثر ۲۰۰ مگابایت آپلود کنید.
- برخی از انواع فایلها پشتیبانی نمیشوند و نمیتوان آنها را آپلود کرد. برای جزئیات بیشتر، به بخش انواع فایل مسدود شده در گوگل چت مراجعه کنید.
- پیام شما باید ویجتهای جانبی را حذف کند.