يشرح هذا الدليل كيفية استخدام طريقة download
على المورد Media
الخاص بواجهة برمجة تطبيقات Google Chat API لتنزيل الوسائط (ملف) من رسالة في Google Chat.
عندما يُرسِل المستخدم رسالة إلى تطبيقك، يُرسِل Google Chat
حدث تفاعل MESSAGE
.
يتضمّن حدث التفاعل الذي يتلقّاه تطبيقك نص الطلب، وهو حمولة JSON الأساسية التي تمثّل حدث التفاعل، بما في ذلك أي مرفقات. تختلف
البيانات في المرفق بناءً على ما إذا كان المرفق
قد تم تحميل محتوى (ملف محلي) أو ملف مخزَّن على Drive. يمثل
المورد Media
ملفًا تم تحميله إلى Google Chat، مثل الصور والفيديوهات والمستندات.
يمثل
مورد Attachment
مثيلاً من الوسائط - ملف - مرفق برسالة. يتضمن مورد Attachment
البيانات الوصفية للمرفق، مثل
مكان حفظه.
المتطلّبات الأساسية
Python
- Python 3.6 أو أعلى
- تتيح لك أداة pip إدارة الحزم
أحدث مكتبات برامج Google للغة بايثون. لتثبيتها أو تحديثها، قم بتشغيل الأمر التالي في واجهة سطر الأوامر لديك:
pip3 install --upgrade google-api-python-client google-auth-oauthlib
- مشروع على Google Cloud مع تفعيل وإعداد Google Chat API لمعرفة الخطوات، راجِع إنشاء تطبيق Google Chat.
تم ضبط التفويض لتطبيق Chat. يتيح تنزيل الوسائط كلاً من:
- مصادقة المستخدم
باستخدام نطاق التفويض
chat.messages.readonly
أوchat.messages
. - مصادقة التطبيق
باستخدام نطاق تفويض
chat.bot
.
- مصادقة المستخدم
باستخدام نطاق التفويض
التنزيل من ملف مرفق
لتنزيل الوسائط من ملف مرفق، يُرجى تمرير ما يلي في طلبك:
- باستخدام مصادقة المستخدم، حدِّد نطاق تفويض
chat.messages.readonly
أوchat.messages
. باستخدام مصادقة التطبيق، حدِّد نطاق تفويضchat.bot
. - يمكنك طلب طرق Google Chat التالية:
- يمكنك الحصول على
attachmentDataRef
من خلال طلب إحدى الطرق التالية:- استخدِم طريقة
get
علىAttachment
المورد. - طريقة
get
أو طريقةlist
في المرجعMessage
.
- استخدِم طريقة
- استدعِ طريقة
download
في مصدرMedia
، وحدِّد طريقةattachmentDataRef.resourceName
التي سبق استردادها على أنّهاmedia.download.resourceName
.
- يمكنك الحصول على
في المثال التالي، يتم تنزيل ملف مرفق برسالة:
Python
- في دليل العمل، أنشئ ملفًا باسم
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
في Python، والتي تحتوي على طرق لتنزيل الملف على أقسام وحفظ المحتوى في مصدر بيانات.إذا كان عليك تقديم طلب HTTP يدويًا، عليك استدعاء الطريقة
download
وتحديد جزء الملف الذي تريد تنزيله باستخدام نطاق بايت مع عنوانRange
، على سبيل المثال:Range: bytes=500-999
.
مواضيع ذات صلة
- إذا كانت الرسالة عبارة عن ملف Drive، استخدِم Drive API للوصول إلى الملف.
- تحميل الوسائط كمرفق ملف
- تنزيل الوسائط كمرفق ملف
- الحصول على بيانات وصفية حول مرفق رسالة