עדכון מרחב משותף

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

המשאב Space מייצג מקום שבו אנשים ואפליקציות של Chat יכולים לשלוח הודעות, לשתף קבצים ולשתף פעולה. יש כמה סוגים של מרחבים משותפים:

  • צ'אטים אישיים (DM) הם שיחות בין שני משתמשים או משתמש ואפליקציית Chat.
  • צ'אטים קבוצתיים הם שיחות בין שלושה משתמשים או יותר לבין אפליקציות צ'אט.
  • מרחבים משותפים עם שמות הם מקומות קבועים שבהם אנשים שולחים הודעות, משתפים קבצים ועובדים יחד.

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

Python

  • Python 3.6 ואילך
  • הכלי pip לניהול חבילות
  • ספריות הלקוח העדכניות של Google ל-Python. כדי להתקין או לעדכן אותן, מריצים את הפקודה הבאה בממשק שורת הפקודה:

    pip3 install --upgrade google-api-python-client google-auth-oauthlib
    
  • פרויקט ב-Google Cloud עם ממשק Google Chat API פעיל ומוגדר. במאמר איך יוצרים אפליקציה ל-Google Chat מוסבר איך עושים זאת.
  • הוגדרה הרשאה לאפליקציית Chat. כדי לעדכן מרחב משותף, צריך אימות משתמש עם היקף ההרשאה chat.spaces.

Node.js

  • Node.js ו-npm
  • ספריות הלקוח העדכניות של Google ל-Node.js. כדי להתקין אותם, מריצים את הפקודה הבאה בממשק שורת הפקודה:

    npm install @google-cloud/local-auth @googleapis/chat
    
  • פרויקט ב-Google Cloud עם ממשק Google Chat API פעיל ומוגדר. במאמר איך יוצרים אפליקציה ל-Google Chat מוסבר איך עושים זאת.
  • הוגדרה הרשאה לאפליקציית Chat. כדי לעדכן מרחב משותף, צריך אימות משתמש עם היקף ההרשאה chat.spaces.

איך מעדכנים מרחבים משותפים

כדי לעדכן מרחב משותף קיים ב-Google Chat, צריך להעביר לבקשה את הפרטים הבאים:

  • צריך לציין את היקף ההרשאה של chat.spaces.
  • קוראים ל-method patch במשאב Space ומעבירים את name של המרחב המשותף לעדכון, וגם updateMask ו-body שמציינים את מאפייני המרחב המשותף המעודכנים.
  • השדה updateMask מציין את ההיבטים של המרחב המשותף שרוצים לעדכן, וכולל:
    • displayName: עדכון השם הקריא למשתמשים של המרחב המשותף שמוצג בממשק המשתמש של Google Chat. אפשר לשנות רק את השם המוצג של מרחב משותף מסוג SPACE, או כשכוללים גם את המסכה spaceType כדי לשנות את הסוג של GROUP_CHAT ל-SPACE. אם תנסו לעדכן את השם המוצג של המרחב המשותף GROUP_CHAT או DIRECT_MESSAGE, תתקבל שגיאת ארגומנט לא חוקית.
    • spaceType: אפשר לעדכן את הסוג של המרחב המשותף, אבל אפשר לשנות רק את סוג המרחב המשותף GROUP_CHAT ל-SPACE. יש לכלול את displayName יחד עם spaceType במסכת העדכון, ולוודא שבמרחב שצוין יש שדה displayName שאינו ריק ואת סוג הרווח SPACE. אם במרחב המשותף הקיים כבר יש את הסוג SPACE, כולל המסכה spaceType והסוג SPACE בשטח שצוין כשמעדכנים את השם המוצג, לא חובה . אם תנסו לעדכן את סוג המרחב המשותף בדרכים אחרות, תקבלו שגיאת ארגומנט לא חוקית.
    • spaceDetails: פרטים על המרחב המשותף, כולל תיאור וכללים.
    • spaceHistoryState: אפשר להפעיל או להשבית את ההיסטוריה במרחב המשותף, אם הארגון מאפשר למשתמשים לשנות את הגדרת ההיסטוריה. בלעדי בו-זמנית עם כל שאר נתיבי השדות.

כך מעדכנים את spaceDetails במרחב משותף קיים:

Python

  1. בספריית העבודה, יוצרים קובץ בשם chat_space_update.py.
  2. יש לכלול את הקוד הבא ב-chat_space_update.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.spaces"]
    
    def main():
        '''
        Authenticates with Chat API via user credentials,
        then updates the specified space description and guidelines.
        '''
    
        # 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)
    
        # Use the service endpoint to call Chat API.
        result = chat.spaces().patch(
    
          # The space to update, and the updated space details.
          #
          # Replace {space} with a space name.
          # Obtain the space name from the spaces resource of Chat API,
          # or from a space's URL.
          name='spaces/SPACE',
          updateMask='spaceDetails',
          body={
    
            'spaceDetails': {
              'description': 'This description was updated with Chat API!',
              'guidelines': 'These guidelines were updated with Chat API!'
            }
    
          }
    
        ).execute()
    
        # Prints details about the created membership.
        print(result)
    
    if __name__ == '__main__':
        main()
    
  3. בקוד, מחליפים את SPACE בשם של מרחב משותף, שאותו אפשר לקבל מה-method spaces.list ב-Chat API או מכתובת ה-URL של המרחב המשותף.

  4. בספריית העבודה, יוצרים ומריצים את הדוגמה:

    python3 chat_space_update.py
    

Node.js

  1. בספריית העבודה, יוצרים קובץ בשם update-space.js.
  2. יש לכלול את הקוד הבא ב-update-space.js:

    const chat = require('@googleapis/chat');
    const {authenticate} = require('@google-cloud/local-auth');
    
    /**
    * Updates a Chat space with the description and guidelines.
    * @return {!Promise<!Object>}
    */
    async function updateSpace() {
      const scopes = [
        'https://www.googleapis.com/auth/chat.spaces',
      ];
    
      const authClient =
          await authenticate({scopes, keyfilePath: 'client_secrets.json'});
    
      const chatClient = await chat.chat({version: 'v1', auth: authClient});
    
      return await chatClient.spaces.patch({
        name: 'spaces/SPACE',
        updateMask: 'spaceDetails',
        requestBody: {
          spaceDetails: {
            description: 'This description was updated with Chat API!',
            guidelines: 'These guidelines were updated with Chat API!'
          },
        }
      });
    }
    
    updateSpace().then(console.log);
    
  3. בקוד, מחליפים את SPACE בשם של מרחב משותף, שאותו אפשר לקבל מה-method spaces.list ב-Chat API או מכתובת ה-URL של המרחב המשותף.

  4. בספריית העבודה, מריצים את הדוגמה:

    node update-space.js
    

ה-Google Chat API מחזיר מופע של המשאב Space שמשקף את העדכונים.