يوضّح هذا الدليل كيفية استخدام طريقة download
في مورد Media
من
Google Chat API لتنزيل الوسائط (ملف) من رسالة في Google Chat.
عندما يرسل المستخدم رسالة إلى تطبيقك، تُرسِل Google Chat
MESSAGE
حدث تفاعل.
يتضمّن حدث التفاعل الذي يتلقّاه تطبيقك نص الطلب، وهو ملف حمولة
JSON يمثّل حدث التفاعل، بما في ذلك أي مرفقات. تختلف data في المرفق حسب ما إذا كان المرفق هو محتوى تم تحميله (ملف محلي) أو ملف مخزّن على Drive. يمثّل
مورد Media
ملفًا تم تحميله إلى Google Chat، مثل الصور والفيديوهات والمستندات.
يمثّل
مورد Attachment
مثيلًا للوسائط، وهو ملف مرفق برسالة. يتضمّن Attachment
المورد البيانات الوصفية عن المرفق، مثل
مكان حفظه.
المتطلبات الأساسية
Python
- حساب على Google Workspace من فئة Business أو Enterprise يتيح الوصول إلى Google Chat
- إعداد البيئة:
- أنشئ مشروعًا على Google Cloud.
- إعداد شاشة طلب الموافقة المتعلّقة ببروتوكول OAuth
- فعِّل Google Chat API وضبطها باستخدام اسم و رمز ووصف لتطبيق Chat.
- ثبِّت مكتبة عميل واجهة برمجة التطبيقات Google API للغة Python.
- أنشئ بيانات اعتماد الوصول استنادًا إلى الطريقة التي تريد المصادقة بها في طلب Google Chat API:
- لمصادقة مستخدم Chat،
أنشئ بيانات اعتماد معرّف العميل لبروتوكول OAuth واحفظ بيانات الاعتماد كملف JSON باسم
client_secrets.json
في الدليل المحلي. - لمصادقة تطبيق Chat،
أنشئ بيانات اعتماد
حساب الخدمة واحفظ بيانات الاعتماد كملف JSON باسم
credentials.json
.
- لمصادقة مستخدم Chat،
أنشئ بيانات اعتماد معرّف العميل لبروتوكول OAuth واحفظ بيانات الاعتماد كملف JSON باسم
- اختَر نطاق تفويض استنادًا إلى ما إذا كنت تريد المصادقة بصفتك مستخدمًا أو تطبيق Chat.
تنزيل من مرفق ملف
لتنزيل الوسائط من مرفق ملف، أرسِل ما يلي في طلبك:
- باستخدام مصادقة المستخدم، حدِّد نطاق التفويض
chat.messages.readonly
أوchat.messages
. باستخدام مصادقة التطبيق، حدِّد نطاق تفويضchat.bot
. - استخدِم طرق Google Chat التالية:
- يمكنك الحصول على
attachmentDataRef
من خلال استدعاء إحدى الطريقتَين التاليتَين: - استخدِم طريقة
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
، ويمكنك استرداد هذا الرمز بإحدى الطريَقتَين التاليتَين:في دليل العمل، أنشئ العيّنة وشغِّلها:
python3 chat_media_and_attachment_download.py
في حال نجاح هذه الطريقة، تعرض محتوى الملف بوحدات البايت.
لتنزيل محتوى الملف، اختَر أحد الإجراءَين التاليَين:
ننصحك باستخدام فئة
MediaIoBaseDownload
في Python، التي تحتوي على طُرق لتنزيل الملف في أقسام وحفظ المحتوى في بثّ إخراج.إذا كان عليك إرسال طلب HTTP يدويًا، استخدِم طريقة
download
و حدِّد الجزء من الملف الذي تريد تنزيله باستخدام نطاق ملف شخصي مع الرأسRange
، على سبيل المثال:Range: bytes=500-999
.
مواضيع ذات صلة
- إذا كانت الرسالة ملفًا على Drive، استخدِم Drive API للوصول إلى الملف.
- تحميل الوسائط كمرفق ملف
- تنزيل الوسائط كمرفق ملف
- الحصول على بيانات وصفية حول مرفق رسالة