این صفحه نحوه تنظیم یک وبهوک برای ارسال پیامهای غیرهمزمان به فضای چت با استفاده از تریگرهای خارجی را شرح میدهد. به عنوان مثال، میتوانید یک برنامه نظارتی را طوری پیکربندی کنید که هنگام از کار افتادن سرور، به پرسنل حاضر در چت اطلاع دهد. برای ارسال پیام همزمان با یک برنامه چت، به بخش ارسال پیام مراجعه کنید.
با این نوع طراحی معماری، کاربران نمیتوانند با وبهوک یا برنامه خارجی متصل تعامل داشته باشند زیرا ارتباط یک طرفه است. وبهوکها محاورهای نیستند. آنها نمیتوانند به پیامهای کاربران یا رویدادهای تعاملی برنامه چت پاسخ دهند یا از آنها پیام دریافت کنند. برای پاسخ به پیامها، به جای وبهوک، یک برنامه چت بسازید .
اگرچه یک وبهوک از نظر فنی یک برنامه چت نیست - وبهوکها برنامهها را با استفاده از درخواستهای استاندارد 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 کلیک کنید.
URL وبهوک شامل دو پارامتر است:
key، یک مقدار مشترک که بین وبهوکها مشترک است، وtokenکه یک مقدار منحصر به فرد است که باید برای حفظ امنیت وبهوک شما مخفی نگه داشته شود.
اسکریپت وب هوک را بنویسید
اسکریپت وبهوک نمونه با ارسال یک درخواست 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 چت، به محدودیتهای استفاده مراجعه کنید.