בדף הזה מוסבר איך להגדיר webhook לשליחת הודעות אסינכרוניות למרחב ב-Chat באמצעות טריגרים חיצוניים. לדוגמה, אתם יכולים להגדיר אפליקציית מעקב שתשלח התראה ב-Chat לאנשי התמיכה התורנים כשהשרת מושבת. כדי לשלוח הודעה סינכרונית באמצעות אפליקציית Chat, אפשר לעיין במאמר שליחת הודעה.
בארכיטקטורה כזו, המשתמשים לא יכולים ליצור אינטראקציה עם ה-webhook או עם האפליקציה החיצונית המקושרת, כי התקשורת היא חד-כיוונית. Webhooks לא יכולים לנהל שיחה. הם לא יכולים להשיב להודעות ממשתמשים או לקבל מהם הודעות, או לקבל אירועים של אינטראקציה עם אפליקציית הצ'אט. כדי להגיב להודעות, צריך ליצור אפליקציית Chat במקום webhook.
מבחינה טכנית, webhook הוא לא אפליקציית Chat – הוא מקשר בין אפליקציות באמצעות בקשות HTTP רגילות – אבל בדף הזה נתייחס אליו כאפליקציית Chat כדי לפשט את ההסבר. כל ווּבְּהוּק פועל רק במרחב ב-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. ה-Chat 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 זמין במאמר מגבלות שימוש.