نود دمج روبوت طرف ثالث في موقع Discourse الخاص بنا لمساعدة المستخدمين الجدد على فهم طبيعة مجتمعنا قبل انضمامهم ودفع رسوم العضوية (عبر إضافة الاشتراكات). نرغب في تشغيل هذا الروبوت من خلال المنشورات ونداءات الإجراءات (CTAs) المنتشرة في الموقع عبر رابط أو عند النقر على زر، لبدء تدفق محدد مسبقًا داخل الروبوت.
يمكن دمج الروبوت (هذا مثال) إما عبر إطار مضمّن (iframe) أو عبر هذا السكربت قبل وسم إغلاق الجسم (body-tag):
<script src="https://widget.flowxo.com/embed.js" data-fxo-widget="eyJ0aGVtZSI6IiM2N2MxOGUiLCJ3ZWIiOnsiYm90SWQiOiI1ZjYwNmFmZGJhYmU5NjAwNGIwODc4NTMiLCJ0aGVtZSI6IiM2N2MxOGUiLCJsYWJlbCI6IkV4YW1wbGVib3QifX0=" async defer></script>
لذلك قمتُ (أنا غير مبرمج
) ببناء مكون سمة يحتوي على الكود أعلاه بالإضافة إلى سكربت إضافي يشغّل تدفقًا معينًا عند النقر على رابط يحمل معرفًا محددًا:
<script type="text/javascript">
// انتظر حتى يتم تحميل الصفحة أولاً
window.onload = function() {
// احصل على مرجع للرابط في الصفحة
// الذي يحمل المعرف "mylink"
var a = document.getElementById("mylink");
// اضبط الكود الذي سيعمل عند النقر على الرابط
بتعيين دالة إلى "onclick"
a.onclick = function() {
// كودك هنا...
FxoMessenger.create();
FxoMessenger.on('stateChanged', function(state) {
if (state === 'connected') {
FxoMessenger.sendMessage('هذا النص هو الذي يشغّل التدفق في الروبوت!');
}
});
// إذا كنت لا تريد أن ينقل الرابط المتصفح فعليًا
// إلى صفحة أخرى، مثل "google.com" في مثالنا هنا،
// فارجع false في نهاية هذا الكتلة.
// لاحظ أن هذا يمنع أيضًا انتشار الحدث،
وهو ما نريده على الأرجح هنا، لكنه لن يكون
دائمًا هو الحال.
return false;
}
}
هذا يعمل نظريًا، لكن للأسف، يتم إزالة المعرف تلقائيًا من الرابط الموجود في منشور Discourse. هل توجد طريقة لتحقيق ذلك؟ شكرًا لمساعدتكم!