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

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

למשתמשי הקצה, דף הבית של האפליקציה זמין בצ'אט אישי באפליקציות ב-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. כשאפליקציה מקבלת את האירוע הזה, מוחזר מופע JSON של RenderActions עם ניווט push_card.

בדוגמה הבאה מוצג אירוע:

@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 "Card v2" representing App Home.

בדוגמה הבאה מוצג כרטיס שמוגדר לכלול קישור ללחצן למסמכים:

{
  action: {
    navigations: [
      {
        push_card: {
          sections: [
            {
              widgets: [
                {
                  buttonList: {
                    buttons: [
                      {
                        text: "Open documentation",
                        onClick: {
                          openLink: {
                            url: "https://developers.google.com/chat"
                          }
                        }
                      }
                    ]
                  }
                }
              ]
            }
          ]
        }
      }
    ]
  }
}

Apps Script

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

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

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

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

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

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': [{
                'update_card': get_update_card
              }]
            }
          }
        }

def get_update_card:
  // Return "Card v2" representing App Home.
  ...

Apps Script

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

function getCard() {
  // Return "Card v2" representing App Home.
  ...
}