يشرح هذا الدليل كيفية استخدام طريقة 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 للوصول إلى الملف.
- تحميل الوسائط كمرفق ملف
- تنزيل الوسائط كمرفق ملف
- الحصول على بيانات وصفية حول مرفق رسالة