نظام تحقق وإدارة الويب هوكس في WOZTELL | التحديثات والأحداث

الوِب هوكس

التحقق

كل حدث webhook يأتي مع توقيع ("X-Woztell-Signature") في الرأس لأغراض التحقق. يمكن التحقق من كل حدث webhook باستخدام الطريقة التالية.
  1. باستخدام خوارزمية HMAC-SHA256 مع سر القناة كمفتاح سري، قم بحساب الملخص لجسم الطلب.
  2. تأكد من أن الملخص المشفر بـ Base64 يطابق التوقيع في رأس الطلب X-Woztell-Signature.

الرسائل الواردة

باشتراكك في هذا webhook، ستتلقى الأحداث الموحدة التي قامت WOZTELL بمعالجتها مسبقًا لجميع المنصات المدعومة.

عينة من واتساب

رسالة نصية:

{
"from": "85260903521",
"to": "85268227287",
"timestamp": "1599536864",
"type": "TEXT",
"data": {
"text": "مرحبًا"
}
"member": "memberId",
"channel": "channeId",
"app": "appId",
"memberExtraData": {
"field": "بيانات اختبار",
"path": "الجنس"
}
}
}

رسالة فيديو:

{
"from": "85260903521",
"to": "85268227287",
"timestamp": "1599536864",
"type": "MISC",
"data": {
"attachments": [{
"type": "VIDEO",
"waMediaId": "e8a85916-2386-49dc-8f05-1cd0527bfb68"
}]
}
"member": "memberId",
"channel": "channeId",
"app": "appId",
"memberExtraData": {
"field": "بيانات اختبار",
"path": "الجنس"
}

تحديث حالة الرسالة

بجانب حدث الرسالة، يمكنك أيضًا استقبال تحديث حالة الرسالة بالاشتراك في الرسائل الواردة، مثل أحداث تم الإرسال و تم التسليم و تم القراءة من واتساب.

عينة من واتساب

عندما تصبح حالة الرسالة تم القراءة:

{
"to": "85268227287",
"timestamp": 1701914905000,
"messageId": "wamid.ABcLODUyNTQwNjM1OTgVAgARGBJCRDc4MkU4QTUzREFCMkU3REEA",
"from": "85254063598",
"data": {
"messageId": "wamid.ABcLODUyNTQwNjM1OTgVAgARGBJCRDc4MkU4QTUzREFCMkU3REEA"
},
"type": "READ",
"eventType": "INBOUND",
"member": "MEMBER_ID",
"channel": "CHANNEL_ID",
"app": "APP_ID"
}



الرسائل الصادرة

body


الخاصيةالنوعالوصف
typeStringيمكن أن تكون إما BOT أو MANUAL. تشير إلى ما إذا كانت الرسالة الصادرة من الدردشة الآلية أو من API / Broadcast
memberStringمعرّف العضو
channelStringمعرّف القناة
appStringمعرّف التطبيق
metaObjectapiSource التي تتضمن معلومات تكامل المصدر
memberExtraDataObjectبيانات إضافية عن العضو ومسار عضو صالح
customHeadersDataObjectمفتاح رأس مخصص وقيمة رأس مخصصة
messageEventObjectكائن messageEvent الذي يحتوي على الرسالة الموحدة


messageEvent


الخاصيةالنوعالوصف
fromStringمعرّف المرسل
toStringمعرّف المستلم
timestampNumberطابع زمني يونكس
typeStringنوع الرسالة
dataObjectبيانات الرسالة لنوع الرسالة المقابل
messageIdStringمعرّف الرسالة من المنصة الخارجية (قد لا توجد هذه الخاصية)


meta


الخاصيةالنوعالوصف
agentUserIdStringمعرّف المستخدم الذي أرسل الرسالة.
sourceObjectمعلومات تكامل المصدر؛ مطابق لـ apiSource
apiSourceObjectمعلومات تكامل المصدر؛ سيتم إهماله قريبًا


_source_


الخاصيةالنوعالوصف
integrationIdStringنوع تكامل المصدر
buildNumberإصدار التكامل
appIntegrationStringمعرّف التكامل


حدث تجريبي

{
"type": "MANUAL",
"app": "APP_ID",
"channel": "CHANNEL_ID",
"member": "MEMBER_ID",
"eventType": "API_OUTBOUND",
"meta": {
"agentUserId": "59cb495865243d002c6fc1f5",
"apiSource": {
"integrationId": "inbox",
"build": 1,
"appIntegration": "6420ffb53e65b445d4657ee1"
}
},
"__source__": {
"integrationId": "inbox",
"build": 1,
"appIntegration": "6420ffb53e65b445d4657ee1"
},
"messageEvent": {
"from": "14132521446",
"to": "85260903521",
"data": {
"text": "مرحبا"
},
"type": "TEXT",
"timestamp": 1712807869354,
"messageId": "wamid.HBgLODUyNjA5MDM1MjEVAgARGBJFMkI5MkQwODQ1NDc3Q0UwM0QA"
}
}
فكرة
ملاحظة

يمكن استخدام agentUserId في الرسالة الصادرة للحصول على معلومات عضو الفريق باستخدام استعلام Open API:

query getTeamMembersUserIdAndEmail
{
apiViewer {
app {
teamMembers {
user {
_id
email {
email
}
}
}
}
}
}


رسائل الروبوت الصادرة

رسائل استجابة الروبوت ستُرسل إلى webhook المخصص الخاص بك.

رسائل API الصادرة

الرسائل المرسلة عبر SendResponse API ستُرسل إلى webhook المخصص الخاص بك.

رسائل البث الصادرة

الرسائل المرسلة عبر البث ستُرسل إلى webhook المخصص الخاص بك.


أحداث تحديث العضو

بالاشتراك في هذه الأحداث، ستتلقى الإشعارات كلما حدث تغيير في حالة عضو ضمن هذه القناة.

تشمل أحداث تحديث العضو: إنشاء عضو، تحديث حالة اشتراك العضو، تحديث حالة الدردشة الحية للعضو، تحديث بيانات العضو الوصفية، تحديث بيانات العضو المؤقتة و تحديث علامات العضو.

body


الخاصيةالنوعالوصف
eventTypeStringMEMBER_UPDATE
functionNameStringNORMAL_UPDATE_MEMBER: تحديث العضو يدويًا في صفحة الأعضاء؛
BOT_UPDATE_MEMBER: تحديث العضو باستخدام الروبوت
memberStringمعرّف العضو
channelStringمعرّف القناة
appStringمعرّف التطبيق
beforeObjectحالة العضو قبل التغيير
afterObjectحالة العضو بعد التغيير

حدث تجريبي

{
"eventType": "MEMBER_UPDATE",
"functionName": "NORMAL_UPDATE_MEMBER",
"member": "memberId",
"channel": "channelId",
"app": "appId",
"before": {
"liveChat": false,
"tempData": {
"faqAns": [],
"listLength": 5
},
"tags": [
"test_broadcast"
]
},
"after": {
"liveChat": true,
"tempData": {
"faqAns": [],
"listLength": 1
},
"tags": [
"test_broadcast",
"testing_tag_2"
]
}
}

تحديثات الأعضاء الدفعيّة

عندما يتم تحديث عدة أعضاء دفعة واحدة، ستتلقى نوع الحدث BATCH_MEMBER_UPDATE.

body

الخاصيةالنوعالوصف
eventTypeStringBATCH_MEMBER_UPDATE
functionNameStringدالة التحديث الدفعي، بما في ذلك OPEN_API_BATCH_CREATE_CHAT، OPEN_API_UPDATE_MEMBERS، OPEN_API_BATCH_UPDATE_MEMBERS، NORMAL_UPDATE_MEMBERS، BATCH_ADD_TAGS، BATCH_DELETE_TAGS، BATCH_REPLACE_TAGS
membersArrayمصفوفة معرّفات الأعضاء
channelStringمعرّف القناة
appStringمعرّف التطبيق
updateObjectتفاصيل تحديث العضو

حدث تجريبي

{
"eventType": "BATCH_MEMBER_UPDATE",
"functionName": "BATCH_ADD_TAGS",
"members": [
"memberId_1",
"memberId_2",
"memberId_3",
"memberId_4",
"memberId_5",
"memberId_6"
],
"channel": "channelId",
"app": "appId",
"update": {
"$addToSet": {
"tags": {
"$each": [
"testing_tag_1"
]
}
}
}
}

أحداث تشغيل العقدة

بالاشتراك في هذا الحدث، ستتلقى إشعارات كلما تم تشغيل عقدة في هذه القناة.

body

الخاصيةالنوعالوصف
eventTypeStringNODE_TRIGGER
appStringمعرّف التطبيق
channelStringمعرّف القناة
memberStringمعرّف العضو
timestampStringالوقت الذي تم فيه تشغيل العقدة
nodeStringمعرّف العقدة
compositeIdStringمعرّف فريد للعقدة
treeStringمعرّف الشجرة
messageEventObjectكائن messageEvent الذي يحتوي على الرسالة الموحدة

حدث تجريبي

{
"app": "appId",
"channel": "channelId",
"member": "memberId",
"timestamp": 1680605255829,
"node": "nodeId",
"compositeId": null,
"tree": "treeId",
"eventType": "NODE_TRIGGER",
"messageEvent": {
"to": "123461662163",
"timestamp": 1680605248000,
"messageId": "wamid.HLavODUyNTpRNjM1OTgVAgASGBYzRUabcjRDNTcxQjhPQ8E3MEI0MkFCAA==",
"from": "85212345678",
"type": "TEXT",
"data": {
"text": "اختبار"
}
}
}

إدارة الويب هوكس في القناة

يتيح نظام الويب هوك الجديد في القناة تحكمًا أفضل في الأحداث التي تستقبلها عبر الويب هوك الخاص بك. في صفحة "البيئة" الخاصة بالقناة، يمكنك إدارة الويب هوكس المشترك بها لكل بيئة من بيئات القناة.


فكرة
ملاحظة

إذا كان نظام الويب هوك في قناتك لا يزال يعمل بالإصدار القديم، فسيظهر تذكير بالترقية عند دخولك إلى بيئة القناة.

إنشاء الويب هوكس

  1. لإضافة ويب هوك إلى قناتك، اختر "+ إنشاء ويب هوك جديد".
  1. أدخل عنوان URL للويب هوك، واختر الأحداث التي تريد الاشتراك بها. أخيرًا، انقر على "تأكيد" لتأكيد إعدادات الويب هوك.
  1. بعد إغلاق النافذة السابقة، تذكر أن "حفظ" إعدادات البيئة مرة أخرى.

Editar webhooks

  1. Para editar tu webhook, haz clic en "más" y selecciona "Editar".
  1. Recuerda "Confirmar" los cambios realizados al webhook existente.

Eliminar webhooks

Para eliminar tu webhook, haz clic en "más" y selecciona "Eliminar".

Menú avanzado

  1. El nuevo sistema de webhooks de canal también soporta el envío de Metadata de miembro y Encabezados personalizados. Para aplicarlos a tu webhook, selecciona "Mostrar menú avanzado".
  1. Luego, podrás ver las secciones de Metadata de miembro y Encabezados personalizados.
  1. Después de completar todos los valores requeridos, puedes hacer clic en "Confirmar" para confirmar la configuración.