إرسال تفاعل (Reaction)
التفاعل مع رسالة محددة باستخدام رمز تعبيري (👍، ❤️، 😂، إلخ).
تسجيل الدخول مطلوب
سجل الدخول لاستبدال المعرفات (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.
التفاعلات الصغيرة: إتقان محرك تفاعلات الرسائل
تعد التفاعلات (/v2/send/reaction) واحدة من أقوى التفاعلات الصغيرة في نظام المراسلة الحديث. فهي تتيح للمستخدمين والبوتات تأكيد المعلومات، أو التعبير عن المشاعر، أو تقديم ملاحظات دون عبء الرد النصي الكامل. في تطبيقات Wawp، ليست التفاعلات مجرد لمسة تجميلية؛ بل هي إشارات هيكلية يمكن استخدامها لتتبع التفاعل، أو بناء أنظمة تصويت تفاعلية، أو تبسيط تأكيدات البوت للمستخدمين.
🏗️ بنية دورة حياة التفاعل
على عكس الرسائل الكاملة، التفاعلات هي بيانات وصفية إضافية مرتبطة برسالة موجودة. يدير محرك تفاعلات Wawp هذا الارتباط بدقة عالية:
- تحديد الهدف: يستخدم المحرك
messageIdلتحديد موقع الرسالة المحددة على خادم واتساب. يجب أن يكون هذا هو المعرف الفريد لرسالة موجودة في الدردشة المحددة بواسطةchatId. - تطبيع الرموز التعبيرية: بينما يمكنك إرسال أي رمز تعبيري، يضمن Wawp تشفير الحرف بشكل صحيح لـ WhatsApp WebSocket. إذا أرسلت سلسلة فارغة (
"")، يفسر المحرك ذلك كأمر "حذف التفاعل"، مما يوجه شبكة واتساب لإزالة تفاعلك السابق من تلك الرسالة المحددة. - التسليم السريع: يتم تسليم التفاعلات كحزم خفيفة الوزن وعالية الأولوية. هذا يضمن ظهور التفاعل فورًا تقريبًا على هاتف المستلم، مما يجعل الدردشة تبدو "حية" وتفاعلية.
🛡️ أفضل الممارسات الاستراتيجية للتفاعل مع المشاعر
1. استراتيجية "المجموعة القياسية"
بينما يدعم واتساب أي رمز تعبيري كتفاعل، فإن المستخدمين أكثر اعتيادًا على "إجراءات الرد السريع القياسية": 👍 (تأكيد/موافقة)، ❤️ (حب/جودة)، 😂 (ضحك)، 😮 (مفاجأة)، 😢 (تعاطف)، و 🙏 (شكر).
- تأثير تجربة المستخدم: من خلال الالتزام بهذه المعايير، فإنك تطابق الذاكرة العضلية للمستخدم.
- التوافق: الرموز التعبيرية النادرة أو المعقدة (مثل الوحدات العائلية متعددة الألوان) قد تظهر أحيانًا بشكل غير متسق عبر إصدارات الأندرويد أو سطح المكتب القديمة. الرموز القياسية آمنة عالميًا.
2. التأكيدات المؤتمتة
لا ينبغي للبوتات الحديثة الرد دائماً بالنصوص.
- مثال: إذا قال المستخدم "فهمت!" أو "شكراً!"، بدلاً من رد البوت بـ "على الرحب والسعة!" (وهي رسالة أخرى يجب على المستخدم مسحها)، اجعل البوت يتفاعل بـ 👍 أو 💙.
- القيمة: يحافظ هذا على نظافة سجل الدردشة مع الاستمرار في تزويد المستخدم بتعزيز إيجابي بأنه تم استلام مدخلاته.
3. الإزالة والتنظيف
لا تترك المشاعر القديمة باقية.
- سير العمل: إذا تفاعل البوت الخاص بك بـ ⏳ (جاري المعالجة) أثناء عمله على مهمة طويلة، فتأكد من استدعاء نقطة النهاية مرة أخرى بسلسلة فارغة
""لإزالة الرمز بمجرد انتهاء المهمة، أو استبدله بـ ✅ (تم). هذا يمنع واجهة المستخدم من أن تصبح مزدحمة برموز حالة متضاربة.
🧩 حالات استخدام متقدمة
التصويت التفاعلي خفيف الوزن
يمكنك بناء نظام تصويت منخفض الاحتكاك عن طريق طرح سؤال وجعل المستخدمين يتفاعلون برموز تعبيرية مختلفة لخيارات مختلفة.
- المنطق: استخدم Webhooks (
message.reaction) للاستماع إلى التفاعلات الواردة من المستخدمين. يقوم نظامك الخلفي بعد ذلك بحساب الأعداد لكل نوع رمز تعبيري، مما يتيح وظيفة "التفاعلات كأصوات" دون سطر واحد من كود الواجهة الإضافي.
مراقبة المشاعر للوكلاء البشريين
عند تشغيل تدفق مؤتمت، اجعل نظامك يراقب الرموز التعبيرية التي يتفاعل بها المستخدمون. إذا كان المستخدم يتفاعل باستمرار بـ 😢 أو 😠 مع رسائل البوت، يمكن لنظامك تفسير ذلك كـ "إشارة إحباط" وتصعيد الدردشة تلقائيًا إلى وكيل بشري.
🛠️ المزالق الشائعة والحلول
- خطأ "المعرف المفقود": إذا قدمت
messageIdبشكل صحيح ولكن الرسالة تم إرسالها منذ فترة طويلة (عادةً عدة أسابيع)، فقد يفشل التفاعل. التفاعلات تكون أكثر موثوقية عند تطبيقها على تاريخ حواري حديث (نشط). - إعادة التفاعل السريع: إرسال خمسة تفاعلات مختلفة لنفس الرسالة في ثانية واحدة يمكن اعتباره "برمجة مشبوهة". قم بتنفيذ تأخير بسيط (200 ملي ثانية على الأقل) بين تحديثات التفاعل لذات الرسالة المستهدفة.
- مزامنة التشفير: في حالات نادرة، إذا كانت مفاتيح الأمان للجلسة غير متزامنة، قد يفشل التفاعل بينما ينجح النص العادي. عادةً ما يؤدي
/v2/session/restartالسريع إلى حل هذه الحالات الحدودية للمزامنة.
ملخص الإمكانيات:
- تطبيق وإزالة تفاعلات واتساب الأصلية (الرموز التعبيرية) على أي رسالة موجودة.
- دعم "حذف التفاعل" عبر حمولات السلسلة فارغة.
- دعم عالي التزامن لأنظمة التصويت والتأكيد.
- تتبع الأحداث في الوقت الفعلي من خلال Webhooks لـ
message.reaction. - تنفيذ خفيف الوزن ومنخفض الأولوية لتقليل فوضى سجل الدردشة.
البارامترات
قم بتهيئة المعاملات المطلوبة للتفاعل مع نقطة النهاية هذه. جميع وسائط الاستعلام والبيانات مدرجة أدناه مع تفاصيلها.
محتوى الطلب
يرسل كـ JSONstring | المعرف الفريد لجلسة واتساب مثال: | ||
string | رمز وصول API الخاص بك مثال: | ||
string | معرف واتساب للمستلم (JID). يدعم الأفراد (@c.us)، المجموعات (@g.us)، والقنوات (@newsletter). مثال: | ||
string | معرف الرسالة التي تريد التفاعل معها. مثال: | ||
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...