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