בדף הזה מוסבר איך להגדיר webhook לשליחת הודעות אסינכרוניות למרחב ב-Chat באמצעות טריגרים חיצוניים. לדוגמה, אפשר להגדיר אפליקציית מעקב שתשלח התראה ב-Chat לאנשי צוות שזמינים למענה במקרה ששרת מושבת. כדי לשלוח הודעה סינכרונית באמצעות אפליקציית Chat, אפשר לעיין במאמר שליחת הודעה.
בארכיטקטורה כזו, המשתמשים לא יכולים ליצור אינטראקציה עם ה-webhook או עם האפליקציה החיצונית המקושרת, כי התקשורת היא חד-כיוונית. Webhooks לא יכולים לנהל שיחה. הם לא יכולים להשיב להודעות ממשתמשים או לקבל מהם הודעות, או לקבל אירועים של אינטראקציה עם אפליקציית הצ'אט. כדי להגיב להודעות, צריך ליצור אפליקציית Chat במקום webhook.
מבחינה טכנית, webhook הוא לא אפליקציית Chat – הוא מחבר בין אפליקציות באמצעות בקשות HTTP רגילות – אבל בדף הזה נתייחס אליו כאפליקציית Chat כדי לפשט את ההסבר. כל ווּבק (webhook) פועל רק במרחב ב-Chat שבו הוא רשום. Webhooks נכנסים פועלים בצ'אטים ישירים, אבל רק אם אפליקציות ל-Chat מופעלות אצל כל המשתמשים. אי אפשר לפרסם webhooks ב-Google Workspace Marketplace.
התרשים הבא מציג את הארכיטקטורה של webhook שמחובר ל-Chat:
בתרשים שלמעלה, אפליקציית Chat מעבירה מידע באופן הבא:
- הלוגיקה של אפליקציית Chat מקבלת מידע משירותים חיצוניים של צד שלישי, כמו מערכת לניהול פרויקטים או כלי לניהול כרטיסים.
- הלוגיקה של אפליקציית Chat מתארחת במערכת בענן או במערכת מקומית שיכולה לשלוח הודעות באמצעות webhook URL למרחב ספציפי ב-Chat.
- המשתמשים יכולים לקבל הודעות מאפליקציית Chat במרחב הספציפי הזה ב-Chat, אבל הם לא יכולים לבצע אינטראקציה עם אפליקציית Chat.
דרישות מוקדמות
Python
- חשבון Google Workspace במהדורת Business או Enterprise עם גישה ל-Google Chat. בארגון שלכם ב-Google Workspace, המשתמשים צריכים לקבל הרשאה להוסיף webhooks נכנסים ולהשתמש בהם.
- Python 3.6 ואילך
- כלי ניהול החבילות pip
הספרייה של
httplib2
. כדי להתקין את הספרייה, מריצים את הפקודה הבאה בממשק שורת הפקודה:pip install httplib2
מרחב ב-Google Chat. במאמר יצירת מרחב מוסבר איך ליצור מרחב באמצעות Google Chat API. כדי ליצור מרחב ב-Chat, אפשר לעיין במסמכי מרכז העזרה.
Node.js
- חשבון Google Workspace במהדורת Business או Enterprise עם גישה ל-Google Chat. בארגון שלכם ב-Google Workspace, המשתמשים צריכים לקבל הרשאה להוסיף webhooks נכנסים ולהשתמש בהם.
- Node.js מגרסה 14 ואילך
- הכלי לניהול חבילות npm
- מרחב ב-Google Chat. במאמר יצירת מרחב מוסבר איך ליצור מרחב באמצעות Google Chat API. כדי ליצור מרחב ב-Chat, אפשר לעיין במסמכי מרכז העזרה.
Java
- חשבון Google Workspace במהדורת Business או Enterprise עם גישה ל-Google Chat. בארגון שלכם ב-Google Workspace, המשתמשים צריכים לקבל הרשאה להוסיף webhooks נכנסים ולהשתמש בהם.
- Java 11 ואילך
- כלי ניהול החבילות Maven
- מרחב ב-Google Chat. במאמר יצירת מרחב מוסבר איך ליצור מרחב באמצעות Google Chat API. כדי ליצור מרחב ב-Chat, אפשר לעיין במסמכי מרכז העזרה.
Apps Script
- חשבון Google Workspace במהדורת Business או Enterprise עם גישה ל-Google Chat. בארגון שלכם ב-Google Workspace, המשתמשים צריכים לקבל הרשאה להוסיף webhooks נכנסים ולהשתמש בהם.
- יוצרים פרויקט עצמאי של Apps Script ומפעילים את שירות Chat מתקדם.
- מרחב ב-Google Chat. במאמר יצירת מרחב מוסבר איך ליצור מרחב באמצעות Google Chat API. כדי ליצור מרחב ב-Chat, אפשר לעיין במסמכי מרכז העזרה.
יצירת webhook
כדי ליצור webhook, צריך לרשום אותו במרחב ב-Chat שבו רוצים לקבל הודעות, ואז לכתוב סקריפט לשליחת הודעות.
רישום של ה-webhook הנכנס
- פותחים את Chat בדפדפן. אי אפשר להגדיר webhooks באפליקציית Chat לנייד.
- עוברים למרחב שבו רוצים להוסיף webhook.
- לצד שם המרחב, לוחצים על החץ להרחבת האפשרויות ואז על אפליקציות ושילובים.
לוחצים על
הוספת וווב-הוקים.בשדה שם מזינים
Quickstart Webhook
.בשדה כתובת ה-URL של האווטאר מזינים את הערך
https://developers.google.com/chat/images/chat-product-icon.png
.לוחצים על שמירה.
כדי להעתיק את כתובת ה-URL של ה-webhook, לוחצים על
סמל האפשרויות הנוספות ואז על העתקת הקישור.
כתיבת סקריפט ה-webhook
סקריפט ה-webhook לדוגמה שולח הודעה למרחב שבו ה-webhook רשום, על ידי שליחת בקשת POST
לכתובת ה-URL של ה-webhook. ה-API של הצ'אט מגיב עם מופע של Message
.
בוחרים שפה כדי ללמוד איך ליצור סקריפט של webhook:
Python
בספריית העבודה, יוצרים קובץ בשם
quickstart.py
.ב-
quickstart.py
, מדביקים את הקוד הבא:מחליפים את הערך של המשתנה
url
בכתובת ה-URL של ה-webhook שהעתקתם כשנרשמתם ל-webhook.
Node.js
בספריית העבודה, יוצרים קובץ בשם
index.js
.ב-
index.js
, מדביקים את הקוד הבא:מחליפים את הערך של המשתנה
url
בכתובת ה-URL של ה-webhook שהעתקתם כשנרשמתם ל-webhook.
Java
בספריית העבודה, יוצרים קובץ בשם
pom.xml
.ב-
pom.xml
, מעתיקים ומדביקים את הטקסט הבא:בספריית העבודה, יוצרים את מבנה הספרייה הבא
src/main/java
.בספרייה
src/main/java
, יוצרים קובץ בשםApp.java
.ב-
App.java
, מדביקים את הקוד הבא:מחליפים את הערך של המשתנה
URL
בכתובת ה-URL של ה-webhook שהעתקתם כשנרשמתם ל-webhook.
Apps Script
בדפדפן, עוברים אל Apps Script.
לוחצים על פרויקט חדש.
מדביקים את הקוד הבא:
מחליפים את הערך של המשתנה
url
בכתובת ה-URL של ה-webhook שהעתקתם כשנרשמתם ל-webhook.
הפעלת סקריפט של webhook
ב-CLI, מריצים את הסקריפט:
Python
python3 quickstart.py
Node.js
node index.js
Java
mvn compile exec:java -Dexec.mainClass=App
Apps Script
- לוחצים על Run.
כשמריצים את הקוד, ה-webhook שולח הודעה למרחב שבו רשמתם אותו.
איך מתחילים שרשור או עונים לשרשור
מציינים את
spaces.messages.thread.threadKey
כחלק מגוף בקשת ההודעה. בהתאם לכך אם אתם מתחילים שרשור או משיבים לו, משתמשים בערכים הבאים עבורthreadKey
:אם מתחילים שרשור, מגדירים את
threadKey
למחרוזת שרירותית, אבל חשוב לרשום את הערך הזה כדי לפרסם תשובה לשרשור.אם עונים לשרשור, צריך לציין את
threadKey
שהוגדר כשהשרשור התחיל. לדוגמה, כדי לפרסם תשובה לשרשור שבו ההודעה הראשונית השתמשה ב-MY-THREAD
, צריך להגדיר אתMY-THREAD
.
הגדרת ההתנהגות של השרשור אם לא נמצאה ההודעה שצוינה
threadKey
:לענות לשרשור או להתחיל שרשור חדש. מוסיפים את הפרמטר
messageReplyOption=REPLY_MESSAGE_FALLBACK_TO_NEW_THREAD
ל-Webhook URL. העברת פרמטר כתובת ה-URL הזה גורמת ל-Chat לחפש שרשור קיים באמצעותthreadKey
שצוין. אם נמצאה הודעה כזו, ההודעה תפורסם כתשובה לשרשור הזה. אם לא נמצאה התאמה, ההודעה תתחיל שרשור חדש שמתאים ל-threadKey
.משיבים לשרשור או לא עושים כלום. מוסיפים את הפרמטר
messageReplyOption=REPLY_MESSAGE_OR_FAIL
ל-Webhook URL. העברת פרמטר כתובת ה-URL הזה גורמת ל-Chat לחפש שרשור קיים באמצעותthreadKey
שצוין. אם נמצאה הודעה כזו, ההודעה תפורסם כתשובה לשרשור הזה. אם לא נמצאה כזו, ההודעה לא נשלחת.
מידע נוסף זמין במאמר
messageReplyOption
.
דוגמת הקוד הבאה מתחילה שרשור הודעות או עונה לשרשור הודעות:
Python
Node.js
Apps Script
טיפול בשגיאות
בקשות Webhook יכולות להיכשל מסיבות שונות, כולל:
- בקשה לא חוקית.
- ה-webhook או המרחב שבו מתארח ה-webhook נמחקים.
- בעיות לסירוגין כמו קישוריות לרשת או מגבלות מכסה.
כשיוצרים תגובה לפעולה מאתר אחר (webhook), צריך לטפל בשגיאות בצורה מתאימה באמצעות:
- רישום הכישלון ביומן.
- במקרה של שגיאות שקשורות לזמן, למכסה או לקישוריות לרשת, כדאי לנסות שוב את הבקשה עם השהיה מעריכית לפני ניסיון חוזר (exponential backoff).
- לא עושים כלום, וזה מתאים אם שליחת ההודעה ב-webhook לא חשובה.
Google Chat API מחזיר שגיאות בתור google.rpc.Status
, שכולל שגיאת HTTP code
שמציינת את סוג השגיאה שנתקל בה: שגיאת לקוח (סדרה 400) או שגיאת שרת (סדרה 500). כדי לבדוק את כל המיפויים של HTTP, אפשר לעיין במאמר google.rpc.Code
.
{
"code": 503,
"message": "The service is currently unavailable.",
"status": "UNAVAILABLE"
}
מידע על קודי סטטוס HTTP וטיפול בשגיאות זמין במאמר בנושא שגיאות.
מגבלות ושיקולים
- כשיוצרים הודעה באמצעות תגובה לפעולה מאתר אחר (webhook) ב-Google Chat API, התגובה לא מכילה את ההודעה המלאה.
התגובה מאכלסת רק את השדות
name
ו-thread.name
. - מכסת ה-webhook היא
spaces.messages.create
לכל מרחב: בקשה אחת בשנייה, שמשותפת לכל ה-webhook במרחב. יכול להיות ש-Chat ידחה גם בקשות webhook שחורגות מ-1 שאילתה בשנייה באותו מרחב. מידע נוסף על מכסות של Chat API זמין במאמר מגבלות שימוש.