این صفحه نحوه تنظیم یک وبهوک برای ارسال پیامهای غیرهمزمان به فضای چت با استفاده از تریگرهای خارجی را شرح میدهد. به عنوان مثال، میتوانید یک برنامه نظارتی را طوری پیکربندی کنید که هنگام از کار افتادن سرور، به پرسنل حاضر در چت اطلاع دهد. برای ارسال پیام همزمان با یک برنامه چت، به بخش ارسال پیام مراجعه کنید.
با این نوع طراحی معماری، کاربران نمیتوانند با وبهوک یا برنامه خارجی متصل تعامل داشته باشند زیرا ارتباط یک طرفه است. وبهوکها محاورهای نیستند. آنها نمیتوانند به پیامهای کاربران یا رویدادهای تعاملی برنامه چت پاسخ دهند یا از آنها پیام دریافت کنند. برای پاسخ به پیامها، به جای وبهوک، یک برنامه چت بسازید .
اگرچه یک وبهوک از نظر فنی یک برنامه چت نیست - وبهوکها برنامهها را با استفاده از درخواستهای استاندارد HTTP به هم متصل میکنند - این صفحه برای سادهسازی به آن به عنوان یک برنامه چت اشاره میکند. هر وبهوک فقط در فضای چتی که در آن ثبت شده است کار میکند. وبهوکهای ورودی در پیامهای مستقیم کار میکنند، اما فقط زمانی که همه کاربران برنامههای چت را فعال کرده باشند. شما نمیتوانید وبهوکها را در بازار فضای کاری گوگل منتشر کنید.
نمودار زیر معماری یک وبهوک متصل به چت را نشان میدهد:
در نمودار قبلی، یک برنامه چت جریان اطلاعات زیر را دارد:
- منطق برنامه چت، اطلاعات را از سرویسهای شخص ثالث خارجی، مانند یک سیستم مدیریت پروژه یا یک ابزار تیکتینگ، دریافت میکند.
- منطق برنامه چت در یک سیستم ابری یا داخلی میزبانی میشود که میتواند با استفاده از یک URL وبهوک به یک فضای چت خاص پیام ارسال کند.
- کاربران میتوانند در آن فضای چت خاص، پیامهایی از برنامه چت دریافت کنند، اما قادر به تعامل با برنامه چت نیستند.
پیشنیازها
پایتون
- یک حساب کاربری تجاری یا سازمانی در گوگل ورک اسپیس با دسترسی به گوگل چت . سازمان گوگل ورک اسپیس شما باید به کاربران اجازه اضافه کردن و استفاده از وب هوکهای ورودی را بدهد.
- پایتون ۳.۶ یا بالاتر
- ابزار مدیریت بسته pip
کتابخانه
httplib2
. برای نصب کتابخانه، دستور زیر را در رابط خط فرمان خود اجرا کنید:pip install httplib2
یک فضای چت گوگل. برای ایجاد آن با استفاده از API چت گوگل، به بخش ایجاد فضا مراجعه کنید. برای ایجاد آن در چت، به مستندات مرکز راهنما مراجعه کنید.
نود جی اس
- یک حساب کاربری تجاری یا سازمانی در گوگل ورک اسپیس با دسترسی به گوگل چت . سازمان گوگل ورک اسپیس شما باید به کاربران اجازه اضافه کردن و استفاده از وب هوکهای ورودی را بدهد.
- Node.js نسخه ۱۴ یا بالاتر
- ابزار مدیریت بسته npm
- یک فضای چت گوگل. برای ایجاد آن با استفاده از API چت گوگل، به بخش ایجاد فضا مراجعه کنید. برای ایجاد آن در چت، به مستندات مرکز راهنما مراجعه کنید.
جاوا
- یک حساب کاربری تجاری یا سازمانی در گوگل ورک اسپیس با دسترسی به گوگل چت . سازمان گوگل ورک اسپیس شما باید به کاربران اجازه اضافه کردن و استفاده از وب هوکهای ورودی را بدهد.
- جاوا ۱۱ یا بالاتر
- ابزار مدیریت بسته Maven
- یک فضای چت گوگل. برای ایجاد آن با استفاده از API چت گوگل، به بخش ایجاد فضا مراجعه کنید. برای ایجاد آن در چت، به مستندات مرکز راهنما مراجعه کنید.
اسکریپت برنامهها
- یک حساب کاربری تجاری یا سازمانی در گوگل ورک اسپیس با دسترسی به گوگل چت . سازمان گوگل ورک اسپیس شما باید به کاربران اجازه اضافه کردن و استفاده از وب هوکهای ورودی را بدهد.
- یک پروژه مستقل Apps Script ایجاد کنید و سرویس چت پیشرفته (Advanced Chat Service) را فعال کنید.
- یک فضای چت گوگل. برای ایجاد آن با استفاده از API چت گوگل، به بخش ایجاد فضا مراجعه کنید. برای ایجاد آن در چت، به مستندات مرکز راهنما مراجعه کنید.
ایجاد یک وب هوک
برای ایجاد یک وبهوک، آن را در فضای چتی که میخواهید پیامها را دریافت کنید، ثبت کنید و سپس اسکریپتی بنویسید که پیامها را ارسال کند.
وب هوک ورودی را ثبت کنید
- در مرورگر، چت را باز کنید. وبهوکها از طریق برنامه موبایل چت قابل تنظیم نیستند.
- به فضایی که میخواهید یک وبهوک اضافه کنید، بروید.
- در کنار عنوان فضا، روی فلش expand more کلیک کنید و سپس روی Apps & integrations کلیک کنید.
در فیلد نام ،
Quickstart Webhook
وارد کنید.در فیلد آدرس اینترنتی آواتار ،
https://developers.google.com/chat/images/chat-product-icon.png
را وارد کنید.روی ذخیره کلیک کنید.
برای کپی کردن آدرس وبهوک، روی
More کلیک کنید و سپس روی Copy link کلیک کنید.
اسکریپت وب هوک را بنویسید
اسکریپت وبهوک نمونه با ارسال یک درخواست POST
به آدرس وبهوک، پیامی را به فضایی که وبهوک در آن ثبت شده است، ارسال میکند. API چت با نمونهای از Message
پاسخ میدهد.
برای یادگیری نحوه ایجاد اسکریپت وب هوک، یک زبان را انتخاب کنید:
پایتون
در دایرکتوری کاری خود، فایلی با نام
quickstart.py
ایجاد کنید.در
quickstart.py
، کد زیر را قرار دهید:مقدار متغیر
url
را با آدرس وبهوک که هنگام ثبت وبهوک کپی کردهاید، جایگزین کنید.
نود جی اس
در دایرکتوری کاری خود، فایلی با نام
index.js
ایجاد کنید.در
index.js
، کد زیر را قرار دهید:مقدار متغیر
url
را با آدرس وبهوک که هنگام ثبت وبهوک کپی کردهاید، جایگزین کنید.
جاوا
در دایرکتوری کاری خود، فایلی با نام
pom.xml
ایجاد کنید.در
pom.xml
، کد زیر را کپی و پیست کنید:در دایرکتوری کاری خود، ساختار دایرکتوری زیر را ایجاد کنید
src/main/java
.در پوشه
src/main/java
، فایلی با نامApp.java
ایجاد کنید.در
App.java
، کد زیر را قرار دهید:مقدار متغیر
URL
را با URL وبهوک که هنگام ثبت وبهوک کپی کردهاید، جایگزین کنید.
اسکریپت برنامهها
در مرورگر، به Apps Script بروید.
روی پروژه جدید کلیک کنید
کد زیر را جایگذاری کنید:
مقدار متغیر
url
را با آدرس وبهوک که هنگام ثبت وبهوک کپی کردهاید، جایگزین کنید.
اسکریپت وب هوک را اجرا کنید
در یک رابط خط فرمان (CLI)، اسکریپت را اجرا کنید:
پایتون
python3 quickstart.py
نود جی اس
node index.js
جاوا
mvn compile exec:java -Dexec.mainClass=App
اسکریپت برنامهها
- روی اجرا کلیک کنید.
وقتی کد را اجرا میکنید، وبهوک پیامی را به فضایی که در آن ثبت نام کردهاید ارسال میکند.
شروع یا پاسخ به یک رشته پیام
spaces.messages.thread.threadKey
به عنوان بخشی از بدنه درخواست پیام مشخص کنید. بسته به اینکه آیا یک نخ را شروع میکنید یا به آن پاسخ میدهید، از مقادیر زیر برایthreadKey
استفاده کنید:اگر میخواهید یک تاپیک شروع کنید،
threadKey
روی یک رشته دلخواه تنظیم کنید، اما برای ارسال پاسخ به تاپیک، این مقدار را یادداشت کنید.اگر به یک رشته پاسخ میدهید،
threadKey
که هنگام شروع رشته تنظیم شده است، مشخص کنید. برای مثال، برای ارسال پاسخ به رشتهای که پیام اولیه ازMY-THREAD
استفاده کرده است،MY-THREAD
تنظیم کنید.
اگر
threadKey
مشخص شده پیدا نشد، رفتار thread را تعریف کنید:به یک رشته پاسخ دهید یا یک رشته جدید شروع کنید. پارامتر
messageReplyOption=REPLY_MESSAGE_FALLBACK_TO_NEW_THREAD
را به آدرس اینترنتی webhook اضافه کنید. ارسال این پارامتر URL باعث میشود Chat با استفاده ازthreadKey
مشخص شده، به دنبال یک رشته موجود بگردد. اگر رشتهای پیدا شود، پیام به عنوان پاسخی به آن رشته ارسال میشود. اگر رشتهای پیدا نشود، پیام یک رشته جدید مطابق با آنthreadKey
شروع میکند.به یک رشته پاسخ دهید یا هیچ کاری نکنید. پارامتر
messageReplyOption=REPLY_MESSAGE_OR_FAIL
را به آدرس اینترنتی webhook اضافه کنید. ارسال این پارامتر URL باعث میشود Chat با استفاده ازthreadKey
مشخص شده، به دنبال یک رشته موجود بگردد. اگر رشتهای پیدا شود، پیام به عنوان پاسخی به آن رشته ارسال میشود. اگر رشتهای پیدا نشود، پیام ارسال نمیشود.
برای کسب اطلاعات بیشتر، به
messageReplyOption
مراجعه کنید.
نمونه کد زیر یک رشته پیام را شروع میکند یا به آن پاسخ میدهد:
پایتون
نود جی اس
اسکریپت برنامهها
مدیریت خطاها
درخواستهای وبهوک میتوانند به دلایل مختلفی از جمله موارد زیر با شکست مواجه شوند:
- درخواست نامعتبر.
- وبهوک یا فضایی که وبهوک در آن قرار دارد حذف شده است.
- مشکلات متناوب مانند اتصال به شبکه یا محدودیتهای سهمیهبندی.
هنگام ساخت وبهوک خود، باید به طور مناسب خطاها را با موارد زیر مدیریت کنید:
- ثبت خرابی.
- برای خطاهای مبتنی بر زمان، سهمیهبندی یا اتصال به شبکه، درخواست را با روش برگشت نمایی (exponential backoff) دوباره امتحان کنید .
- هیچ کاری نکردن، که اگر ارسال پیام وبهوک مهم نباشد، مناسب است.
API چت گوگل، خطاها را به صورت google.rpc.Status
برمیگرداند که شامل یک code
خطای HTTP است که نوع خطای رخ داده را نشان میدهد: خطای کلاینت (سری ۴۰۰) یا خطای سرور (سری ۵۰۰). برای بررسی تمام نگاشتهای HTTP، به google.rpc.Code
مراجعه کنید.
{
"code": 503,
"message": "The service is currently unavailable.",
"status": "UNAVAILABLE"
}
برای یادگیری نحوه تفسیر کدهای وضعیت HTTP و مدیریت خطاها، به بخش خطاها مراجعه کنید.
محدودیتها و ملاحظات
- هنگام ایجاد پیام با استفاده از وبهوک در Google Chat API، پاسخ شامل کل پیام نیست. پاسخ فقط فیلدهای
name
وthread.name
پر میکند. - وبهوکها تابع سهمیه هر فضا برای
spaces.messages.create
هستند: ۱ درخواست در ثانیه، که بین همه وبهوکهای موجود در فضا به اشتراک گذاشته میشود. چت همچنین ممکن است درخواستهای وبهوک را که بیش از ۱ پرسوجو در ثانیه در همان فضا دارند، رد کند. برای اطلاعات بیشتر در مورد سهمیههای API چت، به محدودیتهای استفاده مراجعه کنید.