هل يمكن تأجيل استدعاء webhook لوقت لاحق؟
اجعل رابطك يُستدعى بعد مهلة تختارها، من ثوانٍ قليلة حتى 30 يومًا: تذكير قبل انتهاء الفترة التجريبية بـ 24 ساعة، أو إلغاء فاتورة غير مدفوعة بعد 30 يومًا، دون أداة جدولة خاصة بك. تدفع حسب الاستخدام دون اشتراك.
تناسب حالات لا تحتاج جدولة متكررة بل تأخيرًا واحدًا محسوبًا بدقة قبل تنفيذ خطوة تالية في مسار العمل.
حين يجب أن يحدث شيء لاحقًا لا الآن
تُبنى معظم التطبيقات لتستجيب لما يحدث الآن: إرسال نموذج أو دفعة أو تسجيل. لكن حين تحتاج إلى أن يحدث شيء بعد مدة محددة من حدث ما، تلجأ الفرق عادةً إلى مهمة cron إضافية أو طابور رسائل أو صف في قاعدة البيانات يُفحص كل دقيقة. كلها تعمل، لكنها أكثر مما يلزم لاستدعاء واحد. هنا تصف المهلة فقط ونحن نراقب الساعة، ويُقبل طلبك فورًا فيتابع برنامجك عمله دون انتظار.
كيف تعمل المهلة وأين تفيد
ترسل مهلة من ثوانٍ قليلة حتى 30 يومًا ومعها أي محتوى تريد استعادته. لا شيء يعمل مبكرًا، ففي الموعد المطلوب يُستدعى رابطك مع ذلك المحتوى. وإذا فشل التسليم يُعاد ثلاث مرات قبل الإبلاغ عن خطأ واضح، ولا تُحتسب المحاولة الفاشلة. ومن الاستخدامات الشائعة تذكيرات انتهاء الفترة التجريبية، والتنبيه بعد ترك سلة الشراء، والإلغاء التلقائي للفواتير غير المدفوعة، وتصعيد تذاكر الدعم التي لم يُرد عليها، دون حلقة فحص تصونها ولا إدخال cron تنسى حذفه.
الفرق بينها وبين الجدولة الدورية
بخلاف جدولة Cron التي تكرر الاستدعاء في مواعيد ثابتة، تنفّذ هذه الأداة استدعاءً واحدًا فقط بعد مهلة تحددها لكل طلب — ثلاثون ثانية، ساعتان، يوم كامل. هذا يناسب حالات مثل إرسال تذكير بعد تسجيل حجز بيوم، أو إعادة محاولة عملية فشلت بعد خمس دقائق، حين لا تحتاج تكرارًا بل مهلة واحدة قبل تنفيذ محدد. هذا الفارق الجوهري يجعلها أداة تكميلية لا بديلة عن جدولة Cron، فكل منهما يخدم حالة استخدام مختلفة تمامًا عن الأخرى.
كيف تضبط المهلة والوجهة؟
لا حاجة لبناء جدول قاعدة بيانات مخصص لمهامك المؤجَّلة ولا لتشغيل عملية تفحص الوقت كل دقيقة؛ الانتظار كله يجري على جانبنا. يمكن أيضًا تحديد أكثر من استدعاء مؤجَّل لنفس الحدث بمهل مختلفة، كتذكير أول بعد ساعة وتذكير ثانٍ بعد يوم كامل، دون بناء منطق جدولة معقّد بنفسك.
استخدامات شائعة
تستخدمها متاجر إلكترونية لإرسال تذكير بسلة متروكة بعد ساعة من مغادرة الزائر، وتستخدمها فرق الدعم لإعادة محاولة استدعاء فشل بعد دقيقتين بدل الفشل النهائي الفوري. كلا الاستخدامين يحتاج تأخيرًا واحدًا محسوبًا بدقة، لا جدولة متكررة. يفيد أيضًا نظام حجوزات يريد إرسال رسالة تأكيد بعد نصف ساعة من الحجز فقط إن لم يُلغِه العميل خلال تلك المهلة، وهو سيناريو شائع في التجارة الإلكترونية.
حالات الاستخدام
تذكير بسلة متروكة
يضبط متجر تابع لشركة الواحة للتجارة المحدودة استدعاء مؤجَّلًا بعد ساعة من مغادرة الزائر دون إتمام الشراء، لإرسال تذكير بريدي تلقائي.
إعادة محاولة بعد فشل
يعيد فريق دعم تقني في شركة الخليج الرقمية محاولة استدعاء عملية فشلت بعد دقيقتين بدل اعتبارها فاشلة نهائيًا من أول محاولة.
الأسئلة الشائعة
ما أقصى مهلة تأجيل ممكنة؟
يمكن ضبط المهلة من ثوانٍ قليلة حتى عدة أيام حسب الحاجة؛ حدد المدة المطلوبة عند إنشاء الطلب.
هل تضمنون تنفيذ الاستدعاء في اللحظة نفسها بالضبط؟
التنفيذ يجري خلال ثوانٍ من انقضاء المهلة المحددة، لا في اللحظة الحسابية نفسها تمامًا، وهو فارق ضئيل لا يؤثر عمليًا.
ماذا يحدث إذا لم يستجب رابطي؟
يُعاد التسليم ثلاث مرات قبل الإبلاغ عن خطأ واضح. ولا تُحتسب محاولة التسليم الفاشلة عليك، فلا يكلّفك انقطاع مؤقت من جهتك شيئًا إضافيًا.
هل يمكن أن تعود إليّ بياناتي عند انتهاء المهلة؟
نعم. أرسل أي محتوى تريده مع المهلة، فيعود إلى رابطك في اللحظة المطلوبة، لتعرف إلى أي تذكير أو فاتورة أو تذكرة دعم ينتمي.
فيمَ تُستخدم المهلة المؤجلة عادةً؟
لكل ما يجب أن يحدث بعد وقت محدد من حدث ما: تذكير قبل انتهاء الفترة التجريبية بـ 24 ساعة، أو تنبيه بعد ساعتين من ترك سلة الشراء، أو إلغاء فاتورة غير مدفوعة بعد 30 يومًا، أو تصعيد تذكرة دعم ما زالت مفتوحة.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
يُنشئ طلب POST موثَّق المهمة، وتصل النتيجة عبر webhook أو رابط موقَّع. هذه الإمكانية متاحة عبر الواجهة البرمجية، لا كأداة ويب تفاعلية.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/dev/delay \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"webhook_url":"https://example.com/hook"}'const res = await fetch("https://api.kit.forhosting.com/dev/delay", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"webhook_url": "https://example.com/hook"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/delay",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"webhook_url": "https://example.com/hook"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/delay", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"webhook_url":"https://example.com/hook"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"webhook_url":"https://example.com/hook"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/delay", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"webhook_url": "https://example.com/hook"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.delay",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
تستدعي هذه الأداة عنوان webhook الذي تحدده بعد مهلة زمنية تضبطها أنت — دقائق أو ساعات أو أيام — فتنفّذ استدعاءً واحدًا مؤجَّلًا دون أن تبني طابور مهام أو تشغّل عملية خلفية تنتظر الوقت المناسب بنفسها.
كيف تضبط المهلة والوجهة؟
تمرّر إلى الـAPI عنوان الـwebhook والمدة المطلوب الانتظار قبل استدعائه، وتحتفظ الأداة بالطلب حتى تنقضي المهلة، ثم تستدعي العنوان مرة واحدة وتسجّل نتيجة الاستدعاء.
حالات التكامل
تذكير موعد بعد يوم
يضبط عبدالله المنصوري تذكيرًا يصل قبل موعد استشارة بيوم واحد بالضبط، عبر استدعاء webhook مؤجَّل من نظامه الداخلي.
أسئلة تقنية
كم السعر؟
$0.002 لكل استدعاء مؤجَّل، بلا اشتراك شهري.
ماذا لو أردت إلغاء استدعاء مؤجَّل قبل تنفيذه؟
يمكن إلغاؤه عبر استدعاء واحد إلى الـAPI قبل انقضاء المهلة، ولن تُحتسب حينها أي رسوم.
هل تُحفظ محتويات الطلب طوال فترة الانتظار؟
يُحفظ عنوان webhook والمهلة فقط حتى موعد التنفيذ، ثم يُحذفان بعد الاستدعاء.
هل تعمل هذه الأداة من المتصفح مجانًا؟
لا، التأجيل يحتاج تشغيلًا على خوادمنا طوال فترة الانتظار، فهي خدمة عبر الـAPI بسعر معلن، بلا نسخة مجانية.