الردود التلقائية
تعديل / تشغيل وإيقاف قاعدة
PATCH
/v2/numbers/{numberId}/auto-replies/{ruleId}- الصلاحية:
autoreplies:write - Idempotency-Key:اختياري
- بيغيّر إعدادات
تعديل جزئي؛ enabled بيشغل ويوقف.
البارامترات
المسار
| الاسم | النوع | القيود | الوصف |
|---|---|---|---|
numberIdإجباري | النوعstring | القيود— | الوصفرقم الـ id بتاع الرقم (من GET /v2/numbers). |
ruleIdإجباري | النوعstring | القيود— | الوصفid قاعدة الرد التلقائي. |
الهيدرز
| الاسم | النوع | القيود | الوصف |
|---|---|---|---|
Idempotency-Keyاختياري | النوعstring | القيود≤ 191 حرف | الوصفid فريد من عندك للعملية دي (حد أقصى 191 حرف ASCII). لو كررت بنفس المفتاح ونفس الـ body بيرجعلك أول رد ومعاه Idempotent-Replayed: true — عمرها ما تتنفذ مرتين. بيتحفظ 24 ساعة. |
X-Request-Idاختياري | النوعstring | القيود— | الوصفاختياري: id الطلب بتاعك وبيرجعلك (غير كده بنعمل req_…). اديه للدعم لو احتجت. |
الـ Body
| الاسم | النوع | القيود | الوصف |
|---|---|---|---|
nameاختياري | النوعstring | القيود≤ 120 حرف | الوصفاسم القاعدة (حد أقصى 120). |
enabledاختياري | النوعboolean | القيودالافتراضي true | الوصفfalse بيسيب القاعدة موجودة بس يوقف ردها. |
triggerاختياري | النوعobject | القيود— | الوصفإمتى القاعدة ترد. |
trigger.typeاختياري | النوعstring | القيودواحد من: KEYWORD · FIRST_MESSAGE · AWAY | الوصفKEYWORD (الرسالة فيها/هي كلمة معينة) أو FIRST_MESSAGE (ترحيب بمحادثة جديدة) أو AWAY (برا مواعيد العمل). |
trigger.matchاختياري | النوعstring | القيودواحد من: EXACT · CONTAINS · STARTS_WITH · REGEX | الوصفEXACT أو CONTAINS أو STARTS_WITH (كلمات حرفية بعد توحيد الحروف العربي: أ/إ/آ ← ا، ى ← ي، ة ← ه، من غير تشكيل) أو REGEX (أنماط RE2 في trigger.patterns). أي حالة حروف مقبولة (regex و starts_with)؛ و trigger.matchType اسم بديل. |
trigger.keywordsاختياري | النوعstring[] | القيود≤ 50 عنصر | الوصفلحد 50 كلمة لقواعد EXACT / CONTAINS / STARTS_WITH. |
trigger.patternsاختياري | النوعstring[] | القيود1–10 عنصر | الوصفقواعد REGEX: من 1 لـ 10 أنماط RE2، كل نمط ≤ 200 حرف؛ أي نمط يطابق بيشغّل القاعدة. وقت خطّي — من غير نظر للأمام/للخلف ولا إشارة لمجموعة سابقة. المجموعات بتتحط في الرد كـ {1} و {2} أو {اسم_المجموعة}. |
trigger.regexاختياري | النوعobject | القيود— | الوصفخيارات REGEX. |
trigger.regex.ignoreCaseاختياري | النوعboolean | القيودالافتراضي true | الوصفتجاهل الحروف الكبيرة والصغيرة (افتراضيًا true). |
trigger.regex.normalizeArabicاختياري | النوعboolean | القيودالافتراضي true | الوصفالمطابقة على النص بعد توحيد الحروف العربي: أ/إ/آ ← ا، ى ← ي، ة ← ه، من غير تطويل وتشكيل، والأرقام العربي ← 0–9 (افتراضيًا true). |
trigger.regex.allowLinksInCapturesاختياري | النوعboolean | القيودالافتراضي false | الوصفسيب الروابط في الأجزاء الملتقطة (افتراضيًا false: بتتشال دايمًا عشان محدش يخلّي رقمك يبعت رابط من اختياره). |
scheduleاختياري | النوعobject | null | القيود— | الوصفمواعيد العمل (لقواعد AWAY). null = طول الوقت. |
schedule.timezoneاختياري | النوعstring | القيود— | الوصفالمنطقة الزمنية IANA، مثلًا Africa/Cairo أو Asia/Riyadh. |
schedule.daysاختياري | النوعinteger[] | القيود— | الوصفأيام الشغل، 0 = الأحد … 6 = السبت. |
schedule.startاختياري | النوعstring | القيود— | الوصفوقت الفتح HH:mm. |
schedule.endاختياري | النوعstring | القيود— | الوصفوقت القفل HH:mm. |
replyاختياري | النوعobject | القيود— | الوصفالرد. |
reply.textاختياري | النوعstring | القيود≤ 4096 حرف | الوصفنص الرد؛ {name|بديل} بيحط اسم العميل. |
reply.mediaUrlاختياري | النوعstring | القيود— | الوصفملف https:// عام اختياري يتبعت مع الرد. |
reply.mediaTypeاختياري | النوعstring | القيودواحد من: image · video · document · audio | الوصفنوع reply.mediaUrl. |
cooldownMinutesاختياري | النوعinteger | القيود≥ 0 | الوصفماترُدّش على نفس الشخص بنفس القاعدة تاني قبل الدقايق دي. |
priorityاختياري | النوعinteger | القيود— | الوصفالترتيب لو أكتر من قاعدة اتطابقت: الرقم الأصغر بيتشاف الأول (الافتراضي 0). |
الطلب
curl -X PATCH "https://mursilat.com/api/v2/numbers/cm1abcd2345efgh6789ijkl/auto-replies/cm3rule0001xyz" \
-H "Authorization: Bearer $WASLA_API_KEY" \
-H "Idempotency-Key: order-1042-confirm" \
-H "Content-Type: application/json" \
-d '{
"enabled": false
}'const res = await fetch('https://mursilat.com/api/v2/numbers/cm1abcd2345efgh6789ijkl/auto-replies/cm3rule0001xyz', {
method: 'PATCH',
headers: {
Authorization: `Bearer ${process.env.WASLA_API_KEY}`,
'Idempotency-Key': 'order-1042-confirm',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"enabled": false
}),
});
const data = await res.json();
if (!res.ok) throw new Error(`${data.error.code}: ${data.error.message}`);
console.log(data);import os
import requests
headers = {"Authorization": f"Bearer {os.environ['WASLA_API_KEY']}", "Idempotency-Key": "order-1042-confirm"}
res = requests.patch(
"https://mursilat.com/api/v2/numbers/cm1abcd2345efgh6789ijkl/auto-replies/cm3rule0001xyz",
headers=headers,
json={
"enabled": False
},
timeout=30,
)
data = res.json()
if not res.ok:
raise RuntimeError(f"{data['error']['code']}: {data['error']['message']}")
print(data)<?php
$ch = curl_init('https://mursilat.com/api/v2/numbers/cm1abcd2345efgh6789ijkl/auto-replies/cm3rule0001xyz');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'PATCH',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('WASLA_API_KEY'),
'Idempotency-Key: order-1042-confirm',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'enabled' => false
], JSON_UNESCAPED_UNICODE),
]);
$data = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status >= 400) { throw new Exception($data['error']['code'] . ': ' . $data['error']['message']); }
print_r($data);{
"enabled": false
}الرد
200مثال
{
"id": "cm3rule0001xyz",
"sessionId": "cm1abcd2345efgh6789ijkl",
"scope": "number",
"name": "الأسعار",
"enabled": false,
"trigger": {
"type": "KEYWORD",
"match": "CONTAINS",
"keywords": [
"سعر",
"بكام",
"price"
]
},
"schedule": null,
"reply": {
"text": "أهلاً {name|بيك} 👋 الأسعار: https://example.com/prices"
},
"cooldownMinutes": 60,
"priority": 0,
"stats": {
"triggered": 42,
"lastTriggeredAt": "2026-10-13T07:40:00.000Z"
},
"createdAt": "2026-10-01T09:00:00.000Z",
"updatedAt": "2026-10-10T09:00:00.000Z"
}شكل الرد
حقول الرد في المثال. افتح الكائنات والقوايم.
responseobject13 حقل
- idstring "cm3rule0001xyz"
- sessionIdstring "cm1abcd2345efgh6789ijkl"
- scopestring "number"
- namestring "الأسعار"
- enabledboolean false
triggerobject3 حقل
- typestring "KEYWORD"
- matchstring "CONTAINS"
keywordsarray3 عنصر
- [0]string "سعر"
- schedulenull null
replyobject1 حقل
- textstring "أهلاً {name|بيك} 👋 الأسعار: https://example.com/prices"
- cooldownMinutesinteger 60
- priorityinteger 0
statsobject2 حقل
- triggeredinteger 42
- lastTriggeredAtstring "2026-10-13T07:40:00.000Z"
- createdAtstring "2026-10-01T09:00:00.000Z"
- updatedAtstring "2026-10-10T09:00:00.000Z"
الأخطاء
أخطاء المصادقة وحدود الطلبات والتحقق العامة بس.
جرّب
ابعت الطلب ده من متصفحك لـ API مرسلات.
مثال موثّقمعاينة — النسخة دي من التوثيق مش على mursilat.com، فالكونسول بيعرض المثال الموثّق بدل ما يكلم الـ API.
الطلبات الحقيقية بتستخدم رقمك وباقتك الحقيقيين: ممكن تبعت رسايل واتساب وتصرف من رصيدك وتمسح بيانات. (بيغيّر إعدادات)
متخزن في ذاكرة التبويب ده بس: عمره ما بيتحفظ ولا بيتحط في الرابط، وبيتبعت لـ mursilat.com بس. لو عملت reload بيتنسي.