يوضّح هذا الدليل طريقة استخدام طريقة download
على مورد Media
لواجهة
Google Chat API لتنزيل الوسائط (ملف) من رسالة في Google Chat.
عندما يُرسِل المستخدم رسالة إلى تطبيقك، يُرسِل Google Chat حدث تفاعل MESSAGE
.
يتضمّن حدث التفاعل الذي يتلقّاه تطبيقك نص الطلب، وهو حمولة JSON التي تمثِّل حدث التفاعل، بما في ذلك أي مرفقات. وتختلف البيانات الواردة في المرفق بناءً على ما إذا كان المرفق قد تم تحميله محتوى (ملف محلي) أو ملفًا مخزّنًا على Drive. يمثل مورد Media
ملفًا تم تحميله إلى Google Chat، مثل الصور والفيديوهات والمستندات.
يمثّل مورد Attachment
مثيلاً من الوسائط، أي ملف، مرفق برسالة. يتضمن مورد Attachment
البيانات الوصفية حول المرفق، مثل
مكان حفظه.
المتطلبات الأساسية
Python
- Python 3.6 أو أحدث
- إنّ أداة إدارة الحِزم pip
أحدث مكتبات عملاء Google للغة Python. لتثبيتها أو تحديثها، شغّل الأمر التالي في واجهة سطر الأوامر:
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
في بايثون، والتي تحتوي على طرق لتنزيل الملف على مراحل وحفظ المحتوى في بث نتائج.إذا كان عليك تقديم طلب HTTP يدويًا، يمكنك استدعاء الإجراء
download
وتحديد جزء الملف الذي تريد تنزيله باستخدام نطاق بايت مع عنوانRange
، مثلاً:Range: bytes=500-999
.
مواضيع ذات صلة
- إذا كانت الرسالة ملف Drive، استخدِم Drive API للحصول على إذن بالوصول إلى الملف.
- تحميل الوسائط كمرفق ملف
- تنزيل الوسائط كمرفق ملف
- الحصول على البيانات الوصفية حول مرفق رسالة