توضّح هذه الصفحة كيفية إعداد ويب هوك لإرسال رسائل غير متزامنة إلى مساحة Chat باستخدام مشغّلات خارجية. على سبيل المثال، يمكنك إعداد تطبيق رصد لإرسال إشعارات إلى الموظفين المناوبين على محادثة عند تعطُّل أحد الخوادم. لإرسال رسالة متزامنة باستخدام تطبيق Chat، راجِع مقالة إرسال رسالة.
باستخدام هذا النوع من تصميم البنية، لا يمكن للمستخدمين التفاعل مع خطاف الويب أو التطبيق الخارجي المرتبط به لأنّ الاتصال يكون في اتجاه واحد. لا يمكن إجراء محادثات مع الويب هوك. ولا يمكنهم الرد على الرسائل الواردة من المستخدمين أو تلقّيها أو تلقّي أحداث التفاعل مع تطبيق Chat. للردّ على الرسائل، أنشئ تطبيق Chat بدلاً من إنشاء خطاف ويب.
على الرغم من أنّ خطاف الويب ليس تطبيقًا من تطبيقات Chat من الناحية الفنية، إذ إنّ خطافات الويب تربط التطبيقات باستخدام طلبات HTTP عادية، تشير هذه الصفحة إليه على أنّه تطبيق من تطبيقات Chat لتسهيل الفهم. لا يعمل كل خطاف ويب إلا في مساحة Chat التي تم تسجيله فيها. تعمل خطافات الويب الواردة في الرسائل المباشرة، ولكن فقط عندما يكون تفعيل تطبيقات Chat متاحًا لجميع المستخدمين. لا يمكنك نشر خطافات الويب في Google Workspace Marketplace.
يوضّح المخطّط التالي بنية webhook مرتبطًا بتطبيق Chat:
في الرسم البياني السابق، يتضمّن تطبيق Chat مسار المعلومات التالي:
- تتلقّى منطق تطبيق Chat المعلومات من خدمات خارجية تابعة لجهات خارجية، مثل نظام إدارة المشاريع أو أداة إصدار التذاكر.
- تتم استضافة منطق تطبيق Chat إما في نظام مستند إلى السحابة الإلكترونية أو نظام محلي يمكنه إرسال الرسائل باستخدام رابط ويب هوك إلى مساحة Chat معيّنة.
- يمكن للمستخدمين تلقّي رسائل من تطبيق Chat في مساحة Chat المحدّدة، ولكن لا يمكنهم التفاعل مع تطبيق Chat.
المتطلبات الأساسية
Node.js
- حساب Google Workspace Business أو Enterprise مع إمكانية الوصول إلى Google Chat يجب أن تسمح مؤسسة Google Workspace للمستخدمين بإضافة واستخدام الويب هوك الواردة.
- Node.js 14 أو إصدار أحدث
- أداة إدارة الحزم npm
- مساحة Chat في Google لإنشاء مساحة باستخدام Google Chat API، اطّلِع على مقالة إنشاء مساحة. لإنشاء مساحة في Chat، انتقِل إلى مستندات مركز المساعدة.
Python
- حساب Google Workspace Business أو Enterprise مع إمكانية الوصول إلى Google Chat يجب أن تسمح مؤسسة Google Workspace للمستخدمين بإضافة واستخدام الويب هوك الواردة.
- الإصدار 3.6 أو الإصدارات الأحدث من Python
- أداة إدارة الحزم pip
مكتبة
httplib2لتثبيت المكتبة، شغِّل الأمر التالي في واجهة سطر الأوامر:pip install httplib2مساحة Chat في Google لإنشاء مساحة باستخدام Google Chat API، اطّلِع على مقالة إنشاء مساحة. لإنشاء مساحة في Chat، انتقِل إلى مستندات مركز المساعدة.
جافا
- حساب Google Workspace Business أو Enterprise مع إمكانية الوصول إلى Google Chat يجب أن تسمح مؤسسة Google Workspace للمستخدمين بإضافة واستخدام الويب هوك الواردة.
- الإصدار 11 من Java أو إصدار أحدث
- أداة إدارة الحِزم Maven
- مساحة Chat في Google لإنشاء مساحة باستخدام Google Chat API، اطّلِع على مقالة إنشاء مساحة. لإنشاء مساحة في Chat، انتقِل إلى مستندات مركز المساعدة.
برمجة التطبيقات
- حساب Google Workspace Business أو Enterprise مع إمكانية الوصول إلى Google Chat يجب أن تسمح مؤسسة Google Workspace للمستخدمين بإضافة واستخدام الويب هوك الواردة.
- أنشئ مشروعًا مستقلاً في "برمجة تطبيقات Google"، وفعِّل خدمة Chat المتقدّمة.
- مساحة Chat في Google لإنشاء مساحة باستخدام Google Chat API، اطّلِع على مقالة إنشاء مساحة. لإنشاء مساحة في Chat، انتقِل إلى مستندات مركز المساعدة.
إنشاء ويب هوك
لإنشاء ويب هوك، عليك تسجيله في مساحة Chat التي تريد تلقّي الرسائل فيها، ثم كتابة نص برمجي لإرسال الرسائل.
تسجيل الويب هوك الوارد
- في المتصفّح، افتح Chat. لا يمكن ضبط Webhooks من تطبيق Chat للأجهزة الجوّالة.
- انتقِل إلى المساحة التي تريد إضافة خطاف ويب إليها.
- بجانب عنوان المساحة، انقر على سهم التوسيع، ثم انقر على التطبيقات وعمليات الدمج.
انقر على إضافة خطافات ويب.
في حقل الاسم، أدخِل
Quickstart Webhook.في الحقل عنوان URL للصورة الرمزية، أدخِل
https://developers.google.com/chat/images/chat-product-icon.png.انقر على حفظ.
لنسخ رابط ويب هوك، انقر على المزيد، ثم انقر على نسخ الرابط.
يحتوي رابط ويب هوك على مَعلمتَين:
key، وهي قيمة مشتركة بين الويب هوك، وtoken، وهي قيمة فريدة يجب الحفاظ على سريتها للحفاظ على أمان الويب هوك.
كتابة نص Webhook البرمجي
يرسل نص الويب هوك البرمجي النموذجي رسالة إلى المساحة التي تم تسجيل الويب هوك فيها، وذلك عن طريق إرسال طلب POST إلى رابط ويب هوك. تردّ واجهة برمجة التطبيقات Chat API بمثيل من Message.
اختَر لغة لتعلّم كيفية إنشاء نص برمجي لخطاف ويب:
Node.js
في دليل العمل، أنشئ ملفًا باسم
index.js.في
index.js، الصِق الرمز التالي:استبدِل قيمة المتغيّر
urlبرابط ويب هوك الذي نسخته عند تسجيل الويب هوك.
Python
في دليل العمل، أنشئ ملفًا باسم
quickstart.py.في
quickstart.py، الصِق الرمز التالي:استبدِل قيمة المتغيّر
urlبرابط ويب هوك الذي نسخته عند تسجيل الويب هوك.
جافا
في دليل العمل، أنشئ ملفًا باسم
pom.xml.في
pom.xml، انسخ ما يلي والصِقه:في دليل العمل، أنشئ بنية الدليل التالية
src/main/java.في الدليل
src/main/java، أنشئ ملفًا باسمApp.java.في
App.java، الصِق الرمز التالي:استبدِل قيمة المتغيّر
URLبرابط ويب هوك الذي نسخته عند تسجيل الويب هوك.
برمجة التطبيقات
في المتصفّح، انتقِل إلى برمجة تطبيقات Google.
انقر على مشروع جديد.
ألصِق الرمز التالي:
استبدِل قيمة المتغيّر
urlبرابط ويب هوك الذي نسخته عند تسجيل الويب هوك.
تشغيل نص ويب هوك البرمجي
في واجهة سطر الأوامر، شغِّل النص البرمجي:
Node.js
node index.jsPython
python3 quickstart.pyجافا
mvn compile exec:java -Dexec.mainClass=Appبرمجة التطبيقات
- انقر على تشغيل.
عند تشغيل الرمز، يرسل خطاف الويب رسالة إلى المساحة التي سجّلت فيها.
بدء سلسلة محادثات أو الردّ عليها
حدِّد
spaces.messages.thread.threadKeyكجزء من نص طلب محادثة. استنادًا إلى ما إذا كنت تبدأ سلسلة محادثات أو تردّ عليها، استخدِم القيم التالية لـthreadKey:في حال بدء سلسلة محادثات، اضبط قيمة
threadKeyعلى سلسلة عشوائية، ولكن احفظ هذه القيمة لنشر ردّ في سلسلة المحادثات.في حال الرد على سلسلة محادثات، حدِّد
threadKeyالذي تم ضبطه عند بدء سلسلة المحادثات. على سبيل المثال، لنشر ردّ في سلسلة المحادثات التي استخدمت فيها الرسالة الأوليةMY-THREAD، اضبطMY-THREAD.
حدِّد سلوك سلسلة المحادثات في حال عدم العثور على
threadKeyالمحدّد:الرد على سلسلة محادثات أو بدء سلسلة محادثات جديدة أضِف المَعلمة
messageReplyOption=REPLY_MESSAGE_FALLBACK_TO_NEW_THREADإلى رابط ويب هوك. يؤدي تمرير مَعلمة عنوان URL هذه إلى أن يبحث Chat عن سلسلة محادثات حالية باستخدامthreadKeyالمحدّد. في حال العثور على سلسلة محادثات، يتم نشر الرسالة كردّ على تلك السلسلة. إذا لم يتم العثور على أي منها، ستبدأ الرسالة سلسلة محادثات جديدة تتوافق معthreadKey.الردّ على سلسلة محادثات أو عدم اتّخاذ أي إجراء أضِف المَعلمة
messageReplyOption=REPLY_MESSAGE_OR_FAILإلى رابط ويب هوك. يؤدي تمرير مَعلمة عنوان URL هذه إلى أن يبحث Chat عن سلسلة محادثات حالية باستخدامthreadKeyالمحدّد. في حال العثور على سلسلة محادثات، يتم نشر الرسالة كردّ على تلك السلسلة. إذا لم يتم العثور على أي منها، لن يتم إرسال الرسالة.
لمزيد من المعلومات، يُرجى الانتقال إلى
messageReplyOption.
تبدأ عينة التعليمات البرمجية التالية سلسلة محادثات أو تردّ عليها:
Node.js
Python
جافا
برمجة التطبيقات
معالجة الأخطاء
قد يتعذّر إتمام طلبات Webhook لعدة أسباب، بما في ذلك:
- الطلب غير صالح.
- تم حذف الويب هوك أو المساحة التي تستضيف الويب هوك.
- المشاكل المتقطّعة، مثل الاتصال بالشبكة أو حدود الحصة
عند إنشاء الويب هوك، يجب التعامل مع الأخطاء بشكلٍ مناسب من خلال:
- تسجيل الخطأ
- بالنسبة إلى الأخطاء المرتبطة بالوقت أو الحصة أو الاتصال بالشبكة، يمكنك إعادة محاولة الطلب باستخدام خوارزمية الرقود الأسي الثنائي.
- عدم اتّخاذ أي إجراء، وهو أمر مناسب إذا لم يكن إرسال رسالة 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 والتعامل مع الأخطاء، راجِع مقالة الأخطاء.
القيود والاعتبارات
- عند إنشاء رسالة باستخدام خطاف ويب في Google Chat API، لا يتضمّن الرد الرسالة الكاملة.
يتم ملء الحقلَين
nameوthread.nameفقط في الردّ. - تخضع خطافات الويب لحصة المساحة الواحدة في
spaces.messages.create: طلب واحد في الثانية، تتم مشاركته بين جميع خطافات الويب في المساحة. قد يرفض Chat أيضًا طلبات Webhook التي تتجاوز استعلامًا واحدًا في الثانية في المساحة نفسها. لمزيد من المعلومات حول حصص Chat API، يُرجى الاطّلاع على حدود الاستخدام.