Mesaj güncelleme

Bu kılavuzda, alandaki kısa mesajları veya kart mesajlarını güncellemek için Google Chat API'nin Message kaynağındaki patch yönteminin nasıl kullanılacağı açıklanmıştır. Mesaj özelliklerini veya kart içeriğini değiştirmek için bir mesajı güncelleyin. Kart mesajlarının başına veya kısa mesajına kart ekleyebilirsiniz.

Chat API update yöntemini de destekler ancak PATCH HTTP isteği kullanırken updatePUT HTTP isteği kullandığı için patch yönteminin çağrılmasını önemle tavsiye ederiz. Daha fazla bilgi için AIP-134'ün PATCH ve PUT bölümüne bakın.

Message kaynağı, Google Chat'te bir metin veya kart mesajı temsil eder. İlgili yöntemleri çağırarak Google Chat API'de bir mesajı create, get, update veya delete yapabilirsiniz. Kısa mesajlar ve kart mesajlar hakkında daha fazla bilgi edinmek için Google Chat mesajlarına genel bakış başlıklı makaleyi inceleyin.

Ön koşullar

Python

  • Python 3.6 veya sonraki sürümler
  • pip paket yönetimi aracı
  • Python için en yeni Google istemci kitaplıkları. Bunları yüklemek veya güncellemek için komut satırı arayüzünüzde aşağıdaki komutu çalıştırın:

    pip3 install --upgrade google-api-python-client google-auth-oauthlib google-auth
    
  • Google Chat API'nin etkin ve yapılandırılmış olduğu bir Google Cloud projesi. Adımlar için Google Chat uygulaması oluşturma başlıklı makaleye göz atın.
  • Chat uygulaması için yapılandırılan yetkilendirme:

Kullanıcı kimlik doğrulaması kullanarak kısa mesajı güncelleme veya kart mesajının başına kısa mesaj ekleme

Bir kısa mesajı kullanıcı kimlik doğrulaması ile güncellemek için isteğinizde aşağıdakileri iletin:

  • chat.messages yetkilendirme kapsamı.
  • Güncellenecek mesajın name.
  • updateMask='text'
  • Güncellenen mesajı belirten body.

Güncellenen mesaj bir kart mesajıysa kısa mesaj, kart mesajının başına eklenir (göstermeye devam eder).

Kısa mesajları güncellemek veya kullanıcı kimlik doğrulaması içeren kart mesajının başına kısa mesaj eklemek için aşağıdaki adımları uygulayın:

Python

  1. Çalışma dizininizde chat_update_text_message_user.py adında bir dosya oluşturun.
  2. chat_update_text_message_user.py içine şu kodu ekleyin:

    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. Kodda aşağıdakileri değiştirin:

    • SPACE: Chat API'deki spaces.list yönteminden veya bir alanın URL'sinden edinebileceğiniz bir alan adıdır.
    • MESSAGE: Chat API ile eşzamansız olarak mesaj oluşturduktan sonra döndürülen yanıt gövdesinden veya oluşturma aşamasında mesaja atanan özel adla elde edebileceğiniz mesaj adı.
  4. Çalışma dizininizde örneği derleyip çalıştırın:

    python3 chat_update_text_message_user.py
    

Uygulama kimlik doğrulaması kullanarak kısa mesajı güncelleme veya kart mesajının başına kısa mesaj ekleme

Bir kısa mesajı uygulama kimlik doğrulaması ile güncellemek için isteğinizde aşağıdakileri iletin:

  • chat.bot yetkilendirme kapsamı.
  • Güncellenecek mesajın name.
  • updateMask='text'
  • Güncellenen mesajı belirten body.

Güncellenen mesaj bir kart mesajıysa kısa mesaj, kart mesajının başına eklenir (göstermeye devam eder).

Kısa mesajı kısa mesaj olarak güncellemek veya uygulama kimlik doğrulaması içeren kart mesajının başına kısa mesaj eklemek için aşağıdaki adımları uygulayın:

Python

  1. Çalışma dizininizde chat_update_text_message_app.py adında bir dosya oluşturun.
  2. chat_update_text_message_app.py içine şu kodu ekleyin:

    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. Kodda aşağıdakileri değiştirin:

    • SPACE: Chat API'deki spaces.list yönteminden veya bir alanın URL'sinden edinebileceğiniz bir alan adıdır.
    • MESSAGE: Chat API ile eşzamansız olarak mesaj oluşturduktan sonra döndürülen yanıt gövdesinden veya oluşturma aşamasında mesaja atanan özel adla elde edebileceğiniz mesaj adı.
  4. Çalışma dizininizde örneği derleyip çalıştırın:

    python3 chat_update_text_message_app.py
    

Kart mesajlarını güncelleme veya kısa mesaja kart mesajı ekleme

Bir kart mesajını güncellemek için isteğinizde aşağıdakileri iletin:

  • chat.bot yetkilendirme kapsamı. Kart mesajı güncellemek için uygulama kimlik doğrulaması gerekir.
  • Güncellenecek mesajın name.
  • updateMask='cardsV2'
  • Güncellenen mesajı belirten body.

Güncellenen mesaj bir kısa mesaj ise kısa mesajın sonuna bir kart eklenir (ilgili kart gösterilmeye devam eder). Güncellenen mesajın kendisi bir kartsa gösterilen kart güncellenir.

Bir mesajı kart mesajı olarak güncellemek için:

Python

  1. Çalışma dizininizde chat_update_card_message.py adında bir dosya oluşturun.
  2. chat_update_card_message.py içine şu kodu ekleyin:

    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. Kodda aşağıdakileri değiştirin:

    • SPACE: Chat API'deki spaces.list yönteminden veya bir alanın URL'sinden edinebileceğiniz bir alan adıdır.

    • MESSAGE: Chat API ile eşzamansız olarak mesaj oluşturduktan sonra döndürülen yanıt gövdesinden veya oluşturma aşamasında mesaja atanan özel adla elde edebileceğiniz mesaj adı.

  4. Çalışma dizininizde örneği derleyip çalıştırın:

    python3 chat_update_card_message.py
    

Chat API, güncellenen mesajla ilgili ayrıntıları içeren bir Message örneği döndürür.

Bir mesajı aynı anda birden fazla alan yoluna sahip şekilde güncelleme

Bir mesaj güncellendiğinde, tek seferde birden çok mesaj alanı yolunu güncelleyebilirsiniz. Örneğin, bir güncelleme mesajı isteğinde, text ve cardsv2 alan yollarında aynı anda değişiklik belirleyerek hem mesaj metnini hem de kartı güncelleyebilirsiniz. Mesaj yalnızca metin içeriyorsa ve kart içermiyorsa mesaja bir kart eklenir. Desteklenen alan yolları hakkında daha fazla bilgi için updateMask parametrelerine bakın.

Kullanıcı kimlik doğrulaması ile bir mesajın hem text hem de card kodunu güncellemek için isteğinizde aşağıdakileri iletin:

  • chat.messages yetkilendirme kapsamı.
  • Güncellenecek mesajın name.
  • Güncellenecek mesaj alanı yollarını virgülle ayrılmış olarak belirten bir updateMask: updateMask='text', 'cardsV2'.

  • Güncellenen tüm alan yolları dahil olmak üzere, güncellenen mesajı belirten bir body.

Kullanıcı kimlik doğrulaması ile bir iletideki text ve cardsV2 alan yollarını şu şekilde güncelleyebilirsiniz:

Python

  1. Çalışma dizininizde chat_update_text_message_user.py adında bir dosya oluşturun.
  2. chat_update_text_message_user.py içine şu kodu ekleyin:

    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. Kodda aşağıdakileri değiştirin:

    • SPACE: Chat API'deki spaces.list yönteminden veya bir alanın URL'sinden edinebileceğiniz bir alan adıdır.
    • MESSAGE: Chat API ile eşzamansız olarak mesaj oluşturduktan sonra döndürülen yanıt gövdesinden veya oluşturma aşamasında mesaja atanan özel adla elde edebileceğiniz mesaj adı.
  4. Çalışma dizininizde örneği derleyip çalıştırın:

    python3 chat_update_text_message_user.py