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