איך שולחים הודעה בכרטיס הבית של האפליקציה לאפליקציית Google Chat

בדף הזה מוסבר איך יוצרים ושולחים הודעה לדף הבית של האפליקציה באפליקציית Chat. דף הבית של האפליקציה הוא הודעת כרטיס בהתאמה אישית שאפליקציית Chat שולחת למשתמש כשהוא פותח צ'אט אישי באמצעות אפליקציית Chat.

כרטיס דף הבית של האפליקציה עם שתי הודעות.

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


אפשר להשתמש בכלי ליצירת כרטיסים כדי לעצב הודעות של כרטיס JSON ולצפות בתצוגה מקדימה שלהן באפליקציות ל-Chat:

לפתיחת הכלי ליצירת כרטיסים

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

Python

Apps Script

הגדר במסוף Google Cloud

Python

  1. במסוף Google Cloud, נכנסים לתפריט > מוצרים נוספים > Google Workspace > ספריית מוצרים > Google Chat API.

    כניסה ל-Google Chat API

  2. לוחצים על ניהול ואז על הכרטיסייה הגדרות אישיות.

  3. מפעילים את Support App Home.

  4. מסמנים את התיבה Support App Home (דף הבית של אפליקציית התמיכה).

  5. בשדה כתובת ה-URL של דף הבית של האפליקציה, מוסיפים כתובת URL. הערך הזה בדרך כלל זהה לכתובת ה-URL כמו בכתובת ה-URL של האפליקציה. כתובת ה-URL הזו נקראת עבור APP_HOME אירועים.

  6. לוחצים על שמירה.

Apps Script

  1. במסוף Google Cloud, נכנסים לתפריט > מוצרים נוספים > Google Workspace > ספריית מוצרים > Google Chat API.

    כניסה ל-Google Chat API

  2. לוחצים על ניהול ואז על הכרטיסייה הגדרות אישיות.

  3. מסמנים את התיבה Support App Home (דף הבית של אפליקציית התמיכה).

  4. לוחצים על שמירה.

הגדרה של אפליקציית Chat

צריך להגדיר את אפליקציית Chat כך שתשלח הודעת כרטיס חדשה לדף הבית של האפליקציה.

Python

כשמשתמש פותח צ'אט אישי מאפליקציית Chat, נשלח אירוע APP_HOME לאפליקציית Chat. כשאפליקציית Chat מקבלת את האירוע הזה, מוחזר מופע JSON של RenderActions עם ניווט pushCard.

@app.route('/', methods=['POST'])
def on_event():
  event = request.get_json()
  chat = event.get('chat')
  if chat is not None:
    return handle_chat_event(event)

def handle_chat_event(event):
  if event['chat'].get('type') == 'APP_HOME':
    return get_app_home_card()

def get_app_home_card():
  return {
    "action": {
      "navigations": [
        {
          "pushCard": {
            "sections": [
              {
                "widgets": [
                  {
                    "buttonList": {
                      "buttons": [
                        {
                          "text": "Open documentation",
                          "onClick": {
                            "openLink": {
                              "url": "https://developers.google.com/chat"
                            }
                          }
                        }
                      ]
                    }
                  }
                ]
              }
            ]
          }
        }
      ]
    }
  }

Apps Script

בדוגמה הזו נשלחת הודעת כרטיס על ידי החזרת card JSON. אפשר גם להשתמש בשירות של כרטיסי Apps Script.

מטמיעים את הפונקציה onAppHome כדי להחזיר מופע JSON של RenderActions עם ניווט pushCard:

// "onAppHome" is the pre-defined name of the callback that the Chat servers
// execute.
function onAppHome() {
  return {
    action: {
      navigations: [
        {
          pushCard: getCard()
        }
      ]
    }
  };
}

function getCard() {
  return {
    sections: [
      {
        widgets: [
          {
            buttonList: {
              buttons: [
                {
                  text: "Open documentation",
                  onClick: {
                    openLink: {
                      url: "https://developers.google.com/chat"
                    }
                  }
                }
              ]
            }
          }
        ]
      }
    ]
  };
}

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

ניתן לעדכן את ההודעה בכרטיס הבית של האפליקציה כשמשתמש שולח מידע בהודעת כרטיס או סוגר תיבת דו-שיח. לדוגמה, ההודעה הראשונית בכרטיס הבית של האפליקציה היא הודעת פתיחה שמבקשת מהמשתמש למלא מידע בטופס. אחרי שהמשתמש ימלא את הטופס, תישלח הודעה מעודכנת לדף הבית של האפליקציה. צריך להחזיר את העדכון עם מופע של RenderActions שמכיל ניווט updateCard.

Python

באפליקציות HTTP, עדכון ההודעה בכרטיס הבית של האפליקציה דומה לפרטי התהליך שהוזנו על ידי המשתמשים, אבל צריך להחזיר RenderActions. invokedFunction מייצג את השם של הפונקציה שמופעלת שמשויכת לווידג'ט Card. למידע נוסף: CommonEventObject. בדוגמה הבאה, submitForm מראה שהמשתמש שלח נתוני טופס:

@app.route('/', methods=['POST'])
def on_event():
  event = request.get_json()
  chat = event.get('chat')
  if chat is not None:
    return handle_chat_event(event)

def handle_chat_event(event):
  if event['chat'].get('type') == 'SUBMIT_FORM':
    event_object = event.get('commonEventObject')
    if event_object is not None:
      // Forms
      if 'submitForm' == event_object.get('invokedFunction'):
        return {
          'render_actions': {
            'action': {
              'navigations': [{
                'updateCard': get_update_card()
              }]
            }
          }
        }

def get_update_card():
  return {
      "action": {
          "navigations": [{
              "pushCard": {
                  "sections": [{
                      "widgets": [{
                          "buttonList": {
                              "buttons": [{
                                  "text": "Open documentation",
                                  "onClick": {
                                      "openLink": {
                                          "url": "https://developers.google.com/chat"
                                      }
                                  },
                              }]
                          }
                      }]
                  }]
              }
          }]
      }
  }

Apps Script

בדוגמה הזו נשלחת הודעת כרטיס על ידי החזרת card JSON. אפשר גם להשתמש בשירות של כרטיסי Apps Script.

// Called from elsewhere (i.e. on button press).
function updateAppHomeCard(event) {
  return {
    render_actions: {
      action: {
        navigations: [
          {
            updateCard: getCard()
          }
        ]
      }
    }
  }
}

function getCard() {
  return {
    sections: [
      {
        widgets: [
          {
            buttonList: {
              buttons: [
                {
                  text: "Open documentation",
                  onClick: {
                    openLink: {
                      url: "https://developers.google.com/chat"
                    }
                  }
                }
              ]
            }
          }
        ]
      }
    ]
  };
}

הגבלות

באופן כללי, אי אפשר להשתמש ב-navigation באפליקציות ל-Chat. אי אפשר להחזיר ערימת קלפים. רק pushCard (למענה ראשוני) ו-updateCard (לעדכונים) זמינים באפליקציות ל-Chat.