یک پیام را به روز کنید

این راهنما نحوه استفاده از روش patch در منبع Message Google Chat API را برای به‌روزرسانی پیام نوشتاری یا کارتی در یک فضا توضیح می‌دهد. برای تغییر ویژگی‌های پیام، مانند آنچه می‌گوید، یا محتوای کارت، یک پیام را به‌روزرسانی کنید. همچنین می توانید یک پیام متنی را به پیام کارت اضافه کنید، یا یک کارت را به پیام متنی اضافه کنید.

Chat API از روش update نیز پشتیبانی می‌کند، اما اکیداً توصیه می‌کنیم که متد patch را فراخوانی کنید زیرا از یک درخواست HTTP PATCH استفاده می‌کند در حالی که update از درخواست PUT HTTP استفاده می‌کند. برای کسب اطلاعات بیشتر، به بخش PATCH and PUT AIP-134 مراجعه کنید.

منبع Message یک پیام متنی یا کارتی را در Google Chat نشان می دهد. می‌توانید با فراخوانی روش‌های مربوطه، پیامی را در Google Chat API create ، get ، update یا delete . برای کسب اطلاعات بیشتر درباره پیام‌های نوشتاری و کارتی، به نمای کلی پیام‌های گپ Google مراجعه کنید.

پیش نیازها

پایتون

  • پایتون 3.6 یا بالاتر
  • ابزار مدیریت بسته پیپ
  • جدیدترین کتابخانه های مشتری گوگل برای پایتون. برای نصب یا به روز رسانی آنها، دستور زیر را در رابط خط فرمان خود اجرا کنید:

    pip3 install --upgrade google-api-python-client google-auth-oauthlib google-auth
    
  • یک پروژه Google Cloud با Google Chat API فعال و پیکربندی شده است. برای مراحل، به ساخت برنامه گپ Google مراجعه کنید.
  • مجوز برای برنامه چت پیکربندی شده است:

یک پیام متنی را به روز کنید، یا یک پیام متنی را به پیام کارتی، با احراز هویت کاربر اضافه کنید

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

  • محدوده مجوز chat.messages .
  • name پیام برای به روز رسانی.
  • updateMask='text'
  • body ای که پیام به روز شده را مشخص می کند.

اگر پیام به‌روزرسانی‌شده یک پیام کارتی باشد، پیام متنی به پیام کارت اضافه می‌شود (که همچنان نمایش داده می‌شود).

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

پایتون

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

    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.discovery import build
    
    # 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 updates a 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.
        chat = build('chat', 'v1', credentials=creds)
    
        # Update a Chat message.
        result = chat.spaces().messages().patch(
    
          # The message to update, and the updated message.
          #
          # Replace SPACE with a space name.
          # Obtain the space name from the spaces resource of Chat API,
          # or from a space's URL.
          #
          # Replace MESSAGE with a message name.
          # Obtain the message name from the response body returned
          # after creating a message asynchronously with Chat REST API.
          name='spaces/SPACE/messages/MESSAGE',
          updateMask='text',
          body={'text': 'Updated message!'}
    
        ).execute()
    
        # Prints details about the created membership.
        print(result)
    
    if __name__ == '__main__':
        main()
    
  3. در کد زیر را جایگزین کنید:

    • SPACE : نام فضایی است که می توانید از روش spaces.list در Chat API یا از URL یک فضا دریافت کنید.
    • MESSAGE : نام پیامی است که می توانید آن را از بدنه پاسخی که پس از ایجاد پیام به طور ناهمزمان با Chat API یا با نام سفارشی اختصاص داده شده به پیام در هنگام ایجاد، بازگردانده شده است، دریافت کنید.
  4. در پوشه کاری خود، نمونه را بسازید و اجرا کنید:

    python3 chat_update_text_message_user.py
    

با احراز هویت برنامه، یک پیام متنی را به روز کنید یا یک پیام متنی را به پیام کارت اضافه کنید

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

  • محدوده مجوز chat.bot .
  • name پیام برای به روز رسانی.
  • updateMask='text'
  • body ای که پیام به روز شده را مشخص می کند.

اگر پیام به‌روزرسانی‌شده یک پیام کارتی باشد، پیام متنی به پیام کارت اضافه می‌شود (که همچنان نمایش داده می‌شود).

در اینجا نحوه به روز رسانی یک پیام متنی به یک پیام متنی یا اضافه کردن یک پیام متنی به پیام کارت با تأیید اعتبار برنامه آمده است:

پایتون

  1. در فهرست کاری خود، فایلی با نام chat_update_text_message_app.py ایجاد کنید.
  2. کد زیر را در chat_update_text_message_app.py قرار دهید:

    from google.oauth2 import service_account
    from apiclient.discovery import build
    
    # Specify required scopes.
    SCOPES = ['https://www.googleapis.com/auth/chat.bot']
    
    # Specify service account details.
    CREDENTIALS = (
        service_account.Credentials.from_service_account_file('credentials.json')
        .with_scopes(SCOPES)
    )
    
    # Build the URI and authenticate with the service account.
    chat = build('chat', 'v1', credentials=CREDENTIALS)
    
    # Update a Chat message.
    result = chat.spaces().messages().patch(
    
      # The message to update, and the updated message.
      #
      # Replace SPACE with a space name.
      # Obtain the space name from the spaces resource of Chat API,
      # or from a space's URL.
      #
      # Replace MESSAGE with a message name.
      # Obtain the message name from the response body returned
      # after creating a message asynchronously with Chat REST API.
      name='spaces/SPACE/messages/MESSAGE',
      updateMask='text',
      body={'text': 'Updated message!'}
    
    ).execute()
    
    # Print Chat API's response in your command line interface.
    print(result)
    
  3. در کد زیر را جایگزین کنید:

    • SPACE : نام فضایی است که می توانید از روش spaces.list در Chat API یا از URL یک فضا دریافت کنید.
    • MESSAGE : نام پیامی است که می توانید آن را از بدنه پاسخی که پس از ایجاد پیام به طور ناهمزمان با Chat API یا با نام سفارشی اختصاص داده شده به پیام در هنگام ایجاد، بازگردانده شده است، دریافت کنید.
  4. در پوشه کاری خود، نمونه را بسازید و اجرا کنید:

    python3 chat_update_text_message_app.py
    

یک پیام کارت را به روز کنید، یا یک پیام کارت را به یک پیام متنی اضافه کنید

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

  • محدوده مجوز chat.bot . به‌روزرسانی پیام کارت به تأیید اعتبار برنامه نیاز دارد.
  • name پیام برای به روز رسانی.
  • updateMask='cardsV2'
  • body ای که پیام به روز شده را مشخص می کند.

اگر پیام به روز شده یک پیام متنی است، یک کارت به پیام متنی اضافه می شود (که همچنان نمایش داده می شود). اگر پیام به روز شده خود یک کارت باشد، کارت نمایش داده شده به روز می شود.

در اینجا نحوه به روز رسانی پیام به پیام کارت آمده است:

پایتون

  1. در فهرست کاری خود، یک فایل با نام chat_update_card_message.py ایجاد کنید.
  2. کد زیر را در chat_update_card_message.py قرار دهید:

    from google.oauth2 import service_account
    from apiclient.discovery import build
    
    # Specify required scopes.
    SCOPES = ['https://www.googleapis.com/auth/chat.bot']
    
    # Specify service account details.
    CREDENTIALS = (
        service_account.Credentials.from_service_account_file('credentials.json')
        .with_scopes(SCOPES)
    )
    
    # Build the URI and authenticate with the service account.
    chat = build('chat', 'v1', credentials=CREDENTIALS)
    
    # Update a Chat message.
    result = chat.spaces().messages().patch(
    
      # The message to update, and the updated message.
      #
      # Replace SPACE with a space name.
      # Obtain the space name from the spaces resource of Chat API,
      # or from a space's URL.
      #
      # Replace MESSAGE with a message name.
      # Obtain the message name from the response body returned
      # after creating a message asynchronously with Chat REST API.
      name='spaces/SPACE/messages/MESSAGE',
      updateMask='cardsV2',
      body=
      {
        'cardsV2': [{
          'cardId': 'updateCardMessage',
          'card': {
            'header': {
              'title': 'An Updated Card Message!',
              'subtitle': 'Updated with Chat REST API',
              'imageUrl': 'https://developers.google.com/chat/images/chat-product-icon.png',
              'imageType': 'CIRCLE'
            },
            'sections': [
              {
                'widgets': [
                  {
                    'buttonList': {
                      'buttons': [
                        {
                          'text': 'Read the docs!',
                          'onClick': {
                            'openLink': {
                              'url': 'https://developers.google.com/chat'
                            }
                          }
                        }
                      ]
                    }
                  }
                ]
              }
            ]
          }
        }]
      }
    
    ).execute()
    
    # Print Chat API's response in your command line interface.
    print(result)
    
  3. در کد زیر را جایگزین کنید:

    • SPACE : نام فضایی است که می توانید از روش spaces.list در Chat API یا از URL یک فضا دریافت کنید.

    • MESSAGE : یک نام پیام، که می توانید آن را از بدنه پاسخی که پس از ایجاد یک پیام به طور ناهمزمان با Chat API یا با نام سفارشی اختصاص داده شده به پیام در هنگام ایجاد، بازگردانده شده است، دریافت کنید.

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

    python3 chat_update_card_message.py
    

Chat API نمونه‌ای از Message را برمی‌گرداند که پیامی را که به‌روزرسانی می‌شود، جزئیات می‌دهد.

یک پیام را با چندین مسیر فیلد به طور همزمان به روز کنید

هنگامی که یک پیام به روز می شود، می توانید چندین مسیر فیلد پیام را در آن زمان به روز کنید. به عنوان مثال، در یک درخواست پیام به روز رسانی، می توانید تغییری را در مسیرهای فیلد text و cardsv2 به طور همزمان مشخص کنید که هم متن و هم کارت پیام را به روز می کند. اگر پیام فقط شامل متن و بدون کارت باشد، یک کارت به پیام اضافه می شود. برای اطلاعات بیشتر در مورد مسیرهای فیلد پشتیبانی شده، به پارامترهای updateMask مراجعه کنید.

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

  • محدوده مجوز chat.messages .
  • name پیام برای به روز رسانی.
  • یک updateMask که مسیرهای فیلد پیام برای به‌روزرسانی را مشخص می‌کند که با کاما از هم جدا شده‌اند: updateMask='text', 'cardsV2' .

  • body ای که پیام به روز شده را شامل تمام مسیرهای فیلد به روز شده مشخص می کند.

در اینجا نحوه به روز رسانی مسیرهای فیلد text و cardsV2 در یک پیام با احراز هویت کاربر آورده شده است:

پایتون

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

    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.discovery import build
    
    # 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 updates a 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.
        chat = build('chat', 'v1', credentials=creds)
    
        # Update a Chat message.
        result = chat.spaces().messages().patch(
    
          # The message to update, and the updated message.
          #
          # Replace SPACE with a space name.
          # Obtain the space name from the spaces resource of Chat API,
          # or from a space's URL.
          #
          # Replace MESSAGE with a message name.
          # Obtain the message name from the response body returned
          # after creating a message asynchronously with Chat REST API.
          name='spaces/SPACE/messages/MESSAGE',
          updateMask='text,cardsV2',
          body=
          {'text': 'Updated message!',
                'cardsV2': [{
                  'cardId': 'updateCardMessage',
                  'card': {
                    'header': {
                      'title': 'An Updated Card Message!',
                      'subtitle': 'Updated with Chat REST API',
                      'imageUrl': 'https://developers.google.com/chat/images/chat-product-icon.png',
                      'imageType': 'CIRCLE'
                    },
                    'sections': [
                      {
                        'widgets': [
                          {
                            'buttonList': {
                              'buttons': [
                                {
                                  'text': 'Read the docs!',
                                  'onClick': {
                                    'openLink': {
                                      'url': 'https://developers.google.com/chat'
                                    }
                                  }
                                }
                              ]
                            }
                          }
                        ]
                      }
                    ]
                  }
                }]
          }
    
        ).execute()
    
        # Prints details about the created membership.
        print(result)
    
    if __name__ == '__main__':
        main()
    
  3. در کد زیر را جایگزین کنید:

    • SPACE : نام فضایی است که می توانید از روش spaces.list در Chat API یا از URL یک فضا دریافت کنید.
    • MESSAGE : یک نام پیام، که می توانید آن را از بدنه پاسخی که پس از ایجاد یک پیام به طور ناهمزمان با Chat API یا با نام سفارشی اختصاص داده شده به پیام در هنگام ایجاد، بازگردانده شده است، دریافت کنید.
  4. در پوشه کاری خود، نمونه را بسازید و اجرا کنید:

    python3 chat_update_text_message_user.py