إيقاف مؤشر الكتابة (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.
State Cleanup: Mastering the Stop Typing Engine
The /v2/send/stop-typing endpoint is the essential "Cleanup Crew" of the Wawp presence system. While simple in its objective—to remove the "typing..." or "recording audio..." indicators—it plays a critical role in maintaining the professional polish of your WhatsApp integration. In a high-stakes customer support or sales environment, a "typing..." indicator that lingers indefinitely without a resulting message is a significant UX failure that signals system malfunction or agent indecision.
🏗️ The Presence Termination Pipeline
When you explicitly call /stop-typing, Wawp executes a coordinated cleanup across the WhatsApp stack:
- The PAUSE Signal: The engine transmits a specialized
PAUSEpacket to the targetchatId. This packet instructs the recipient's WhatsApp client to immediately hide all presence indicators. - Override of Implicit Timeouts: While WhatsApp has a native timeout (usually 10–20 seconds), explicit calls to
/stop-typingprovide instant feedback. This is crucial for fast-paced, multi-step conversational flows where states change rapidly. - Internal Buffer Clearance: Wawp clears the local session's presence-tracking buffer to ensure that subsequent typing requests are treated as fresh starts, preventing "Presence Stuttering" on the recipient's UI.
🛡️ Strategic Best Practices for Presence Hygiene
1. The "Message-Sent" Auto-Stop
It is a common misconception that you must call /stop-typing immediately before sending a message.
- Fact: Sending any message (Text, Image, PDF, etc.) to a chat automatically triggers the "Stop Typing" behavior on the WhatsApp network.
- Optimization: To save API calls and reduce latency, do not call
/v2/send/stop-typingbefore or after sending your final message. The message delivery itself is the most efficient way to clear the status.
2. Handling Workflow Cancellations
This is the most critical use case for the explicit stop endpoint.
- Scenario: An agent starts a response in your CRM but then decides the inquiry belongs to a different department. They close the chat tab or transfer the ticket.
- Best Practice: Your CRM should automatically trigger
/v2/send/stop-typingwhenever an agent's focus leaves a chat that was previously in a "Typing" state. This prevents the "Phantom Agent" effect where a customer sees someone typing for minutes with no result.
3. Graceful AI Failure Recovery
If your AI backend (e.g., GPT-4 or Claude) times out or returns an error while a "typing..." indicator is active, your system must handle the cleanup.
- Implementation: Wrap your AI generation logic in a
try...catch...finallyblock. In thefinallysection, if no message was successfully sent, trigger/v2/send/stop-typing. This ensures that even in the event of a crash, the customer isn't left staring at a perpetual typing status.
🧩 Advanced Use Cases
The "Search Transition" UX
In complex bot flows where a user requests a search (e.g., "Find my order"), you can use /v2/send/start-typing to show work is in progress. If the search returns 0 results, trigger /v2/send/stop-typing before sending the "No results found" text. This momentary clearing of the status creates a distinct visual "Beat" in the conversation, signaling that one phase of logic has ended and another (the error message) has begun.
Agent Transfer Synchronization
When transferring a chat between human agents, the secondary agent may want to "Pick up" the thread quietly. Triggering stop-typing during the handoff ensures the transition is visually seamless for the customer, with no overlapping or conflicting indicators from two different sessions.
🛠️ Common Pitfalls and Solutions
- Double-Counting Latency: If your network is slow, calling
/stop-typingfollowed immediately by a message might cause the message to arrive before the stop signal is processed, leading to a brief flicker. Solution: Rely on the "Auto-Stop" property of messages whenever possible. - Rate Limit Caution: While presence signals are lightweight, WhatsApp still tracks the frequency of these specialized packets. Avoid sending more than 3
stop-typingcalls per second to the same chat to ensure your instance maintains a high trust score. - Group Environment Noise: In group chats with 200+ participants, presence indicators can be noisy. Use
/stop-typingonly when an agent was definitely "Active" and now definitely is "Not."
Summary of Capabilities:
- Explicitly terminate the "typing..." or "recording audio..." presence indicators.
- Native integration with WhatsApp PAUSE signaling for instant recipient feedback.
- Essential for cleaning up states after agent transfers or workflow cancellations.
- Zero-latency override of standard 20-second network-level timeouts.
- Foundation for reliable "Try/Finally" error handling in automated AI bot systems.
- Ensures a polished, professional conversational aesthetic by preventing "Phantom Typing."
البارامترات
قم بتهيئة المعاملات المطلوبة للتفاعل مع نقطة النهاية هذه. جميع وسائط الاستعلام والبيانات مدرجة أدناه مع تفاصيلها.
محتوى الطلب
يرسل كـ JSONstring | Your unique WhatsApp Instance ID مثال: | ||
string | Your API Access Token مثال: | ||
string | Target phone number or group ID مثال: |
برمج بالذكاء الاصطناعي باستخدام Wawp MCP
MCP READYقم بربط الـ API مباشرة مع Cursor أو Windsurf أو Claude Desktop، ودع الذكاء الاصطناعي يكتب لك كود الربط وينفذه تلقائياً!
أمثلة الكود
استخدم أمثلة الكود الجاهزة لدمج واجهة برمجة التطبيقات (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...