בדף הזה מוסבר איך להגדיר webhook כדי לשלוח הודעות אסינכררוניות למרחב משותף ב-Chat באמצעות טריגרים חיצוניים. לדוגמה, אפשר להגדיר אפליקציית מעקב שתודיע לצוות התורן ב-Chat כששרת מושבת. במאמר שליחת הודעה מוסבר איך שולחים הודעה סינכרונית באפליקציית Chat.
בתכנון הארכיטקטורה הזה, המשתמשים לא יכולים לקיים אינטראקציה עם ה-webhook או עם האפליקציה החיצונית המקושרת, כי התקשורת היא חד-כיוונית. תגובות webhook לא הן שיחה. הם לא יכולים להשיב להודעות ממשתמשים או לקבל הודעות מהם, או לקבל אירועי אינטראקציה באפליקציית צ'אט. כדי לענות להודעות, צריך ליצור אפליקציית Chat במקום webhook.
webhook הוא לא אפליקציית Chat מבחינה טכנית – webhooks מקשרים בין אפליקציות באמצעות בקשות HTTP רגילות – אבל אנחנו מתייחסים אליו בדף הזה בתור אפליקציית Chat כדי לפשט את העניין. כל webhook פועל רק במרחב המשותף ב-Chat שבו הוא רשום. webhooks נכנסים פועלים בצ'אטים אישיים, אבל רק אם אפליקציות Chat מופעלות אצל כל המשתמשים. אי אפשר לפרסם webhooks ב-Google Workspace Marketplace.
התרשים הבא מציג את הארכיטקטורה של webhook שמחובר ל-Chat:
בתרשים שלמעלה, תהליך העברת המידע באפליקציית Chat הוא:
- הלוגיקה של אפליקציית Chat מקבלת מידע משירותים חיצוניים של צד שלישי, כמו מערכת ניהול פרויקטים או כלי ליצירת כרטיסים.
- הלוגיקה של אפליקציית Chat מתארחת במערכת בענן או בארגון, שיכולה לשלוח הודעות באמצעות כתובת URL של webhook למרחב משותף ספציפי ב-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 ומפעילים את שירות הצ'אט המתקדם.
- מרחב משותף ב-Google Chat. במאמר יצירת מרחב משותף מוסבר איך ליצור מרחב משותף באמצעות Google Chat API. כדי ליצור קבוצה ב-Chat, תוכלו לעיין במסמכי העזרה.
יצירת webhook
כדי ליצור webhook, צריך לרשום אותו במרחב המשותף ב-Chat שבו רוצים לקבל הודעות, ואז לכתוב סקריפט ששולח הודעות.
רישום ה-webhook הנכנס
- פותחים את Chat בדפדפן. אי אפשר להגדיר webhooks דרך אפליקציית Chat לנייד.
- עוברים למרחב המשותף שבו רוצים להוסיף webhook.
- לצד שם המרחב המשותף, לוחצים על חץ ההרחבה ואז על אפליקציות ושילובים.
לוחצים על
Add webhooks.בשדה שם, מזינים
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 הזה גורמת ל-Chat לחפש שיחה קיימת באמצעות הערך שצוין בשדהthreadKey
. אם נמצא שרשור כזה, ההודעה תפורסם בתור תשובה לשרשור הזה. אם לא נמצא שרשור, ההודעה תתחיל שרשור חדש שתואם ל-threadKey
הזה.משיבים לשרשור או לא עושים כלום. מוסיפים את הפרמטר
messageReplyOption=REPLY_MESSAGE_OR_FAIL
לכתובת ה-webhook. העברת פרמטר כתובת ה-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 כפופים למגבלה של 60 שאילתות
spaces.messages.create
לכל מרחב משותף בכל 60 שניות, שמשותפת בין כל האפליקציות של Chat במרחב המשותף. למידע נוסף על המכסות של Chat API, ראו מגבלות שימוש.