شاهده أولًا
ما تحتاجه
- عنوان يقبل طلب POST بصيغة JSON، يبدأ بـ
https://. معظم أدوات الأتمتة تمنحك واحدًا (انظر أمثلة). - صلاحيات المسؤول في مساحة العمل الخاصة بك في UAT Studio.
اربط webhook الخاص بك
احصل على عنوان التدفّق الخاص بك
أنشئ الطرف المستقبِل أولًا، في الأداة التي تستخدمها، وانسخ عنوانه. تريد الاطّلاع على الرسائل قبل بناء أي شيء؟ افتح webhook.site: يمنحك عنوانًا مؤقتًا ويعرض كل ما يُرسل إليه. استخدمه مع بيانات اختبار فقط.
أضف webhook في UAT Studio
افتح مساحة العمل الخاصة بك، وانقر على Connections، واختر Webhook ضمن Add a connection وانقر على Add. ثم املأ ما يلي:
- Webhook address: العنوان من الخطوة 1.
- Send automatically:
- Only when I click Send on an issue (الافتراضي): يقرّر المسؤول أي المشكلات تُرسل.
- Every new issue and every status change, by itself: يُرسل كل شيء فورًا.
انقر على Save settings. يُحفظ الخيار ضمن Send automatically بمجرد تغييره.

أضف سرًّا (اختياري، وموصى به)
لكي يعرف التدفّق الخاص بك أن الرسالة واردة فعلًا من UAT Studio، اختر سرًّا طويلًا عشوائيًا (8 أحرف على الأقل، ويُفضّل 32 أو أكثر)، والصقه ضمن Secret (optional) وانقر على Store token. عندئذٍ تحمل كل رسالة الترويسة:
Authorization: Bearer <your secret>
اجعل التدفّق يرفض الرسائل التي لا تحمل الترويسة الصحيحة. يُخزَّن السرّ مشفّرًا ولا يمكن قراءته مرة أخرى؛ الصق سرًّا جديدًا لاستبداله.
اختبر الاتصال
انقر على Test connection. يرسل UAT Studio ما يلي:
{ "event": "test", "message": "Test message from UAT Studio" }
أي استجابة من 200 إلى 299 تُعدّ نجاحًا؛ وسترى The webhook answered 200. تأكّد من أن التدفّق يقبل حدث الاختبار، أو يتخطّاه، دون خطأ.
متى يُرسل
| Event | متى |
|---|---|
issue.sent | ينقر المسؤول على Send to Webhook في مشكلة. متاح دائمًا ما دام الربط On. |
issue.created | يُبلغ مختبِر عن مشكلة جديدة. فقط عند ضبط Send automatically على كل مشكلة جديدة. |
issue.status_changed | تتغيّر حالة مشكلة، مثلًا إلى Ready for retest أو Closed. فقط مع Send automatically. ويحمل from وto. |
test | تنقر على Test connection. |
المشكلة المدموجة في مشكلة أخرى كمشكلة مكرّرة لا ترسل issue.created جديدًا.
ما يُرسله
طلب POST مع Content-Type: application/json. جميع أحداث المشكلات لها البنية نفسها:
{
"event": "issue.status_changed",
"project": { "id": "6b1f…", "name": "CRM UAT" },
"issue": {
"id": "a41c…",
"key": "ISS-012",
"title": "Save button greyed out",
"description": "After changing the phone number, Save stays grey.",
"severity": "High",
"priority": "High",
"status": "Ready for retest",
"assignee": "Dev team",
"ticket": "PORTAL-41",
"ticket_url": "https://acme.atlassian.net/browse/PORTAL-41"
},
"test_case": { "num": 4, "title": "Edit a contact", "step": 3 },
"reported_by": "Tess Tester",
"from": "In progress",
"to": "Ready for retest",
"url": "https://app.uat.studio/p/6b1f…/issues"
}
| الحقل | المعنى |
|---|---|
event | issue.sent أو issue.created أو issue.status_changed أو test. |
project | مشروع UAT: المعرّف والاسم. |
issue.key | الرقم في UAT Studio، مثل ISS-012. استخدم issue.id للتعرّف على المشكلة نفسها في الرسائل اللاحقة. |
issue.severity | Critical أو High أو Medium أو Low. issue.priority: High أو Medium أو Low. |
issue.status | الحالة في UAT Studio: New أو In progress أو Ready for retest أو Closed أو Rejected. |
issue.ticket | تذكرة Jira أو Azure DevOps المرتبطة، إن وُجدت؛ وإلا فـ null. |
test_case | الاختبار ورقم الخطوة اللذان اكتُشفت فيهما المشكلة؛ وnull للمشكلة خارج أي اختبار. ومع issue.sent أيضًا action الخطوة ونتيجتها expected. |
reported_by | اسم المختبِر الذي اكتشفها. |
from، to | فقط مع issue.status_changed: الحالة القديمة والجديدة. |
url | مشكلات المشروع في UAT Studio. ويتطلب فتحه تسجيل الدخول. |
يمكن أن تكون الحقول null وقد نضيف حقولًا لاحقًا، لذا اجعل التدفّق يتجاهل ما لا يعرفه. ولا تُرسل لقطات الشاشة والملفات أبدًا؛ بل تبقى في UAT Studio.
بناء الطرف المستقبِل
Power Automate
- أنشئ Instant cloud flow مع المشغّل When an HTTP request is received، لـ Anyone.
- ضمن Request Body JSON Schema، انقر على Use sample payload to generate schema والصق المثال أعلاه.
- أضف Condition على
event(مثلًا: is not equal totest)، ثم الإجراءات التي تريدها: مهمة في Planner، أو صف في Excel، أو رسالة بريد إلكتروني، أو عنصر في SharePoint. - احفظ التدفّق. يعرض المشغّل الآن HTTP URL: هذا هو عنوان webhook.
ملاحظة: مشغّل HTTP هو موصّل premium في Power Automate. وللنشر في قناة Teams لا تحتاج إليه: استخدم الربط مع Microsoft Teams.
Zapier
أنشئ Zap مع المشغّل Webhooks by Zapier › Catch Hook، وانسخ العنوان، وانقر على Test connection في UAT Studio ثم أرسل مشكلة واحدة، ليتعرّف Zapier على الحقول. ثم أضف الإجراء الذي تريده، مثل رسالة في Slack.
Make
ابدأ سيناريو بـ Webhooks › Custom webhook، وانسخ العنوان وانقر على Redetermine data structure قبل أن ترسل مشكلة من UAT Studio.
خدمتك الخاصة
اقبل طلب POST بصيغة JSON، وتحقّق من الترويسة Authorization مقابل سرّك، وأجب بـ 200 بسرعة ثم أنجز العمل البطيء بعد ذلك. لا تُعاد الرسائل بعد الفشل، لذا سجّل ما تتلقاه.
إذا حدث خطأ ما
| ما تراه | ما يجب فعله |
|---|---|
| The webhook answered 401 or 403 | يرفض التدفّق الرسالة: تحقّق من السرّ في الطرفين، أو من أن التدفّق يمكن أن يستدعيه أي شخص. |
| The webhook answered 404 | العنوان خاطئ، أو أُزيل التدفّق أو عُطّل. انسخ العنوان مرة أخرى. |
| The webhook answered 400 or 500 | لا يقبل التدفّق الرسالة. غالبًا لا يتعامل مع الحدث test، أو مع حقل قيمته null. اطّلع على سجل تشغيل التدفّق. |
| لا يصل شيء للمشكلات الجديدة | تحقّق من أن Send automatically مضبوط على كل مشكلة جديدة ومن أن الربط On. ثم أرسل مشكلة واحدة يدويًا لترى استجابة التدفّق. |
| لا يوجد زر Send to Webhook | لا يراه إلا المسؤولون، وفقط عندما يكون الربط On. |
| عمليات الربط ليست جزءًا من باقتك | تتوفر عمليات الربط مع Team وBusiness وPartner وEnterprise، وكإضافة لباقة Project. ويمكن للمسؤول لديك الترقية من Plan & billing. |
لا تزال عالقًا؟ راسل [email protected] بالرسالة التي تراها. ولا ترسل إلينا السرّ نفسه أبدًا.
ما يغادر UAT Studio
- تُرسل الرسائل عبر HTTPS فقط.
- تحتوي على نص المشكلة والاختبار واسم المختبِر، ولا تحتوي أبدًا على ملفات أو لقطات شاشة. لا ترسلها إلا إلى خدمة تأتمنها مؤسستك على تلك المعلومات.
- يُخزَّن السرّ مشفّرًا (AES-256)، ويُحفظ المفتاح بمعزل عن قاعدة البيانات. ولا يستطيع أحد قراءته مرة أخرى.
- اضبط الربط على Off أو أزِله، فلا يُرسل شيء بعد ذلك.
