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

این راهنما نحوه استفاده از متد upload در منبع Media از API چت گوگل برای آپلود رسانه (یک فایل) در چت گوگل و سپس پیوست کردن آن به یک پیام را توضیح می‌دهد.

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

پیش‌نیازها

پایتون

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

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

  • دامنه مجوز chat.messages.create یا chat.messages را مشخص کنید.
  • متدهای گوگل چت زیر را فراخوانی کنید:
    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(
                      'credentials.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

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

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

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