يشرح هذا الدليل كيفية استخدام طريقة download في مصدر Media لواجهة برمجة تطبيقات Google Chat لتنزيل الوسائط (ملف) من رسالة في Google Chat.
عندما يرسل المستخدم رسالة إلى تطبيقك، يرسل Google Chat حدث تفاعل
MESSAGE.
يتضمّن حدث التفاعل الذي يتلقّاه تطبيقك نص طلب، وهو حمولة JSON التي تمثّل حدث التفاعل، بما في ذلك أي مرفقات. تختلف البيانات في المرفق حسب ما إذا كان المرفق محتوى تم تحميله (ملف محلي) أو ملفًا مخزّنًا على Drive. يمثّل مصدر
Media
ملفًا تم تحميله إلى Google Chat، مثل الصور والفيديوهات والمستندات.
يمثّل المصدر
Attachment ملف وسائط مرفقًا برسالة.
يتضمّن مصدر Attachment البيانات الوصفية حول المرفق، مثل مكان حفظه.
المتطلبات الأساسية
Python
- حساب Google Workspace للأعمال أو Enterprise مع إمكانية الوصول إلى Google Chat
- إعداد بيئتك:
- إنشاء مشروع على Google Cloud.
- ضبط شاشة طلب الموافقة المتعلّقة ببروتوكول OAuth.
- تفعيل واجهة برمجة تطبيقات Google Chat وإعدادها باستخدام اسم، رمز، ووصف لتطبيق Chat
- تثبيت مكتبة عميل Google API للغة Python .
- إنشاء بيانات اعتماد للوصول استنادًا إلى طريقة المصادقة في طلب واجهة برمجة تطبيقات Google Chat:
- للمصادقة كمستخدم Chat،
أنشئ بيانات اعتماد لمعرّف عميل OAuth واحفظها كملف JSON باسم
credentials.jsonفي دليلك المحلي. - للمصادقة كتطبيق Chat،
أنشئ بيانات اعتماد لحساب خدمة واحفظها كملف JSON باسم
credentials.json.
- للمصادقة كمستخدم Chat،
أنشئ بيانات اعتماد لمعرّف عميل OAuth واحفظها كملف JSON باسم
- اختَر نطاق تفويض استنادًا إلى ما إذا كنت تريد المصادقة كمستخدم أو كتطبيق Chat.
التنزيل من مرفق ملف
لتنزيل الوسائط من مرفق ملف، مرِّر ما يلي في طلبك:
- عند المصادقة كمستخدم، حدِّد نطاق تفويض
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( '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 للوصول إلى الملف.
- تحميل الوسائط كمرفق ملف
- تنزيل الوسائط كمرفق ملف
- الحصول على بيانات وصفية حول مرفق رسالة