إرسال تفاعل (Reaction Emoji)
إرسال تفاعلات الإيموجي على الرسائل الواردة والصادرة.
تسجيل الدخول مطلوب
سجل الدخول لاستبدال المعرفات (Instance ID) ورمز الوصول (Access Token) بمعلومات حسابك الحقيقي لاختبار ال API مباشرة.
تسجيل الدخوللا توجد معاملات استعلام مطلوبة
هذه النهاية الطرفية لا تتوقع بيانات في الرابط.
توصيات
Use "reply_to" to maintain conversation context.
Handle distinct message types (text, image, video) appropriately.
Implement a robust retry mechanism for failed sends.
Micro-Interactions: Mastering the Message Reaction Engine
Reactions (/v2/send/reaction) are one of the most powerful micro-interactions in a modern messaging ecosystem. They allow users and bots to acknowledge information, express sentiment, or provide feedback without the friction of a full text reply. In a Wawp-powered application, reactions aren't just cosmetic; they are structural signals that can be used to track engagement, build interactive voting systems, or simplify bot-to-user acknowledgements.
🏗️ The Reaction Lifecycle Architecture
Unlike full messages, reactions are additive metadata attached to an existing message. Wawp’s reaction engine manages this attachment with high precision:
- Target Identification: The engine uses the
messageIdto locate the specific message on the WhatsApp backend. This must be the unique ID of an existing message in the chat identified bychatId. - Emoji Normalization: While you can send any emoji, Wawp ensures the character is correctly encoded for the WhatsApp WebSocket. If you send an empty string (
""), the engine interprets this as a "Delete Reaction" command, instructing the WhatsApp network to remove your previous sentiment from that particular message. - Atomic Delivery: Reactions are delivered as light-weight, high-priority packets. This ensures that a reaction appears almost instantaneously on the recipient's phone, making the chat feel "Live" and responsive.
🛡️ Strategic Best Practices for Sentiment Engagement
1. The "Standard Set" Strategy
While WhatsApp supports any emoji as a reaction, users are most accustomed to the "Standard Quick Actions": 👍 (Acknowledgement), ❤️ (Love/Quality), 😂 (Laughter), 😮 (Surprise), 😢 (Sympathy), and 🙏 (Thanks).
- UX Impact: By sticking to these standards, you match the user's muscle memory.
- Compatibility: Rare or complex combined emojis (like multi-colored family units) can sometimes render inconsistently across older Android or Desktop versions. Standard emojis are universally safe.
2. Automated Acknowledgements
Modern bots shouldn't always respond with text.
- Example: If a user says "Got it!" or "Thanks!", instead of the bot replying with "You're welcome!" (another message for the user to clear), have the bot react with a 👍 or 💙.
- Value: This keeps the chat history clean while still providing the user with positive reinforcement that their input was received.
3. Removal and Cleanup
Don't let outdated sentiments linger.
- Workflow: If your bot reacts with a ⏳ (Processing) while it’s working on a long task, make sure to call the endpoint again with an empty string
""to remove the ⏳ once the task is finished, or replace it with a ✅ (Done). This prevents the UI from becoming cluttered with conflicting status emojis.
🧩 Advanced Use Cases
Lightweight Interactive Voting
You can build a low-friction voting system by asking a question and having users react with different emojis for different options.
- Logic: Use your Webhooks (
message.reaction) للاستماع إلى التفاعلات الواردة من المستخدمين. Your backend then tallies the counts for each emoji type, enabling "Reactions-as-Votes" functionality without a single line of extra UI code.
Sentiment Monitoring for Human Agents
When an automated flow is running, have your system monitor the emojis users react with. If a user consistently reacts with 😢 or 😠 to bot messages, your system can interpret this as a "Frustration Signal" and automatically escalate the chat to a human agent.
🛠️ Common Pitfalls and Solutions
- The "Missing ID" Error: If you provide a correctly formatted
messageIdbut the message was sent too long ago (typically several weeks), the reaction may fail. Reactions are most reliable when applied to recent (active) conversation history. - Rapid Re-Reaction: Sending five different reactions to the same message in one second can be flagged as "Suspicious Scripting." Implement a small jitter or debounce (at least 200ms) between reaction updates to the same target message.
- Encryption Resync: In rare cases, if a session's security keys are out of sync, a reaction might fail while standard text succeeds. A quick
/v2/session/restartusually resolves these synchronization edge cases.
Summary of Capabilities:
- Apply and remove native WhatsApp reactions (emojis) to any existing message.
- Support for "Delete Reaction" via empty string payloads.
- High-concurrency support for voting and acknowledgement systems.
- Real-time event tracking through
message.reactionWebhooks. - Lightweight and low-priority execution to minimize chat-history clutter.
البارامترات
قم بتهيئة المعاملات المطلوبة للتفاعل مع نقطة النهاية هذه. جميع وسائط الاستعلام والبيانات مدرجة أدناه مع تفاصيلها.
محتوى الطلب
يرسل كـ JSONstring | Your unique WhatsApp Instance ID مثال: | ||
string | Your API Access Token مثال: | ||
string | Recipient's WhatsApp ID (JID). Supports Individuals (@c.us), Groups (@g.us), and Newsletters (@newsletter). مثال: | ||
string | The ID of the message you want to react to. مثال: | ||
string | The emoji reaction. Use an empty string to remove. مثال: |
برمج بالذكاء الاصطناعي باستخدام 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...