# جسر واتساب الخاص بـ Esotica CRM

هذا المسار منفصل عن Meta Business وصفحات فيسبوك وإنستجرام. يستقبل **نصوص إشعارات الهاتف المحددة**، وليس سجل واتساب الكامل. الرد نصي عن طريق زر الرد في إشعار صالح. الصور والصوت والمكالمات والحالات والسجل القديم لا تُنقل بهذه الطريقة. قد لا يصل إشعار إذا كانت المحادثة مفتوحة أو الإشعارات مكتومة، وقد يحتوي الإشعار على نص مختصر أو عدة رسائل مجمعة.

## قبل التشغيل

- هاتف Android عليه Tasker وAutoNotification. تحقّق من تكلفة التطبيقات الحالية قبل شرائها.
- استخدم التطبيق الذي يحتوي على **01110444528 وحده**: WhatsApp أو WhatsApp Business. لا تشغّل الجسر على تطبيق يحتوي على حسابين؛ الجسر لا يستطيع إثبات رقم الحساب من الإشعار.
- فعّل وصول AutoNotification إلى الإشعارات. اسمح بالعمل في الخلفية للتطبيقين حسب إعدادات الهاتف.
- افتح CRM **بحسابك الفردي** ثم المحادثات ← «ربط واتساب خاص». كل حساب CRM له صلاحيات مستقلة؛ مشاركة بيانات دخولك تسمح باستخدام صلاحياتك.
- اكتب أسماء محادثات فردية مسموح بها كما تظهر في إشعارات الهاتف، اسمًا في كل سطر. ابدأ بمحادثة اختبار. لا تضف أسماء جروبات. الأسماء ليست أرقام هواتف موثقة؛ اختر أسماء مميزة وتحقق من أول إشعار قبل الرد.
- أنشئ إعداد الهاتف ثم نزّل ملف الإعداد. يحتوي الملف على مفتاح مخصص للهاتف يظهر مرة واحدة؛ احتفظ به عندك. عند فقده افصل الجسر وأعد إنشاءه. لا يوجد مفتاح Supabase أو Meta في الملف.

## 1. إعداد متغيرات الهاتف

على الهاتف، أنشئ Task مؤقتًا باسم Esotica Setup. أضف إجراء **Code → JavaScript** وحدد ملف إعداد الهاتف الذي نزّلته من CRM. شغّله مرة واحدة، ثم احذف ملف الإعداد من التنزيلات والمهمة المؤقتة. المتغيرات أصبحت محفوظة داخل Tasker.

يمكن أيضًا نسخ نص الملف إلى JavaScriptlet مع **Auto Exit مفعّل**. لا تستخدم الملف كمكتبة عامة أو ترسله لأي شخص.

## 2. مهمة استقبال الإشعارات

أنشئ Profile: **Event → Plugin → AutoNotification → Intercept**:

- اختر التطبيق المحدد في الإعداد فقط.
- Notification Type: **Created**. لا تفعّل إعدادًا يمنع تحديثات إشعارات الرسائل؛ بعض رسائل واتساب تصل كتحديث لإشعار موجود.
- فعّل **Ignore Group Summaries**. هذا يستبعد ملخص الإشعارات؛ قائمة الأسماء الفردية هي التي تحدد المحادثات المسموحة.

اربطه بمهمة Esotica Receive:

1. **Variable Set**: `%esomode` = `ingest`.
2. **JavaScriptlet**: انسخ محتوى [notification.js](notification.js)، Auto Exit مفعّل.
3. **If**: `%esoready` يساوي `1`.
4. **Net → HTTP Request**: Method `POST`، URL `%EsoticaBridgeUrl`، Body `%esopayload`، Headers في سطرين:

   ```text
   Authorization: Bearer %EsoticaKey
   Content-Type: application/json
   ```

   Timeout: `20` ثانية. أبقِ التحقق من شهادة HTTPS مفعّلًا.
5. **End If**.

أنشئ Profile ثانيًا للتطبيق نفسه، Notification Type **Cancelled**، واربط نسخة من المهمة تجعل `%esomode` = `cancel`. باقي الإجراءات نفسها. هذا يلغي إمكانية الرد عند إزالة الإشعار. إذا لم يوفّر الهاتف `%antag` ثابتًا، يتوقف نقل الإشعار حفاظًا على دقة توجيه الرد؛ نراجع ناتج اختبار الهاتف بدل تخمين جهة الإرسال.

## 3. مهمة جلب الردود

أنشئ مهمة Esotica Replies بهذه الإجراءات:

1. **HTTP Request** بالإعدادات السابقة، والـBody:

   ```json
   {"action":"claim","device_id":"%EsoticaDeviceId"}
   ```

2. **JavaScriptlet**: محتوى [prepare-reply.js](prepare-reply.js)، Auto Exit مفعّل.
3. **If**: `%esohasjob` يساوي `1`.
4. **Variable Clear**: `%err` ثم `%errmsg`.
5. **Plugin → AutoNotification → Reply**: Reply ID = `%esoreply`، Reply Text = `%esotext`. فعّل **Continue Task After Error**. لا تختَر تطبيقًا عامًا بدل Reply ID؛ المعرّف يوجّه الرد إلى الإشعار المحدد.
6. **JavaScriptlet**: محتوى [ack-reply.js](ack-reply.js)، Auto Exit مفعّل.
7. **HTTP Request** بالإعدادات السابقة، Body `%esopayload`.
8. **End If**.

شغّل المهمة من Profile **Time** يتكرر كل دقيقتين طوال اليوم. تأكد أنها لا تعمل بنسختين متداخلتين؛ استخدم Collision Handling: **Abort New Task**. الرد قد ينتظر حتى دورة الجلب التالية. انتهت صلاحيته بعد خمس دقائق، ولا يعاد تلقائيًا إذا ضاع تأكيد الإرسال. «الهاتف نفّذ الرد» تعني أن AutoNotification أبلغ نجاح الإجراء؛ ليست تأكيد تسليم أو قراءة من واتساب.

## 4. اختبار آمن

1. اترك واتساب في الخلفية، وابعث من رقم اختبار تملكه إلى 01110444528 داخل محادثة سمحت باسمها.
2. تحقّق من ظهور إشعار الهاتف ثم نصه في CRM بعلامة «واتساب خاص».
3. رد من CRM وأبقِ الإشعار موجودًا. راجع هاتف الاختبار لتأكيد الاستلام.
4. بحساب CRM آخر يجب ألا تظهر المحادثة أو نصها أو إعداد الهاتف. إدارة صفحات Meta لا تمنح وصولًا لهذه القناة.
5. افصل الجسر من CRM للتأكد من توقف مفتاح الهاتف فورًا. يمكن إنشاء جسر جديد بعد الفصل. سجل المحادثات السابق يظل مقصورًا على مالكه.

لا تظهر الحالة «وصلت إشعارات» إلا بعد استقبال إشعار فعلي. تجهيز الموقع وحده لا يعني أن الهاتف متصل أو أن الردود اختُبرت.

المراجع: [Tasker JavaScript](https://tasker.joaoapps.com/userguide/en/javascript.html)، [HTTP Request](https://tasker.joaoapps.com/userguide/en/help/ah_http_request.html)، [متغيرات AutoNotification](https://joaoapps.com/variables/)، [إمكانية الرد على الإشعارات](https://joaoapps.com/autonotification/changelog/).
