إيقاف الكتابة (Stop Typing)
إزالة حالة 'يكتب الآن...' أو 'يسجل مقطعاً صوتياً...' من الدردشة.
تسجيل الدخول مطلوب
سجل الدخول لاستبدال المعرفات (Instance ID) ورمز الوصول (Access Token) بمعلومات حسابك الحقيقي لاختبار ال API مباشرة.
تسجيل الدخوللا توجد معاملات استعلام مطلوبة
هذه النهاية الطرفية لا تتوقع بيانات في الرابط.
توصيات
Consult the official documentation for detailed parameter descriptions.
Test endpoints in a sandbox environment before production.
Keep your API client library up to date.
تنظيف الحالة: إتقان محرك "إيقاف الكتابة"
تعد نقطة النهاية /v2/send/stop-typing "فريق التنظيف" الأساسي في نظام تواجد Wawp. برغم بساطة هدفها—وهو إزالة مؤشرات "يكتب الآن..." أو "يسجل مقطعاً صوتياً..."—إلا أنها تلعب دوراً حاسماً في الحفاظ على الاحترافية في تكاملك مع واتساب. في بيئة دعم عملاء أو مبيعات عالية المخاطر، يعد مؤشر "يكتب الآن..." الذي يستمر لفترة طويلة دون رسالة ناتجة فشلاً كبيراً في تجربة المستخدم يشير إلى تعطل النظام أو تردد الوكيل.
🏗️ مسار إنهاء التواجد
عندما تستدعي /stop-typing صراحة، يقوم Wawp بتنفيذ عملية تنظيف منسقة:
- إشارة الإيقاف (PAUSE): يرسل المحرك حزمة
PAUSEمتخصصة إلى المستهدفchatId. توجه هذه الحزمة عميل واتساب الخاص بالمستلم لإخفاء جميع مؤشرات التواجد فوراً. - تجاوز المهلات التلقائية: بينما تمتلك واتساب مهلة تلقائية (عادة من 10 إلى 20 ثانية)، توفر الاستدعاءات الصريحة لـ
/stop-typingاستجابة فورية. هذا أمر بالغ الأهمية للتدفقات الحوارية سريعة الوتيرة حيث تتغير الحالات بسرعة. - مسح التخزين المؤقت الداخلي: يقوم Wawp بمسح مخزن تتبع التواجد للجلسة المحلية لضمان معاملة طلبات الكتابة اللاحقة كبدايات جديدة، مما يمنع "تأتأة التواجد" على واجهة مستخدم المستلم.
🛡️ أفضل الممارسات الاستراتيجية لنظام التواجد
1. الإيقاف التلقائي عند إرسال رسالة
من المفاهيم الخاطئة الشائعة أنه يجب عليك استدعاء /stop-typing مباشرة قبل إرسال رسالة.
- حقيقة: إرسال أي رسالة (نص، صورة، PDF، إلخ) إلى دردشة يؤدي تلقائياً إلى إطلاق سلوك "إيقاف الكتابة" على شبكة واتساب.
- تحسين: لتوفير استدعاءات API وتقليل التأخير، لا تستدعِ
/v2/send/stop-typingقبل أو بعد إرسال رسالتك النهائية. تسليم الرسالة نفسها هو الطريقة الأكثر كفاءة لمسح الحالة.
2. التعامل مع إلغاء سير العمل
هذه هي حالة الاستخدام الأكثر أهمية لنقطة النهاية الصريحة للإيقاف.
- سيناريو: يبدأ الوكيل في كتابة رد في CRM الخاص بك ولكنه يقرر بعد ذلك أن الاستفسار ينتمي إلى قسم آخر. يغلق علامة تبويب الدردشة أو ينقل التذكرة.
- أفضل ممارسة: يجب أن يقوم CRM الخاص بك تلقائياً بتشغيل
/v2/send/stop-typingكلما غادر تركيز الوكيل دردشة كانت في حالة "كتابة" سابقاً. هذا يمنع تأثير "الوكيل الوهمي" حيث يرى العميل شخصاً يكتب لعدة دقائق دون نتيجة.
3. التعافي من فشل الذكاء الاصطناعي
إذا تعطل نظام الذكاء الاصطناعي الخلفي الخاص بك أو أرجع خطأً أثناء تفعيل مؤشر "يكتب الآن..."، يجب على نظامك التعامل مع التنظيف.
- التنفيذ: غلف منطق توليد الذكاء الاصطناعي في كتلة
try...catch...finally. في قسمfinally، إذا لم يتم إرسال أي رسالة بنجاح، قم بتشغيل/v2/send/stop-typing. يضمن ذلك أنه حتى في حالة حدوث عطل، لن يظل العميل محدقاً في حالة كتابة أبدية.
🧩 حالات استخدام متقدمة
تجربة مستخدم "ما بعد البحث"
في تدفقات البوت المعقدة حيث يطلب المستخدم بحثاً (مثل "ابحث عن طلبي")، يمكنك استخدام /v2/send/start-typing لإظهار أن العمل جارٍ. إذا أرجع البحث 0 نتيجة، قم بتشغيل /v2/send/stop-typing قبل إرسال نص "لم يتم العثور على نتائج". يخلق هذا المسح اللحظي للحالة "نبضة" بصرية متميزة في المحادثة، مما يشير إلى انتهاء مرحلة من المنطق وبدء مرحلة أخرى (رسالة الخطأ).
مزامنة نقل الوكيل
عند نقل دردشة بين وكلاء بشريين، قد يرغب الوكيل الثاني في "استلام" الخيط بهدوء. يضمن تشغيل stop-typing أثناء التسليم أن يكون الانتقال سلساً بصرياً للعميل، دون وجود مؤشرات متداخلة أو متضاربة من جلستين مختلفتين.
🛠️ المزالق الشائعة والحلول
- تأخير العد المزدوج: إذا كانت شبكتك بطيئة، فإن استدعاء
/stop-typingمتبوعاً برسالة مباشرة قد يتسبب في وصول الرسالة قبل معالجة إشارة التوقف، مما يؤدي إلى ارتعاش بصري بسيط. الحل: اعتمد على خاصية "الإيقاف التلقائي" للرسائل كلما أمكن ذلك. - الحذر من حدود المعدل: بينما إشارات التواجد خفيفة الوزن، لا تزال واتساب تتبع وتيرة هذه الحزم المتخصصة. تجنب إرسال أكثر من 3 استدعاءات
stop-typingفي الثانية إلى نفس الدردشة لضمان محافظة مثيلك على درجة ثقة عالية. - الضوضاء في بيئة المجموعات: في المجموعات التي تضم أكثر من 200 مشارك، يمكن أن تكون مؤشرات التواجد مزعجة. استخدم
/stop-typingفقط عندما كان الوكيل "نشطاً" بالتأكيد والآن هو "غير نشط" بالتأكيد.
ملخص الإمكانيات:
- إنهاء مؤشرات التواجد "يكتب الآن..." أو "يسجل مقطعاً صوتياً..." صراحة.
- تكامل أصلي مع إشارات PAUSE في واتساب لردود فعل فورية للمستلم.
- ضروري لتنظيف الحالات بعد نقل الوكلاء أو إلغاء سير العمل.
- تجاوز فوري لمهلات الشبكة القياسية التي تبلغ 20 ثانية.
- أساس للتعامل الموثوق مع الأخطاء (Try/Finally) في أنظمة بوت الذكاء الاصطناعي المؤتمتة.
- يضمن جمالية حوارية مصقولة واحترافية من خلال منع "الكتابة الوهمية".
البارامترات
قم بتهيئة المعاملات المطلوبة للتفاعل مع نقطة النهاية هذه. جميع وسائط الاستعلام والبيانات مدرجة أدناه مع تفاصيلها.
محتوى الطلب
يرسل كـ JSONstring | المعرف الفريد لجلسة واتساب مثال: | ||
string | رمز وصول API الخاص بك مثال: | ||
string | رقم الهاتف المستهدف أو معرف المجموعة مثال: |
أمثلة الكود
استخدم أمثلة الكود الجاهزة لدمج واجهة برمجة التطبيقات (API) في مشروعك بسرعة وكفاءة. اختر لغة البرمجة والمكتبة التي تفضلها.
الردود المتوقعة
استكشف كافة الردود والنتائج المحتملة من الخادم. قمنا بتوثيق كل كود حالة (Status Code) مع أمثلة للبيانات لتسهيل معالجة الأخطاء والنجاح.
Example
{
"_data": {
"id": {
"fromMe": true,
"remote": "000000000000@c.us",
"id": "MSG_ID_123456",
"_serialized": "true_000000000000@c.us_MSG_ID_123456"
},
"viewed": false,
"body": "BASE64_IMAGE_DATA",
"type": "image",
"t": 1759108866,
"from": {
"server": "c.us",
"user": "111111111111",
"_serialized": "111111111111@c.us"
},
"to": {
"server": "c.us",
"user": "000000000000",
"_serialized": "000000000000@c.us"
},
"ack": 0,
"isNewMsg": true,
"star": false,
"kicNotified": false,
"caption": "Here's your requested image.",
"deprecatedMms3Url": "https://example.com/media-url",
"directPath": "/media/direct/path/example",
"mimetype": "image/jpeg",
"filehash": "FILE_HASH_PLACEHOLDER",
"encFilehash": "ENC_FILE_HASH_PLACEHOLDER",
"size": 192487,
"mediaKey": "MEDIA_KEY_PLACEHOLDER",
"mediaKeyTimestamp": 1759108865,
"streamable": false,
"mediaHandle": null,
"isFromTemplate": false,
"pollInvalidated": false,
"isSentCagPollCreation": false,
"latestEditMsgKey": null,
"latestEditSenderTimestampMs": null,
"mentionedJidList": {
},
"groupMentions": {
},
"isEventCanceled": false,
"eventInvalidated": false,
"isVcardOverMmsDocument": false,
"isForwarded": false,
"isQuestion": false,
"questionReplyQuotedMessage": null,
"questionResponsesCount": 0,
"readQuestionResponsesCount": 0,
"labels": {
},
"hasReaction": false,
"disappearingModeInitiator": "chat",
"disappearingModeTrigger": "chat_settings",
"productHeaderImageRejected": false,
"lastPlaybackProgress": 0,
"isDynamicReplyButtonsMsg": false,
"isCarouselCard": false,
"parentMsgId": null,
"callSilenceReason": null,
"isVideoCall": false,
"callDuration": null,
"callCreator": null,
"callParticipants": null,
"isCallLink": null,
"callLinkToken": null,
"isMdHistoryMsg": false,
"stickerSentTs": 0,
"lastUpdateFromServerTs": 0,
"invokedBotWid": null,
"bizBotType": null,
"botResponseTargetId": null,
"botPluginType": null,
"botPluginReferenceIndex": null,
"botPluginSearchProvider": null,
"botPluginSearchUrl": null,
"botPluginSearchQuery": null,
"botPluginMaybeParent": false,
"botReelPluginThumbnailCdnUrl": null,
"botMessageDisclaimerText": null,
"botMsgBodyType": null,
"requiresDirectConnection": false,
"bizContentPlaceholderType": null,
"hostedBizEncStateMismatch": false,
"senderOrRecipientAccountTypeHosted": false,
"placeholderCreatedWhenAccountIsHosted": false,
"galaxyFlowDisabled": false,
"links": {
}
},
"mediaKey": "MEDIA_KEY_PLACEHOLDER",
"id": {
"fromMe": true,
"remote": "000000000000@c.us",
"id": "MSG_ID_123456",
"_serialized": "true_000000000000@c.us_MSG_ID_123456"
},
"ack": 0,
"hasMedia": true,
"body": "Here's your requested image.",
"type": "image",
"timestamp": 1759108866,
"from": "111111111111@c.us",
"to": "000000000000@c.us",
"deviceType": "android",
"isForwarded": false,
"forwardingScore": 0,
"isStatus": false,
"isStarred": false,
"fromMe": true,
"hasQuotedMsg": false,
"hasReaction": false,
"vCards": {
},
"mentionedIds": {
},
"groupMentions": {
},
"isGif": false,
"links": {
}
}Command Palette
Search for a command to run...