الحصول على الرسائل في المحادثة

استرجع الرسائل من محادثة معينة مع تصفية وترقيم.

GET
https://api.wawp.net/v2/chats/messages?access_token=YOUR_ACCESS_TOKEN&chatId=201234567890%40c.us&downloadMedia=true&instance_id=123456789&limit=50&offset=0

تسجيل الدخول مطلوب

سجل الدخول لاستبدال المعرفات (Instance ID) ورمز الوصول (Access Token) بمعلومات حسابك الحقيقي لاختبار ال API مباشرة.

تسجيل الدخول
اختبار /v2/chats/messages
GET
GET

لا توجد معاملات استعلام مطلوبة

هذه النهاية الطرفية لا تتوقع بيانات في الرابط.

توصيات

  • استخدم معلمة 'limit' لجلب ما هو مطلوب فقط لمنفذ العرض.

  • قم بتخزين الرسائل القديمة مؤقتًا محليًا لتقليل حمل API.

جلب سجل المحادثة

استرجع الرسائل السابقة لبناء عرض كامل للمحادثة في تطبيقك.

سياق عميق: إتقان استرجاع الرسائل وإرواء الوسائط

تعد نقطة النهاية /v2/chats/messages القلب التقني لأي نظام CRM أو لوحة تحكم دعم تعتمد على واتساب. إنها تسمح لتطبيقك بـ "النظر إلى الماضي"، وإعادة بناء التدفق الحواري بدقة. تتعامل هذه النقطة مع كل شيء من تاريخ النصوص البسيط إلى الاستحواذ المعقد على الوسائط، مما يجعلها أداة قوية ولكنها تتطلب استهلاكاً للموارد يستوجب استراتيجية تنفيذ مدروسة.


🏗️ الهيكلية التقنية للاسترجاع

عند الاستعلام عن الرسائل، يقوم محرك Wawp بعدة عمليات:

  1. دقة JID: يتحقق من chatId ويحدد قسم التخزين المحلي لتلك المحادثة المحددة.
  2. إدارة المؤشرات: باستخدام limit و offset، يتنقل في مخزن الرسائل المفهرس لاسترجاع شريحة محددة من التاريخ.
  3. "التحميل الكسول" للوسائط: إذا تم تفعيل downloadMedia، يحاول المحرك جلب البيانات الثنائية الإقليمية من شبكة توصيل المحتوى (CDN) الخاصة بواتساب، وفك تشفيرها باستخدام مفاتيح الجلسة، وإعادتها كحمولة Base64.

🚀 استراتيجيات تحسين مزامنة السجل

بالنسبة للمطورين الذين يبنون أرشيفاً محلياً للرسائل، نوصي بنمط الردمي التكراري (Recursive Backfill):

1. تنفيذ "التمرير اللانهائي"

في واجهتك، عندما ينتقل المستخدم إلى أعلى المحادثة:

  • المحفز: رصد حدث التمرير واستدعاء /v2/chats/messages مع الـ offset التالي.
  • حالة التحميل: اظهر مؤشر تحميل خفيف. بمجرد وصول الرسائل، أضفها إلى بداية مصفوفتك المحلية.
  • إزالة التكرار: تحقق دائماً من وجود معرفات messageId مكررة لتجنب "الرسائل الشبحية".

2. التعامل الاستراتيجي مع الوسائط (نموذج "الدفع حسب الاستخدام")

يعد تنزيل الوسائط لكل رسالة في جلب السجل أمراً غير فعال وقد يسبب تأخيراً كبيراً في الشبكة.

  • أفضل الممارسات: اضبط دائماً downloadMedia: false عند استرجاع القوائم.
  • الإرواء عند الطلب: يجب أن تظهر واجهتك أيقونة مؤقتة لرسائل الوسائط. فقط عندما ينقر المستخدم على تلك الرسالة المحددة، استدعِ /v2/message/get مع ضبط downloadMedia: true.

🛡️ أفضل الممارسات لسلامة البيانات

  • أنواع الرسائل: يحتوي واتساب على عشرات الأنواع من الرسائل. تأكد من أن مكون "الرسالة" في واجهتك مرن بما يكفي لعرض هذه الهياكل المختلفة بناءً على حقل type.
  • مزامنة الطابع الزمني: يعيد Wawp الطوابع الزمنية بتنسيق Unix Epoch. قم دائماً بتحويلها إلى المنطقة الزمنية المحلية للمستخدم.

🧩 حالات استخدام متقدمة

ذاكرة الذكاء الاصطناعي الحواري (RAG)

إذا كنت تبني بوت ذكاء اصطناعي، استخدم هذه النقطة لتوفير سياق آخر 20 رسالة للنموذج اللغوي (LLM).

تدقيق ضمان الجودة (QA)

يمكن للمديرين مراجعة أداء الوكيل من خلال جلب سجل "التذاكر المغلقة" لحساب زمن الحل وتقييم نبرة الاستجابات ودقتها.

البارامترات

قم بتهيئة المعاملات المطلوبة للتفاعل مع نقطة النهاية هذه. جميع وسائط الاستعلام والبيانات مدرجة أدناه مع تفاصيلها.

بارامترات الرابط

جزء من مسار الرابط أو استعلام
string

WhatsApp Instance ID

مثال:
string

API Access Token

مثال:
string

Target Chat ID (phone@c.us or group@g.us)

مثال:
number

عدد الرسائل المراد استرجاعها

مثال:
number

عدد الرسائل المراد تخطيها

مثال:
boolean

ما إذا كان سيتم تنزيل وإرجاع محتوى الوسائط

مثال:

أمثلة الكود

استخدم أمثلة الكود الجاهزة لدمج واجهة برمجة التطبيقات (API) في مشروعك بسرعة وكفاءة. اختر لغة البرمجة والمكتبة التي تفضلها.

1const baseUrl = "https://api.wawp.net";
2const endpoint = "/v2/chats/messages";
3const params = new URLSearchParams({
4 "instance_id": "123456789",
5 "access_token": "YOUR_ACCESS_TOKEN",
6 "chatId": "201234567890@c.us",
7 "limit": "50",
8 "offset": "0",
9 "downloadMedia": "true"
10}).toString();
11
12
13fetch(`${baseUrl}${endpoint}${params ? '?' + params : ''}`, {
14 method: "GET",
15 headers: { "Content-Type": "application/json" },
16
17})
18 .then(async (response) => {
19 if (response.ok) {
20 const data = await response.json();
21 console.log("Success:", data);
22 return data;
23 }
24
25 // Error Handling
26 if (response.status === 400) {
27 console.error("Error 400: طلب غير صالح - معاملات مطلوبة مفقودة");
28 }
29 if (response.status === 400) {
30 console.error("Error 400: طلب غير صالح (تنسيق XML)");
31 }
32 if (response.status === 400) {
33 console.error("Error 400: طلب غير صالح (نص عادي)");
34 }
35 if (response.status === 401) {
36 console.error("Error 401: غير مصرح - مفتاح الوصول غير صالح أو مفقود");
37 }
38 if (response.status === 401) {
39 console.error("Error 401: غير مصرح (تنسيق XML)");
40 }
41 if (response.status === 404) {
42 console.error("Error 404: غير موجود - الجلسة غير موجودة");
43 }
44 if (response.status === 404) {
45 console.error("Error 404: غير موجود (تنسيق XML)");
46 }
47 if (response.status === 500) {
48 console.error("Error 500: خطأ في الخادم الداخلي - فشل غير متوقع");
49 }
50 if (response.status === 500) {
51 console.error("Error 500: خطأ في الخادم الداخلي (HTML)");
52 }
53 if (response.status === 502) {
54 console.error("Error 502: بوابة غير صالحة - فشل الاتصال بالخادم الرئيسي");
55 }
56 if (response.status === 502) {
57 console.error("Error 502: بوابة غير صالحة (تنسيق XML)");
58 }
59
60 const errorText = await response.text();
61 console.error(`Error ${response.status}: ${errorText}`);
62 })
63 .catch((error) => console.error("Network Error:", error));
عينات تفاعلية
Ln 63, Col 1javascript

الردود المتوقعة

استكشف كافة الردود والنتائج المحتملة من الخادم. قمنا بتوثيق كل كود حالة (Status Code) مع أمثلة للبيانات لتسهيل معالجة الأخطاء والنجاح.

ناجح - تم إكمال الطلب بنجاح
النوع:
application/json
boolean *
string *

Example

{
"success": true,
"message": "Operation completed successfully"
}
طلب غير صالح - معاملات مطلوبة مفقودة
غير مصرح - مفتاح الوصول غير صالح أو مفقود
غير موجود - الجلسة غير موجودة
خطأ في الخادم الداخلي - فشل غير متوقع
بوابة غير صالحة - فشل الاتصال بالخادم الرئيسي
الموضوع السابقالحصول على صورة المحادثة
الموضوع التاليوضع علامة كمقروء

Command Palette

Search for a command to run...