دليل دمج رسائل البث
هذا المستند يشرح كيفية ربط نظام رسائل البث (Room Tweets) من تطبيق الموبايل مع الـ API، متضمناً الأسعار ونظام البث عبر السوكت (WebSocket).
1. إرسال رسالة بث جديدة (Create Room Tweet)
يستخدم هذا الرابط لإرسال رسالة بث جديدة، سواء كان داخل الغرفة فقط أو بثاً لجميع الغرف.
POST
/api/room-tweets
التوثيق (Headers)
Authorization: Bearer {token}Accept: application/json
المعاملات (Request Body)
| الحقل | النوع | الوصف | ملاحظات |
|---|---|---|---|
body |
string |
نص الإعلان | الحد الأقصى 35 حرفاً. |
room_id |
numeric |
معرف الغرفة | الـ ID الخاص بالغرفة التي يتم الإرسال منها. |
broadcast_scope |
string |
نطاق البث | room للغرفة فقط all لجميع الغرف. |
نموذج الطلب (JSON Example)
{
"body": "مرحباً بكم في غرفتنا!",
"room_id": 125,
"broadcast_scope": "all"
}
2. نظام الأسعار (Pricing)
يتم خصم العملات تلقائياً من محفظة المستخدم (Diamonds) بناءً على النطاق المختار:
داخل الغرفة (Room)
يتم خصم 100 ماسة فقط عند الإرسال لنطاق الغرفة.
كل الغرف (All)
يتم خصم 500 ماسة عند البث لجميع الغرف في التطبيق.
ملاحظة: إذا لم يتوفر رصيد كافٍ، سيعود الـ API بخطأ (Error 422).
3. استقبال البث عبر السوكت (Swoole WebSocket)
عند نجاح الإرسال وتفعيل البث، يقوم الخادم بإرسال حدث (Event) عبر السوكت للمستخدمين المتواجدين في الغرف المحددة.
Event Name:
one-to-room:room_tweet_broadcast
هيكل البيانات المستلمة (Payload)
{
"source_room": {
"uid": "123456",
"display_uid": "999888",
"name": "اسم الغرفة",
"promotional_image_path": "path/to/image.jpg"
},
"user": {
"uid": "ID-123",
"name": "اسم المستخدم",
"current_profile_image_url": "url/to/profile.jpg"
},
"body": "نص الإعلان المرسل"
}
4. أكواد الحالة (Status Codes)
200 OK: تمت العملية بنجاح.
422: خطأ في البيانات أو رصيد غير كافٍ.
401: التوكن مفقود أو غير فعال.