ما الذي يفعله
يحوّل نتائج من هذا النوع:
(حيث فشل خادمك في جلب مصدر الصفحة، وبالتالي لا يمكنه استخراج الوسوم المطلوبة لبناء الـ onebox)
إلى هذا!
يوفر ببساطة مسارًا بديلًا للـ onebox للحصول على مصدر الصفحة الذي يبحث فيه عن البيانات الوصفية عندما يرفض الخادم المستهدف اتصالك.
لا يغير شيئًا في كيفية معالجة الـ onebox لمصدر الصفحة بعد ذلك للعثور على البيانات الوصفية وعرض الصندوق.
يهدف إلى تمكينك من إدخال تفاصيل ومفاتيح واجهة برمجة تطبيقات (API) تابعة لجهة خارجية لجلب الصفحة بدلاً من إجراء استدعاء HTTP عادي مباشرةً إلى الصفحة المستهدفة.
لماذا
وجدت أن خوادمى مُنعت من الوصول إلى عدد من المواقع التجارية، مما أدى إلى فشل عرض الـ oneboxes. يساعد هذا الحل فعليًا في الاستفادة من موثوقية واجهة برمجة التطبيقات التابعة لجهة خارجية، تشبه إلى حد ما خدمة البريد.
لماذا يعتبر فعالًا من حيث التكلفة
يمكنك استخدام خادم افتراضي خاص (VPS) رخيص نسبيًا، مع الحصول على وظيفة موثوقة لعرض الـ oneboxes، حتى لو كان عنوان IP الخاص بك أو وكيل المستخدم (User Agent) مدرجًا في القائمة السوداء بطريقة ما.
لن تحتاج إليه إذا
كنت تعرض محتوى جميع أهدافك بنجاح باستخدام التثبيت الافتراضي (Vanilla install) وكان جميع المستخدمين راضين.
المتطلبات المسبقة
تحتاج إلى حساب مع واجهة برمجة تطبيقات (API) مناسبة تابعة لجهة خارجية.
الإعدادات
onebox assistant api base address: https://api.embed.rocks/api/
المثال أعلاه يستخدم embed.rocks، ولكن في المستقبل قد يتم دعم واجهات برمجة تطبيقات أخرى، ومع ذلك، فإن embed.rocks تقدم قيمة جيدة حاليًا.
onebox assistant api base query: ?url=
onebox assistant api options: &skip=article,description,oembed,imextra&include=source
onebox assistant api page source field: source
ستحتاج أيضًا إلى إدخال مفتاح واجهة برمجة التطبيقات (API Key) الذي قدمته لك embed.rocks.
انظر المثال أدناه:
يسمح لك هذا الإعداد بتجاهل الاسترجاع المسبق (للتحقق مما إذا كان الزحف المباشر يعيد نتيجة) واستخدام واجهة برمجة التطبيقات من البداية.

الإعداد الافتراضي: OFF
أوصي بتعيين هذا الإعداد على TRUE.
هذا بالطبع أكثر تكلفة، لكنه غالبًا ما يعطي نتائج أفضل، حيث توجد حالات يتم فيها إعادة توجيه الاسترجاع المسبق إلى الصفحة الخاطئة لأنك غير موثوق به.
معلومات الدعم
تذكر، إذا كنت قد حاولت سابقًا إنشاء صندوق onebox لروابط، فإن نواة Discourse ستخزن النتيجة مؤقتًا.
يمكنك إضافة سلسلة استعلام عشوائية في النهاية للتغلب على التخزين المؤقت: https://mylink.com/todaynews?random=random
يمكنك أيضًا التحقق من استجابة واجهة برمجة التطبيقات (API) باستخدام أمر مثل:
curl -X GET "https://api.embed.rocks/api/?url=https%3A%2F%2Fnews.bbc.co.uk%0A&skip=article,description,oembed,imextra&include=source" -H "x-api-key: %%%your-api-key%%%"
يجب عليك ترميز الموقع الذي تتصل به (قيمة معلمة url) باستخدام موقع مثل هذا مثل هذا (لا نضمنه!).
قيود معروفة
-
تم اختباره حاليًا مع مزود واحد فقط ولم يتم اختباره مع الآخرين. هذا المزود هو https://embed.rocks (وليس لدي أي ارتباط به). أنا مستعد للنظر في دعم المزيد من الخدمات إذا تم تمويل العمل.
-
يتم عمل التصحيح (Monkey patching) على مستوى الطريقة (method level). هذا يتجاوز المزيد من الكود مما هو ضروري، مما يؤدي إلى زيادة خطر تعطل الإضافة بعد تحديث النواة. ومع ذلك، لا أعتقد أن هناك طريقة لتقليل هذا أكثر؟
كيفية تثبيت الإضافات
راجع الدليل هنا: Install plugins on a self-hosted site
هذا المستودع هو: https://github.com/merefield/discourse-onebox-assistant
كل التعليقات موضع ترحيب. يرجى
الإضافة على GitHub إذا وجدت أنها مفيدة.



