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