این راهنما نحوه استفاده از روش 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 با نام
credentials.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( 'credentials.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 برای دسترسی به فایل استفاده کنید.
- رسانه را به عنوان پیوست فایل آپلود کنید
- دانلود رسانه به عنوان پیوست فایل
- دریافت فراداده در مورد پیوست پیام