איך מעדכנים הודעות?

במדריך הזה מוסבר איך להשתמש ב-method patch במשאב Message של להשתמש ב-Google Chat API כדי לעדכן הודעות טקסט או הודעות בכרטיס המרחב המשותף. עדכון של כדי לשנות מאפיינים של הודעה, למשל מה שכתוב בה או תוכן של הודעה של Google. אפשר גם לצרף הודעת טקסט בהתחלה הודעה בכרטיס או לצרף כרטיס להודעת טקסט.

Chat API תומך גם השיטה update, אבל מומלץ מאוד לקרוא ל- אמצעי תשלום אחד (patch) כי הוא משתמש בבקשת HTTP PATCH בזמן update משתמש בקשת HTTP של PUT מידע נוסף זמין במאמר הבא: הסעיפים PATCH ו-PUT של AIP-134.

ב-Chat API, הודעה ב-Chat מיוצגת על ידי משאב אחד (Message). משתמשי Chat יכולים לשלוח רק הודעות שמכילות טקסט, אפליקציות צ'אט יכולות להשתמש בתכונות רבות נוספות של העברת הודעות, כולל הצגת ממשקי משתמש סטטיים או אינטראקטיביים, איסוף מידע משתמשים ולהעביר הודעות באופן פרטי. למידע נוסף על התכונה 'העברת הודעות' שזמינות ל-Chat API, סקירה כללית על ההודעות ב-Google Chat

דרישות מוקדמות

Python

  • Python 3.6 ומעלה
  • הכלי לניהול חבילות pip
  • ספריות הלקוח העדכניות של Google. כדי להתקין או לעדכן אותם, מריצים את הפקודה הבאה בממשק שורת הפקודה:
    pip3 install --upgrade google-api-python-client google-auth-oauthlib
    

עדכון הודעת טקסט או צירוף הודעת טקסט בהתחלה להודעה בכרטיס באמצעות אימות משתמש

כדי לעדכן הודעת טקסט עם אימות משתמש, אישור מעבר את הפרטים הבאים בבקשה שלכם:

  • היקף ההרשאה chat.messages.
  • name של ההודעה שצריך לעדכן.
  • updateMask='text'
  • body שמציין את ההודעה המעודכנת.

אם ההודעה המעודכנת הודעה בכרטיס, הודעת הטקסט מופיעה בתחילת הודעת הכרטיס (שממשיכת להופיע).

כך מעדכנים הודעת טקסט, או להוסיף הודעת טקסט בהתחלה הודעה בכרטיס עם אימות המשתמש:

Python

  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 updated message.
        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 שמציין את ההודעה המעודכנת.

אם ההודעה המעודכנת היא הודעה בכרטיס, הודעת הטקסט מופיעה בתחילת הודעת הכרטיס (שממשיכת להופיע).

כך מעדכנים הודעת טקסט להודעת טקסט, או להוסיף הודעת טקסט בהתחלה הודעה בכרטיס עם אימות אפליקציות:

Python

  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 שמציין את ההודעה המעודכנת.

אם ההודעה המעודכנת הודעת טקסט, לאחר מכן מצורף כרטיס להודעת הטקסט (שממשיכת להופיע). אם היא עצמה card, הכרטיס המוצג עודכן.

כך מעדכנים הודעה הודעה בכרטיס:

Python

  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 הודעה עם אימות משתמש:

Python

  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 updated message.
        print(result)
    
    if __name__ == '__main__':
        main()
    
  3. בקוד, מחליפים את מה שכתוב בשדות הבאים:

    • SPACE: שם של מרחב, שאפשר לקבל ממנו ה אמצעי תשלום אחד (spaces.list) מ-Chat API או מכתובת ה-URL של מרחב משותף.
    • MESSAGE: שם ההודעה, שאפשר לקבל מגוף התשובה שהוחזר אחרי יצירת הודעה באופן אסינכרוני באמצעות Chat API, או שם מותאם אישית שהוקצה להודעה בזמן היצירה.
  4. בספריית העבודה, יוצרים ומריצים את הדוגמה:

    python3 chat_update_text_message_user.py