این راهنما نحوه استفاده از روش download
در منبع Media
Google Chat API برای بارگیری رسانه (فایل) از یک پیام در Google Chat توضیح می دهد.
وقتی کاربر پیامی به برنامه شما ارسال میکند، Google Chat یک رویداد تعاملی MESSAGE
ارسال میکند. رویداد تعاملی که توسط برنامه شما دریافت میشود شامل یک بدنه درخواست است، که بار JSON نشاندهنده رویداد تعامل، از جمله هر پیوستی است. بسته به اینکه پیوست محتوای آپلود شده (فایل محلی) یا فایل ذخیره شده در Drive باشد، داده های پیوست متفاوت است. منبع Media
فایلی را نشان میدهد که در چت Google آپلود شده است، مانند تصاویر، ویدیوها و اسناد. منبع Attachment
نمونه ای از رسانه – یک فایل – را نشان می دهد که به یک پیام پیوست شده است. منبع Attachment
شامل فراداده مربوط به پیوست است، مانند محل ذخیره آن.
پیش نیازها
پایتون
- یک حساب Google Workspace تجاری یا سازمانی با دسترسی به Google Chat .
- محیط خود را تنظیم کنید:
- یک پروژه Google Cloud ایجاد کنید .
- صفحه رضایت OAuth را پیکربندی کنید .
- Google Chat API را با نام، نماد و توضیحات برای برنامه Chat خود فعال و پیکربندی کنید .
- کتابخانه Google API Client Python را نصب کنید.
- اعتبارنامه دسترسی را بر اساس نحوه احراز هویت در درخواست Google Chat API خود ایجاد کنید:
- برای احراز هویت به عنوان کاربر چت، اعتبارنامه های شناسه مشتری OAuth را ایجاد کنید و اعتبارنامه ها را به عنوان یک فایل JSON با نام
client_secrets.json
در فهرست محلی خود ذخیره کنید. - برای احراز هویت بهعنوان برنامه چت، اعتبار حساب سرویس ایجاد کنید و اعتبارنامهها را بهعنوان فایل JSON با نام
credentials.json
ذخیره کنید.
- برای احراز هویت به عنوان کاربر چت، اعتبارنامه های شناسه مشتری OAuth را ایجاد کنید و اعتبارنامه ها را به عنوان یک فایل JSON با نام
- بر اساس اینکه میخواهید بهعنوان کاربر یا برنامه چت احراز هویت کنید ، محدوده مجوز را انتخاب کنید .
دانلود از فایل پیوست
برای دانلود رسانه از یک فایل پیوست، موارد زیر را در درخواست خود وارد کنید:
- با احراز هویت کاربر ، محدوده مجوز
chat.messages.readonly
یاchat.messages
را مشخص کنید. با احراز هویت برنامه ، محدوده مجوزchat.bot
را مشخص کنید. - با روشهای Google Chat زیر تماس بگیرید:
- با فراخوانی یکی از روش های زیر،
attachmentDataRef
را دریافت کنید:- روش
get
در منبعAttachment
. - روش
get
یا روشlist
در منبعMessage
.
- روش
- روش
download
در منبعMedia
فراخوانی کنید وattachmentDataRef.resourceName
بازیابی شده قبلی را به عنوانmedia.download.resourceName
مشخص کنید.
- با فراخوانی یکی از روش های زیر،
مثال زیر یک فایل پیوست شده به یک پیام را دانلود می کند:
پایتون
- در پوشه کاری خود، فایلی با نام
chat_media_and_attachment_download.py
ایجاد کنید. کد زیر را در
chat_media_and_attachment_download.py
قرار دهید:import io from google_auth_oauthlib.flow import InstalledAppFlow from googleapiclient.discovery import build from googleapiclient.http import MediaIoBaseDownload # 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"] def main(): ''' Authenticates with Chat API via user credentials, then downloads a file attached to a message. ''' # 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) # Download media resource. request = chat.media().download_media( resourceName=RESOURCE_NAME, ) file = io.BytesIO() downloader = MediaIoBaseDownload(file, request) done = False while done is False: status, done = downloader.next_chunk() if status.total_size: print(f'Total size: {status.total_size}') print(f'Download {int(status.progress() * 100)}') if __name__ == '__main__': main()
در کد،
RESOURCE_NAME
باattachmentDataRef.resourceName
جایگزین کنید، که می توانید یکی از راه های زیر را بازیابی کنید:- روش
get
در منبعAttachment
. - روش
get
در منبعMessage
. - روش
list
در منبعMessage
.
- روش
در پوشه کاری خود، نمونه را بسازید و اجرا کنید:
python3 chat_media_and_attachment_download.py
در صورت موفقیت آمیز بودن، این روش محتوای فایل را به صورت بایت برمی گرداند.
برای دانلود محتوای فایل یکی از روش های زیر را انتخاب کنید:
توصیه می کنیم از کلاس
MediaIoBaseDownload
در پایتون استفاده کنید که شامل روش هایی برای دانلود فایل در بخش ها و ذخیره محتویات در یک جریان خروجی است.اگر باید درخواست HTTP را به صورت دستی انجام دهید، روش
download
را فراخوانی کنید و با استفاده از یک محدوده بایت با سربرگRange
، بخشی از فایل را که میخواهید دانلود کنید مشخص کنید - به عنوان مثال:Range: bytes=500-999
.
موضوعات مرتبط
- اگر پیام یک فایل Drive است، از Drive API برای دسترسی به فایل استفاده کنید.
- رسانه را به عنوان پیوست فایل آپلود کنید
- دانلود رسانه به عنوان یک فایل پیوست
- دریافت فراداده در مورد پیوست پیام