رسانه را به عنوان پیوست فایل آپلود کنید

این راهنما نحوه استفاده از روش upload را در منبع Media Google Chat API برای آپلود رسانه (فایل) در Google Chat و سپس پیوست آن به پیام توضیح می دهد.

وقتی کاربر پیامی به برنامه شما ارسال می‌کند، Google Chat یک رویداد تعاملی MESSAGE ارسال می‌کند. رویداد تعاملی که توسط برنامه شما دریافت می‌شود شامل یک بدنه درخواست است، که بار JSON نشان‌دهنده رویداد تعامل، از جمله هر پیوستی است. بسته به اینکه پیوست محتوای آپلود شده (فایل محلی) یا فایل ذخیره شده در Drive باشد، داده های پیوست متفاوت است. منبع Media فایلی را نشان می‌دهد که در چت Google آپلود شده است، مانند تصاویر، ویدیوها و اسناد. منبع Attachment نمونه ای از رسانه – یک فایل – را نشان می دهد که به یک پیام پیوست شده است. منبع Attachment شامل فراداده مربوط به پیوست است، مانند محل ذخیره آن.

پیش نیازها

پایتون

به عنوان پیوست فایل آپلود کنید

برای آپلود رسانه و پیوست کردن آن به پیام، موارد زیر را در درخواست خود ارسال کنید:

  • محدوده مجوز chat.messages.create یا chat.messages را مشخص کنید.
  • با روش‌های Google Chat زیر تماس بگیرید:
    1. برای آپلود فایل، روش upload را در منبع Media فراخوانی کنید.
      • parent روی نام فضای فضایی که فایل را میزبانی می کند تنظیم کنید.
      • در body (بدنه درخواست)، filename به نام پیوست فایل آپلود شده تنظیم کنید.
      • media_body به عنوان نمونه ای از فایل برای آپلود تنظیم کنید.
    2. برای ایجاد پیام با فایل آپلود شده پیوست شده، روش create را در منبع Messages فراخوانی کنید.
      • attachment به عنوان پاسخ فراخوانی روش upload در منبع Media تنظیم کنید. فیلد attachment لیستی را می پذیرد.

مثال زیر یک فایل تصویری PNG را آپلود می کند و آن را به یک پیام پیوست می کند.

پایتون

  1. در پوشه کاری خود، فایلی با نام chat_media_and_attachment_upload.py ایجاد کنید.
  2. کد زیر را در chat_media_and_attachment_upload.py قرار دهید:

    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.discovery import build
    from googleapiclient.http import MediaFileUpload
    
    # 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.create"]
    
    def main():
        '''
        Authenticates with Chat API via user credentials,
        then uploads a file as media, creates a message, and
        attaches the file to the 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.
        service = build('chat', 'v1', credentials=creds)
    
        # Upload a file to Google Chat.
        media = MediaFileUpload('test_image.png', mimetype='image/png')
    
        # Create a message and attach the uploaded file to it.
        attachment_uploaded = service.media().upload(
    
            # The space to upload the attachment in.
            #
            # Replace SPACE with a space name.
            # Obtain the space name from the spaces resource of Chat API,
            # or from a space's URL.
            parent='spaces/SPACE',
    
            # The filename of the attachment, including the file extension.
            body={'filename': 'test_image.png'},
    
            # Media resource of the attachment.
            media_body=media
    
        ).execute()
    
        print(attachment_uploaded)
    
        # Create a Chat message with attachment.
        result = service.spaces().messages().create(
    
            # The space to create the message in.
            #
            # Replace SPACE with a space name.
            # Obtain the space name from the spaces resource of Chat API,
            # or from a space's URL.
            #
            # Must match the space name that the attachment is uploaded to.
            parent='spaces/SPACE',
    
            # The message to create.
            body={
                'text': 'Hello, world!',
                'attachment': [attachment_uploaded]
            }
    
        ).execute()
    
        print(result)
    
    if __name__ == '__main__':
        main()
    
  3. در کد، SPACE با نام فضا برای آپلود پیوست در آن جایگزین کنید، که می توانید آن را از روش spaces.list در Chat API یا از URL یک فضا دریافت کنید.

  4. در پوشه کاری خود، نمونه را بسازید و اجرا کنید:

    python3 chat_media_and_attachment_upload.py
    

Chat API یک بدنه پاسخ حاوی attachmentDataRef را با جزئیات مربوط به فایل آپلود شده برمی گرداند.

محدودیت ها و ملاحظات

همانطور که برای آپلود فایل ها و پیوست کردن آنها به پیام ها آماده می شوید، به این محدودیت ها و ملاحظات توجه کنید: