وثائق OpsIQ

البناء والتشغيل التمديد OpsIQ.

هذه هي الوثائق الكاملةOpsIQ- إنشاء المنتج، وإدارة الدعم، وتنظيم AI،CRM،وتركّل اللوحة، و بناء الموصلات، واتّصل بـ "الريست"APIوتلقي بطاقات على شبكة الإنترنت، وتطبق طلبات سوق الطرود، وتشغيل عمليات النشر ذاتياً.

دليل العميلدليل الإدارةدليل المطورمرجع CRMموصل SDKواجهة برمجة التطبيقات RESTمستضاف ذاتياً
نطاق

نطاق هذا الدليل

كل شيء OpsIQ في مكان واحد: كيف يعمل كل شاشات، وكيف يربط نظمك الخاصة وكيفية البناء على أعلى منه.

نطاق
خريطة التوثيقالدليل منظم حول المنتج OpsIQ ، يتبع نفس الترتيب كما الشريط الجانبي الإداري.خريطة التوثيقمنتج OpsIQAUDIENCEالمشغلونبناءالمطورونRUNالمديرينعرض الحيز العملياستخدم OpsIQشاشات المنتجات وتدفق العملمدرجتمديد OpsIQوصلات، APIs و Widgetمدرجالتشغيل OpsIQالأمن ونظام Cron والنشرمدرجمرجععقود الحزمة، و API وعقود الوصلات الشبكيةمدرج1CHOOSE AUDIENCEالمشغِّل أو المطور2FOLLOW THE UIالمرآة OpsIQ3USE SOURCE TRUTHالحالة تأتي من البناء
الدليل منظم حول المنتج OpsIQ ، يتبع نفس الترتيب كما الشريط الجانبي الإداري.
الدليل الميداني لاستديو البوابة

استخدام دليل المدير والمطور المكرس لبنية البوابة، والصفحات، والمكونات، والتنقيح المسبق، ومركز المساعدة، والهوية، و SCIM، والإصدارات الخاضعة للإدارة، والامتدادات، والهجرات، وإصدار الشهادات.

فتح دليل استوديو البوابة

ماذا يوجد هنا؟

تشغيل المنتج

كل شاشات في الزملاء المحللين، الدردشة الحية، التذاكرCRMقاعدة المعرفة، الإستخبارات الموقعية، الترقيات وبوّابة حساب العملاء ما تفعله كل صفحة، وما تعنيه الأرقام، وماذا تفعل عندما تبدو خاطئة

يربط بين النظم

وحدة الموقع الشبكي، وصناديق البريد الإلكتروني، والوصلات الشبكية الواردة والصادرة، ومكتبة وصلات المنصات مثل Shopify, WooCommerce, WHMCS, Zendesk, Stripe, Slack و Gmail.

بنّي منزلك الخاص

بنّاء الوصلات لوصلات لا تشفير، أفعال و محركات إذا كنت تفضل عدم استخدام وصلات على الإطلاق، و REST API مع كل عمل، والنطاق ورموز الأخطاء.

تشغيله

الأدوار والتصاريح، والأمن، و cron، والتشخيص، والنسخ الاحتياطية، وكلا الاستضافة المستضيفة والمستضيفة ذاتياً.

من أين نبدأ

1
إذا كنت تدير OpsIQ يوميا

اقرأ أقسام الشاشة بترتيب الشريط الجانبي. كل واحد يفتح مع ما هي الصفحة من أجل، لذلك يمكنك التوقف بمجرد أن تحصل على ما تحتاجه.

2
إذا كنت تديرها

أضف الإعدادات، الأمن، التشخيص، كرون والإنتاج. هذه هي الأقسام التي تقرر ما إذا كان كل شيء آخر يستمر في العمل.

3
إذا كنت تبني نظاماً للتكامل

ابدأوا في "كونيكتورز" ثم بناء المُدير، ثمّ الـ"رايست"APIوقم بقراءة هذه في النظام و سترى كل شيءOpsIQيمكن أن نتحدث إلى نظام آخر.

💡
هناك شيئين يغيران ما تراه، الأذن تخفي صفحات دورك لا يمكن فتحها لذا قد يكون جزء موصوف هنا مفقوداً من جانبك
ابدأ هنا

ماذا تفعل OpsIQ لعملك

OpsIQإنه منصة تشغيلية كاملة لـ (آي إي) و (أي أول)، يُستبدل محلليك، دردشة حية، مساعِدةCRM, SEOمجموعة الأدوات، وبرمجة التكامل المتوسطة، ومنصة المطورين مع إعلان موحد واحد تتقاسم فيه كل أداة نفس سياق العملاء.8-12"منتجات (ساى سى) منفصلة"OpsIQمرة واحدة وتشغيل كل شيء من شاشة واحدة.

المنبر
OpsIQ منصة موحدةمخ مركزي في آي متصل بالدردشة الحيةCRMالتذاكر، الإستخبارات الموقعية، الترقيات والمحللينالدردشة الحيةترويجCRM الذكاء الاصطناعيموقع إنتلتذاكرتحليلاتOpsIQدماغ الذكاء الاصطناعي1ONE WORKSPACEكل أداة في إدارة واحدة2SHARED BRAINسياق واحد للعملاء3ANYWHEREسحابي أو مستضاف ذاتيًا
OpsIQ هو منصة واحدة مع سياق عملاء مشترك واحد، كل أداة تتغذى، ويقودها نفس الدماغ AI.

كل شيء OpsIQ:: بالتفصيل؛

تحليل الموقع الشبكي والمعلومات المتعلقة بالزوار

تتبع الزوار في الوقت الحقيقي

كل صفحة، نقر، نغمة، ونجوم، وحدث ملاحية يتم أسره في الوقت الحقيقي انظر من هو على موقعك الآن، ما الصفحات التي يشاهدونها، كم من الوقت يقضون، ومن أين أتوا جميعاً بدون بسكويتات طرف ثالث.

سجل الزوار والجلسات

التاريخ الكامل لكل زائر مع الجهاز، المتصفح، نظام التشغيل، البلد، المدينة، المرجع، بارامترات UTM، صفحة الوصول، وحل الهوية. جلسات مجموعة مشاهدات الصفحة في رحلات حتى يمكنك أن ترى الطريق بأكمله يأخذ الزائر.

إعادة تشغيل الجلسة

(ج) العزف على شكل زمني من دورات الزوار المأخوذة، انظر بالضبط ما فعله المستخدمون: حركات الفأر والنقر والزجاجات وتحول الصفحات والتفاعلات، واستخدامه لتشخيص قضايا الأكسس أوكس، وفهم نقاط الانقطاع والتحقق من تدفقات التحويل.

تغذية حية

رؤية مشاهدات الصفحة، وبدء المحادثة، وتقديم الاستمارات، وإشارات النية التي يتم تحديثها كل بضع ثوان. الترشيح حسب البلد أو الجهاز أو المحيل للتركيز على شرائح محددة من حركة المرور.

الصفحات الرئيسية

صفحات مرتبة حسب الزيارات، ووقت المشاركة، ومعدل الرجوع، والتحويلات، وأنشطة الدعم. تحديد المحتوى الأعلى أداء والصفحات التي تحتاج إلى تحسين.

الاستخبارات الجغرافية

توزيع الأجهزة والمتصفحات، وتحليل مصادر حركة المرور، وتتبع المحيل إلى محركات البحث، والرؤى المتعمقة بشأن اختراق الأسواق.

قمع النية

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

التجارب ألف/باء

تشغيل الاختبارات المقسمة على موقعك مباشرة من OpsIQ. خلق متغيرات، وتحديد تخصيص حركة المرور، وتعريف أهداف التحويل، وقياس الأهمية الإحصائية. لا أداة اختبار خارجي ضرورية.

JavaScript تتبع الأخطاء

احصل على أخطاء JavaScript من جانب العميل من موقعك الإلكتروني بشكل آلي. شاهد رسائل الأخطاء، وتتبعات الكومة، والمتصفحات المتأثرة، وحسابات التواتر، وأي صفحات تطلقها.

سجل الأحداث

كل حدث مُتعقَب (الصفحة، الأحداث العرفية، التفاعلات الدردشة، الأوراق الاستمارة، المشتريات) في سجل قابل للبحث وممكن التصفير مع البيانات الوصفية الكاملة.

المبيعات والتحويلات

تتبع الطلبات، والعائدات، والردود، وتجديد الاشتراكات، وإسناد التحويلات إلى مصادر حركة المرور، والحملة، ورحلات الزوار. لوحات العائدات مع مقارنة الفترة وتحليل الاتجاهات.

العملاء المحتملون

زوار رفيعو المستوى يتم تحديدهم حسب أنماط السلوك، ودليل كشافة يقوم على زيارات الصفحات، والوقت في الموقع، وتواتر العودة، والتفاعلات الداعمة، والإشارات الجمركية.CRMخط أنابيب

Site Intelligence (Site)SEOوتحليل المحتوى)

عمليات تصفح المواقع

:: البحث الآلي في كامل موقعك الشبكي لاكتشاف الصفحات، والكشف عن الروابط المتقطعة، والعثور على علامات المراجع المفقودة، والتحقق من النص البديل للصورة، والتثبت من صحة المواقع الرئيسية URLs جدولة عمليات البحث لتشغيل يوميا أو أسبوعيا، أو عند الطلب.

التقنيةSEOمراجعة الحسابات

تحليل تقني شامل: درجات سرعة الصفحات، ومدى استجابة الأجهزة المحمولة، والمعايير الحيوية الأساسية للشبكة() SSL حالة الشهادات، وسلاسل إعادة التوجيه، وكشف المحتوى المزدوج، وتحليل عمق البحث، والتحقق من صحة البيانات المنظمة.

مراجعة المضمون

تقييم كل صفحة من حيث نوعية المحتوى، وعدد الكلمات، ودرجة سهولة القراءة، وكثافة الكلمة الرئيسية، وهيكل العناوين، ونسبة الروابط الداخلية/الخارجية، والطابع الجديد.

البحث المدعوم بالذكاء الاصطناعي

البحث الدلالي عبر محتوى موقعك بأكمله. اسأل أسئلة باللغة الطبيعية عن محتواك واحصل على إجابات مصنوعة بواسطة الذكاء الاصطناعي مع مراجع صفحات المصدر.

تتبع ترتيب نتائج محرك البحث

رصد ترتيبات محركات البحث الخاصة بك للكلمات الرئيسية المستهدفة عبر Google وغيرها من المحركات. تتبع التغييرات في الموقف على مر الزمن، والمقارنة مع المنافسين، ورؤية أي صفحات الترتيب لتلك المصطلحات.

البحث عن الكلمات الرئيسية

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

تحليل الروابط الخلفية

رصد ملف الروابط الواردة. انظر إلى المواقع التي تربطك بك، وتتبع الرواباط الجديدة والمفقودة، وتحليل توزيع نص المرساة، وتحديد فرص بناء الرواسب.

شبكة SEO المحلية

بالنسبة للشركات التي لديها مواقع مادية: تصور ظهور البحث المحلي عبر شبكة جغرافية. انظر كيف تختلف ترتيباتك حسب الموقع، والمسافة من عملك، ونية البحث.

Google تزامن ملف الأعمال

يربطك Google نبذة عن الأعمال التجارية OpsIQ. تزامن الاستعراضات، والوظائف، والأسئلة والأجوبة، والصور، ومعلومات الأعمال التجارية. إدارة قائمة GBP من الداخل OpsIQ:: الاستجابة للاستعراضات، ونشر التقارير، ورصد الرؤى.

visualHtml

مؤتمتSEOوتصدر تقارير تحليلية عن جدول أعمالكم (يوميا وأسبوعيا وشهريا) وتشمل التقارير تغييرات في الرتب، واتجاهات حركة المرور، والمسائل التقنية التي تم العثور عليها، وأداء المحتوى.

الدعم المدعوم بالذكاء الاصطناعي

اتصالات العملاء بالذكاء الاصطناعي

AI answers customer questions on your website 24/7 using your knowledge base, connected platform data (orders, accounts, subscriptions), and custom training prompts. Supports multiple AI providers: Claude (Anthropic), GPT-4o (OpenAI), Gemini (Google), and Grok (xAI).

مساعد لشؤون الإدارة

مساعدة الذكاء الاصطناعي داخل لوحة إدارة تساعدك على كتابة ردود التذكرة، وصياغة الاتصالات مع العملاء، وتحليل اتجاهات الدعم، والبحث عن بيانات العميل عبر المنصات المتصلة، وتنفيذ الأعمال من خلال نظام الربط.

ترسيخ معارف الذكاء الاصطناعي

إنّ الـ(آي آي) مُسْتَبَّد في مقالات قاعدتك المعرفية، ودخلات مقر القيادة، ووثائق المنتجات، وبيانات منصة مترابطة، ولا يهلوس، بل يجيب على معلوماتك التجارية الفعلية أو يتصعّل عندما لا يكون هناك شك.

التسليم التلقائي إلى البشر

عندما لا يستطيع الذكاء الاصطناعي حل سؤال ما، أو يكتشف الإحباط، أو يطلب العميل شخصًا، فإنه يسلم الأمر تلقائيًا إلى فريقك مع سياق المحادثة الكامل. ويمكن تعديل الرفض / انتهاء الوقت للعودة تلقائيةً إلى الذكاء الصناعي.

نداءات تدريب الذكاء الاصطناعي

كتابة حوافز تعليمات منفصلة للذكاء الاصطناعي الذي يواجه العميل والذكاء الإداري الذي يوجه. التحكم في النبرة، والحدود، وقواعد التصعيد، والمواضيع المحظورة، والسلوك الخاص بالأعمال التجارية.

تاريخ ومراجعة الحسابات في مجال الذكاء الاصطناعي

ويجري تسجيل كل محادثة تتعلق بالذكاء الاصطناعي مع تفاصيل كاملة عن الطلب/الرد، واستخدام الرموز، وتتبع التكاليف، ومقدمي الخدمات المستخدمين، وإصدار النموذج.

رؤى الذكاء الاصطناعي

التحليل الآلي لأنماط المحادثات باستخدام الذكاء الاصطناعي - انظر الأسئلة الشائعة، ومعدلات الحل، وتواتر التسليم، ورضاء العملاء حسب الموضوع، والمجالات التي يحتاج فيها الذكاء الصناعي إلى تدريب أفضل.

تشكيلات الحيز المكتبي لكل نظام من نظم الذكاء الاصطناعي

يمكن لكل موقع/حيز عمل متصل باستخدام مقدم خدمات الذكاء الاصطناعي الخاص به، والنموذج، ودرجة الحرارة، والميزانية الرموزية، ودعاوى التدريب. ويمكن لشركة SaaS استخدام Claude للمنتج الرئيسي و GPT-4o لعلامة تجارية ثانوية.

إدارة برامج الذكاء الاصطناعي و BYOK

أسلوبان من طراز AI: إدارة AI (أُدرجت في خطتك، لا API المفتاح المطلوب أو أحضر مفتاحك الخاص (استخدم خاصتك) OpenAI/Anthropic/Google/xAI API(ب) مفتاح التحكم الكامل في اختيار النماذج وتكاليفها - كلاهما من الدرجة الأولى، وكل سمة تعمل مع أي منهما.

الميزانيات الرمزية للذكاء الاصطناعي وضوابط التكاليف

حدد ميزانيات شهرية، وحدود لكل محادثة، وإنذارات الرصيد المنخفض. تتبع الإنفاق حسب مقدم الخدمة، وحسب حيز العمل، ووفقا للمحادثات. منع التكاليف الفادحة مع الحدود القصوى الصعبة.

التذاكر ومكتب المساعدة

نظام التذاكر المحلي

:: تقديم المساعدة الكاملة إلى الإدارات، والأولويات (المستوى المنخفض/ المتوسط/المرتفع/الجسم)، والوضعيات، و SLA التتبع، والملاحظات الداخلية، ورد العملاء، وملحقات الملفات، والمحادثات المرتدة.

فرز البريد الإلكتروني والرد الآلي

تقوم منظمة العفو الدولية تلقائياً بتزوير التذاكر الواردة حسب الإدارة والأولوية، وتمكين الإدارات الآمنة من العودة آلياً، وتضع الشركة ورقة استجابة بعد تأخير قابل للتشكيل (العجز: 2 حتى يستطيع البشر التدخل أولاً

تناول البريد الإلكتروني

يربط صندوق البريد (Gmail، IMAP، أو مقدم خدمات محدد) لإنشاء تذاكر بشكل آلي من رسائل البريد الإلكتروني الواردة. الردود على رسائل إخطار التذكرة تستكمل موضوع التذكرات.

بوابة التذاكر

لقد جهزت بوابة لتذاكر العملاء على موقعك الإلكتروني ويمكن للزبائن تقديم التذاكر، والنظر إلى تاريخهم، والرد على تذاكر مفتوحة، و حالة التحقق، وكلها ملصقة بتصميمكم

دمج التذاكر

دمج التذاكر المزدوجة في موضوع واحد. تظهر التذاكرة المدمجة [مدمجة] على سطر الموضوع. يتم الحفاظ على تاريخ كل محادثة في التذكرة الباقية.

العودة إلى منظمة العفو الدولية

بعد أن يتولى وكيل بشري التذكرة، استخدم "العودة إلى الذكاء الاصطناعي" للسماح للذكاء الصنعي باستئناف الرد الآلي على تلك التذكرات. مفيد عندما يتم حل الجزء الذي يتطلب الإنسان ولكن العميل لديه أسئلة متابعة يمكن للذكاءات الاصطناعية معالجتها.

صندوق البريد

إدارة التذاكر بمساعدة الذكاء الاصطناعي من عرض صندوق الواردات - يقترح الرائد المشارك الإجابات، ويلخص تاريخ المحادثة، ويوصي بتعيينات الأولوية/الإدارة، ويمكنه تنفيذ الإجراءات على المنصات المتصلة.

الدردشة والدعم في الوقت الحقيقي

صندوق البريد الوارد

تواصل فوري مع العملاء يتم إدارته من صندوق بريد موحد. انظر جميع المحادثات النشطة، وهوية العميل، وتاريخ المحادثة، واقتراحات الذكاء الاصطناعي. يمكن لعدة وكلاء التعاون في محادثة واحدة.

قواعد الدردشة الاستباقية

إطلاق رسائل الدردشة استنادا إلى سلوك الزائر: الوقت على الصفحة، وتحديد URL مثال: إظهار رسالة مساعدة بعد القيام بعملية شراء، أو عرض قائمة بالمنتجات التي تم شراؤها. 60 ثانية على صفحة التسعير.

أداة الدردشة

دعم الدردشة الذكاء الاصطناعي، والدردشة على الهواء وكيل، وتقديم التذاكر، البحث في قاعدة المعارف، وهوية الزائر. الاستجابة، والوصول، والعلامة التجارية.

CSATالدراسات الاستقصائية

جمع تقييمات رضا العملاء بعد التفاعلات عبر الدردشة والتذاكر. تصميم استقصاءات مع أسئلتك الخاصة، ومقاييس التقييم، وطلبات المتابعة. تغذية النتائج في أداء الفريق والرؤى الذكاء الاصطناعي.

استقصاء البريد الإلكتروني بعد المحادثة

بعد انتهاء المحادثة، يمكن للزوار الذين لديهم بريد إلكتروني معروف أن يتلقوا رسالة واحدة ذات علامة تجارية مع موجز الذكاء الاصطناعي لما تم التعامل معه ونقرة واحدة "هل كان سهلاً؟" نعم / لا. مرة في كل موضوع، ووصلات الاستخدام الوحيد الموقعة، وسجلت كل إرسال، وتصل النتيجة إلى صفحة التعليقات كإشارتها الخاصة بها بجانب نجوم المحادثات.

حلقة هوية التغذية المرتدة

كل بند من بنود التعليقات التي تحمل شخصا يظهر لهم: الاسم، البريد الإلكتروني، وواحدة نقرة على رحلتهم كاملة العميل والاتصال CRM، ونقرة واحدة البريد أو مسودة AI-ردود مبنية في تاريخهم الفعلي.

كتابة الذكاء الاصطناعي

مساعد كتابة الذكاء الاصطناعي المنفصل لتكوين مشاريع بريد إلكتروني، ردود التذاكر، والإعلانات، واتصالات العملاء. يستخدم طلبه الخاص (وليس دماغ المحادثة) للكتابة المهنية للأعمال التجارية.

AI-First CRM

CRMمركز القيادة

شاشه واحده تظهر لك بالكاملCRMالدولة: قيمة خط الأنابيب، وسرعة التعامل، والمهام المقبلة، والصفقات المعرّضة للخطر، والنشاط العميل، وتوصيات منظمة العفو الدولية.CRMالصفحة الرئيسية هي نقطة البداية اليومية.

جهات الاتصال والشركات

إدارة اتصالات العملاء مع ملخصات كاملة: الاسم، البريد الإلكتروني، الهاتف، الشركة، الوسوم، مرحلة دورة الحياة، تاريخ المحادثات، تاريخ التذاكر، تاريخ الشراء، والحقول الخاصة.

مجلس الصفقات والخطط

Visual Kanban-style deal board with customizable stages. Drag deals between stages, set values, assign owners, track close dates, and see pipeline value at each stage. Multiple pipelines supported.

تدريب على التعامل مع الذكاء الاصطناعي

ويقوم الذكاء الاصطناعي بتحليل كل صفقة ويوفر التدريب: إشارات المخاطر (التزام الصمت، وذكر المنافس، والشواغل المتعلقة بالميزانية)، وتوصيات أفضل الإجراءات التالية، واحتمالات الفوز، والتوقيت المقترح للمتابعة.

التنبؤ والتقارير

توقعات الإيرادات استنادا إلى بيانات خط الأنابيب، ومعدلات الإغلاق التاريخية وسرعة الصفقات - تشمل التقارير خط الأنبوب حسب المرحلة، والمالك، والمصدر، وأسعار التحويل، ومتوسط حجم الصفقة، وطول دورة المبيعات.

وكيل التنقيب (حقوق السحب الخاصة)

تحليلات الذكاء الاصطناعي التي تحدد العملاء المحتملين من بيانات الزوار، والإشارات الرئيسية، وأنشطة المنصات المتصلة. تقترح أهداف التوعية، ومسودة الرسائل الأولية، وترتيب نوعية القيادة.

سلسلة المتابعة

تسلسلات متابعة آلية متعددة الخطوات: البريد الإلكتروني، الانتظار، البريد الإليكتروني، التحقق من الاستجابة، التصعيد. تحديد تسلسل للفرص الجديدة، الصفقات المعلقة، بعد الشراء تسجيل الدخول، وحملات إعادة الانخراط.

دورة الحياة والاحتفاظ

تتبع مراحل دورة حياة العميل (الزبون المحتمل، الزبون المحتملة، العميل، المشطوب) مع الانتقالات الآلية.وكيل الاحتفاظ يرصد إشارات التشطيب ويقترح التدخلات.

وكيل أمين البيانات

عميلة في "آي آي" تنظف وتثريCRMالبيانات: تلغي الاتصالات، وتملأ الحقول المفقودة، وتصدق على الرسائل الإلكترونية، وتوحيد أسماء الشركات، وسجلات بيع الأعلام.

بنيت ليCRM

اللغة الطبيعيةCRMتشكيلة: أخبر منظمة العفو الدولية كيف تبدو عملية مبيعاتك، وهي تبني مراحل خط الأنابيب الخاصة بك، ومجالات العرف، ونماذج الصفقات، وقواعد التشغيل الآلي.

CRMالفحص الصحي

مراجعة حساباتك الآليةCRMجودة البيانات: تكرار الاتصالات، والتعاملات بدون خطوات مقبلة، وخطوط الأنابيب الثابتة، والمعلومات المتعلقة بالاتصالات المفقودة، وجمع البيانات.

خدمة الاتصالات القائمة على الثقة

مراقبة الاستقلال الذاتي من ثلاثة مستويات لكل منهاCRMوكيل وكالة الاستخبارات الدولية: تعمل الآلية (وكالة مراجعة الحسابات والتحقيقات بشكل مستقل)، و(كوبيلوت) (منظمة العفو الدولية تقترح الموافقة على البشر)، ودليل (الملاحظات الدولية فقط).

أربعة من موظفي الوكالة الدولية للطاقة الذرية

The CRM ويدير أربعة وكلاء متخصصين في شؤون الإعلام هم: ستيوارد (نوعية البيانات)، وراديو حقوق السحب الخاصة (التوقيف)، والاحتفاظ (منع الأحداث)، والمحلل (التقارير والرؤى) وكل وكيل لديه ديالته الاستئمانية الخاصة.

وصلات وعمليات تكامل

موصلات جاهزة

Ready-to-use connectors for Shopify, WooCommerce, BigCommerce, Magento 2, PrestaShop, OpenCart, osCommerce, WordPress, WHMCS, Zendesk, Stripe, Amazon SES, Postmark, Resend, SendGrid, Mailgun, Gmail, IMAP, Slack, and Google Business Profile. Each connector brings platform-specific AI actions, knowledge, and data sync.

باني الموصلات

(ب) بناء موصلات تقليدية لأي منصة، أو أي شفرة، أو مساعدة مقدمة من شركة AI، أو رمز كامل.APIs, OAuthدفـع الشيفرة، تسجيل آلي على شبكة ويهوكStripeمخططات التوقيع البسيط، والمهبة (العرض، الصفحة، الفضائح، والربط بين العواصم)، وتحويلات القائمة/الأعمال، والسياق المتعدد الإجراءات، وتعبئة الأسواق.

إنشاء وصلات بمساعدة الذكاء الاصطناعي

يساعدك ConnectorBuilderAI على بناء وصلات: وصف ما تريد واقترح الإجراءات، وكتابة معالجي طلبات، ورسم خرائط استجابات API.

OAuth التدفق لأي وصلة

التطبيقات العامة داخل التطبيق OAuth دعم PKCE، وإدارة الحالة على مستوى الموقع، وتحديث الرموز التلقائي.OAuth بارامترات و OpsIQ يتعامل مع التدفق.

حافلات القدرات (توسيع على نطاق المنصة)

الموصلات لا تضيف فقط أعمال منصة يمكنهم أن يتحكموا بالمواصفات الأساسية من خلال القدرة "الحافلة"CRM; local_listing, rank_data in Site Intelligence; web_analytics in Analytices; payment_provider in Payments; email_sync in Mailbox; video_meeting in Comms) and implements its small method set;OpsIQيكتشفه عن طريق سجل القدرة و الأسلاك في وحدة التفتيش المشتركة360الجدول الزمني، وإجراءات التنفيذ - يمكن للعديد من الموصلات أن توفر نفس القدرة دون وجود قفل في الموقع.

المركبة مسبقاً مقابل المستوى المتوفر في السوق

تعيش الموصلات في واحد من مستويين.الموصلات المركبة مسبقاً (connectors/) هي نشطة في السجل خارج الصندوق، وتبقى ضعيفة فقط للمرجع غير المفتاحي وأكثر مقدمي الخدمات استخداماً لكل قدرة (على سبيل المثال: Google التقويم، Gmail،. Google ويمكن اكتشاف وصلات السوق (marketplace_connectors/) ولكنها خاملة إلى أن يتم تركيبها، على سبيل المثال: Microsoft 365 الجدول الزمني، التوقعات، DocuSign, Stripe, GA4, SerpApi,() اللجنة الاقتصادية لأوروبا Zoomكل جسر يظهر قائمة السوق بحيث يمكن لواجهة المستخدم والذكاء الاصطناعي أن تطلب "التركيب من السوق" (إخطار-للتثبيت) عندما لا يكون للقدرة أي مقدم جاهز، أبدا زر مكسورة.

سوق الموصلات

نشر موصلاتك إلى OpsIQ موصلات العبوة ذات الشكل.json)ب( المعرفة.json, workflow_recipes.json وتدعم السوق موصلات مجانية وأخرى مدفوعة الأجر مع فواتير متعددة المصادر.

توقيع الموصل

جميع الوصلات موقعة بصورة مشفرة للتحقق من سلامتها. يتم التحقق من التوقيع في وقت التركيب. استخدم أداة resign_all_connectors لإعادة التوقيف بعد التحديثات.

SmartLookup

تحديد قواعد البحث ونظام التوافق غير المحدد للإعلانات لأعمال الربط. OpsIQ تطابق استفسارات المستخدمين مع كيانات المنصة باستخدام خوارزميات FuzzyScore و smartRank. مثال: find_country("germ") يطابق ألمانيا مع 88.9% الثقة.

عقود العمل

"العام"OpsIQ APIينشر كل مسجلJSON(ب) العمل كإجراء مسمّى يمكن اكتشافه: استخدام المواصفات في العقود الكلية والعقود المحددة بدقة؛ وإعلان مجموعات الموصلة إجراءات البائعين الخاصة بها من خلال الجهة المنفذة الموحدة للعمل.

وصفة وصل

وصفات لتدفق العمل السابق للبناء التي تجمع بين إجراءات الاتصال المتعددة في سير العمل المشتركShopifyاصنعوا تذكرة، استكملواCRMوأرسلواSlack"إخطار"

تزامن المعارف

تعلن الوصلات مواضيع المعرفة التي تتزامن مع قاعدة معارف الذكاء الاصطناعي. وتتاح تلقائيًا للذكاء الصنعي مقالات المساعدة الخاصة بالمنصة، وأدلة التثبيت، وخطوات حل المشاكل دون إدخال المعارف يدويًا.

منصة المطورين

واجهة برمجة التطبيقات REST

اسم JSON API يشمل كل مدير مسجل.JSON التشغيل، معAPI- توثيق المفاتيح، عزل حيز العمل، النطاقات، الحد من السرعة، الكتابة المتكافئة، OpenAPI، ومجموعة Postman المولدة.

خطافات الويب (Webhooks)

Webhooks الصادرة لجميع الأحداث الرئيسية: الطلبات، الفواتير، الاشتراكات، التذاكر، المحادثات، القنوات، تسجيل المستخدمين، وترك السلة. 15 فشل متتابع.

توقيع Webhook

كل webhook الصادر موقع مع HMAC-SHA256. التحقق من التوقيعات على الطرف المتلقي لك لضمان صحة webhooc. event_id مستقر للمعالجة idempotent.

الوسيلة SDK

JavaScript SDK تثبيت وصفات لـ React, Vue,. Next.js, WordPress, Shopify, و الثابتة HTML.

البرامج الإضافية ومجموعات برامجيات التطوير الحاسوبي

Server-side SDKs and plugins for common frameworks.WordPress(بلوجين)WHMCSوحدة نموذجية، ومكتبات تكامل عامة في برنامج PHP/Node.js.

الأحداث API

دفع الأحداث المخصصة في OpsIQ من خلفيتك: المشتريات، والتسجيلات، واستخدام الخاصية، والأخطاء، أو أي حدث تجاري. تظهر الأحداث في الجدول الزمني للزوار وتغذى على التحليلات وسياق الذكاء الاصطناعي.

كتاب الطبخ

إنشاء تدفقات عمل آلية التي تطلقها الأحداث: التذكرة الجديدة، وبدأ الدردشة، والزائر المحدد، وتغير مرحلة الصفقة، أو حدث مخصص.

API الجهة القائمة بالبناء

البصرية API إنشاء نقاط النهاية، وطلبات الاختبار، وتفتيش الاستجابات، والتكامل مع تصحيح الأخطاء دون مغادرة النظام. OpsIQ.

الفريق والإدارة

تحكم في الوصول بناءً على الدور

ثلاثة أدوار: المالك (الوصول الكامل، والفواتير، ومنطقة الخطر)، والمدير التنفيذي الكامل (جميع العمليات باستثناء الفواتير ومنطقة خطر)، والوكيل (الإدارات المخصصة فقط، لا يجوز الوصول إلى الإعدادات).

لوحة متابعة أداء الفريق

لوحة بيانات كاملة عن المالكين والمستخدمين فقط تبين أوقات الحل، وتوزيع عبء العمل، ومعالجة العمق، وانهيار القنوات، وتحليل الاتجاهات،SLAالامتثال،CSATمن قبل العميل، معدلات إعادة فتح الفريق، وساعات الاقتحام، وحدثت في الوقت الحقيقي

وجود المديرين وتتبعهم على الإنترنت

كشف الوجود على أساس نبضات القلب (Heartbeat-based presence detection)60-الثانية، 300-التوسيع الثاني، التقليم التلقائي بعد 120 انظر أي المديرين هم نشطون حاليا وعلى أي صفحات.

إعدادات حيز العمل

يمكن لكل موقع متصل (حيز عمل) أن يكون له تشكيل الذكاء الاصطناعي الخاص به، وإعدادات الموصول، وإدارة التذاكر، والعلامات التجارية، والقواعد التشغيلية. وتتدفق الافتراضات العالمية إلى حيز العمل الذي لا يبطلها.

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

إدارة مواقع متعددة من OpsIQ واحد. كل موقع لديه مقطع التتبع الخاص به، وبيانات الزائرين، والتهيئة. التحول بين المواقع من تصفح الإدارية.

نظام نماذج البريد الإلكتروني

نماذج بريد إلكتروني مدفوعة بالسجل لجميع الاتصالات الآلية: إشعارات التذاكر، ومحاضر المحادثة، والرسائل الإلكترونية الترحيبية، وإعادة تعيين كلمات المرور، وإنذارات النظام. HTML نموذجين مع استعراض مباشر، رقائق متغيرة {{customer_name}}, {{ticket_id}}))، والتحكم الشامل في التصميم.

الاستيراد والتصدير

الاتصالات بالواردات، والتذاكر، والمقالات المعرفية منCSV/JSONبيانات زائري التصدير وتقارير التحليل،CRMالسجلات - قابلية نقل البيانات فيما يتعلق بالهجرة بين النظم.

الأمن والامتثال والعمليات

إنتربرايز SSO

OIDC (OpenIDConnect) single sign-on with full runtime: discovery, authorize, callback, JWKS signature verification, userinfo, domain allow-listing, JIT provisioning, and status guards.SAMLدعم التشكيل.

GDPR والامتثال للبيانات

البناء فيDSARمناولة (طلب الوصول إلى البيانات): تصدير وحذف بيانات العملاء عبر جميع النظم، فترة زمنية طويلة من المعلومات تشمل الجلسات والتذاكر والدردشةCRMالسجلات، وسجلات البريد الإلكتروني - سياسات إدارة الموافقة واستبقاء المعلومات.

IP الحظر والحماية من القوة الغاشمة

قطاع محدد IPs أو تتراوح من الوصول إلى موقعك أو إدارة. الإغلاق التلقائي بعد محاولات الدخول الفاشلة قابلة للتعديل.IP) و خاتم التوقيت ووكيل المستعمل(.

HSTS وعناوين أمنية

أمن نقل صارم عبر بروتوكول الإنترنت، وعناوين سياسات الإذن، وتخصيص ملفات تعريف الارتباط الآمنة - يمكن لعمليات الانتشار المستضافة ذاتيا أن تضيف عناوين CSP من خلال تشكيل الخادم.

تعزيز الوصلات الشبكية الصادرة

SSRF guard blocks webhooks to private/metadata (باللغة الإنجليزية). IP يمنع التسليم غير المتزامن نقاط النهاية البطيئة من وقف تطبيقك. 15 وتحول حالات الفشل المتتالية دون إهدار الموارد في نقاط النهاية الميتة.

عزل مكان العمل

عزل البيانات عن أماكن العمل الزائرون، التذاكر، الدردشةCRMوتُنشر السجلات والمحادثات التي تجريها منظمة العفو الدولية في مجال عملها، ويُمنع تسرب البيانات عبر أماكن العمل عند طبقة الاستفسار.

إدارة دورة الفواتير

دعم دورات الفواتير الشهرية والفصلية ونصف السنوية والسنوية ودورتي السنتين والدورات الدائمة، وتطبيع العملات لبوابات متعددة العمﻻت، وتحويل العمﻻات عند استﻻم المدفوعات من أجل اﻹبﻻغ الدقيق عن العائدات.

التشغيل الآلي المخطط له والمتزامَن

نظام cron المضمن للمهام المقررة: توليد التقارير، وتنظيف البيانات، وتجديد الاشتراكات، وتحديثات تدريب الذكاء الاصطناعي، ومزامنة الموصِّل، وإعادة محاولات Webhook.

سياسات الاحتفاظ بالبيانات

حدد المدة التي يتم فيها الاحتفاظ بدورات الزوار، ومحاضر المحادثات، وتاريخ محادثات الذكاء الاصطناعي، وسجلات الأحداث.تنظيف البيانات القديمة بصورة آلية لإدارة التخزين والامتثال لسياسات الاحتفاظ بالبيانات.

التشخيص والصحة

لوحة بيانات صحة النظام التي تبين حالة cron، واتصال قاعدة البيانات، وحالة مقدم خدمات الذكاء الاصطناعي، وصحة الموصل، ومعدلات التسليم webhook، واستخدام التخزين.

من هو OpsIQ

متاجر التجارة الإلكترونية

المتاجر

تتبع كل زائر من الهبوط إلى الشراء. دعنا الذكاء الاصطناعي يجيب "أين طلبي؟" باستخدام البيانات الحية Shopify/WooCommerce/BigCommerce. إدارة بطاقات الدعم مع الذكاء الصناعي الرد الآلي. تشغيل خط أنابيب الصفقة للجملة و B2B القيادة.

شركات البرمجيات كخدمة وشركات البرمجة

SaaS

رصد توقيعات المحاكمات واعتمادها مع إعادة تنظيم الدورة، وتتبع أي صفحات الوثائق تحولت.APIdocs. Manage subscription revenue and expansion deals in the CRM. Connect your billing platform (Stripe, WHMCSفي الوقت الحقيقي لتتبع الرنين المغناطيسي، إستخدم عامل دورة حياة الآلية للكشف عن (كورن) ومنعه.

الوكالات والعاملون لحسابهم الخاص

وكالة

تقديم تحليلات للعلامات البيضاء وبوابات الدعم للعملاءCRMخط أنابيب لإدارة الآفاق وقود المشاريع - بناء موصلات لأجهزة الاتصال الخاصة بالعميلين باستخدام بناية الناقل.SEOتقارير مع الاستخبارات الموقعية، موصلات سوق إعادة البيع كخدمات ذات قيمة مضافة

الاستضافة والهياكل الأساسية

الاستضافة

عميق WHMCS التكامل مع 80+ إجراءات الذكاء الاصطناعي للبحث عن الأوامر، وإدارة الخدمات، DNS الرد تلقائيا على أسئلة الاستضافة الشائعة باستخدام مقالات قاعدة المعارف. تتبع مشاركة صفحة حالة الخادم. إدارة تذاكر الدعم الفني مع الذكاء الاصطناعي الفرز. استخدام سلّم دورة الفواتير لخطط استضافة شهرية من خلال الحياة.

الأعمال التجارية التي تحتاج إلى دعم كبير

الدعم

Deflect40-70%أسئلة متكررة مع دردشة (آي آي) متوقفة في قاعدتك المعرفية، تذاكر الطريق إلى القسم الصحيح بـ "أي أي تيج"SLAالامتثال،CSAT(ج) استخدام الكتابة AI لصوغ الرد المهني، ورصد اتجاهات الدعم مع معلومات عن المعلومات المسبقة عن علم.

التسويق والتسويقSEOالأفرقة

التسويق

Full Site Intelligence suite: crawls, technical SEO audits, content analysis, SERP rank tracking, keyword research, backlink monitoring, and local SEO grid. Google Business Profile management. Scheduled white-label reports for clients. A/B testing built into the tracking widget. Campaign attribution across all channels.

مؤسسون منفردون وأفرقة صغيرة

الشركات الناشئة

ابدأ بالتتبع والدردشة، حر في إضافة تذاكر عندما تحصل على حجم الدعمCRMعندما تبدأين بالبيع، اتصلي بالمنصات عند تبنيها.OpsIQمقياس من شخص واحد يفعل كل شيء50- فريق العمليات الشخصية مع المكتب الإقليمي لأمريكا اللاتينية ومنطقة البحر الكاريبي، والإدارات، وتتبع الأداء حسب العناصر.

المؤسسات والعلامات التجارية المتعددة

مؤسسة

Enterprise SSO with OIDC for centralized authentication. Multi-workspace isolation for separate brands or divisions. Per-workspace AI configuration with different providers and models. Custom connector development with marketplace distribution. Audit trails, GDPR compliance tools, and data retention policies.

ماذا يحل محل OpsIQ

Google Analytics + Hotjar + معقول

إجراء تحليلات كاملة للموقع على شبكة الإنترنت مع تعقب الزوار، وإعادة تنظيم الجلسات، وترتيب الصفحات، والاستخبارات الجغرافية، وفترات النوايا، وعزو التحويل، والأحداث، والتجارب A/B، وتتبع الأخطاء التي ترتكبها الورقة المشتركة، وجميعها سهلة الخصوصية، في منصة واحدة.

Intercom + الانجراف + الارتطام

خدمة محادثة مع العملاء تعتمد على الذكاء الاصطناعي وتستند إلى المعرفة، ودعم متعدد مقدمي خدمات الذكاء والذكاء الصنعي، والتسليم الآلي للعملاء، وقواعد المحادثات الاستباقية، وتاريخ المحادثة، واستقصاءات CSAT، وإعداد التذاكر من خلال المحادثتين.

نظام Zendesk + برنامج Freshdesk وبرنامج Help Scout

نظام التذاكر الوطنية مع الإدارات، الأولوياتSLA, AI triage, auto-reply with configurable delay, email ingestion, remember embed, trip merging, inbox copilot, and Return to AI capacity.

برامجيات HubSpot + Pipedrive + Salesforce

أولاً -CRMمع أربعة وكلاء متخصصين في شؤون الإعلام (Steward, SDR, Retention, Analyst), Trust Dial autonomy control, pipeline board, deal instructioning, forecasting, sequences, life cycle management, and natural languageCRMتشكيلة

Ahrefs + SEMrush + Moz

مخابرات الموقع مع الزحف الآلية، تقنيةSEOمراجعة الحسابات، وتحليل المحتوى، والبحث في مجال التنفيذ، وتتبع رتب نظام تخطيط الموارد المؤسسية، والبحوث المتعلقة بالكلمات الرئيسية، وتحليل الوصلات الخلفية، على الصعيد المحليSEOشبكة، و تقارير بيضاء مبرمجة.

Zapier + الصنع + البرمجيات الوسيطة المخصصة

موصل SDK مع 25+ موصلات مبنية مسبقاً، بنّاء الموصِّل (لا شفرة/بمساعدة الذكاء الاصطناعي/شفرة كاملة)، OAuth تدفق البيانات، التسجيل الآلي للوصلات الشبكية (webhook)، فهرس كبير لتعريفات أفعال الاتصال التي لا تصبح قابلة للتنفيذ إلا عند تركيب وصلة الاتصال ذات الصلة وتفعيلها وتشكيلها والتحقق منها، SmartLookup، والسوق، والحزم الموقعة.

Google مدير موجز الأعمال التجارية

موصل كامل لشبكة GBP: إدارة الاستعراض، النشر البريدي، إدارة الجودة، تحميل الصور، تزامن المعلومات مع الأعمال التجارية، تتبع البصيرات، وردود الاستعراض التي تعمل بها الوكالة الدولية للطاقة الذرية، كلها من الداخل OpsIQ.

أدوات منفصلة لنماذج البريد الإلكتروني

نماذج بريد إلكتروني مدفوعة بالسجل مع محرر بصري، وعرض مسبق مباشر، ورقاقة متغيرة، ومراقبة التصميم الشامل، وتكييف حسب كل حدث لجميع الاتصالات الآلية.

لوحات متابعة إدارة الأفرقة

أداء فريق البناء: أوقات العمل، وعبء العمل،SLAالامتثال،CSATحسب الوكيل، معدلات إعادة فتح، ساعات متعطلة، تتبع الوجود في الوقت الحقيقي، وانهيار كل إدارة.

GDPR أدوات الامتثال

Native DSAR - handling, data erasure across all systems, consent management, retain policies, and audit tracks, built into the platform, not bolted on.

طبعتان

النشر في البلد المضيف

ويعمل OpsIQ على بنية تحتية مدارة، وتشغيل المنتج هو نفسه؛ والبنية التحتية والتحديثات والنسخ الاحتياطية يقوم بمعالجتها مشغل الاستضافة. ويوثق هذا الدليل وقت التنفيذ لــ _OpsIQ بدلاً من تدفقات التسويق أو الحسابات التجارية.

الوحدة المستضافة ذاتيا

Install OpsIQ on your own server for full control over data, branding, updates, and integrations. Requires PHP 8.4+, MySQL 5.7+ or MariaDB 10.3+, HTTPS, and the OpsIQ unified cron. Supports WHMCS integration as an addon module. Full data sovereignty.

ترتيب القراءة الموصى به

1
البداية السريعة

اتبع دليل 30-دقيقة للتثبيت للحصول على التتبع، والدردشة، و AI الأساسي يعمل على موقعك.

2
لوحة المتابعة والتحليل

تعلم كيفية قراءة بيانات الزائرين، وإنشاء جلسة إعادة التشغيل، وتحديد الفرص، وفهم أنماط حركة المرور.

3
ذكاء الموقع

تشغيل SEO زحفك الأول، وتحقق من صحتك التقنية، وإنشاء SERP مرتبة تتبع الكلمات الرئيسية المستهدفة.

4
التذاكر والدعم

إنشاء الإدارات، وتشكيل الرد الآلي مع الذكاء الاصطناعي، والربط بتناول البريد الإلكتروني، وتدريب الذكاء الإصطناعي لمعالجة الأسئلة الشائعة.

5
CRM

نظم الاتصالات، وبناء خط الأنابيب الخاص بك، وتعديل وكلاء الذكاء الاصطناعي، وتحديد مستويات الاتصال بالثقة، واسمحوا للذكاء الصنعي تدريب صفقاتك.

6
أجهزة الاتصال وأدوات التطوير

يربط منصة التجارة الإلكترونية / الفواتير، وبناء موصلات مخصصة، وإقامة webhooks، والتكامل عن طريق REST API.

💡
جديدة إلى OpsIQ? ابدأ مع دليل البداية السريعة أدناه. يمكنك الحصول على التتبع والدردشة الأساسية الذكاء الاصطناعي يعمل في تحت 30 دقائق.
ابدأ هنا

بدء سريع 30 دقائق

اتبع هذه الخطوات من أجل تشغيل OpsIQ. كل خطوة تبني على السابقة. في النهاية، سيكون لديك تعقب الزوار، محادثة الذكاء الاصطناعي، ودعم التذاكر الأساسية.

الخطوات
قائمة مرجعية للبدء السريع:: قائمة مرجعية للتثبيت الموجه تبين عملية تركيب الأدوات، والربط بالمنصة، وتدريب العاملين في مجال الذكاء الاصطناعي، ودعوة أعضاء الفريق إلى الدخول على الشبكة، 60 شريط التقدم بالنسبة المئوية.هيا بناsetupتثبيت OpsIQ العناصرأنجزربط منصة (WHMCS, Shopify...)أنجزتدريب الذكاء الاصطناعي على محتوىكأنجزدعوة فريقكتحقق وبدأالتقدم المحرز في إنشاء النظام3of5 · 60%1STEP 1تثبيت الوسيلة2STEP 2الربط وتدريب الذكاء الاصطناعي3STEP 3دعوة & مباشرة
المسار 30-دقيقة: تركيب الوحدة، والربط منصة، وتدريب الذكاء الاصطناعي الخاص بك، دعوة الفريق، ثم اذهب على الهواء.

1 - اللجنة الفرعية 30- دقيقة إعداد

1
تنشيط رخصةك

أدخل مفتاح الترخيص الخاص بك في OpsIQ admin. اذهب إلى الإعدادات، وأدخل مفتاحي الترخص الموفر لهذا التثبيت، ثم انقر على تنشيط. ينبغي أن ترى شارة خضراء "نشطة".

2
تحديد هويتك التجارية

انتقل إلى الإعدادات وملء اسم عملك، والصناعة، والمنطقة الزمنية، والعملة الافتراضية، وساعات الدعم. هذه المعلومات تستخدم من قبل الذكاء الاصطناعي عند الإجابة على أسئلة العملاء ومن خلال تحليلات للتقارير التي تفهم منطقة زمنية.

3
اختيار مقدم خدمات الذكاء الاصطناعي

Go to AI Configuration and select your provider. Options: Claude (Anthropic), GPT-4o (OpenAI), Gemini (Google), or Grok (xAI). Enter your API key if using your own key, or use Managed AI if available on your plan. Click "Test connection" to verify.

4
تثبيت أداة التتبع

Go to Connected Sites, copy the tracking snippet, and paste it before the closing </body> tag on your website. Visit your site in a private browser, then check the Live Feed in OpsIQ. You should see yourself as a visitor within 15 seconds.

5
اتصال منصةك

إذا كنت تستخدم Shopify, WooCommerce, WHMCS, أو منصة مدعومة أخرى، انتقل إلى موصلات، وابحث عن المنصة الخاصة بك، وأدخل معلومات الاعتماد، وانقر فوق اختبار الاتصال. وهذا يعطي الذكاء الاصطناعي الوصول إلى بيانات الطلب، وملفات تعريف الزبائن، وسياق الدعم.

6
دعوة فريقك

اذهب إلى الفريق، انقر على دعوة، أدخل بريدهم الإلكتروني ودورهم (المالك، المدير الكامل أو الوكيل). لا يستطيع الوكلاء الوصول إلا إلى الإدارات التي تعينهم عليها. يرى المالكون والمديرون الكاملون كل شيء.

أسرع مسار ممكن (5 دقائق)

الخطوة 1: تركيب الوحدة

نسخة من الجزء من المواقع المتصلة ولصقه على موقعك الشبكي. هذا يعطيك تتبع فورا.

الخطوة 2: تمكين الذكاء الاصطناعي

اذهب إلى AI Configuration، واختار مقدماً للخدمة، وأدخل مفتاحك وحفظه. والآن أصبحت محادثة الذكاء الاصطناعي نشطة على موقعك الشبكي.

تم

لديك الآن تتبع الزوار و الدردشة يمكنك إضافة تذاكرCRMو الموصلات لاحقاً

يوم 2جعلها مفيدة

إضافة المعارف

اذهب إلى قاعدة المعارف و أضف 5-10 مقالات حول أسئلتك الأكثر شيوعاً، يستخدم الذكاء الاصطناعي هذه الأسئلة للإجابة على الزبائن بدقة.

إنشاء إدارات

اذهب إلى التذاكر وإنشاء على الأقل 2 إدارات (مثلا، "المبيعات" و "الدعم"). تعيين أعضاء الفريق لكل واحد.

اكتب التعليمات الخاصة بك

اذهب إلى تدريب الذكاء الاصطناعي وكتابة نداءات الذكاء الصناعي للعملاء التي تصف أعمالك، والنبرة، وقواعد التصعيد.

اختبار محادثة

لذا، فأنت بحاجة إلى أن تفتح موقعك على شبكة الإنترنت في متصفح خاص وتتحدث مع الذكاء الاصطناعي كعميل. وتحقق من دقة الإجابات والنبرة الصحيحة.

الأسبوع 1: بناء عملياتك

اتصال البريد الإلكتروني

أنشئ صندوق بريد (Gmail، IMAP، أو موصل مقدم خدمات) بحيث تنشئ رسائل البريد الإلكتروني للعملاء تذاكر بشكل آلي.

إنشاء الرد الآلي

تفعيل الرد الآلي على التذاكر للإدارات المأمونة. وضع تأخير 2-دقيقة بحيث يمكن للبشر أن يتدخلوا أولا.

استعراض التحليلات

انظر إلى عدد الزوار، ومعدل الرجوع، وأعلى الصفحات، والمبيعات إذا كان التتبع متصلا.

ابدأCRM

مفتوحCRMودعOpsIQإتصالات استيراد من منابر الاتصال الخاصة بك، استعراض لوحة خطوط الأنابيب.

الشهر 1: تحقيق المستوى الأمثل

استعراض تاريخ التكنولوجيات الجديدة

تحقق من تاريخ الذكاء الاصطناعي أسبوعيا. ابحث عن إجابات خاطئة، وأسئلة مفقودة، وفرص لإضافة المعرفة.

إضافة قواعد استباقية

إنشاء قاعدة: إذا كان الزائر على صفحة التسعير ل 60+ ثانية، أظهر رسالة محادثة تسأل عما إذا كانوا بحاجة إلى المساعدة.

ابنِ موصلًا

إذا كنت تستخدم منصة لا تحتوي على وصلة داخلية، استخدم بناة وصلات لإنشاء واحدة.

إنشاء شبكة

ربط OpsIQ إلى أدواتك الداخلية باستخدام webhooks الخارجة للتذاكر، والدردشة، وأحداث المبيعات.

هل يمكنني تخطي الذكاء الاصطناعي واستخدام التتبع فقط؟+

نعم. مزود الذكاء الاصطناعي اختياري. يعمل OpsIQ كمنصة تحليلات وتذاكر خالصة بدون ذكاء اصطناعي. يمكنك تمكين الذكاء الاصطناعي لاحقًا عندما تكون جاهزًا.

هل يمكنني تخطّي الموصِّلات وإضافتها لاحقاً؟+

نعم، تقوم الوصلات بإثراء الذكاء الاصطناعي ببيانات خاصة بالمنصة، ولكن OpsIQ تعمل بدونها. ابدأ بالتتبع والدردشة، ثم ربط المنصات عند الضرورة.

ماذا لو لم يكن لدي موقع على شبكة الإنترنت بعد؟+

يمكنك استخدام OpsIQ للتذاكر، CRM، وفريق التعاون. التتبع أداة اختيارية. أضفها عندما يكون موقعك جاهزاً.

كيف أعرف إذا تم تثبيت الودجت بشكل صحيح؟+

اذهب إلى موقعك على الإنترنت في متصفح خاص/غير معروف. OpsIQ يجب أن ترى زيارتك تظهر في غضون 15 إذا لم يكن الأمر كذلك، فحدد: (1) إذا كانت المقتطفات ملصقة بشكل صحيح، (2) إذا كان مفتاح الموقع صحيحاً، (3) هي مثبطات الإعلان أو عناوين CSP التي تمنع النص.

ابدأ هنا

خريطة كاملة للمنتجات

OpsIQليست إحدى السمات، بل هي مشغلة صانعة، ونبات على شبكة الإنترنت، وطبقة دعم تابعة لمؤسسة AI، ونظام للتذكرة/المكتب، وكاملةCRMمع أربعة من عملاء الاستخبارات، جناح استخبارات موقعية، منصة موصل مع السوق وسطح المطور، هنا كل عنصر يحتويه

مدير المشغل

لوحة التحكم، تغذية حية، سجل الزائرين، الجلسات، جلسة إعادة التشغيل، الصفحات العليا، الاستخبارات الجغرافية، قناة النوايا، سجلّ الأحداث، تجارب A / B، JS تعقُّب الأخطاء، المبيعات والتحويلات، القيود، AI CRM (مركز القيادة، الاتصالات، الشركات، الصفقات، مجلس الأنبوب، تدريب الصفقة، التنبؤ، استكشاف الفرص، المتواليات، دورة الحياة، مدير البيانات، بناء CRM الخاص بي، CRM config، صحة CRM، CRM API)، التذاكر، صندوق الدردشة، القواعد الاستباقية، CSAT الدراسات الاستقصائية، مسودة البريد الإلكتروني، صناديق البريد، تشكيل الذكاء الاصطناعي، التدريب على الذكاء الصناعي، تاريخ الذكاء الإصطناعي، رؤى الذكاء الصانع، قاعدة المعرفة، وصلات، Connector Builder، السوق، المواقع المتصلة، إدارة الفريق، أداء الفريق ، الإعدادات، التشخيص والتراخيص.

الأسطح المقابلة للعملاء

شبكة تتبع الموقع الشبكي (المحللون منارة + دردشة + تذكرة مزروعة + بحث قاعدة معرفية)، ودردشة العملاء AI، وبوابة تقديم التذاكر، والهوية الزائرة المجهزة، وتحميل الملفات،CSATمسح المستعارة، ومركز مساعدة تزييف العملاء.

AI-First CRM

مركز القيادة، الاتصالات، الشركات، الصفقات، لوحة أنابيب مع السحب والإسقاط، تدريب صفقة الذكاء الاصطناعي (إشارات المخاطر، أفضل إجراء مقبل، احتمال الفوز)، التنبؤ بالإيرادات، وكيل الاستكشاف (SDR)، تسلسل المتابعة الآلي، دورة الحياة والاحتفاظ بإدارة، وكالة البيانات القيّم (dedup، إثراء، التحقق)، بناء CRM (إنشاء اللغة الطبيعية)، تشكيل CRM، فحص صحة CRM، Trust Dial (Autopilot/Copilot/Manual per agent)، أربعة وكلاء متخصصين (Steward، SDR، الاحتفاظ، المحلل)، و CRM API مع webhooks.

حزمة برامجيات استخبارات المواقع

Automated site crawls, technical SEO audit (speed, mobile, Core Web Vitals, SSL, redirects, structured data), content audit (word count, readability, keyword density, heading structure), AI-powered semantic search, SERP rank tracking across engines, keyword research with opportunity scoring, backlink analysis and monitoring, local SEO grid visualization, Google Business Profile sync (reviews, posts, Q&A, photos, insights), scheduled reports (daily/weekly/monthly), and white-label PDF output for agencies.

الذكاء الاصطناعي والتشغيل الآلي

الدردشة مع الزبائن باستخدام الذكاء الاصطناعي (مقدمو خدمات متعددون: Claude, GPT-4o, ) Gemini)مساعد إداري للذكاء الاصطناعي(، وإرساء المعارف في مجال الذكاء الصنعي، والتسليم الآلي مع إمكانية الرجوع عن التشكيلات، وتشكيل الذكاء BYOK وطرائق، الميزانيات الرمزية وضوابط التكلفة، تتبع مراجعة تاريخ الذكاء الاصطناعي، تحليل رؤى الذكاء الإبداعي، التذاكر AI فرز، التذكرة الرد الآلي مع التأخير، كتابة الذكاء الإصطناعي (مطالبة منفصلة)، والرائد المشارك صندوق إدارية.

وصلات وعمليات تكامل

25+ pre-built connectors (Shopify, WooCommerce, BigCommerce, Magento 2, PrestaShop, OpenCart, osCommerce, WordPress, WHMCS, Zendesk, Stripe, Amazon SES, Postmark, Resend, SendGrid, Mailgun, Gmail, IMAP, Slack, Google Business Profile), Connector Builder (no-code/AI-assisted/full-code), generic OAuth flow with PKCE, connector marketplace with paid distribution, connector signing and verification, SmartLookup fuzzy matching, a large catalogue of HTTP action definitions whose availability depends on connector installation, enablement, configuration and validation, knowledge sync, and workflow recipes.

منصة المطورين

الباقي API (الزوار، الأحداث، التذاكر، الاتصالات، الإعدادات، الوصلات)، مواصفات OpenAPI API إدارة المفاتيح، ووصلات الويب الخارجة (غير متزامنة، موقعة، محاولتها مجدداً، محمية بواسطة SSRF، معطلة آلياً)، الأحداث API لتناول الأحداث المخصصة، وحدة التحكم SDK مع تحديد الهوية، وكتيب تحضير المسببات، وعقود العمل، والموصل SDKومجموعات أدوات تطوير برامج الحاسوب (PHP،.NET) Node.js), WordPress و WHMCS النموذج.

ألف - الإعدادات والعمليات

هوية العمل، وتشكيل الذكاء الاصطناعي لكل حيز عمل، وإعدادات التتبع، والأمن (HSTS، والسياسات المتعلقة بالتصاريح، والحظر IP ، والحماية من القوة الغاشمة)، و RBAC (المالك/المدير الكامل/الوكيل)، وإدارة الفريق والدعوات، وأداة أداء الفريق، وتتبع وجود المديرين، ونظام نماذج البريد الإلكتروني (موجه بواسطة السجل، والمحرر المرئي، والشرائح المتغيرة)، ومصمم الاستقصاءات، ومعرفة المجال، وتكوين تذاكر الإدماج، والتوسيم، وسياسات الاحتفاظ بالبيانات، وإدارة دورة الفواتير (شهريا طوال الحياة)، وتطبيع العملة، والاستيراد/التصدير، والتشخيص، والتشغيل الآلي للزمن، ومنطقة الخطر.

الأمن والامتثال

Enterprise SSO (OIDC(ب) مع التحقق من النظام العالمي لمراقبة المناخ، وتقديم المساعدة التقنية المؤقتة؛SAMLالتشكيلة،GDPR/DSARمناولة (التصدير والحذف عبر جميع النظم)، حقبة البيانات لكل اتصال، إدارة الموافقة، العزلة في أماكن العمل (تصفيف الاستفسارات الدقيقة)، ومسارات مراجعة الحسابات، وفشل تتبع قطع الأشجار،IP:: سد، وحراسة البرمجيات SSRF على الشبكة الخارجية، وسياسات الاحتفاظ بالبيانات.

جسر مقدمي الخدمات

Managed AI proxied through OpsIQ مقدم الخدمات URL- نداءات مُقدِّم معلومات موقعية، المُصادقة على الترخيص، التقارير الصحية PDF:: إصدار وصادرات البيانات، وجميعها توجه عبر نقطة نهاية المزود المهيأة، وليس إلى البائع المباشر API إتصالات من خادمك

كل صفحة إدارية

لوحة المعلومات

الميزانية الأساسية

مركز القيادة اليومية: لمحة عامة عن الحركة، وعدد الزوار الحيين، وموجز المبيعات، وعمق صفوف الدعم، وإشعارات نشاط الذكاء الاصطناعي، والموصوفة سريعة العمل.

تغذية حية

تحليلات

تدفق الزوار في الوقت الحقيقي: مشاهدات الصفحة، وبدء المحادثات، وتقديم الاستمارات، وإشارات النوايا التي يتم تحديثها كل بضع ثوان مع مرشحات البلد والأجهزة والمحالين.

سجل الزوار

تحليلات

سجلات الزيارة الكاملة: الجهاز، المتصفح، نظام التشغيل، البلد، المدينة، المرجع، بارامترات UTM، صفحة الوصول، الهوية وتاريخ مشاهدة الصفحات الكامل.

الجلسات

تحليلات

عرض مجمع حسب الرحلة: تدفق الصفحات، والوقت في الصفحة، وعمق التنقل، ومسار التحويل، وصفحة الخروج لكل جلسة زائر.

إعادة تشغيل الجلسة

تحليلات

إعادة عرض الجدول الزمني للأحداث المسجلة: حركة الفأرة، والنقر، والتحريك، والانتقالات بين الصفحات، وتفاعلات الاستمارات لتشخيص تجربة المستخدم.

الصفحات الرئيسية

تحليلات

ترتيب أداء الصفحة: الزيارات، ووقت المشاركة، ومعدل الرجوع، والتحويلات، وتفاعلات الدعم، واتجاه الاتجاه.

الاستخبارات الجغرافية

تحليلات

تقارير جغرافية: تفصيل البلدان/المدن مع خرائط، وتوزيع الأجهزة، وحصة المتصفحات، ومصادر حركة المرور، والنفاذ إلى الأسواق.

قمع النية

تحليلات

تتبع النوايا السلوكية: تسعير الزيارات، وتواتر العودة، والتصفح في الوثائق، وتفاعلات الدعم، والإشارات المخصصة مع احتمال التحويل.

سجل الأحداث

تحليلات

تاريخ الأحداث القابلة للبحث: زيارات الصفحات، والأحداث المخصصة، والمحادثات، والمشتريات، وتقديم الاستمارات مع البيانات الفوقية الكاملة والترشيح.

التجارب ألف/باء

تحليلات

إجراء اختبارات شاملة: خلق متغيرات، وتخصيص حركة المرور، وتحديد الأهداف، وقياس الأهمية، وإعلان الفائزين من الداخل OpsIQ.

أخطاء في برامجيات الترجمة

تحليلات

تسجيل الأخطاء في الواجهة: الرسائل، وتتبعات الكومة، والمتصفحات المتأثرة، والتواتر، والصفحات المتضررة، وتعقب الاتجاه.

المبيعات

المبيعات

لوحة متابعة الإيرادات: الطلبيات، التجديدات، المبالغ المردودة، العزو حسب المصدر، أداء الحملة، مقارنة الفترة وتحليل الاتجاه.

العملاء المحتملون

المبيعات

الإدارة الرائدة: التكسير، إسناد المصدرCRMحالة، تفاصيل الاتصال، إشارات السلوك، وخطوط الأنابيب.

CRM الذكاء الاصطناعي

CRM

كاملةCRM: مركز القيادة، الاتصالات، الشركات، الصفقات، لوحة خطوط الأنابيب، التدريب، التنبؤ، التنقيب، التسلسلات، دورة الحياة، إدارة البيانات، الصحة.

تذاكر

الدعم

الدعم في الإطار: الإدارات والأولويات، و SLA التتبع، والتبريد الآلي، والمذكرات الداخلية، وملحقات الملفات، والدمج، وإدارة الوضع.

صندوق البريد الوارد

الدعم

محادثات حية: الذكاء الاصطناعي والدردشة البشرية، والتسليم، والتعاون، وتاريخ المحادثة، وهوية العميل، وجمع CSAT.

مسودات البريد الإلكتروني

الدعم

إدارة البريد الإلكتروني: البريد الوارد إلى التذاكر، وتكوين الردود بمساعدة الذكاء الاصطناعي، واختيار النماذج، وتشكيلة صندوق البريد.

تكوين البرنامج الحاسوبي

الذكاء الاصطناعي

إعداد مقدم الخدمة: انقر على Claude/GPT-4o/Gemini/Grok، وأدخل مفتاح API أو قم بتمكين الذكاء الاصطناعي المدار، وحدد ميزانيات النموذج والدرجة الحرارية والعناوين لكل مساحة عمل.

التدريب على الذكاء الاصطناعي

الذكاء الاصطناعي

كتابة الطلبات: طلبات موجهة إلى الزبائن وإلى المديرين، وقواعد التصعيد، والمبادئ التوجيهية للنغمة، والمواضيع المحظورة، وتشكيلة الحدود.

تاريخ الذكاء الاصطناعي

الذكاء الاصطناعي

مراجعة المحادثات: سجلات كاملة للطلب/الرد، واستخدام الرموز، والتكلفة لكل محادثة، ومقدم الخدمة، والنسخة النموذجية، ونتيجة الحل.

رؤى الذكاء الاصطناعي

الذكاء الاصطناعي

تحليل الأنماط: الأسئلة الشائعة، ومعدلات الحلول، وتواتُر التسليم، والرضا حسب الموضوع، وتحديد الثغرات في التدريب.

قاعدة المعرفة

الذكاء الاصطناعي

محتوى التدريب على الذكاء الاصطناعي: المقالات، ومدخلات الأسئلة المتكررة، ووثائق المنتج، والمعارف المتصلة، والمدخلات الخاصة.

الموصلات

عمليات التكامل

مركز التكامل: وصلات الوصل المركبة، وحالة الصحة، وجرد الأعمال، وإدارة وثائق التفويض، وتصفح الأسواق، وبنية وصلات الاتصال.

المواقع المتصلة

الإعدادات

إدارة الموقع: تتبع مقتطفات، ومفتاح موقع، وتشكيل الوسائط، وإعدادات المجال، وعزل حيز العمل لكل موقع.

فريق

الإعدادات

إدارة المستخدمين: دعوة الأعضاء، وتعيين الأدوار (المالك/المدير الكامل/الوكيل)، وتحديد وصول الإدارات، وإدارة التصاريح.

أداء الفريق

الإعدادات

القياسات: أوقات الحل، وعبء العمل،SLAالامتثال،CSATمن قبل الوكيل، إعادة فتح الأسعار، ساعات الحافلة، وتحليل الاتجاهات.

الإعدادات

الإعدادات

التشكيل: هوية العمل، وإنشاء الذكاء الاصطناعي، والتتبع، والأمن، والعلامات التجارية، والاحتفاظ، وقوالب البريد الإلكتروني، والفواتير، والاستيراد/التصدير، والتشخيص، ومنطقة الخطر.

ترخيص

الإعدادات

إدارة الخطة: حالة الترخيص، وخصائص الخطة، ومقاييس الاستعمال، وتاريخ التجديد، وخيارات الارتقاء/الانخفاض.

ابدأ هنا

الإدماج الموجه

وتحوّل رحلة الإدماج المنشأة الجديدة إلى منشأة عاملة. OpsIQ ويمكن تركها واستئناف العمل فيها دون فقدان التقدم المحرز.

فرز المنتجات
الانضمامويبين التثبيت كل منطقة من مناطق الإعداد، وحالتها الراهنة والإجراء التالي الذي يتعين إنجازه.الانضماممساحة العملPROGRESS60%COMPLETED6التاليويدجتعرض الحيز العمليترخيصالتحقق من صحة ترخيص المنتجتممقدم خدمات الذكاء الاصطناعياختيار مقدم الخدمة ومفتاح الاختبارتمالعلامة التجاريةهوية الشركة ونهجهاتمالموقع الشبكيإضافة موقع وتثبيت أداةالتالي1COMPLETE BASICSالترخيص، العلامة التجارية، الذكاء الاصطناعي2CONNECT DATAالموقع والموصل3VERIFY LAUNCHالفريق، البريد الإلكتروني، الشيكات
ويبين التثبيت كل منطقة من مناطق الإعداد، وحالتها الراهنة والإجراء التالي الذي يتعين إنجازه.

التسلسل الموصى به

  1. الترخيص: التحقق من صحة الترخيص والتأكد من أن حيز العمل نشط.
  2. مقدم خدمات الذكاء الاصطناعي: اختار مقدم الخدمة/النموذج، وأدخل بيانات الاعتماد وتشغيل اختبار الاتصال. يمكن تجنب الذكاء الاصطناعي إذا كان مجال العمل سيستخدم في البداية التحليلات والتذاكر فقط.
  3. الهوية التجارية: (ب) تحديد الاسم والصناعة والوصف والنبرة الموجهة نحو الزبون وتفاصيل العلامة التجارية التي تستخدمها الأداة والذكاء الاصطناعي.
  4. الموصّل: تمكين منصة خارجية واحدة على الأقل عندما تحتاج OpsIQ إلى طلبات، أو عملاء، أو بطاقات، أو بريد إلكتروني أو سياق آخر للمنصة.
  5. الموقع الشبكي والوسيلة: إنشاء الموقع/حيز العمل، ونسخ مفتاح الموقع والتحقق من زيارة المتصفح الخاص في التغذية الحية.
  6. الفريق والمسار: دعوة المديرين/الوكلاء، وإنشاء الإدارات، وتحديد توجيه البريد الإلكتروني وتأكيد تفضيلات الإخطار.
  7. عمليات التحقق من بدء التشغيل: اختبار الدردشة، التذكرة، تزامن الموصلات، cron، البريد الصادر، webhooks وعناوين الأمن.

وينبغي أن تظهر العودة إلى قائمة التثبيت الخطوات التي تم إنجازها بدلاً من إجبارك على إعادة البدء.

ابدأ هنا

التنقل والإذن

الشريط الجانبي OpsIQ هو شريط يعرف الإذن. وهذه الخريطة تشرح أين توجد كل منطقة تشغيلية ولماذا قد لا تكون الصفحة مرئية لكل مدير.

فرز المنتجات
OpsIQ النقلويجمع الشريط الجانبي OpsIQ حسب مجال العمل؛ ولا تظهر الروابط الفردية إلا عندما يستطيع الدور الحالي استخدامها.OpsIQ النقلمساحة العملGROUPS8الصفحاتعلى أساس الإذنSEARCHمتاحعرض الحيز العمليالدعمتذاكر، بريد إلكتروني، CSAT_مفتوحCRMالاتصالات، خطوط الأنابيب، الصفقات، التنقيبمفتوحالأتمتةسير العمل والقواعد والأهدافمفتوحالأمناستعراض عام، مراجعة الحسابات، الموافقة، اللبناتالإدارة1PICK A GROUPتوافق الشريط الجانبي2CHECK ROLEالوسائل الخفية المقيدة3USE PAGE HELPافتح قسم المطابقة
ويجمع الشريط الجانبي OpsIQ حسب مجال العمل؛ ولا تظهر الروابط الفردية إلا عندما يستطيع الدور الحالي استخدامها.
الدعم

تذاكر، منصة البريد الإلكتروني للفريق، CSAT، مركز المساعدة وتدفقات الدردشة.

CRM

The daily sales surfaces: CRM Home, Command Center, contacts, pipeline, predict, life cycle, prospecting, segments, leaderboard, deal approvals, data steward, growth tools and the activity stream.

الأتمتة

:: سير العمل على أساس الأحداث، وقواعد دورة الحياة وأهداف التحويل.

التسويق

التوعية والرسائل الاستباقية والإعلانات واستديو الترقية واستوديو الدراسات الاستقصائية والحملات الموجهة والجولات المصحوبة بمرشدين.

تحليلات

يظهر التقرير أولا - مركز التحليلات، رؤى الذكاء الاصطناعي، المبيعات، العملاء، الفرص، القنوات، اختبارات A / B، إعادة تشغيل الجلسة، لوحات التحكم المصممة حسب الطلب والتقارير المقررة - مع سجلات الزائر الأولي، والسورة، والصفحة، والجغرافيا والأحداث في قسم فرعي للبيانات الخام.

صفحتان ثابتتان

الاستخبارات الموقعية، أداء الفريق وتغذية المُستشفى يجلسون خارج المجموعات كقبور مباشر

عمليات التكامل

الموصلات والإجراءات والمحفزات، صناديق البريد، المشاريع، أماكن الإيميل، في نقاط نهاية متجهة إلى الخارجAPIالمفاتيح.

الأمن

استعراض أمني وخصوصية وامتثال، موافقة كوكي، نشاط مراجعة الحسابات، قطع الأخشاب الفاشلة، مجمدةIPsوJavaScriptأخطاء.

الإعدادات

:: أساسيات أماكن العمل (العام، الفريق، المواقع، اللغات)، ثم الأقسام الفرعية القابلة للنقض: AI Brain (instructions, formation, evaluation, history), CRM Setup (builder, custom fields, lead scoring, health), Data & Health (diagnostics, export) and Getting started (onboarding, help).

الصفحة لا يمكن أن يفتح الدور مخبأ من الجانب، إذ إن الخطة الحالية لا تتضمن البقاء مرئياً مع وجود أحد أعلى وفتح شاشة تحديث في حالة حدوث

لا تزال الطرق المباشرة يتم التحقق منها على جانب الخادم. إخفاء رابط الشريط الجانبي ليس حدود الأمن: كل عمل محمي يجب أن يمر بفحصه للسماح ومساحة العمل.

تحليلات

مركز التحليل

ويجمع مركز التحليلات بين خدمات الدعم والدردشة، والذكاء الاصطناعي، والإبلاغ عن الزوار والوكالات في حيز عمل واحد مرشح حسب التاريخ مع نتائج قابلة للتصدير.

فرز المنتجات
مركز التحليلويبين مركز التحليلات نطاقا زمنيا وبطاقات مقاييس وأشرطة لأداء خدمات الدعم والدردشة والذكاء الاصطناعي والزوار والوكالات.مركز التحليلمساحة العملتذاكر184AI RESOLVE63%CSAT4.7عرض الحيز العمليالدعممُنشأة، مغلقة، معلقة،SLAعلامة التبويبدردشةنتائج الذكاء الاصطناعي/الإنسان ووقت التعاملعلامة التبويبالذكاء الاصطناعيالثقة، والتغذية المرتدة، والاستخدام الرمزيعلامة التبويبالوكالةالحجم والسرعة والرضاعلامة التبويب1CHOOSE DATESمسبقة التحديد أو مختارة2CHANGE TABالدعم المقدم إلى الوكيل3EXPORTتنزيل CSV
ويبين مركز التحليلات نطاقا زمنيا وبطاقات مقاييس وأشرطة لأداء خدمات الدعم والدردشة والذكاء الاصطناعي والزوار والوكالات.

المرشحات والضوابط

  • استخدام إعداد مسبق أو معدل من/إلى نطاق، ثم تحديث لإعادة بناء كل بطاقة ورسم بياني للفترة نفسها.
  • تصدير CSV تصدير العرض التحليلي النشط بدلاً من لقطة الشاشة.
  • وتحديد نطاق حيز العمل هو أمر آلي؛ فتغيير المواقع يغير مجموعة البيانات الأساسية.

ماذا يقيس كل علامة

  • الدعم: التذاكر المُنشأة/المغلقة/القادمة، الرد الأول، القرار، قرار أول خلافSLA(ب) الأولويات/الإدارة/انهيار الحالة.
  • الدردشة: :: الجلسات التي بدأت، وقرارات الذكاء الاصطناعي، والتصعيدات، والإهمال، والوقت الذي يستغرقه تناول القضايا، والرسائل في كل جلسة، والذكاء الصنعي/الإنسان/جميع CSAT.
  • AI: متوسط الثقة، ومعدل ثقة منخفض، ودقة الفرز، والتغذية المرتدة، وانحراف المعرفة، واستخدام الرموز/الذاكرة الوسيطة، والبنود التي تحتاج إلى استعراض.
  • الزائر: اتجاهات الحركة والمشاركة للفترة المختارة.
  • الوكالة: :: عبء العمل لكل موظف، والسرعة، ومقاييس الإغلاق والرضا.

(أ) استخدام المحللين من أجل إجراء استعراض شامل لإطار العمل؛ واستخدام الزائرين المتفانين، والتذكرات،CSAT"التاريخ و صفحات أداء الفريق عندما تحتاج إلى تحقيق على مستوى السجلات"

تحليلات

لوحة التحكم

لوحة التحكم هي مركز القيادة اليومي. وهي تظهر حركة المرور، والمبيعات، وعبء الدعم، وأنشطة الذكاء الاصطناعي، ومؤشرات التحويل في نظرة واحدة. افتحها كل صباح لفهم ما حدث خلال الليل وما يحتاج إلى الانتباه اليوم.

لوحة المعلومات
لوحة متابعة الاستعراض العامThe Overview screen led by an OpsIQ Intelligence AI panel (with Daily brief, Smart alerts, Forecast), KPI widget tiles and a seven-day traffic widget, plus a Reset layout control.نظرة عامةمساحة العملOPSIQ الاستخباراتاختار تحليلاً و OpsIQ يكتبهالإحاطة اليوميةالتنبيهات الذكيةتوقعإعادة ترتيبزوار اليوم2,481+12%الإيرادات$8.2ك+5%تذاكر مفتوحة143 SLAآخر حركة 7 أيام1AI-FIRSTOpsIQ هيئة الاستخبارات2WIDGETSنظمت بلاط مؤشر الأداء الرئيسي3لكإعادة ترتيب في أي وقت
The real Overview screen: the OpsIQ فريق الإستخبارات في الأعلى (يتم تحليله ويكتبه) فوق نظام "كي.بي.آي" يرتب لكِ نفسك

شرح بطاقات لوحة المتابعة

الزوار الموجودون

عدد الأشخاص على موقعك حاليا. هذا يحدث كل دقيقة 15 الزائر "نشط" إذا قام بتحميل صفحة داخل العتبة النشطة (الافتراضية: ) 90 ثانية).

الزوار الفريدين

كم عدد الأشخاص الذين زاروا موقعك في الفترة الزمنية المختارة. OpsIQ يحدد الزوار من خلال مزيج من بصمة المتصفح، وcookies، (إذا كان متاحا) الهوية المصدقة.

الجدد مقابل العائدين

الزوار الجدد يرون موقعك للمرة الأولى. والزوار العائدون قد شوهدوا من قبل. ومعدل عودة مرتفع يعني أن محتوى موقعك يجذب الناس إلى الموقع مرة أخرى. وقد يكون معدل عائد منخفض جداً يعني أنك لا تحتفظ بالاهتمام.

معدل الرجوع

النسبة المئوية للزوار الذين غادروا بعد مشاهدة صفحة واحدة فقط. 70% وفي صفحات الهبوط تعني عادة أن الصفحة لا تلبي توقعات الزائرين، أو المحتوى الخاطئ، أو البطء في الحمل، أو ضعف الخبرة المتنقلة.

متوسط الوقت المخصص للصفحة

كم من الوقت يقضيه الزوار في كل صفحة في المتوسط. تشير الأوقات القصيرة جداً (أقل من 10 ثانية) على صفحات المحتوى إلى أن المحتوى غير مثير للاهتمام. قد يدل طول الأوقات على صفحة التحقق من الدفع على وجود خلط.

التهديدات التي تم وقفها

IPتتناول ما يلي: OpsIQ تم تحديدها على أنها محتملة الخبيثة استنادا إلى تصنيف التهديدات، أو محاولات القوة الغاشمة، أو الحظر اليدوي. IPs قائمة.

المبيعات اليوم/هذا الأسبوع/هذا

الإيرادات الآتية من مصادر المبيعات ذات الصلةShopify, WooCommerce, Stripeإذا كانت المبيعات تظهر صفر تحقق من أن موصلك للمنصة متصل ومتزامن

رسم بياني للاتجاهات

رسم بياني خطي يظهر عدد الزوار على مدى فترة زمنية مختارة. ابحث عن أنماط: الذروات في الحركة (الحملات، وذكر الصحافة)، والانخفاضات (عطل نهاية الأسبوع والعطلات)، والاتجاهات المستمرة.

المصادر الرئيسية

من أين يأتي زوارك: مباشرة، Googleاستخدام هذا لفهم أي قنوات التسويق تعمل.

المتصفحات الرئيسية

Chrome, Safari, Firefoxإذا كان للمتصفح معدل ارتداد مرتفع بشكل غير عادي، فقد يكون لديك مشكلة في البرنامج. CSS أو JavaScript مسألة التوافق.

خريطة حرارة الساعة

شبكة تظهر نشاط الزائر حسب ساعة اليوم ويوم الأسبوع. استخدم هذا لتحديد متى يتم جدولة نوبات الدعم، ومتى يتم إرسال الإشعارات، ومتي يتم تشغيل الترويجات.

الزوار الجدد

الزوار القلائل الأخيرين مع البلد، الصفحة، الجهاز والمصدر. مفيد للتحقق السريع من المواقع أثناء الحملات.

استخدام مرشح نطاق التواريخ

اضغطي على ملتقط التاريخ في أعلى اليمين من لوحة الداشات اليوم، البارحة7الأيام الأخيرة30اليوم، الشهر الماضي، النطاق العُميّ، كلّ بطاقات ورسومات مُحدّثة عندما تُغيّر المدى.

أمثلة على الأعمال المنجزة

التحقيق في معدل الرجوع

السيناريو:
معدل الرجوع لديك قفز من 45% إلى 78% هذا الاسبوع ماذا حدث؟
ماذا نفعل:

تحقق:1هل تغيرت صفحة هبوط محددة؟ أذهب إلى الصفحات العليا وصنفت حسب معدل القفز.2هل أرسلت الحملة حركة المرور إلى الصفحة الخاطئة؟ تحقق من المصادر الرئيسية للحراسات الجديدة.3هل انقطع الموقع على متن متحركة؟ تحقق من انهيار المبردات بالنسبة لمعدل القفزات المتنقلة.4تحقق من تفاصيل التهديد و الزائرين عن الأنماط المشبوهة

لا زوار على لوحة التحكم

السيناريو:
تظهر لوحة التحكم. 0 زوار حقيقيين حتى لو كان موقعك يحصل على حركة المرور.
ماذا نفعل:

الشيك: (1هل تم تركيب أداة التتبع؟ انظر إلى شفرة المصدر الخاصة بموقعك الشبكي وابحث عن الرمز OpsIQ النص. (2هل مفتاح الموقع صحيح؟ قارن مفتاح موقع البيانات في النص مع المفتاح في المواقع المتصلة.3) هل CDN أو مخزن خادم صفحة متقادمة بدون النص؟ امسح خزان CDN الخاص بك. (4) هل يوجد محظور للإعلانات أو عنوان CSP يحول دون البرنامج النصي؟ تحقق من وحدة التحكم في المتصفح للطلبات المحجوبة.

قراءة خريطة الحرارة لكل ساعة

السيناريو:
خريطة حرارتك تظهر نشاطاً كبيراً بين العاشرة صباحاً و الثانية مساءً في أيام الأسبوع ولكن لا شيء في عطلة نهاية الأسبوع
ماذا نفعل:

هذا هو نمط حركة المرور بين الأعمال التجارية. زوارك هم المهنيين العاملين الذين يتصفحون خلال ساعات العمل.1) جدول موظفي الدعم لساعات العمل في أيام اﻷسبوع.2إرسال حملات البريد الإلكتروني من الثلاثاء إلى الخميس صباحا.3)الصيانة في عطلة نهاية اﻷسبوع آمنة.4(ب) النظر في عدم توفير الدردشة الحية إلا خلال ساعات الذروة.

طفرة في حركة المرور من مصدر مجهول

السيناريو:
ترون طفرة مفاجئة من 500 زوار في ساعة واحدة من مرجع مجهول.
ماذا نفعل:

اذهب إلى الزائرين والمرشاة عند النافذة الزمنية1هل هم زوار حقيقيون أم أحذية؟ انظر إلى مدة الدورة، الصفحات التي يُنظر إليها، وتنوع المصفوفين.2إذا كان حقيقياً، ما هي الصفحة التي يهبطون عليها؟3تحقق من المراجع URL شخص ما قد يكون مرتبط بك من ريديت، أخبار هاكر، أو مدونة شعبية.4إذا كان زحام المرور، تحقق من التهديدات وتنظر في عرقلة IP المدى

لماذا يختلف عدد زوار الموقع عن Google Analytics؟+

OpsIQ يستخدم بصمات المتصفح وملفات تعريف الارتباط، في حين أن نموذج ملفات تعريف الاتصالات العامة (GA) يستخدم نموذجاً مختلفاً. ويمكن أيضاً أن يسبب ترشيح الروبوتات ومعدلات حظر الإعلانات وترتيب تحميل النصوص اختلافات. 10-20% التباين طبيعي.

هل يمكنني إدراج لوحة التحكم في أداة أخرى؟+

اللوحة مصممة من أجلOpsIQ(أ) لأغراض الإبلاغ الخارجي، استخدام نظام ريستAPIلسحب بيانات المحللين وعرضها في لوحة التحكم الخاصة بك أو أداة BI.

ماذا يعني عداد "التهديدات"؟+

إنها مهمة IP تتناول ما يلي: OpsIQ تم إعلامه أو منعه استناداً إلى تصنيف التهديدات، أو عمليات الدخول الفاشلة المتكررة، أو الحظر اليدوي. انقر على العد لرؤية التفاصيل وإدارة الحظر.

تحليلات

سجل الزوار

يظهر سجل الزوار كل زيارة للمواقع التي تتبعها. كل صف هو تحميل صفحة واحدة من زائر واحد. استخدمه للتحقيق في سلوك الزائر الفردي، وإيجاد حركة الحملة، وتشخيص قضايا التتبع.

سجل الزوار
سجل الزوار:: جدول الزوار مع شريط ترشيح (التاريخ، البحث IP/email/city، المصدر، الجهاز) وأعمدة لـ _IP/mail، والموقع، والمصدر، والجهاز، والوقت، مع صف للتهديدات التي تحمل إشارة.سجل الزوارyoursite.com7 أيامابحث عن IP، بريد إلكتروني، مدينة…المصدر ▾الجهاز ▾IP /البريد الإلكترونيالموقعالمصدرالجهازمتى[email protected]الولايات المتحدة الأمريكية، نيويوركgoogleسطح المكتب41.62.10.4المملكة المتحدة، لندنdirectمحمول6 دقائق[email protected]برلينبيانات العنوان النهائي:محمول14 دقيقة203.0.113.9ﻻغوسreferralسطح المكتبthreat1–25 أو 3,402الدورة→1FILTERالتاريخ · البحث · المصدر · الجهاز2REAL COLUMNSIP/email · موقع · جهاز · تهديد3DRILL INافتتاح الدورة بكامل هيئتها
الرافعة الحقيقية للزائرين: مرشح بحلول التاريخ، البحث والجهاز، ثم قراءة كل زيارة IP/ بريد، موقع، مصدر، جهاز وزمان، تهديدات مُعلّمة بالأحمر.

ما يظهره كل صف

العنوان IP

الزائر IP العنوان.IP انقر لرؤية جميع الزيارات من هذا الموقع IP.

البلد والمدينة

تم كشفها منIPعنوان استخدام البيانات الجغرافية - المتطلباتMaxMind GeoLite2قاعدة البيانات أوCloudflareالرعاة الأرضيون يظهرون "غير معروفين" إذا لم يتم تشكيل "جيو بي"

الصفحة URL

الصفحة التي قام الزائر بتحميلها. انقر لرؤية الصورة الكاملة URLطويل URLs في عرض الجدول.

المحيل

من أين جاء الزائر قبل الهبوط على موقعك. "مباشرة" تعني لا مرجع (علامات التبويب، مطبوعة URLs، بعض روابط التطبيقات).

الجهاز والمتصفح

نوع جهاز الزائر (مكتبي، محمول، لوحي) والمتصفحChrome, Safari, Firefoxتحليل من العنوان User-Agent.

التاريخ والوقت

عندما تم تحميل الصفحة، في منطقتك الزمنية المحددة.

هوية الزبون

وإذا تم تحديد هوية الزائر (عن طريق رمز الهوية أو الدخول)، يظهر اسمه أو عنوان البريد الإلكتروني، وإلا يظهر على أنه مجهول.

المرشحات

نطاق التواريخ

تصفية الزيارات لفترة زمنية محددة. الافتراض: الأيام الأخيرة 7.

البحث

البحثIPالعنوان، الصفحةURL،مراجع، بلد أو بريد إلكتروني للعملاء

المصدر

المصفاة حسب مصدر حركة المرور: المباشر، العضوي، الاجتماعي، الإحالة، المدفوعة، البريد الإلكتروني.

الجهاز

تصنيف حسب سطح المكتب، الهاتف المحمول أو اللوحة.

جديدة فقط

لا تظهر إلا الزوار الذين يزورون الموقع لأول مرة والذين لم يروا الموقع من قبل.

أمثلة على الأعمال المنجزة

العثور على زوار من حملة محددة

السيناريو:
لقد أطلقت حملة جوجل ادسنس مع بارامترات UTM utm_source=google&utm_medium=cpc&utn_campaign=summer-sale. كيف تجد هؤلاء الزوار؟
ماذا نفعل:

في سجل الزوار، استخدم حقل البحث وكتب "بيع الصيف".URLs الصفحة URLs, لذلك بارامترات UTM سوف تتطابق. يمكنك أيضا الترشيح بواسطة المصدر = مدفوعة لتضييق أكثر.

العثور على عميل أبلغ عن مشكلة

السيناريو:
لقد أرسل زبون إليك رسالة بالبريد الإلكتروني قائلاً " صفحتك للدفع قد تحطمت بالأمس حوالي الساعة الثالثة مساءً" كيف تجدها؟
ماذا نفعل:

ابحث عنهم بعنوان البريد الإلكتروني في سجل الزوار. إذا كانوا قد دخلوا، ستظهر هويتهم. حدّد نطاق التاريخ إلى أمس. انظر للزيارات إلى صفحات الشراء حوالي الساعة الثالثة مساءً. انقر على جلستهم لرؤية تدفق الصفحة بأكملها وأي بيانات أخرى JavaScript أخطاء.

كشف صاروخ حلقي أو مسمار

السيناريو:
هل لاحظتIPالعنوان500بعد زيارة في ساعة واحدة، كل ذلك إلى نفس الصفحة.
ماذا نفعل:

هذا على الأرجح روبوت، أو scraper، أو مخطوطة معطلة. اذهب إلى سجل الزائرين والبحث عن ذلك.IP الشيك: (1) هل كل الزيارات إلى نفس الصفحة؟ (2) هل وكيل المستخدم روبوت معروف؟ (3هل مدة الجلسة دائما 0 إذا تأكدت من أنك روبوت، اذهب إلى الأمن ومنع.IP.

سجل الزوار مقابل الجلسات مقابل التغذية الحية

سجل الزوار

تحميل الصفحات الخام. صف واحد لكل عرض صفحة. أفضل لل: البحث في صفحات محددة، العثور على حركة المرور من مصادر معينة، تشخيص مسائل التتبع.

الجلسات

يجمع مشاهدات الصفحة في رحلات. صف واحد لكل جلسة زيارة. أفضل ل: فهم تدفق المستخدمين، قياس مدة الجلسة، تحديد مسارات التحويل.

تغذية حية

يظهر الزوار حاليا على موقعك. أفضل ل: رصد الحملات الجارية، واكتشاف زوار ذوي نوايا عالية، ومراقبة فرص الدعم.

لماذا أرى زياراتي الخاصة في السجل؟+

OpsIQ لتعطيل حركة المرور الخاصة بك، أضف صفحتك إلى محرك البحث.IPكلمة إلى المستبعدين IPs قائمة في الإعدادات > التتبع.

لماذا يظهر الزائر "غير معروف" البلد؟+

يحتاج البحث GeoIP إما Cloudflare geo headers (أوتوماتيكي إذا استخدمت _Cloudflare) أو ملف قاعدة بيانات MaxMind GeoLite2. تحقق من الإعدادات > مسار GeoIP للتأكد من وجود ملف القاعدة وإمكانية قراءته.

إلى متى تحفظ بيانات الزوار؟+

يتم الاحتفاظ ببيانات الزوار لفترة الاحتفاظ المحددة في الإعدادات (الافتراض: 90 أيام). وبعد ذلك، يتم تنظيف السجلات القديمة تلقائياً بواسطة مهمة cron retention.

تحليلات

الجلسات

تجمع الجلسات مشاهدات الصفحات المتعددة من نفس الشخص في رحلة واحدة. بينما يظهر سجل الزوار تحميل صفحات فردية، تبين لك الجلسات كيف يتحرك الناس عبر موقعك من الهبوط إلى الخروج.

الجلسات
الجلساتجدول سجل الجلسة مع. IP وعمود البلد والجهاز والمصدر والمدة والصفحات، وسطر للتهديد المشار إليه.الجلساتyoursite.comالبلد (NG)سجل الجلسةIP(خ)البلدالجهازالمصدرالمدةالصفحات41.62.10.4المملكة المتحدةسطح المكتبgoogle3 أمتار 12s6102.89.6.2غير محددمحمولdirect1م 05s388.21.4.9دال -سطح المكتببيانات العنوان النهائي:7 أمتار 48s11203.0.113.9الولايات المتحدةمحمولreferralصفر متر 42s21SESSION LOGالسفر الجماعي2COLUMNSالبلد · الجهاز · المصدر · المدة3THREATإشارة إلى الدورات الخطرة
الجلسة الحقيقية: كل رحلة زائرة على التوالي (الجولة الأولى)IP البلد والجهاز والمصدر والمدة والصفحات) مع عقد دورات محفوفة بالمخاطر باللون الأحمر.

كيف تسير الدورات

تبدأ الجلسة عندما يقوم الزائر بتحميل صفحته الأولى، وتستمر كلما واصل التصفح إلى المزيد من الصفحات. وتنتهي الجلسة حين يكون الزائر غير نشط لفترة انتهاء الوقت المحدد للجلسة (الافتراض: 30 ويقوم نفس الشخص الذي يعود بعد انقضاء الوقت المحدد بإنشاء جلسة جديدة.

ما تظهره كل دورة

الصفحة الأولى

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

الصفحة الأخيرة

صفحة الخروج، حيث غادر الزائر إذا كانت الصفحة المُخرجة في أغلب الأحيان هي صفحة التسعير، قد يقارنك الزوار بالمنافسين

عدد الصفحات

عدد الصفحات التي شاهدها الزائر في هذه الجلسة - يشير كثرة عدد الصفحة عادة إلى زيادة المشاركة، ولكن قد يعني ذلك أيضاً أن الزائر ضائع.

المدة

الزمن الإجمالي من تحميل الصفحة الأولى إلى آخر نشاط. الجلسات التي تدوم 0 ثانية هي جلسات رجوع (صفحة واحدة، لا يوجد تفاعل إضافي).

المصدر

مصدر حركة المرور لهذه الجلسة (مباشر، ) Google)الخدمات اﻻجتماعية واﻹحالة، الخ(.

البلد

البلد المكتشف من عنوان الزائر IP.

قفزة

ما إذا كان الزائر قد غادر بعد مشاهدة صفحة واحدة فقط.

التحويل

ما إذا كان الزائر قد أتم حدث تحويل متتبع (شراء، التسجيل، تقديم استمارة) خلال هذه الجلسة.

المرشحات

البحث

البحثIPالبريد الإلكتروني، الصفحةURLأو مُحيل في الدورات

النوع

يرشح الزوار الجدد (الجلسة الأولى على الإطلاق) أو الزوار العائدين.

المصدر

ترشيح حسب مصدر حركة المرور.

البلد

يرجى الترشيح حسب البلد لرؤية الدورات من منطقة محددة.

التهديدات/الرد

مرشح لعرض الجلسات المُترددة فقط أو الجلسات المُعلَنة كتهديدات.

أمثلة على الأعمال المنجزة

تحديد سمات عميل ذي قيمة عالية

السيناريو:
لقد قام زبون للتو بشراء شيء كبير، وتريد أن تفهم رحلته قبل الشراء.
ماذا نفعل:

ابحث عن بريدهم الالكتروني في جلسات. انظر إلى جميع جلساتهم: (1) كم مرة زاروا قبل الشراء؟(2) ما هي الصفحات التي تصفحوها؟(3هل استخدموا الدردشة أو فتحت تذكرة؟4ما هو الوقت الإجمالي من الزيارة الأولى إلى الشراء؟ هذا يخبرك رحلة الشراء النموذجية للعملاء ذوي القيمة العالية.

كشف الدخول من موقع جديد

السيناريو:
العميل عادة ما يدخل من نيجيريا ولكنك ترى جلسة من روسيا
ماذا نفعل:

البحث عن البريد الإلكتروني للزبون في الجلسات. مقارنة البلد من الجلسات الأخيرة. إذا ظهرت جلسة فجأة من بلد غير معتاد، يمكن أن يكون سفر مشروع أو حساب معرض للخطر. تحقق: (1هل كانت هناك محاولة فاشلة للدخول قبل المحاولة الناجحة؟2)أ( هل IP هل يحدث تغيير في نفس الجلسة؟ ضع إشارة للمراجعة إذا كان مشبوهاً.

ما هو الفرق بين دورة وزائرة؟+

الزائر هو شخص (أو متصفح) وجلسة هي زيارة واحدة من ذلك الشخص ويمكن أن يكون للزائر نفسه العديد من الجلسات على مر الزمن وتنقضي فترة الدورات بعد انقضاء الفترة الزمنية.

كيف تحدد OpsIQ الزوار العائدين؟+

OpsIQ يستخدم مزيج من ملفات تعريف الارتباط، وبصمات المتصفح، وعلامات الهوية المصدقة. إذا قام زائر بإزالة ملفاته التعريفية ولم يدخل إلى حسابه، فسيظهر كزائر جديد.

تحليلات

تغذية حية

The Live Feed shows visitors currently on your website in real time. It updates automatically every 15 seconds (configurable). Use it during campaigns, product launches, and busy support periods to see what is happening right now.

تغذية حية
تغذية حية:: تدفق الأنشطة في الوقت الحقيقي يبين عدد الزوار المباشرين على الإنترنت ومعلومات عن أحدث إجراءات الزوار حسب البلد.تغذية حيةyoursite.com37زوار على الإنترنت الآنالنشاط الحيالإنسان في الحلقة من أجل المالمشاهدة الولايات المتحدة /pricing2sبدأت في الدردشة5sأضيف إلى السلة9s:: اكتمل التسجيل1RIGHT NOWانظر من في الموقع2AUTO-REFRESHUpdates every 15s3فعلقفز إلى الدردشة الحية
انظر من في موقعك هذه الثانية وما يفعلونه، يُنعش تلقائياً كلّ شيء 15 ثواني

كيف يعمل

يقوم التغذية الحية باستطلاع خادمك في فترة التجديد المحددة. كل صف يظهر زائر حالياً على موقعك: صفحته الحالية، بلده، جهازه، مصدره، مدة جلسته، وعدد الصفحات. تشير الإضاءة الخضراء إلى نشاط جديد منذ آخر تجديد. انقر على أي صف للزوار لرؤية تفاصيل جلستهم كاملة.

الإعدادات

فاصل زمني لتجديد البيانات

كم مرة يتم تحديث التغذية الحية. افتراضي: 15 القيم الأدنى (الثانية)5-10s) تعطي تحديثات أسرع ولكنها تستخدم المزيد من موارد الخواديم.30-60s() أسهل على حاسوب خدمة الشبكة ولكنها أقل آنية.

العتبة النشطة

How long a visitor is considered "active" after their last page load. Default: 90 seconds. If a visitor loads a page and then reads it for 2 minutes without clicking, they disappear from the live feed after the threshold.

زر التوقف

انقر على إيقاف لوقف التحديث التلقائي. مفيد عندما تريد قراءة التفاصيل دون تحديث القائمة. انقر استئناف لإعادة البدء.

أمثلة على الأعمال المنجزة

اكتشاف فرصة جيدة خلال الحملة

السيناريو:
إنك تدير إطلاق منتج جديد. وقد شاهد زائر موقعك للتو صفحتك الرئيسية، ثم المميزات، ثم التسعير، والآن هو على صفحة الدفع.
ماذا نفعل:

هذا سلوك متعمد جداً1() أنقر الزائر ليرى دورته.2إذا بدؤوا في الدردشة، سيكون لـ (آي آي) سياق رحلتهم الكاملة.3إذا غادروا بدون شراء، يصبحون قائداً في صفحة القيادة.4() النظر في وضع قاعدة استباقية لإظهار رسالة الدردشة عند وصول الزوار إلى الخروج.

زوار كثيرون من نفس البلد IP

السيناريو:
أترى 20 الزوار من نفس البلد IP عناوين، كلها على صفحات مختلفة.
ماذا نفعل:

يمكن أن يكون هذا:1(ج) مكتب مشترك على الإنترنت، تحقق إذا كانت الزيارات تبدو كبشر حقيقيين (الصفحات المتباينة ومدة معقولة من الدورات).2مكافأة أو خردة تحققي إذا كانت الجلسات قصيرة جداً ()0-1(ثواني) أو تضرب صفحات بانتظام.3اختبار تحميل إذا كنت تجري الاختبارات الآلية، استبعاد IP من التعقب

لماذا يظهر التغذية الحية 0 الزوار عندما يكون موقعي لديه حركة المرور؟+

الشيك: (1هل تم تركيب النص المساعد على موقعك؟2هل مفتاح الموقع صحيح؟3) هل تجاوزت العتبة النشطة؟4(ب) هل يستخدم الزوار برامج مضادة للإعلانات تمنع كتابة البرنامج الخاص بالتتبع؟

هل يمكنني ترشيح التغذية الحية حسب البلد أو الجهاز؟+

يظهر التغذية الحية جميع الزوار النشطين. للرؤى المرشحة، استخدم صفحات سجل الزائر أو جلسات مع خيارات الترشيح الخاصة بها. التغذيـة الحيـة مبسطة عن عمد لرصد الوقت الحقيقي.

تحليلات

الصفحات الرئيسية

تظهر الصفحات العليا أي صفحات على موقعك الإلكتروني تحصل على أكبر قدر من حركة المرور. وهي تصنف الصفحات حسب الزيارات، والمشاركة، والتحويلات، وأنشطة الدعم. استخدمها لتحديد أفضل محتوى لك، وإيجاد صفحات ذات أداء متدنٍ، واكتشاف الصفحات التي تولِّد أسئلة الدعم

الصفحات الرئيسية
الصفحات الرئيسيةقائمة مرتبة بأكثر الصفحات زيارة مع أشرطة الزيارات الأفقية وأرقام.الصفحات الرئيسيةyoursite.comالصفحات الأكثر زيارة/pricing3,402/2,910/docs1,740/blog/seo-guide980/signup6401RANKEDالصفحات الأكثر زيارة2SIGNALSالزيارات والتحويلات3FINDالصفحات التي تدفع التذاكر
صفحاتك مرتبة حسب حركة المرور والمشاركة، بحيث يمكنك تحديد المحتوى الأعلى والصفحات التي تولِّد الدعم.

ما تظهره كل صفحة

الصفحة URL

المسار URL الكامل. تُجمَّع الصفحات المتشابهة (مثلاً، متغيرات المنتجات) إذا كان التجميع متاحاً.

الآراء

العدد الإجمالي للمرات التي تم فيها تحميل هذه الصفحة في الفترة الزمنية المختارة.

الزوار الفريدين

عدد الأشخاص الذين شاهدوا هذه الصفحة (يعد الشخص الذي ينظر إلى نفس الصفحة مرتين 1 فريدا).

معدل الرجوع

النسبة المئوية للزوار الذين تركوا موقعك بعد مشاهدة هذه الصفحة فقط. ارتفاع معدل الرجوع على صفحات الوصول = مشكلة. ارتفاع المعدل على صفحة "شكراً" = طبيعي.

متوسط الوقت

كم من الوقت يقضي الزائرون في هذه الصفحة في المتوسط؟ قصير جداً = لا يقرأ. طويل جداً على صفحة استمارة = إرباك.

يبدأ الدردشة

كم من المحادثات بدأت من هذه الصفحة. ارتفاع عدد محادثات البدء على صفحة المنتج يعني أن وصف المنتج قد يكون غير واضح.

تذاكر الدعم

عدد تذاكر الدعم التي أنشأها الزوار الذين كانوا على هذه الصفحة.عدد التذاكر المرتفع = مشكلة محتملة في تجربة المستخدم أو المحتوى.

أمثلة على الأعمال المنجزة

العثور على صفحات تقود أسئلة الدعم

السيناريو:
فريق الدعم لديكم يحصل على أسئلة حول الشحن أي صفحة تفشل؟
ماذا نفعل:

رتب الصفحات العليا بـ "تذاكر الدعم" أو "بدء المحادثة" تنازلاً. ابحث عن صفحات المنتج أو الشحن ذات الأعداد المرتفعة. من المحتمل أن تكون المعلومات غير واضحة في الصفحة التي تحتوي على أسئلة الدعم الأكثر. إصلاح محتوى الصفحة ورصد ما إذا كانت أسئله الدعم تتناقص.

العثور على صفحات ذات معدل إغلاق مرتفع

السيناريو:
تريد أن تعرف أين يترك الناس موقعك في معظم الأحيان.
ماذا نفعل:

رتب حسب معدل الرجوع تنازليا. تجاهل الصفحات التي هي نقاط الخروج الطبيعية (صفحات شكر، صفحات التأكيد). التركيز على الصفحات يجب أن تحافظ الزوار منخرطين: صفحات المنتج، التسعير، المميزات. هذه بحاجة إلى أفضل دعوة للعمل أو المحتوى أوضح.

لماذا تظهر صفحة 0 مشاهدات حتى لو كنت أعرف أنها تحصل على حركة المرور؟+

الشيك: (1) هل أداة التتبع مركبة على تلك الصفحة المحددة؟ التطبيقات من صفحة واحدة قد لا تطلق مشاهدات الصفحة على تغييرات الطريق. (2هل الصفحة مستبعدة في إعدادات التتبع؟3هل تقوم شبكة توزيع المحتوى بخدمة نسخة مخزنة في الخادم دون النص المتعلق بالتعقب؟

تحليلات

الاستخبارات الجغرافية

تظهر الاستخبارات الجغرافية من أين يأتي زوارك حسب البلد والمدينة والأجهزة والمصدر. استخدمها لفهم أسواقك الجغرافيّة، واتخاذ قرار بشأن دعم اللغة، وتخطيط التسويق الإقليمي، وكشف أنماط حركة المرور المشبوهة.

الجغرافيا
الاستخبارات الجغرافيةخريطة لمواقع الزوار إلى جانب ترتيب للشرائح حسب البلد.الاستخبارات الجغرافيةyoursite.comالزوار حسب الموقعالولايات المتحدةالمملكة المتحدةدال -ألف - الإدارةغير محدد1MARKETSالبلد، المدينة، الجهاز2PLANاللغات والمناطق3WATCHحركة المرور الفردية
حيث يأتي زوارك من (بكل بلد ومدينة وجهاز) إلى أسواق الحجم ويكتشفون حركة المرور غير العادية

ما ترى

الرسم البياني للبلدان الرئيسية

البلدان الأولى حسب عدد الزوار. انقر على بلد للتعمق في البيانات على مستوى المدينة.

دونات البلد

تحليل بصري لحركة المرور حسب البلدان.

الجدول القطري الكامل

كل بلد لديه زوار في الفترة المختارة، ويبين عدد الزوار، وعدد الجلسات، ومعدل الرجوع، ونسبة التحويل.

تحليل تفصيلي للمدينة

انقر على بلد لمعرفة المدن التي يوجد بها أكبر عدد من الزوار داخل ذلك البلد.

كيف يعمل كشف GeoIP

OpsIQيكتشف موقع الزوار بطريقتين:1) Cloudflareلو كان موقعك خلفناCloudflare- الكشف عن البلدان آلي ودقيق.2) MaxMind GeoLite2قاعدة البيانات، تحميل قاعدة البيانات المجانية وتهيئ الطريق في ستينغز، يتطلب الكشف على مستوى المدينةGeoLite2-قاعدة بيانات المدينة، ليس فقط قاعدة البيانات القطرية

حركة المرور عبر الشبكة الخاصة والبروتوكول الوكيل

الزائرون الذين يستخدمون شبكات الفيديو سيظهر أنهم قادمون من موقع خادم الشبكة ليس موقعهم الحقيقي OpsIQ لا يمكن ولا ينبغي أن تحاول تجاوز شبكات البرامج المواضيعية، إذا رأيت أنماطاً قطرية غير عادية، اعتبر ذلك 10-20% قد يكون الزوار يستخدمون شبكات البرامج المواضيعية.

أمثلة على الأعمال المنجزة

حركة المرور القطرية غير المتوقعة

السيناريو:
أنت تدير عملاً تجارياً في الولايات المتحدة فقط ولكن 30% من الحركة هي من الهند.
ماذا نفعل:

الشيك: (1هل هؤلاء الزوار حقيقيون؟ انظر إلى مدة الجلسة والصفحات المشاهدة. جلسات قصيرة جداً مع الرجوع العالية = الروبوتات المحتملة. (2هل يجدونك من خلال Google? تحقق من الإحالة. (3هل يمكن أن يكونوا عملاء محتملين في سوق جديدة؟ إذا كان المرور حقيقيا ومشاركا، ففكر في إضافة تسعير أو محتوى خاص بالهند.

البت في الدعم اللغوي

السيناريو:
تريد أن تعرف إذا كان عليك ترجمة موقعك إلى الإسبانية.
ماذا نفعل:

انظر إلى صفحة الاستخبارات الجغرافية. إذا كانت البلدان الناطقة بالإسبانية (إسبانيا، المكسيك، كولومبيا، الأرجنتين، إلخ) تمثل معاً أكثر من 10% من حركة المرور الخاصة بك بمعدلات الرجوع المنخفضة، فإن الترجمة تستحق النظر فيها.

تخطيط نوبات الدعم الإقليمي

السيناريو:
يجب عليك أن تقرر ساعات فريق الدعم لمناطق زمنية مختلفة.
ماذا نفعل:

استخدام خريطة الحرارة لكل ساعة (على لوحة التحكم) مقترنة بالمعلومات الجغرافية. 40% من أوروبا و. 35% من الولايات المتحدة، أنت بحاجة إلى تغطية لكلا المنطقتين الزمنيتين. خريطة الحرارة يظهر بالضبط عندما تكون كل منطقة أكثر نشاطاً.

البلدان التي تمت زيارتها ولكن لم تصدر بشأنها أوامر

السيناريو:
العروض التلفزيونية الألمانية 500 زوار هذا الشهر ولكن صفر من المبيعات
ماذا نفعل:

التحقيق:1ربما تسعيرك ليس تنافسياً على تلك السوق2هل تشحن إلى (ألمانيا)؟ تحقق إن كانت صفحة الشحن الخاصة بك تذكر ألمانيا3هل فحوصاتك متاحة في (يو أور)؟4هل هؤلاء الزائرون من مصدر واحد قد يكون زحام المرور منخفض المقصد؟

لماذا يظهر الزائر "غير معروف" البلد؟+

GeoIP غير مخصص. إما أن تقوم بإنشاء Cloudflare (الذي يضيـف العناوين الجغرافية تلقائياً) أو تنزيل قاعدة البيانات MaxMind GeoLite2 وتحديد المسار للملف في الإعدادات > GeoIP Path.

هل يمكنني حجب حركة المرور من بلدان محددة؟+

OpsIQ لا يمنع حسب البلد. Cloudflare قواعد جدار الحماية للحظر القائم على البلد.OpsIQ يركز على الرؤية، وليس مراقبة الوصول إلى مستوى الشبكة.

تحليلات

قمع النية

إن قناة النية تصنف جلسات الزوار وفقاً لما يحاولون فعله على ما يبدو: التصفح، أو البحث، أو المقارنة، أو الشراء، أو طلب الدعم، أو المغادرة. واستعملها لفهم توازن النوايا في موقعك وتحديد أين ينحدر الزوار.

قمع النية
قمع النيةقناة من التصفح إلى البحث للمقارنة إلى الشراء مع العد، بالإضافة إلى الدعم وترك الرموز.قمع النيةyoursite.comالحشد؛ 8,200البحوث؛ 4,100مقارنة بـ 1,650اشتر 520الدعم 6%المغادرة 11%1CLASSIFYماذا يريده الزوار2STAGESتصفح للشراء3تثبيتعثروا على المكان
جلسات سرية عن طريق النية (الحشد، البحث، المقارنة، الشراء) حتى تتمكن من معرفة بالضبط أين يسقط الناس.

فئات النية

التصفح

زوار ينظرون حولهم بصورة عشوائية جلسات قصيرة، صفحات قليلة، لا هدف محدد تم اكتشافه

البحث

الزوار الذين يقرأون صفحات المنتجات/المميزات، أو المستندات، ومضمون المدونات.

المقارنة

الزوار الذين ينظرون إلى التسعير، أو مقارنة الخطط، أو جداول المميزات.

الشراء

زوار على أوراق الدخول أو العربة أو صفحات التسجيل، غاية في النية هذه فرص تحويلك

التماس الدعم

الزوار على صفحات المساعدة، أو صفحات الاتصال، أو بدء المحادثة.

الارتفاع

الزوار الذين غادروا بعد صفحة واحدة، انخفاض المشاركة.

كيف تقرأ القنوات

تفسير قناة البيع

السيناريو:
1,000 التسعير. 270 فتحت محادثة. 92 لقد بدأت بالدفع. 64 مدفوعة. 18 فتحت تذاكر الدعم.
ماذا نفعل:

صفحة الخصخصة قوية بما فيه الكفاية لخلق النوايا الشائكة مهمة في طريق الشراء 27% وقد تشير تذاكر الدعم بعد المغادرة إلى التفعيل أو الارتباك في الدفع إلى ما يلي:1() ضمان أن تُجيب الدردشة على أسئلة التسعير بشكل جيد.2التحقيق في المسألة 18 - تذاكر الدعم في مرحلة ما بعد التدقيق فيما يتعلق بالمسائل المشتركة.

المرشحات الزمنية

استخدموا مرشحة التأريخ لمقارنة أنماط النية عبر الفترات، على سبيل المثال، مقارنة أسبوع الجمعة الأسود إلى أسبوع عادي، يجب أن ترى قفزة في "مقصود"

كيف تصنف OpsIQ النية؟+

OpsIQ تنظر إلى الصفحة. URLs صفحات التسعير تشير إلى نية المقارنة. صفحات التحقق تشير نية الشراء. الصفحات المساعدة/الاتصال تدل على نية تقديم الدعم. التصنيف يستند إلى الاستدلال، لا يحركه الذكاء الاصطناعي.

هل يمكنني تعديل فئات النية؟+

لا في الوقت الراهن، فالفئات مدمجة استنادا إلى أنماط السلوك الشبكي الشائعة. والتصنيف المخصص للقصد مدرج على خريطة الطريق.

تحليلات

Funnels, retention and paths

إنشاء رحلات مخصصة من صفحات أو خطوات الأحداث، وقياس الاحتفاظ بالفصيلة، واكتشاف المسارات التي يتبعها الزوار في أغلب الأحيان عبر موقع.

فرز المنتجات
قناةويعرض قناة مخصصة كل صفحة/حدث خطوة، والزوار المتبقين ونسبة التحويل.قناةمساحة العملSTEPS4CONVERSION28.4%WINDOW72hعرض الحيز العمليالتسعير الذي تم استعراضه1,420 الزوار100%الخطة المختارة780 الزوار54.9%بدأت عملية الدفع530 الزوار37.3%الطلبية المنجزة403 الزوار28.4%1DEFINEاختار الخطوات من 2إلى _82الإجراءنافذة التحويل3تحسينوجد أكبر انخفاض
ويعرض قناة مخصصة كل صفحة/حدث خطوة، والزوار المتبقين ونسبة التحويل.

قناة

إنشاء حفرة مسماة مع 2إلى8 صفحة أو خطوات الحدث. حدد نافذة التحويل في الساعات؛ الزائر يحسب فقط عندما تقع الخطوات المرتبة داخل تلك النافذه. استخدم الانزلاق بين الخطوات لاختيار أين تفحص إعادة التشغيل، الأخطاء، سرعة الصفحة أو الرسائل.

الاحتفاظ

يجمع الاحتفاظ الزوار في مجموعات أسبوعية ويبين عدد من يعودون. 6, 8 أو 12 أفق أسبوعي - إبقاء تعريف الفصيلة مستقراً عند مقارنة الإصدارات أو الحملات.

المسارات

المسارات تتضمن قائمة بتسلسلات الصفحة الأكثر شيوعا. اختار طول المسار من 2 إلى 5 يستخدم هذا البرنامج لإيجاد طرق غير متوقعة، ومخرجات مشتركة ومحتويات تسبق التحويل بشكل متكرر.

القنوات الشخصية هي تعاريف تحليلية، لا الأتمتة. للرد على خطوة كاملة، وإنشاء هدف التحويل، أو جزء، أو المحرك أو تدفق العمل.

تحليلات

إعادة تشغيل الجلسة

يسمح لك برنامج "إعادة بث الجلسة" بمشاهدة خط زمني لما قام به الزائر على موقعك: أي العناصر التي نقرت عليها، وكيف تحركت، وأين وضعت لوحة المفاتيح، وماذا كتبت (مع إخفاء الحقول الحساسة). استخدمه لتشخيص مشاكل تجربة المستخدم، والتحقق من تقارير الأخطاء، وفهم ارتباك العملاء.

إعادة تشغيل الجلسة
إعادة تشغيل الجلسةمشغل إعادة العرض يظهر منفذ عرض صفحة مع مؤشر، لوحة معلومات الجلسة، ومسح خط زمني.إعادة تشغيل الجلسةyoursite.comاشتري الآنالدورةالمدة 3 دقائق 12s14 نقراتحاسوب مكتبيChrome 1241WATCHالنقرات، التنقل، الطباعة2MASKEDالحقول الحساسة مخفية3DIAGNOSEالتحقق من تقارير العيوب
إعادة تحديد ما فعله الزائر: النقر، التنظيف، الطباعة (الميادين الحساسة مخفية)، على جدول زمني.

إيجاد الدورة المناسبة

من صفحة الجلسات، ابحث عن جلسات مع المشاكل المبلغ عنها، أو أعداد الصفحات العالية دون تحويل، أو جلسات من العملاء الذين قدموا تذاكر دعم. انقر على أيقونة إعادة التشغيل لفتح عرض الخط الزمني.

ماذا يظهر إعادة العرض

الجدول الزمني

شريط أفقي يظهر الأحداث على مدى الزمن. انقر في أي مكان على الخط الزمني للقفز إلى تلك اللحظة.

التنقل في الصفحة

كل صفحة تحميل تظهر كقطاع على الخط الزمني. يمكنك أن ترى المسار الدقيق الذي اتخذه الزائر.

النقرات

وتظهر أحداث النقر بوصفها نقاطا على الخط الزمني وبوصفها علامات بارزة في عملية إعادة بناء الصفحة.

التنقل

يتم تتبع عمق التصفح بحيث يمكنك رؤية إلى أي مدى يقرأ الزائر.

التفاعل في الشكل

ويتم تسجيل أحداث التركيز على الحقل والطباعة، ويجري إخفاء إدخال النص في كلمات المرور والحقول الحساسة بصورة افتراضية.

الخصوصية والتستر

Session replay masks sensitive form fields by default. Password fields, credit card inputs, and fields marked with data-opsiq-mask are never recorded. You can configure additional masking rules in Settings > Tracking. If your compliance policy requires it, you can disable replay entirely.

تشخيص مشكلة في عملية الدفع

السيناريو:
يقول أحد الزبائن "لقد حاولت الشراء ولكن الزر لم يفعل شيئا".
ماذا نفعل:

ابحث عن جلستهم في صفحة الجلسات (ابحث بالبريد الإلكتروني). افتح إعادة التشغيل. شاهد الجزء الخاص بصفحة الشراء. انظر إلى:1هل انقروا على الزر الصحيح؟2)أ( هل JavaScript هل يحدث خطأ؟ (تحقق من صفحة أخطاء JS لذلك الوقت.)3هل أعيد تحميل الصفحة أو ظهرت رسالة خطأ؟4هل كان أحد الحقول المطلوبة فارغا؟ يبين إعادة التسجيل ما حدث بالضبط.

كم من التخزين يستهلك إعادة بث الجلسة؟+

تستخدم إعدادات الاحتفاظ لتنظيف بيانات إعادة التشغيل القديمة بصورة آلية. بالنسبة للمواقع ذات حركة المرور العالية، انظر إلى فترة احتفاظ أقصر لإعادة العرض (على سبيل المثال، 30 يوما).30(أيام) لإدارة التخزين.

هل يمكن للزوار أن يختاروا عدم إعادة العرض؟+

إذا تم تفعيل "احترام عدم التتبع" في الإعدادات، فإن الزوار الذين لديهم عناوين DNT لن يتم تسجيلهم. يمكنك أيضاً استبعاد صفحات محددة من العرض المتكرر في إعدادات التتبع.

تحليلات

سجل الأحداث

يظهر سجل الأحداث كل حدث سجله OpsIQ: مشاهدات الصفحة، والنقر، وبدء المحادثة، وإنشائ التذاكر، والمبيعات، والأحداث الشخصية. استخدمه لتصحيح أوجه الخلل في الإدماج، والتحقق من تسليم الويب هووك، وفهم تسلسل الأعمال.

سجل الأحداث
سجل الأحداث:: سجل للأحداث حسب التسلسل الزمني مع علامات ترميز بالألوان: زيارة الصفحات، والدردشة، والمبيعات، ووصلة شبكية، والتعديلات.سجل الأحداثyoursite.compageviewالولايات المتحدة الأمريكية /pricing12:04:01chat.startالمملكة المتحدة12:04:09بيع$49.00 رقم الطلب 104212:05:22ويب هوكpayment.succeeded12:05:23customdemo_booked12:06:101EVERYTHINGكل حدث مسجل2DEBUGالتحقق من تسليم الوصلة الشبكية3ORDERانظر التسلسل الدقيق
جدول زمني لكل شيء OpsIQ السجلات (الصفوفات، الدردشة، المبيعات، الويب، المناسبات الجمركية) للكشف عن المخالفات ومراجعة الحسابات.

الأحداث المدمجة (التلقائية)

⚠️
هذه events-log الأسماء - ما هيOpsIQسجلات عن الجدول الزمني للزائرين للمحللين، والتشويه والمراجعة، وهي عبارة عن مفردات مختلفة من المفرزة "الشبكة" إذا كنت تبني جهاز استقبال على الشبكة، استخدم القائمة في قسم (ويب هوكس) أو اتصل webhooks.events.list; - لا يمكن أن يُسلّم أي شيء.

كل صف يظهر اسمك أرسل والاسم الكانونيOpsIQ المتاجر كما هو الحال، كلاهما مسجلان: الاسم الخام الذي أرسلته، والاسم الكانوني الذي رسمته لذلك التقرير المدون ضد التاكسي الكانتوني يستمر بالعمل أيا كان اسم مستعار يستخدم.

pageview page.viewed

عدد صفحات متعقبة تشملURLعنوان، مرجع وزمن page_view و view مقبول كنفس الشيء

chat_open support.chat_opened

الزائر يفتح نسيج الدردشة

chat_send support.chat_message_sent

زائر يرسل رسالة دردشة الجانب المجيب مخزن كما support.chat_message_received.

ticket_open support.ticket_created

تمّ إنشاء تذكرة دعم. ticket_create يُقبل بنفس الشيء؛ وتخزن الردود والإغلاقات كما هو support.ticket_replied و support.ticket_closed.

form_submit form.submitted

وتقدم استمارة متتبعة. submit مقبول كنفس الشيء

purchase commerce.purchase_completed

عملية شراء كاملة purchase_successو مُستحضرات البيع order.completed, sale.completed, payment.completed و invoice.paidجميعهم مقبولون من منصة متصلة

الدفع commerce.checkout_started

يبدأ الفحص cart_view, checkout_view, checkout_intent, checkout_abandon, add_to_cart.

login_success identity.signed_in

زائر يوقع في الفشل login_failedمخزنة كما identity.login_failed; القفل هو login_lockout_created.

تسجيل conversion.signup

الزائر يكمل إشارة، الرصاص هو leadمخزنة كما conversion.lead.

js_error error.js

ألفJavaScriptالخطأ يقع على صفحة متعقبة

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

المناسبات الخاصة

يمكنك إرسال أحداث مخصصة من موقعك أو الخادم إلى OpsIQ. الأحداث المحددة مفيدة لتتبع الإجراءات الخاصة بعملك: النقرات على الأزرار، استخدام الخاصية، مشاهدات الفيديو، عمليات التنزيل، إلخ.

JavaScript · حدث عادي من بروزر
// Send a custom event from the browser
window.OpsIQ = window.OpsIQ || [];
window.OpsIQ.push(["track", "plan_selected", {
  plan: "pro",
  billing: "annual",
  value: 99
}]);
PHP سجل نشاط اتصال من خادمك
// Record a server-side activity for a contact (PHP)
$ch = curl_init("https://your-opsiq-domain.com/api/v1.php");
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        "Authorization: Bearer opq_your_key",
        "Content-Type: application/json",
    ],
    CURLOPT_POSTFIELDS => json_encode([
        "action" => "crm.activities.record",
        "site_key" => "site_abc123",
        "email" => "[email protected]",
        "event" => "subscription.upgraded",
        "value" => 50,
        "currency" => "USD",
    ]),
]);
$response = curl_exec($ch);
curl_close($ch);

ترشيح الأحداث

نوع الحدث

ترشيح أسماء الأحداث المحددة: pageview, chat. started, ticket. created، إلخ

نطاق التواريخ

أظهر الأحداث من فترة زمنية محددة.

البحث

البحث عن بيانات الأحداث باستخدام الكلمات الرئيسية (URL، البريد الإلكتروني، قيم خصائص الأحداث).

كم من الوقت تحفظ الأحداث؟+

تتبع الأحداث سياسة الاحتفاظ المحددة في الإعدادات. 90 ويمكن تحديد الأحداث ذات القيمة العالية (المشتريات، والأحداث الأمنية) بفترة استبقاء أطول.

هل يمكنني استخدام الأحداث في تجارب A/B؟+

نعم. عند إنشاء تجربة، يمكنك اختيار حدث تحويل. يمكن استخدام أي حدث مدمج أو مخصص كهدف التحويل.

تحليلات

التجارب ألف/باء

تسمح لك التجارب باختبار نسختين من صفحة أو ميزة وقياس أيهما يؤدي بشكل أفضل. OpsIQ يتتبع الانطباعات، التحويلات، والأهمية الإحصائية.

التجارب ألف/باء
التجارب ألف/باءبطاقتان بديلتان تقارنان معدلات التحويل، مع شارة الفائز وأهمية المتغير الرئيسي.التجارب ألف/باءyoursite.comالنسخة A4.2%1,020 عدد المشاهداتالنسخة Bالفائز6.8%1,005 عدد المشاهدات+62%رفع؛96%كبيرة1اختبارخياران للمقارنة المباشرة2الإجراءالتحويلات والأهمية3تقررأعلن الفائز
تشغيل متغيرين، مشاهدة التحويلات والأهمية الإحصائية، وإعلان الفائز.

كيف تعمل التجارب

1
إنشاء تجربة

أعطيه اسماً، وحدد مقياسك الرئيسي (حدث التحويل)، وحدد المتغيرات (التحكم والاختبار).

2
أطلقه

OpsIQ تعين الزوار عشوائيا إلى المتغيرات وتتبع سلوكهم. لا تغير التجربة بينما هي في التشغيل.

3
انظر النتائج

وبعد جمع بيانات كافية، تحقق من مستوى الثقة.95% الثقة تعني أنك تستطيع 95% متأكد من أن الفرق حقيقي، وليس عشوائياً.

الولايات التجريبية

مسودة

تم إنشاؤه ولكن لم يبدأ بعد. لا تزال تستطيع تحرير المتغيرات والمقاييس.

التشغيل

تخصيص الزوار بشكل نشط للمتغيرات. لا تعدل أثناء التشغيل.

مكتمل

بلغت أهمية إحصائية أو توقفت يدويا، والنتائج نهائية.

محفوظة

وقد استُعرضت النتائج ولم تعد هناك حاجة إلى التجربة في القائمة النشطة.

دال - أفضل الممارسات

حدد مقاييسك قبل إطلاقها

قرر ماذا تقيس قبل البدء. إن اختيار مقياس بعد مشاهدة النتائج يدخل الانحياز.

استبعاد الحركة الداخلية

أضف فريقك IP:: إدراج عناوين في قائمة الاستبعاد حتى لا تؤثر زيارات الموظفين على النتائج.

ركض طويلاً بما فيه الكفاية

لا توقف التجربة بعد 100 تحتاج إلى مئات أو آلاف الزوار لكل صيغة لتحقيق نتائج موثوقة.

اختبار تغيير واحد في كل مرة

إذا غيرت العنوان ولون الزر، لن تعرف أي تغيير تسبب في التحسن.

تسجيل قرارك

وبعد انتهاء التجربة، لاحظ أي المتغيرات ربح ولماذا اخترت تنفيذه.

كم عدد الزوار الذين أحتاجهم لتجربة صحيحة؟+

ويتوقف ذلك على معدل التحويل المرجعي وحجم التأثير الذي تريد كشفه، وكقاعدة عامة: ما لا يقل عن 500 عدد الزوار لكل متغير 20% حجم التأثير بالنسبة للتأثيرات الأصغر، تحتاج إلى الآلاف

هل يمكنني إجراء تجارب متعددة في نفس الوقت؟+

نعم، ولكن كن حذراً: إذا أثرت تجربتان على نفس الصفحة، فقد تتفاعل نتائجهما. من الأفضل إجراء التجارب على صفحات أو سمات مختلفة في وقت واحد.

تحليلات

أخطاء JavaScript

JavaScriptيَجْمعُ الأخطاءَ الجانبِ الزبونِ مِنْ زوارِ موقعِكَ.APIاتصلي، أو أن هناك مورد مفقود هنا استخدميه لإيجاد وإصلاح الحشرات التي تؤثر على الزبائن الحقيقيين

أخطاء في برامجيات الترجمة
أخطاء JavaScriptقائمة بأخطاء الواجهة الأمامية التي تم التقاطها مع نقاط الخطورة، وملف المصدر، والمتصفح وعدد المرات.أخطاء JavaScriptyoursite.comالأخطاء الأخيرةخطأ النوع: لا يمكن قراءة x من غير محدد. checkout.js42 · Chrome×214404 تحميل /assets/app.cssالفهرس Safari×88غير مكتشف (في الوعد)api.js:17 · Firefox×51تحذير من الاستعمال غير المناسب: حدث تفريغvendor.js · Edge×331CAPTUREأخطاء في جانب الزبون2IMPACTالمتصفحات3تثبيتحطم الحشرات الحقيقية
الزائرون الحقيقيون يضربون سطح الشفرة هنا (العرض، المصدر، المصفح وكم من الأحيان) حتى تتمكن من إصلاح ما يهم.

ما يظهره كل خطأ

رسالة خطأ

نص الخطأ JavaScript (مثلا، "TypeError: Cannot read properties of undefined").

الصفحة URL

الصفحة التي حدث فيها الخطأ.

المتصفح والجهاز

المتصفح ونوع الجهاز الذي لاحظ الخطأ. بعض الأخطاء خاصة بالمتصفح.

تتبع الرصيد

موقع الرمز حيث حدث الخطأ. انقر لتوسيع تتبع كومة كاملة.

أول مرة رأيتها

عندما ظهر هذا الخطأ لأول مرة.

آخر مرة شوهدت فيها

تاريخ وقوع هذا الخطأ آخر مرة.

العدد

كم مرة تم تسجيل هذا الخطأ.

الدورات المتأثرة

كم عدد جلسات الزائرين المختلفة التي عانت من هذا الخطأ.

ترتيب الأخطاء حسب الأولوية

ليس كلها JavaScript تحتاج الأخطاء إلى اهتمام فوري.1(أ) أخطاء في الصفحات الحرجة (الدفع، التسجيل، الدخول)،2) أخطاء مع حسابات الجلسة العالية، (3(أ) الأخطاء التي ظهرت مؤخراً (التراجع المحتمل من تغيير في الرموز)،4) أخطاء على برمجة الخاصة بك (وليس النصوص من طرف ثالث).

إصلاح زر شراء مكسور

السيناريو:
تظهر صفحة أخطاء JS "TypeError: Cannot read properties of undefined (reading submit)" على. /checkout, المؤثرة 45 جلسات هذا الأسبوع.
ماذا نفعل:

وهذا يعني: 45 لم يتمكن العملاء الحقيقيون من إكمال عملية الدفع.1) افتح الصفحة في نفس مزيج المتصفح/الجهاز. (2) افتح وحدة التحكم في المتصفح وتكرارها. (3) تحقق من تعقب الكومة للعثور على السطر الدقيق للرمز. (4) إصﻻح الخطأ، ونشره، ورصد عدد اﻷخطاء التي تصل إلى الصفر.

هل OpsIQ يلتقط الأخطاء من النصوص الطرف الثالث؟+

نعم، OpsIQ يلتقط كل شيء JavaScript أخطاء على الصفحة، بما في ذلك الأخطاء من النصوص التحليلية، وأدوات المحادثات، والنصوص الدعائية. URL في تتبع الكومة للتركيز على شفرتكم الخاصة.

كيف أستبعد الأخطاء المعروفة غير الضارة؟+

لا يمكنك قمع أخطاء محددة فيOpsIQلكن يمكنك تصفية القائمة بالصفحةURLأو رسالة خاطئة - تصلح الأخطاء أو تتجاهلها من تمديدات المصفوفين (تظهر في كثير من الأحيان كأخطاء من مصادر غير معروفة).

المبيعات

المبيعات والتحويلات

تتبع المبيعات يربط متجرك أو منصة الفواتير إلى OpsIQ بحيث يمكنك أن ترى العائدات جنبا إلى جنب مع سلوك الزائر. كل شراء يعزى إلى رحلة الزائر حتى تعرف أي الصفحات، الحملات والقنوات التي تدفع العائد.

المبيعات
المبيعاتشاشة المبيعات: مجموع الإيرادات مع التحكم في فترة كل الوقت، والبحث وجدول المشتريـات الأخيرة (التاريخ، العميل، المنصة، المبلغ، المصدر).المبيعاتyoursite.comالإيرادات$42,180+18%طوال الوقت▾البحث عن البريد الإلكتروني، IP، رقم طلبية...المشتريات الأخيرةالتاريخالعميلالمنهاجالمبلغالمصدريونيو 3[email protected]Shopify$49googleيونيو 3[email protected]WooCommerce$129directيونيو 2[email protected]Stripe$480إعلانات1الإيراداتالطلبات والتجديدات2RECENT PURCHASESالتاريخ · العميل · المبلغ3ATTRIBUTEDإلى مصدر حركة المرور
The real Sales screen, revenue up top, then Recent Purchases (date, client, platform, amount), each attributed to its traffic source.

لوحة متابعة المبيعات

مبيعات اليوم

دخل من الطلبيات التي تم إنجازها اليوم، يجري تحديثه مع كل طلبية جديدة من المنصة المتصلة بك.

هذا الأسبوع/هذا الشهر/المجموع

الإيرادات المجمعة على مدى الفترة، وتطرح المبالغ المردودة من هذه المجاميع.

رسم بياني للاتجاهات

رسم بياني خطي يبين الإيرادات اليومية على مدى فترة زمنية مختارة. انظر إلى الذروات (الترويج، الحملات) والانخفاضات (المسائل، الموسمي).

المصادر الرئيسية للتحويل

أي مصادر المرور تقود إلى معظم المشتريات. المشترين "المباشرين" غالبا ما يضع موقعك في علامات التبويب. المشتري "Google" وجدك من خلال البحث.

المشتريات الأخيرة

أحدث الطلبيات مع بريد العميل الإلكتروني، والمبلغ، والعملة، والأصناف المشتراة.

المشتريات غير المؤكدة (رحلة زمرة)

وعندما يرى المتعقب أن الزائر يصل إلى تأكيد شراء في مصفف الديوان، ولكن لم يبلغ أي منصة متصلة بذلك عن البيع بعد، تبين رحلة العملاء صفاً (غير مؤكد) يحمل شارة كمبرية ولا يُعتبر ذلك ايرادات، وعندما يؤكد المنهاج البيع، فإن الشراء المؤكد يحل محله.

المصالحة

لا يعتمد موصلات المبيعات على موقع شبكي واحد، فكل إشارة دفع يرسلها المنبر يمكن أن تفتح عملية البيع وعقود الناقل 2.3 إعادة قراءة قائمة المبيعات المكتملة للمنبر على جدول زمني (ساعة متأخرة لكل مكان عمل) حتى يُمكن للمنصّة أن تخسر بيعاً

أدلة إنشاء المنصة

Shopify

اذهب إلى الوصلات Shopify إنشاء تطبيق مخصص في Shopify admin (الإعدادات > التطبيقات وقنوات المبيعات > تطوير التطبيقات). نطاقات الإذن: read_orders, read_customers, read _products. API رمز الدخول. OpsIQ, أدخل اسم مجال متجرك (مثلا, your-store.myshopify.com) ورمز الدخول. انقر على اختبار الاتصال. إذا نجحت، تفعيل تزامن webhook لإشعارات الطلب في الوقت الحقيقي.

WooCommerce

Go to Connectors > WooCommerce. In your WordPress admin, go to WooCommerce > Settings > Advanced > REST API. Create a key with Read/Write permission. Copy the consumer key and consumer secret. In OpsIQ, enter your site URL, consumer key, and consumer secret. Click Test Connection.

BigCommerce

اذهب إلى Connectors > BigCommerce. في إدارة BigCommerce الخاصة بك، انتقل إلى Advanced Settings >API الحسابات. إنشاء حساب V2/V3 API حساب مع نطاق قراءة للطلبات والعملاء والمنتجات. نسخ رموز الدخول، وتحديد هوية العميل،API أدخلهم في. OpsIQ واختبار.

Magento 2

اذهب إلى Connectors > Magento. في إدارة Magento الخاصة بك، انتقل إلى System > Integrations. إنشاء تكامل جديد مع API تفعيل التكامل ونسخ رمز الدخول. إدخاله في OpsIQ مع قاعدة ماجينتو الخاصة بك. URL.

PrestaShop

اذهب إلى الوصلات PrestaShop. فيك PrestaShop اذهب إلى البارامترات المتقدمة > الخدمة الشبكية. قم بتفعيل الخدمة وإنشاء مفتاح جديد. منح الوصول إلى طلبات، العملاء والمنتجات. نسخ المفتاح وإدخاله في OpsIQ مع متجرك URL.

OpenCart

اذهب إلى Connectors > OpenCart.API أدخل كلمة المرور الخاصة بك API URL اسم المستخدم وكلمة المرور OpsIQ. الموصل يستخدم OpenCart's REST API لبيانات الطلبات والعملاء.

osCommerce

اذهب إلى Connectors > osCommerce.API تكامل osCommerce عادة ما يتطلب الوصول المباشر إلى قاعدة البيانات أو نموذج مخصص.API النموذج.

Stripe

اذهب إلى موصلات > Stripe. نسخة من Stripe مقيد.API(المطورون > )API ويحتاج المفتاح إلى قراءة إمكانية الوصول إلى العملاء، والتكاليف، والفواتير، والاشتراكات. OpsIQ. تشكيل النقطة النهائية للوصلة الشبكية للأحداث في الوقت الحقيقي

منابر خاصة/أخرى

استخدام REST API أو webhooks لإرسال أحداث المبيعات من أي منصة. إرسال order.completed الأحداث مع بريد العميل، والمبلغ، والعملة، والأصناف.API الجزء المتعلق بصيغة الحمولة.

فهم قناة المبيعات

المصادر الرئيسية للتحويل

تبين القنوات التي تجلب العملاء المدفوعين. Google يجلب 1000 الزوار والمقيمون 50 المبيعات، أي 5% إذا كان البريد الإلكتروني يجلب 200 الزوار والمقيمون 30 المبيعات، أي 15%:: البريد الإلكتروني أكثر فعالية لكل زائر.

استرداد

يتم تتبع الطلبات المردودة بشكل منفصل، فهي تقلل من إجمالي صافي إيراداتك. إذا كانت معدلات الرداد مرتفعة من مصدر محدد، فقد تكون حركة المرور ذات نوعية متدنية.

معالجة العملات

OpsIQ تخزن عملة المعاملة الأصلية والمبلغ. وترى الأعمال التجارية المتعددة العملات الإيرادات بكل عملة. ويستخدم الإبلاغ الموحد سعر الصرف المحدد.

أمثلة على الأعمال المنجزة

100 زوار، صفر مبيعات

السيناريو:
صفحة التسعير تحصل 100 زوار في اليوم ولكن صفر تحويلات.
ماذا نفعل:

التحقيق:1() استخدام جلسة إعادة العزف على زوار صفحات التسعير، راقب كيف يتفاعلون مع طاولة التسعير.2(د) التحقق من عدد صفحات صفحة التسعير والوقت على الصفحة.3تحقق من محادثات (تشات) من زوار صفائح التسعير، ما هي الأسئلة التي يسألونها؟4قارن صفحة التسعير الخاصة بك للمنافسين5جربي تجربة A/B مع مخططات تسعير مختلفة.

إسناد حملة تسويقية

السيناريو:
لقد أرسلت حملة بريد إلكتروني مع وسم UTM كيف تقيس تأثيرها على الإيرادات؟
ماذا نفعل:

اذهب إلى المبيعات و تصفية حسب المصدر. البحث عن بارامترات الحملة UTM. سوف ترى: (1) كم عدد الزوار الذين جاءوا من البريد اﻻلكتروني.2) كم عدد المنتجات التي حولت إلى مبيعات.3() مجموع الإيرادات المخصصة للحملة.4() مقارنة بالفترة نفسها قبل الحملة.

لماذا تظهر المبيعات صفراً بالرغم من أن متجري لديه طلبيات؟+

الشيك: (1هل وصلة المنصة متصلة وسليمة؟ انتقل إلى وصلات وتحقق من الحالة. (2) هل تمكنت من تزامن webhook؟ إذا كنت تستخدم استفتاء، هل عمل cron يعمل؟ (3)أ( هل للموصل الحق في API نطاقات؟ Shopify, أنت بحاجة إلى read_orders

كيف تعزو OpsIQ المبيعات إلى زائر؟+

عندما يأتي طلب من خلال الموصل، OpsIQ تطابق البريد الإلكتروني للعميل مع زائر معروف. إذا تم تتبع الزائر قبل الشراء، فإن المبيعات تعزى إلى رحلة الزائر، بما في ذلك مصدر حركة المرور، صفحة الوصول، وتاريخ الجلسة.

هل يمكنني إضافة المبيعات يدوياً؟+

يمكنك إرسال أحداث المبيعات من خلال REST API ويتم توثيق شكل الحدث في وثيقة Events.API الفرع ألف -

التجارة

بناء وبدء وتشغيل المخزن الأصلي

سوق المنتجات هو محل OpsIQ الأصلي للمنتجات، الصفحات، Lookbooks، الألواح الترويجية، التحقق من الحسابات، حسابات العملاء والبيع بمساعدة الذكاء الاصطناعي في Client Chat ودعم القنوات الاجتماعية.

البدء في التسويق→التخزين

1
اختر مكان العمل

تأكد من الموقع الذي تُشكّله، المنتجات والسياقات والمصفحات والأوامر والمحللين معزولة عن مكان العمل

2
التجارة الإلكترونية الميسرة

General Settings→التجارة هي السلطة الأبوية، النشر المخزني، إنشاء النظام والمدفوعات تبقى منفصلة حتى تتمكن من استعراض فهرس بأمان

3
المنتجات الكاملة المنشورة

تحديد نوع المنتج، السعر، العملة، المخزون، المتغيرات/الخيارات، وسائط الإعلام والوفاء بها.

4
دفع رسوم ووفاء الثقة

:: ربط بوابة أو إضافة تحويل مصرفي أو نقدي أو مقابل دفع، وتحتاج السلع المادية إلى مناطق تسليم أو جمع؛ وتحتاج البضائع الرقمية إلى ملفات أو رموز محمية.

5
تشغيل الجاهزة

اصلح كل مُجمّع وراجع كل تحذير ثم أكملوا أمر صندوق رمل من المخزن العام

البداية ومحتوى السياسة العامة

وتتلقى المخازن الجديدة والمرتدة نصاً مبدئياً قابلاً للتداول عنا, المصطلحات والشروط, الخصوصية, and المبالغ المردودة والمبالغ العائدة عندما تكون تلك الحقول فارغة نسخة التاجر الموجودة ليست مكتوبة بشكل مفرط

  • يستعاض عن كل [Add …] بسرعة نموذج البدء إشعار قبل الإطلاق.
  • استخدام الاسم القانوني الحقيقي، وطريق الاتصال، والوعود بالوفاء، وقواعد العودة، وممارسات البيانات، وفترات الاحتفاظ والأسواق.
  • الحصول على المشورة المناسبة للمنتجات والبلدان التي تخدمها، المبتدئ هو التوجيه التنفيذي وليس المشورة القانونية.

التصميم والصفحات والترقية

الموضوع وتصميم الصفحة

اختر موضوعاً وتركيباً معالجين لللون، ثم رسماً بيانياً، وملئ/درجات، وشكلات، واقية، حركة، وسلوك خفيف/داري.

عن، الاتصال، وشويغ/الكتاب والحساب

بناء كل صفحة من المباني القابلة لإعادة التنظيم، وكل مجموعة لها متغيرات في تصميم أقساط التأمين، والاحتفاظ ببنود صنع المطالبات مثل الإحصاءات أو الفريق أو الجوائز أو الاقتباسات حتى يكون مضمونها صحيحا.

الصفحات العرفية

ضع اللقب، الصراخ، البطلSEOولا يمكن إعادة استخدام طرق التخزين المحجوزة مثل العربات والمغادرة والحسابات والسياسات.

البوب الترويجي واللوحات الجانبية

إنشاء صفحة نموذجية بمبنى واحد على الأقل، تصميم أقساط الاختيار، وتركيب مركز/مسار/حق/مركبة، وزناد للحمولة/القتل/الضغط/النقل/البقعة، والخلفية، والتحركات، والاستعراض، والقسيمات، والسلوك الذي يُجرى مرة واحدة في كل دورة.

المنوس والقدم

وصلة بالصفحات والمنتجات والتحصيلات والسياسات والحساب/المساعدة/الأعمال المتعلقة بالعربات، أو الطرائق الحية أو الخارجية الآمنةURLs- تدعم البنود الرئيسية هبوطاً واحداً/مستوى ميغا-مينو.

وكلاء القلادة والأوامر الاجتماعية

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

WhatsApp, Messenger, Instagram, Telegramوتحتفظ طلبيات الموصل بعقدها العالمي الموقع والمجموع المأذون به للتاجر؛ ولا تغير هيكلة المتجر ذلك العقد.

محلل الاستخبارات

استعراض الزوار الفريدين، وآراء المنتجات، وإضافات السيارات، والبدء في عملية المغادرة/التركيب/الاكمال، وتحويلها، وأوامر مؤكدة، وإيرادات بالعملة، والاقتناء، والأجهزة، والبلدان/المدن، والمنتجات العليا، والانتعاش، والإنذار بنوعية البيانات.

معلومات عامةOpsIQ API

استخدم مفتاح الدببة commerce.read; analytics.read كما يمنح التحليلات فرصة عمل، وحيز العمل المتجه إلى المفتاح ذو حجية.

طباعة الستارلين
{ "action": "commerce.storefront.get" }
{ "action": "commerce.storefront.catalog.get" }
{ "action": "commerce.pages.list", "kind": "modal", "status": "live" }
{ "action": "commerce.analytics.snapshot", "range_days": 30 }
{ "action": "commerce.readiness.get" }
{ "action": "commerce.products.list", "filters": { "active": true } }

Storefront get returns تشكيل آمن للجمهور، URLويعيد فهرس Storefront كل موضوع، وتصميم الصفحة، ونوع الكتلة، وتركيبة الكتل، وقشرة الترويج العالية الجودة بحيث لا يقوم البناة عن بعد أبدا بتشفير الخيارات. Postman تستخدم هذه العقود نفسها.

آخر عملية سابقة لإطلاق النار

  1. حاسوب مكتبي وهاتف: المنزل، البحث، المنتج/المتغيرات، العربة، التحقق من صحة المعلومات، الحساب، التتبع، التحميلات، حول، الاتصال، السياسات، الكتاب، الصفحات، المنوس وكل ترقية حية.
  2. أنجز دفعة واحدة من صناديق الرمل والتحقق من حالة الطلب، والاستلام والمخزونات والوفاء.
  3. وضع نظام واحد للزبائن و طلب واحد من مقدمي الخدمات على كل قناة اجتماعية مُمكّنة
  4. تأكد أن هذه الأحداث تظهر تحت السطح الصحيح والعملة في المخابرات المخزنية
⚠️
ويجعل نص سياسة البداية من المتجر غير فارغ، ولكنه لا يجعل النسخة القانونية مستعرضة.
المبيعات

العملاء المحتملون

الرصاص هو زوار أو زبائن يظهرون هدف الشراء أو الدعم.OpsIQيكشف تلقائياً عن خيوط تقوم على السلوك: تحديد عدد زيارات الصفحات، وزيارات العودة، والتفاعلات الدردشة، وبدء الفحوص، والمشاركة العالية.CRMخط أنابيب

العملاء المحتملون
العملاء المحتملونThe Leads screen: a searchable table with IP/email, location, device, source and time-on-site columns, and top source and country.العملاء المحتملونyoursite.comالبحث IP، المدينة، البلد...المصدر الرئيسي: غوغل · البلد الرئيسي: الولايات المتحدةIP /البريد الإلكترونيالموقعالجهازالمصدرالوقت41.62.10.4المملكة المتحدة، لندنمحمولgoogle4 أمتار 12s[email protected]الولايات المتحدة الأمريكية، نيويوركسطح المكتبdirect7 أمتار 02s[email protected]برلينمحمولبيانات العنوان النهائي:5 أمتار 40s203.0.113.9تورونتو، كاليفورنياسطح المكتبgoogle3 أمتار 28s1DETECTEDالزوار ذوو النوايا الحسنة2TOPمصادر الرصاص والبلدان3ENRICHEDIP، الموقع، الجهاز، الوقت
The real Leads screen, high-intent visitors as a searchable table (IP/email, location, tool, source, time on site) with top sources and countries.

ما الذي يجعلك تقود

زيارات صفحات التسعير

الزوار الذين ينظرون إلى صفحة التسعير أو الخطط الخاصة بكم يفكرون بنشاط في الشراء.

زيارات العودة

أما الزوار الذين يعودون عدة مرات فيجري إشراكهم ولكنهم لم يحولوا بعد.

التفاعلات عبر الدردشة

الزائرون الذين يبدأون الدردشة يبحثون عن المساعدة، إما قبل الشراء أو بعد الشراء.

تبدأ عملية الدفع

الزوار الذين يصلون إلى صفحة الدفع ولكنهم لا يكملون عملية الشراء.

تقديم الاستمارات

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

مشاركة الصفحات العالية

فالزوار الذين يشاهدون العديد من الصفحات التي تستغرق جلساتها وقتا طويلا يجرون بحوثا متعمقة.

فريق التفاصيل الرئيسي

انقر على أي من هذه العلامات لرؤية بياناته الشخصية كاملة:

الهوية

الاسم، البريد الإلكتروني، الشركة إذا كانت معروفة. IP والموقع.

الجلسات

جميع الجلسات من هذا المصدر مع تدفق الصفحة، والمدة والمصدر.

الصفحات التي تم تصفحها

كل صفحة زاروها، مرتبة حسب الأحدث.

المصدر

كيف وجدواك: عضوي، مدفوع الأجر، اجتماعي، إحالة، مباشر.

الدرجة الأولى

ألف0-100 النتيجة استنادا إلى كثافة السلوك، والحداثة، وقصد الصفحة.

CRMالحالة

ما إذا كان هذا الدليل قد أُضيف إلىCRMكاتصال أو صفقة.

نصيحة بيع

إقتراح مبتكر بشأن ما يجب فعله لاحقاً (مثلاً، "التسعير المزيف 3:: النظر في التوعية الاستباقية.

شارة الرصيد العالية القيمة

الرصاصات التي لها علامة فوق80"أحصل على شارة "هاي فالوي هذه هي أحر توقعاتك، إمنحهم الأولوية للتواصل أو الدردشة الاستباقيةCRMدخول خط الأنابيب.

أمثلة على الأعمال المنجزة

العمل على خط ساخن

السيناريو:
لقد رأى دليل على صفحة التسعير الخاصة بك3أحياناً2أيام، بدأت محادثة تسأل عن خطط المؤسسة، ولكن لم تشتري.
ماذا نفعل:

هذا دليل رفيع المستوى.1() التحقق من تفاصيلهم الرئيسية عن المعلومات المتعلقة بالشركات والدور.2(ج) استعراض محاضر الدردشة للاحتياجات والاعتراضات المحددة.3عقد اتفاق فيCRMمع المعلومات المجمعة. (4(أ) تكليف عضو في فريق المبيعات بمهمة متابعة.5(إذا عادوا إلى صفحة التسعير، قاعدة الدردشة الاستباقية يمكن أن تبعث برسالة شخصية.

تجنب المجهول يؤدي إلىCRMالاتصالات

السيناريو:
لديك 50 مجهولين مع درجات عالية ولكن لا عناوين البريد الإلكتروني.
ماذا نفعل:

الخيارات: (1) أنشئ قاعدة استباقية تقدم خصم أو تنزيل الموارد مقابل البريد اﻻلكتروني على صفحات عالية النوايا.2() استخدم أداة الدردشة لطلب بريد إلكتروني عندما يبدأ زوار مجهولو الهوية محادثة.3)أ( أضف عﻻمة هوية إلى صفحات الدخول/التسجيل الخاصة بك بحيث يتم التعرف على الزوار العائدين تلقائيا.

كيف يحسب معدل الريادة؟+

وتأخذ النتيجة في الاعتبار: تواريخ الزيارات الأخيرة (الزيارات الأخيرة = أعلى)، ووتيرة الزيارات (أكثر = أكبر)، والصفحات المشاهدة (التسعير/الدفع = أطول)، ومدة الجلسة (أطول = أكثر)، والتفاعلات عبر المحادثات (المشاركون = الأعلى)، والزيارات العائدة (جلسات متعددة = أفضل).

هل يمكنني تعديل قواعد التصنيف؟+

نعمCRMالتداول، يمكنك أن تضيف قواعد للتركيز على الرصاص التي تعزز النتيجة استناداً إلى كلمات رئيسية محددة أو أحداث أو مصادر أو أنماط للصفحات.

CRM

أنتCRMتبدأ هنا

OpsIQسفن كاملة في الأولCRMذلك يكشف عن حقيقة العملاء، وينظف البيانات، وسجلات الأداء، والمدربين، والتنبؤات بالإيرادات، والأفعال، مع استخبارات الموقع الشبكي، والدعم، والتذاكر، والمنتجات، والمدفوعات كرسم بياني حي واحد، وكل عمل من إجراءات التنفيذ يتم مصادره وتوضيحه وعكس مساره ومراقبة الموافقة عليه.

CRM الذكاء الاصطناعي
AI CRM لمحة عامةاتصال ثقة معيّن للطيار المساعد إلى جانب أربع بطاقات عملاء الذكاء الاصطناعي: القيّم، والمستكشف، والاحتفاظ بالموظفين، والمحلل.CRM الذكاء الاصطناعيمساحة العملخدمة الاتصالات القائمة على الثقةيدويمساعدالطيران الآليكم يفعل الذكاء الاصطناعي بمفردهدال -. مديرفكّر، إثراءالتحقق من صحة البياناتحقوق السحب الخاصةالمنقبوجدت وحصلتالأعمال الجديدةRTالاحتفاظمعدلات التناقص الفوريةتجديدات لوحدات التشغيلموظف وطنيمحللالتنبؤاتشرح الأرقام1AI-FIRSTأربعة موظفين متخصصين2YOU DECIDEاستقلالية Trust Dial3TRUSTEDمصدر وقابل للعكس
AI-first CRM يديره أربعة وكلاء متخصصين، وa Trust Dial التي تقرر كم هم يفعلون لوحدهم.

CRM _BAR_

AI CRM(مركز كوماند)

ابدأ هنا

شاشة منزلك اليومية: نبض العائدات، ماذا وجد الذكاء الاصطناعي، وما فعله، صف الموافقة، الخطوات التالية، صحة الوكيل، وعائدات الاستثمار.

الاتصالات

الميزانية الأساسية

الناس والشركات فيCRM- البحث، والمرشحة، والسجلات، وإدارة الملامح.

خط الأنابيب

الميزانية الأساسية

لعبة عرض مرئي مع مراحل السحب والإسقاط، واحتمال الفوز، وتعليم الذكاء الاصطناعي.

التنبؤ والتقارير

الميزانية الأساسية

التنبؤ على مستوى المجلس: الملتزم، والمرجح، والحالة الأفضل، مع فترات الثقة وتتبع الدقة.

دورة الحياة

الميزانية الأساسية

Where every customer stands: active, at risk, expansion ready, renewal due, or churning.

بنيت ليCRM

تكوين

اصفيCRMتم تجهيزها باللغة الإنجليزيةOpsIQيولد خطة قابلة للعكس ويطبقها عند الموافقة.

CRMالصحة

عمليات

صفحة التحقق الذاتي: المخطط، الوكلاء، المسارات، إجراءات الذكاء الاصطناعي، وحسابات البيانات الحية.

كيف تحافظ OpsIQ على سلامتك

اسأل قبل أن تتصرف

تذهب مقترحات الذكاء الاصطناعي إلى طابور الموافقة. فأنت توافق أو تحرر أو ترفض كل اقتراح، ولا يحدث أي شيء بدون رأيك.

لا تكتب أبداً فوق

وعندما يقترح الذكاء الاصطناعي تغييرا، فإنه يعرض القيمة الحالية والقيمة المقترحة. ويتم حماية البيانات التي يدخلها الإنسان باعتبارها منشأ للبيانات.

كل شيء قابل للانعكاس

كل عمل من أعمال الذكاء الاصطناعي مسجل في اليومية، يمكنك إلغاء أي تغيير بنقرة واحدة.

قابل للتفسير

وتبين كل توصية من توصيات المنظمة المنطق الذي تستند إليه ومصادر البيانات التي استخدمتها.

جديد تماماً؟

1
مفتوحCRM

انقر على AI CRM في التنقل الأيسر. مركز القيادة يظهر حالتك الحالية.

2
الشيكCRMالصحة

افتح صحة CRM للتحقق من أن المخطط والوكلاء والمسارات جاهزة.

3
الاتصالات المتعلقة بالاستيراد

إذا كان الموصل نشطاً (Shopify, WHMCS وغيرها)، يتم استيراد جهات الاتصال تلقائيا. CSV أو أنشئ يدوياً.

4
إنشاء خط أنابيب

اذهب إلى خط الأنابيب وإنشاء أول خط أنابيب مع المراحل (مثلا، الرائدة، المؤهلة، الاقتراح، التفاوض، الفوز، الخسارة).

5
إضافة أول صفقة

إنشاء صفقة من الاتصال، وتحديد المبلغ والمرحلة، واسمحوا Deal Coach توجيهك.

هل يجب أن أستخدمCRM?+

لاCRMاختياريOpsIQيعمل بشكل مثالي كجهاز للتتبع + الدعم + منصة التنفيذ بدونCRM- تمكينه عندما تكون مستعدا لإدارة المبيعات وعلاقات العملاء.

هل يمكنCRMالعمل بدون موصلات؟+

نعم، يمكنك إقامة اتصالات وصفقات يدوياًCRM(ب) مع بيانات منابر (أو رعاة، أو اشتراكات، أو تذاكر) غير مطلوبة.

ما هي طبقة الثقة؟+

طبقة الثقة هي نظام السلامة الذي يتحكم في ما يمكن للذكاء الاصطناعي أن يفعله. نمط الرائد المشارك (الافتراضي): يقترح الذكاء الصنعي، ويوافق الإنسان عليه. نمطة الطيار الآلي (اختيار الانضمام): يعمل الذكاء الصناعي تلقائيا على عمليات منخفضة المخاطر وقابلة للعكس.

CRM

AI CRM الشاشة المنزلية

مركز القيادة هو إحاطة يومية، افتحها كل صباح لمعرفة ما حدث وما يحتاج إلى انتباه، وماذا تفعل لاحقاً.

مركز القيادة
CRMمركز القيادةThe CRM Home with Forecast/Win-rate/Pipeline toggles, a weighted-forecast KPI, and an AI proposal queue with Approve and Dismiss on each row.CRMمركز القيادةمساحة العملتوقعمعدل الفوزخط الأنابيبالتنبؤات74 ألف دولار87%:: الموافقة على قائمة الانتظارإنشاء صفقة · Acme $24kمن محادثة مع المشتريالموافقةرفضحركة نيمبوس → اقتراحرد إيجابيالموافقةرفضتسجيل المهمة · متابعةلا نشاط في 7 أيامالموافقةرفض1TOGGLEForecast · Win rate · Pipeline2AI PROPOSESالصفقات والمراحل والمهام3YOU DECIDEالموافقة أو الرفض
The real Command Center: shift between Forecast, Win rate and Pipeline, and work the AI proposal queue, approval or dismiss the deals, stage moves and tasks it suggests.

ماذا يظهر مركز القيادة

أرقام اليوم

قيمة خط الأنابيب، الصفقات التي تربح/تخسر، خيوط جديدة، صفقات نشطة، اتجاه الإيرادات، صورة من حالتك الحالية.

ماذا وجدت OpsIQ

اكتشافات الذكاء الاصطناعي: الصفقات المعطلة، والحسابات المعرضة للخطر، والفرص الجديدة، وقضايا نوعية البيانات، وإشارات السوق.

ماذا فعلت OpsIQ

الإجراءات التي اتخذها الذكاء الاصطناعي (في الطيار الآلي) أو اقترحها (في طيار مساعد): تقدم المراحل، وتحديثات النتائج، وإثراء الاتصالات، وإنشاء المهام.

يحتاج إلى موافقة

صف من مقترحات الذكاء الاصطناعي ينتظر قرارك. يظهر كل منها العمل المقترح، والتفسير والأدلة. اعتمد أو حرر أو رفض.

الخطوات التالية

قائمة أشهر اللاعبين في العالم 10 أهم الأشياء التي يجب القيام بها اليوم: متابعة صفقة ساخنة، التحقق من حساب معرض للخطر، البحث عن دليل جديد، إلخ.

مركز المساعد

صحة وكلاء الذكاء الاصطناعي: الاستيلاء، وإدارة البيانات، والاستخبارات التجارية، والمدرب التجاري، وحقوق السحب الخاصة، والاحتفاظ.

ثالثا - النتائج

ROI tracking: deals influenced by AI, time save, accuracy of predictions, and comparison to manual CRM العمل.

سير العمل في جلسة الإحاطة الصباحية

1
اقرأ أرقام اليوم

تحقق من صحة خط الأنابيب واتجاه العائدات هل أنت على المسار الصحيح هذا الشهر؟

2
إزالة صف الموافقات

استعراض كل اقتراح من مقترحات الذكاء الاصطناعي، والموافقة على إجراءات آمنة، والتعديل عند الضرورة، ورفض المقترحات السيئة.

3
تحقق مما يلي: OpsIQ عُثر عليها

اقرأ رؤى الذكاء الاصطناعي هل هناك صفقات معرضة للخطر؟ هل هناك فرص جديدة؟

4
عمل قائمة التحركات التالية

ولنبدأ بالأولوية العليا. فقد صنفتها المنظمة الدولية للهجرة حسب درجة إلحاحها وتأثيرها المحتمل.

التعويض عن وقت الإجازة

السيناريو:
كنت غائباً لمدة اسبوع ماذا حدث بينما كنت غريباً؟
ماذا نفعل:

افتح مركز القيادة وتحقق من: (1ماذا؟OpsIQ فعلت" تظهر جميع أفعال الذكاء الاصطناعي أثناء غيابك. (2) "تحتاج إلى الموافقة" تظهر المقترحات في انتظار مراجعتك. (3ماذا؟OpsIQ"لا يوجد" يبرز البنود العاجلة.4) حدّد نطاق التواريخ في لوحة المتابعة على فترة غيابك لرؤية الاتجاه.

CRM

الاتصالات والشركات والمعاملات

The CRM تنظم علاقات أعمالكم في أربعة أهداف هي: الاتصالات (الناس)، والشركات (التنظيمات)، والتعاملات (فرص الإيرادات)، والمهام (إجراءات المتابعة).

CRMالأجسام
CRMالأجسامسجل اتصال مرتبط بأجسام الشركة، والصفقة والمهمة في رسم بياني متصل.CRMالأجساممساحة العملاتصلشخص · بريد إلكتروني · هاتفالشركةaccounts-اتفاقفرصة الدخلمهمةإجراءات المتابعة1OBJECTSالاتصالات والشركات والمعاملات2LINKEDرسم بياني واحد متصل3TASKSإجراءات المتابعة المرفقة
وأربعة أشياء أساسية (الاتصالات والشركات والمعاملات والمهام) مرتبطة برسوم بياني واحد متصل بالزبائن.

الاتصالات

ما هو الاتصال

شخص فيكCRMقد يكونون زبوناً أو محتملاً، أو شريكاً ،أو خيطاً

إيجاد جهات الاتصال

استخدم شريط البحث للبحث عن الاسم، البريد الإلكتروني، الشركة أو الوسوم. استخدام المرشحات: مرحلة دورة الحياة، ودرجة القيادة، والمصدر، والبلد، وآخر تاريخ نشاط، المالك المخصص.

بيانات الاتصال

انقر على اتصال لرؤية ملفه الشخصي الكامل: معلومات شخصية، الشركة، الصفقات، الأنشطة، التذاكر، المحادثات، زيارات الموقع، النتيجة الرئيسية، وأفكار الذكاء الاصطناعي.

درجة السخونة

ألف0-100 النتيجة المحسوبة من الإشارات السلوكية: زيارات الموقع، والمشاركة عبر البريد الإلكتروني، وتفاعلات المحادثة، وتاريخ الشراء، والأحداث الأخيرة.

الشركات

... المزيد من التذاكر
الربط بين الاتصال والشركات

وترتبط جهات الاتصال بالشركات عن طريق نطاق البريد الإلكتروني أو التخصيص اليدوي، ويمكن أن يكون لشركة واحدة العديد من جهات الإتصال.

الصفقات

ما هو الاتفاق؟

فرصة لتحقيق إيرادات - تتضمن الصفقات عنوانا، ومبلغا، وخط أنابيب، ومرحلة، واحتمالات الفوز، وتاريخ إغلاق، ومالكيها المخصصين، والاتصالات/الشركة المرتبطة بها.

احتمال الفوز

نسبة مئوية من فرصة الفوز بالصفقة. يتم تحديدها يدوياً أو حسابها بواسطة الذكاء الاصطناعي استناداً إلى بياناتك التاريخية للفوز. يقود التنبؤ المرجح.

صحة الصفقة

الأخضر (صحي)، أو الكهرومغناطيسي (معرض للخطر) أو الأحمر (متوقف): استنادا إلى مدى حداثة النشاط، ومدة المرحلة، وإشارات الانخراط.

المهام

ما هي المهمة

إجراء متابعة يُسند إلى شخص ما - للمهام عنوان، وتاريخ استحقاق، وأولوية، ونوع (مكالمة، أو بريد إلكتروني، أو اجتماع، أو غير ذلك)، واتصال/صفقة مرتبطة.

المهام التي يولدها الذكاء الاصطناعي

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

إيجاد العناصر الساخنة

السيناريو:
تريد أن ترى جميع الاتصالات ذات الدرجات العالية في المملكة المتحدة الذين لم يتم الاتصال بهم مؤخراً.
ماذا نفعل:

اذهب إلى قائمة الاتصالات. تصفية حسب: النتيجة الرئيسية > 80، البلد = المملكة المتحدة، آخر نشاط > _7 يوماً مضت. الترتيب بالتساوي بحسب النتيجة الأساسية. هذه هي أهم نتائجك المهملة، أعط أولوية للتواصل.

إنشاء صفقة من اتصال

السيناريو:
أعرب أحد الأشخاص الذين تم الاتصال بهم للتو عن الاهتمام بخطة المؤسسة الخاصة بك أثناء محادثة.
ماذا نفعل:

افتح ملف الاتصال. انقر على "إنشاء الصفقة". أدخل عنوان الصفقة (مثلا، "Acme Corp - خطة المؤسسة") ، والمبلغ ، وخط الأنابيب ، والمرحلة (مثلًا، "المؤهل"). حدّد تاريخ الإغلاق وأسندها لنفسك. سيبدأ مدرب الصفقات في تتبع هذه الفرصة.

CRM

خط الأنابيب (مجلس التعاملات)

خط الأنابيب هو لوحة مرئية حيث تتحرك الصفقات عبر المراحل من اليسار إلى اليمين. اسحب وأسقط البطاقات للتقدم في الصفقات. تظهر كل بطاقة مقدار الصفقة، احتمال الفوز، وحالة الصحة.

خط الأنابيب
CRMخط الأنابيبThe pipeline screen with Open-deals, Open-value, Weighted-forecast and Attributed-deals stats, a New-deal button, an AI Approve queue, and the Lead/Qualified/Won board.خط الأنابيبمساحة العملالصفقات المفتوحة23القيمة المفتوحة128 ألف دولارتوقع مرجح74 ألف دولارالصفقات المسندة12+ صفقة جديدةالموافقة على قائمة الانتظار2 إلى الاستعراضعميلشركة فولت4 آلاف دولارالنار6 آلاف دولارمؤهلنيمبوس30 ألف دولارPaystack9 آلاف دولارفازمدار48 ألف دولار1LIVE STATSالقيمة المفتوحة والتنبؤ المرجح2AI QUEUEالموافقة على الصفقات المقترحة3BOARDصفقات الدفع حسب المرحلة
The real pipeline screen: live stats (open value, weighted forecast), an AI Approve queue for proposed deals, and the drag-and-drop board.

استخدام لوحة خط الأنابيب

1
انظر إلى صفقاتك

يعرض خط الأنابيب جميع الصفقات النشطة كبطاقات مرتبة في أعمدة (مراحل). ويظهر عنوان كل عمود القيمة الإجمالية للصفقات في تلك المرحلة.

2
اسحب للتقدم

اسحب بطاقة إلى المرحلة التالية. تحديث احتمال الفوز والحسابات فورا. إذا فشل التحرك (خطأ التحقق)، البطاقة يلتف مرة أخرى إلى موقعه الأصلي.

3
شارات بطاقات الدفع

الشارة الخضراء = صحية (نشاط حديث، في المسار الصحيح)؛ الكرتوني = معرض للخطر (تباطؤ، يحتاج إلى عناية)؛ الأحمر = متوقف (لا نشاط منذ فترة طويلة).

4
انقر للحصول على التفاصيل

انقر على بطاقة لفتح لوحة تفاصيل الصفقة مع جهات الاتصال، والأنشطة، وإحاطة مدرب الصفقة، والإجراءات السريعة.

صف الموافقة

تظهر مقترحات الذكاء الاصطناعي في طابور الموافقة في أعلى صفحة الأنبوب. ويعرض كل اقتراح ما يرغب الذكاء الصناعي في فعله، ولماذا، والأدلة. يمكنك:

الموافقة

قبول الاقتراح كما هو - يجري العمل من خلال طبقة الثقة ويسجل في اليومية.

تحرير

تعديل المقترح قبل الموافقة عليه، على سبيل المثال تغيير المرحلة المقترحة أو تعديل المبلغ.

رفض

رفض الاقتراح - تتعلم المنظمة من حالات الرفض لتقديم اقتراحات أفضل في المستقبل.

شرح احتمال الفوز

يمكن تحديد احتمال الفوز يدويا أو حسابه بواسطة الذكاء الاصطناعي. وعندما يقوم الذكاء الصناعي بحسابه، فإنه يستخدم نموذجا مدربا على صفقاتك المغلقة الخاصة بك (الفوز والخسارة). وإذا لم يكن لديك ما يكفي من البيانات التاريخية، فإن الذكاء الإصطناعي يستخدم الاحتمال الافتراضي للمرحلتين. ويقود الاحتمال التنبؤ المرجح: $10,000 الصفقة عند. 30% احتمال المساهمات $3,000 إلى "المرجح" التنبؤ.

نقل صفقة إلى وون

السيناريو:
ووقّع أحد الزبائن على العقد وسدّد الثمن.
ماذا نفعل:

اسحب البطاقة إلى مرحلة "الفوز"OpsIQ سوف: (1) اكتب الصفقة كصفقة مغلقة2() استكمال التوقعات. (3) أضف نشاط "الفوز" إلى الجدول الزمني. (4) إذا تم تشكيلها، تطلق حدث webhook (crm.deal.won).5تحديث مرحلة دورة حياة الاتصال إلى "العميل".

اكتشاف الصفقات المعلقة

السيناريو:
تريد أن تجد صفقات كانت في نفس المرحلة لفترة طويلة جداً
ماذا نفعل:

ابحث عن الشارات الحمراء (المتوقفة) على لوحة أنابيب البيع. لم يكن لهذه الصفقات أي نشاط لفترة أطول من عتبة الفساد المحددة (محددة في CRM Configuration > Pipelines). انقر فوق كل صفقة متوقفة لرؤية توصية مدرب الصفقات بإعادة تنشيطها.

هل يمكنني أن أحصل على أنابيب متعددة؟+

نعم. اذهب إلى CRM Configuration > Pipelines لإنشاء خطوط أنابيب إضافية. حالات الاستخدام الشائعة: خطوط قناة منفصلة للأعمال التجارية الجديدة مقابل التجديدات، أو لمختلف المنتجات/الخدمات.

ماذا يحدث عندما أسحب صفقة إلى "المفقودين"؟+

يتم تمييز الصفقة على أنها مغلق- فقدت. سوف يُطلب منك سبب الخسارة. الصفقة تُزال من المجلس النشط ولكن يمكن العثور عليها في مرشح الصفقات المغلق. يظل الاتصال في CRM.

CRM

التدريب على التعامل

يقوم المدرب المكلف بتحليل كل صفقة ويعطيك موجزاً عن الحالة الصحية، وإشارة المخاطر، والناس الرئيسيين، وقائمة مرجعية للتأهيلات، والاجتماع التمهيدي، والإجراءات التالية المقترحة، وكل شيء مستمد من ذلك، ويبين المدرب ما هي التذكرة أو الدردشة أو النشاط الذي يأتي منه كل مطالبة.

مدرب الصفقات
مدرب الصفقات(ب) بطاقة صفقة تتضمن قائمة بإشارات المخاطر التي يكشفها الذكاء الاصطناعي مع مصادر الأدلة، إلى جانب توصية للذكاء الصنعي وزر مسودة رسالة إلكترونية.مدرب الصفقاتمساحة العملAcme Corp $24,000المرحلة: اقتراح · 60% فوزإشارات المخاطرلا رد خلال 10 أيامالبطل صمتاًالمنافس الذي ذكر في الدردشةالمصادر: التذكرة رقم 482 · الدردشة على الإنترنت _6/12 · موضوع البريد الإلكترونيAI recommendsإعادة إشراك الاقتصادمشتري مع ملخص العائد على الاستثماروخطة إغلاق لمدة 7أيام.قم بصياغة البريد الإلكتروني1SIGNALSلماذا قد تنزلق الصفقة2SOURCEDEvery claim cites evidence3إجراءالخطوة التالية بنقرة واحدة
يعلم المدرب لماذا الصفقة قد تنزلق (يذكر كل إشارة مصدرها) ويسلمك الخطوة التالية لتأخذها.

ماذا يقول لك المدرب

تفسير صحي

1- لماذا الصفقة سليمة، أو معرضة للخطر، أو متوقفة؛ إشارات محددة: أيام في المرحلة، وتاريخ آخر اتصال، وتواتُر الأنشطة، والذكريات المتعلقة بالمنافسين، وأنماط الاعتراض.

الإشارات

يصنف إلى: الاعتراضات المطروحة، وذكر المنافسين، ومناقشات التسعير، ومؤشرات مخاطر الدعم، وإشارات التجديد/التوسيع.وكل إشارة تربط بمصدرها (محضر المحادثة، والتذكرة، والبريد الإلكتروني، والنشاط).

خريطة البطل والمعوق

من يساعد في الصفقة (البطل) ومن يقاومها (المعوق)، استنادا إلى تحليل التفاعل وأدوار الاتصال.

قائمة مرجعية للمؤهلات

قائمة مرجعية (MEDDICC أو BANT) (قابلة للتعديل) تبين معايير التأهيل المستوفاة والمفقودة. الدرجة: ألف، باء، جيم، دال، أو واو.

التحضير للاجتماعات

وقبل عقد اجتماع مقرر، يضع المدرب موجزا: جدول الأعمال والنقاط الرئيسية التي يتعين تغطيتها والأسئلة التي ينبغي طرحها والمخاطر التي ينشأ عنها وأية مواد يجب إعدادها.

خطط الرد والمكالمات

النص المقترح للرسالة أو المكالمة التالية استنادا إلى حالة الصفقة الحالية والتفاعلات الأخيرة.

الجدول الزمني للأدلة

كل ادعاء يقوم المدرب بإنشاء روابط إلى مصدر: رقم تذكرة، أو رمز هوية نص الدردشة، أو تاريخ النشاط، أو زيارة الموقع.

كيفية استخدام المدرب

1
اقرأ الموجز

افتح أي صفقة وتحميل إلى قسم مدرب الصفقة. اقرأ حالة الصحة والإشارات الرئيسية.

2
سد الثغرات في المؤهلات

Check the qualification checklist. If "Economic Buyer" is missing, plan to identify and engage the budget holder.

3
العمل على أساس الاقتراحات

المدرب يقترح إجراءات ملموسة قادمة، اضغط على مهمة أو صاغ رسالة إلكترونية أو جدول اجتماع، كلّها مُوجّه عبر طلب الموافقة.

التحضير لاجتماع كبير

السيناريو:
لديك اجتماع مع شخص محتمل غدا حول $50,000 اتفقنا
ماذا نفعل:

افتح الصفقة وقرأ قسم التحضير للاجتماع فهو يظهر:1) نقاط الحوار الرئيسية استنادا إلى التفاعلات اﻷخيرة.2اعتراضات أثاروها في الدردشة الأسبوع الماضي.3منافس ذكروه في تذكرة الدعم4) أسئلة لطرحها بشأن الجدول الزمني. (5عوامل الخطر التي ينبغي معالجتها بصورة استباقية - استخدم هذا الموجز لإعداد جدول أعمال مركّز وقائم على الأدلة.

فهم أسباب تعرض الصفقة للخطر

السيناريو:
يظهر خط الأنابيب شارة حمراء على صفقة كنت تعتقد أنها ستكون جيدة.
ماذا نفعل:

Click the deal and read the Deal Coach health explanation. It might say: "This deal has been in Proposal stage for 22 days (threshold: 14). Last contact was 11 days ago. The primary contact opened a support ticket about data migration concerns 5 days ago (ticket #T-892). Suggestion: address the migration concern and schedule a follow-up call." Now you know exactly what to fix.

CRM

التنبؤ والتقارير

التنبؤ على مستوى مجلس الإدارة مع نطاق قابل للدفاع عنه، وشروحات التغيير على مستوى الصفقة، وتتبع الدقة حتى يمكنك إثبات وتفسير أرقامك.

توقع
توقععدد التوقعات ربع السنوية مع نطاقات التعهد، وأفضل الحالات، والعملية الجارية وملاحظة بشأن الدقة.توقعمساحة العملالتوقعات خلال هذا الربع312 ألف دولار87% إلى الهدفالالتزامأفضل حالةخط الأنابيب:: تتبع الدقة على مر الزمن1الفئاتالالتزام بالعملية2AI-WEIGHTEDحسب العقد3PROVABLEتتبع الدقة
ابدأوا، أفضل حالة و خط أنابيب في لمحة، مثقلة بصحّة الصفقات، مع دقّة تُعقّبَ حتى تتمكن من الدفاع عنها.

فئات التوقعات

ملتزم

الصفقات التي تحتوي على احتمالات ربح 80% أو أعلى. هذه هي أرباحك الأكثر احتمالاً. وينبغي أن يكون هذا هو الحد الأدنى من إيراداتك المتوقعة.

احتمال مرجح بحسب الذكاء الاصطناعي

كل الصفقات المفتوحة مرجحة باحتمال الفوز المحسوب بواسطة الذكاء الاصطناعي. وهذا هو التنبؤ الأكثر واقعية بما ستغلقونه.

أفضل حالة

كل الصفقات المفتوحة بقيمة كاملة. وهذا هو الحد الأقصى من العائدات الممكنة إذا كان كل شيء على ما يرام (ونادرا ما يكون كذلك).

فاصل الثقة

An 80% probability band showing the realistic range. Example: "You will likely close between $45,000 and $72,000 this quarter."

ما الذي تغير ولماذا

تشمل التنبؤات إسناد التغيير من أسبوع إلى آخر. $15,000 التقرير يشرح بالضبط أي الصفقات تسببت في هذا التغيير: "الصفقة أ انزلقت إلى الربع القادم ($8,000)، الصفقة باء المفقودة($5,000)الصفقة جيم($2,000)."

تتبع الدقة

التوقعات

السوء: كم من الوقت بعيد عن توقعاتك كان تاريخياً.15% يعني أن توقعاتك في العادة 15% من النتائج الفعلية.

معايرة احتمال الفوز

درجة براير التي تقيس مدى تطابق احتمالات الفوز مع النتائج الفعلية.70% احتمال الفوز فعلا.70% في معظم الأوقات، المعايرة جيدة.

لقطات أسبوعية

OpsIQ يلتقط لقطة من تنبؤك كل أسبوع (عن طريق cron). مع مرور الوقت، يمكنك أن ترى كيف تتحسن دقة التنبؤ.

باء - النشرات والتحذيرات

التحويل حسب المرحلة

How many deals move from each stage to the next. If 80% pass from Qualified to Proposal but only 20% go from Proposal to Negotiation, your proposals might need work.

معدل الفوز لكل مصدر

Which lead sources produce the most wins. Invest more in high-win-rate sources.

الأداء لكل مالك

كيف يعمل كل عضو من أعضاء فريق المبيعات: الصفقات التي فاز بها، وقيمة الأنبوب، متوسط حجم الصفقة، معدل الفوز.

تحذيرات

(أ) الالتزام المفرط (احتمالات منخفضة بصورة غير واقعية)، والالتزام الزائد (ارتفاع الاحتمالات بصورة لا واقعية) والالتزم بالمخاطرة (الصفقات ذات الاحتمال العالي التي تظهر إشارات تعثر).

فهم انخفاض التنبؤ

السيناريو:
توقعاتك ربع السنوية انخفضت من $180,000 إلى $155,000 منذ الأسبوع الماضي
ماذا نفعل:

افتح الصفحة وتحقق من "ما الذي تغير" التقرير يبين: "صفقة شركة (أكيمي)$15,000 انتقلت إلى المفقودين والمنافسين الذين تم اختيارهم.$8,000 موعد قريب تم دفعه إلى الربع المقبل صفقة جديدة مع (غاما ل.$3,000 أضف هذا الأسبوع "التغير الصافي هو...$20,000 + $3,000 = -$17,000(ب) شرح الانخفاض من 180 ألف دولار إلى 163 كيلو غراماً (مع بيان المبلغ المتبقي وقدره 8 كحولي موضحاً بتسويات احتمالية بشأن صفقات أخرى).

CRM

إيجاد أعمال تجارية جديدة

يساعدك وكيل الاستقطاب في العثور على العملاء المحتملين والبحث عنهم. حدد عميلك المثالي، وأضف الشركات المستهدفة، ثم دعه يقوم بالبحث والتسعير وصياغة التواصل الأولي.

استهداف
استهدافقائمة بالشركات المحتملة التي تجدها الذكاء الاصطناعي مع ملاحظات ملائمة، وعلامات وأزرار مسودة الاتصال لكل منها.استهدافمساحة العملالتوقعات التي حددها وكيل حقوق السحب الخاصةشركة نورثويند المحدودةSaaS · 50 staff · hiring support88مشروع التوعيةمصنع الكوبالتالتصنيع 200 الموظفون الدوليون74مشروع التوعيةميسا للتجزئةالتجارة الإلكترونية 30 الموظفون الدوليون69مشروع التوعيةمنظمة فيغا للصحةالرعاية الصحية 80 الموظفون الدوليون63مشروع التوعية1FINDمصادر الحسابات المستهدفة للذكاء الاصطناعي2النتيجةترتيب الصلاحية والقصد3DRAFTأول لمس مكتوب لك
وكيل حقوق السحب الخاصة يجد الشركات المستهدفة، يسجلها على ملاءمة، وصياغة الاتصال الأولي لمراجعتك.

إنشاء لمرة واحدة

1
وصف عميلك المثالي

اذهب إلى CRM Configuration> Prospecting. وصف ملف العميل المثالي (ICP): الصناعات المستهدفة، أحجام الشركات، ألقاب الوظائف، التركيز الجغرافي، شروط مطابقة المنتج، والحد الأدنى من معدل التكيف.50-500 موظفين في الولايات المتحدة / المملكة المتحدة، بيع أدوات المطورين، مع نائب رئيس المبيعات أو رئيس النمو كجهة الاتصال الرئيسية."

2
إضافة الشركات المستهدفة

لقد أصبحت هذه الخدمة متاحة الآن. فأدخل أسماء الشركات أو الأسماء التي تريد البحث عنها. ويمكنك أيضاً أن تترك الذكاء الاصطناعي يقترح الشركات بناء على معلوماتك المتعلقة بالشركات.

3
استعراض نتائج البحوث

ويثري الذكاء الاصطناعي كل شركة بالبيانات المتاحة: الحجم، والصناعة، ومجموعة التكنولوجيا، والأخبار الأخيرة، ودرجـة الملاءمة مع الشرح.

4
الموافقة على التوعية

وبالنسبة للشركات المناسبة، يقوم الذكاء الاصطناعي بصياغة رسالة شخصية أولى. ثم يتم مراجعتها والموافقة عليها في الصفوف.

تقييم التوافق

يحصل كل محتمل على0-100 (أ) درجة ملاءمة تستند إلى خمسة عوامل:

ملاءمة ICP

:: مدى مطابقة الشركة لسمات عميلك المثالي (الصناعة، الحجم، الموقع).

إشارات الطوارئ

هل هناك دليل على أنهم بحاجة إلى منتجك الآن؟ الإعلانات عن وظائف، والتغيرات التقنية، والشكاوى بشأن المنافسين.

الميزانية بالوكالة

ويشير حجم الشركة ومرحلة التمويل ومؤشرات الإيرادات إلى توافر الميزانية.

مطابقة المنتجات

مدى صلة منتجك بأعمالهم التجارية القائمة على الصناعة والتكنولوجيا.

دعم ملائم

ما إذا كنت تستطيع خدمة هذا العميل بفعالية (المنطقة الزمنية، اللغة، التعقيد).

إجراء بحوث بشأن شركة مستهدفة

السيناريو:
تريد تقييم ما إذا كان acme.com تستحق المتابعه.
ماذا نفعل:

Add acme.com to the prospecting list. The AI returns: Fit score 78/100 (good fit). Reasons: B2B SaaS, 120 employees, US-based, recently hired a VP of Sales (urgency signal), uses competitor X (product match). Buying signals: visited your pricing page twice last month (from website tracking). Best contact: [email protected] (VP of Sales). Drafted opener references their recent hiring and pricing page visits.

CRM

تسلسلات المتابعة الآلية

التسلسلات أتمتة متابعة متعددة الخطوات: مزيج من البريد الإلكتروني، الانتظار، المهمة، المكالمة، وخطوات webhook التي تجري تلقائيا بعد أن توافق على الإرسال الأولي.

التسلسل
سلسلة المتابعةتدفق متسلسل أفقي: البريد الإلكتروني، الانتظار ثلاثة أيام، البريد الإلكترونى، ثم مهمة مع كشف الردّ.سلسلة المتابعةمساحة العملبعد أن توافق على أول إرسال →البريد الإلكترونيمقدمةانتظر3 أيامالبريد الإلكترونيدال - المتابعةمهمةاتصاليمكن أن تكون الخطوات البريد الإلكتروني أو الانتظار أو المهمة أو الويب، والرد على التسلسل تلقائياً.1AUTOMATEالمتابعة المتعددة الخطوات2STEPSالبريد الإلكتروني · الانتظار · المهمة · شبكة الويب3YOU APPROVEالإرسال الأول مغلقة
المتابعة الآلية المتعددة الخطوات (البريد الإلكتروني، الانتظار، البريد الإلكتروني، المهمة) التي توافق عليها أولاً وتتوقف الرد تلقائياً.

كيف تعمل التسلسلات

1
إنشاء تسلسل

تحديد الخطوات: البريد الإلكتروني، الانتظار 3 أيام، بريد إلكتروني، الانتظار 5 يوم، مهمة (الاتصال إذا لم يكن هناك رد)، البريد الإلكتروني.

2
تسجيل الاتصالات

إضافة جهات الاتصال إلى التسلسل - قد تقترح الآلية أيضاً التسجيل من نتائج التنقيب.

3
التنفيذ الآلي

الخطوات تجري تلقائيا في الجدول الزمني. إذا رد أحد الاتصالات في أي وقت، يتم إيقاف التسلسل تلقائية.

4
تتبع النتائج

انظر معدلات فتح، ومعدلات الرد، وأسعار التحويل، والانسحاب من كل خطوة. استخدم هذا لتحسين تسلسلك.

الرد على التفاهم

وعندما يرد أحد جهات الاتصال، تصنف آلية الاستجابة الرد على النحو التالي:

إيجابية

مهتم، يريد التحدث التسلسل يتوقف المهمة أنشئت للمتابعة

الاعتراض

توقف التسلسل، وإنشاء المهمة مع تفاصيل الاعتراض.

إلغاء الاشتراك

يريد التوقف عن تلقي الرسائل.

ليس الآن

مهتم لكن التوقيت خاطئ التسلسل يتوقف، المهمة المنعشة أنشئت

الشخص الخطأ

ليس الاتصال الصحيح التسلسل يتوقف، الإتصال معلّم للمراجعة

الدعم

سؤال دعم، ليس رداً على المبيعات توقف التسلسل، و أنشئت البطاقة

حماية من الرسائل الإلكترونية غير المرغوب فيها

معالجة حالات الخروج

ويتم احترام طلبات إلغاء الاشتراك فورا ويُحذف الاتصال من جميع التسلسلات في المستقبل.

الحد الأقصى اليومي للإرسال

الحد اليومي على مستوى حيز العمل (الافتراضي: 1,000 رسائل البريد الإلكتروني).

الحد الأقصى لكل اتصال

الحد الأقصى 1 ويحول دون إغراق الأفراد بالرسائل.

معالجة الزيادة في الحد الأقصى

وتؤجل الخطوات التي تتجاوز الحد الأقصى اليومي إلى اليوم التالي، ولا يتم التخلي عنها أو تجاوزها أبدا.

ماذا يحدث إذا فتح أحد الأشخاص وثيقة دعم خلال تسلسل؟+

ويتم تعليق التسلسل تلقائيا، ويحظى الدعم بالأولوية على التوعية، ويمكن استئناف التسلسل بصورة يدوية بعد حل مسألة الدعم.

هل يمكنني اختبار خطوات التسلسل A/B؟+

ليس مباشرة داخل التسلسلات، ولكن يمكنك إنشاء تسلسلين مع رسائل مختلفة ومقارنة نتائجهما.

CRM

أدوات النمو

صفحة واحدةCRMالذي يحمل محرك النمو: الإيرادات المتكررة (MRR/ARR)، وقائمة المنتجات، واستمارات الرصاص، والربط بين الحجز، وخطوط القيادة.CRMإذاً، عرض شكلي أو مكالمة مُحجزة هو إتصال مع التاريخ وليس صفاً في صحيفة منتشرة

ماذا يعيش على الصفحة

الإيرادات المتكررة

الإيرادات

MRR و ARR مسقط من دفتر الفواتير الحقيقية. الاشتراكات مجمعة من المدفوعات لكل منصة، دورة الفواتر يستنتج من فجوات السداد، وانقضاء الاشتراك عندما يكون سداد متأخراً بعد 1.5 أضعاف دورته. العملاء الربط إلى CRM الاتصالات تلقائياً عندما يحمل دفتر الأستاذ بريدهم الإلكتروني.

فهرس المنتجات

فهرس

مصدر واحد للحقيقة لما تبيعه، وأسعار العرض تسحب الاسم والسعر من الكتالوج، وقيم العرض المقبولة تتراكم في العائدات حسب المنتج، وأرشيف المنتجات لا يتم حذفه أبداً.

استمارات الرصيد

التقاط

كل استمارة تحصل على صفحة مستضافة بالإضافة إلى رمز إدراج iframe لموقعك الخاص. وتصبح الطلبات جهات اتصال، ويتلقى المالك إشعارًا، وتسند قواعد التوجيه الرائد.

روابط الحجز

الجدول الزمني

تقاسم رابط، دع المرتقبين يختارون مكانا حرا. المجالات تحترم ساعات عمل المنظم، المنطقة الزمنية والاجتماعات الموجودة. الحجز ينشئ الاجتماع، ويرسل تأكيدا بالبريد الإلكتروني للمحتمل ويخطر المنظم.

توجيه الرصيد

التوجيه

وتسير قواعد الإقليم أولا ثم القواعد الميدانية )مطابقة حقل مثل البلد أو المصدر(، ثم تدور حول مجمع المندوبين، وهي توجهات إلى شركة CONTACTS و DEALS على حد سواء، أيا كان وضع الاتفاق: فلا تزال الصفقة المربحة تحتاج إلى مالك للعناية بلجنة المسؤولية عن الحسابات والمتابعة، وفي طريقة إبراز المالك أو الفريق لا يُعتبر سجلا غير معروف للجميع إلا مديرا.

إنشاء استمارتك الأولى

1
أدوات النمو المفتوح

اذهب إلى CRM، ثم أدوات النمو، ثم قسم استمارات القبض على الرائد.

2
اسمه واختار الحقول

اكتب اسماً وقائمة حقول مفصولة بفاصلة، مثل الاسم، البريد الإلكتروني، الهاتف، الرسالة. البريد الإلكترونى مطلوب دائماً.

3
تقاسم أو إدراج

نسخ الرابط المستضاف لتقاسمها في أي مكان، أو نسخ رمز إدراج ولصقها في أية صفحة من موقعك على شبكة الإنترنت.

4
راقبي وصول الدلائل

كُلّ طلب هوCRMالاتصال بالاستمارة، النشاط المقدم، إخطار المالك، والطرق التلقائية.

💡
تستخدم صفحات التقاط البيانات العامة عنوان مساحة عملك الخاص. تستخدم مساحات العمل السحابية نطاقها الفرعي المخصص (company.opsiq. help)، وبالتالي فإن الرابط يقوم دائمًا بحل البيانات الصحيحة.

وسائل الحماية المدمجة

الروبوتات ترى النجاح، أنت لا ترى شيئاً

حقل honeypot مخفي يرفض بصمت التقارير الروبوتية.

المعدل المحدود

عشرة عروض في الساعة لكل عنوان IP عبر الاستمارات والحجز.

الموافقة تبقى صادقة

إن تقديم استمارة لا يمنح موافقة التسويق، بل فقط مربع الموافقة الصريحة.

لا حجز مزدوج

ويعاد التحقق من صحة المواعيد المحددة في ضوء إجراء فحص جديد للتوافر وقت الحجز.

من أين تأتي بيانات الإيرادات المتكررة؟+

من نفس دفتر الأستاذ التجاري الذي تستخدمه صفحة المبيعات الخاصة بك، وتغذيه عن طريق وصلات الفواتير. استخدم إعادة التزامن من الفواتر بعد ربط منصة جديدة.

هل يمكنني استخدام الاستمارات دون موقع على شبكة الإنترنت؟+

نعم، لكل استمارة صفحة مستضافة على عنوانك الخاص يعمل بشكل مستقل، مع أو بدون JavaScript.

CRM

مركز إرسال الرسائل (SMS و WhatsApp)

وصلة واحدة، ما يصل إلى عشرين بوابة. ربط مقدمي خدمات الرسائل القصيرة وWhatsApp التي تستخدمها بالفعل، وعلامة واحد كافتراضي، واختار أيا منهم عند إرسال رسالة نصية إلى أحد الاتصالات. الموافقة يتم التحقق من قبل CRM قبل أي بوابة يتم الاتصال بها.

ضعها

1
تشغيل الموصل

في صفحة موصلات، افتح مركز الرسائل (SMS و WhatsApp) وتفعيله.

2
إضافة مقدم

في نفس الدرج، أو في CRM Growth Tools، اختر بوابة من القائمة المنسدلة (Twilio, Vonage, Termii, Meta WhatsApp Cloud, Infobip وغيرها)، لصق معلوماته الشخصية API والاتصال. يمكنك إضافة العديد منها، بما في ذلك البوابة نفسها مرتين مع حسابات مختلفة.

3
أنا أريد أن أذهب

يُظهر كلّ مدخل من المُقدِّمين موقعه الشبكي الخاص بهURLمع زر النسخ، اقطعه إلى بوابة تسليم وزوارع متحركة للحصول على حالة التسليمOpsIQ.

4
إرسال من جهة الاتصال

افتح اتصال واستخدام زر الرسائل القصيرة أو WhatsApp. إذا كان أكثر من مقدم واحد يدعم القناة، فإن الاختيار يتيح لك اختيار؛ وإلا تستخدم الافتراضية.

الموافقة أولا

الموافقة الممنوحة فقط

إن الموافقة المجهولة ليست موافقة. فالإرسال يرفض ما لم تُمنح الموافقات على الرسائل النصية القصيرة بشكل صريح. WhatsApp يركب نفس الموافقة.

لا تتصل دائما يربح

علم عدم الاتصال يحجب كل قناة، بغض النظر عما هو محدد.

تم الامتثال للإلغاء

لا ترسل الرسائل إلى جهات الاتصال المدرجة في قائمة الإلغاء.

ذكر أسباب الرفض

الإرسال المُعطل يخبرك بالضبط لماذا، لذا يمكنك إصلاح البيانات بدلاً من التخمين.

بالنسبة للمطورين: عقد Webhook

شكل URL

https://your-address/opsiq/cron/messaging_webhook.php?sk=SITE_KEY&e=ENTRY_ID&t=TOKEN. يتم إصدار الرموز لكل دخول عندما يكون مقدم الخدمة متصلاً ولا يدور أبداً عند التحرير.

الأشكال المفهمة

Twilio form posts (MessageStatus/MessageSid for delivery, Body/From for inbound), Meta WhatsApp Cloud JSON (statuses and messages, including the hub.challenge subscription handshake), and a generic JSON shape: {"type":"delivery","message_id":"...","status":"delivered"} or {"type":"inbound","from":"+234...","body":"..."}.

الآثار

تقوم تقارير التسليم بختم سطر دفتر الأستاذ الخاص بالاتصال الذي يحمل هوية رسالة مقدم الخدمة على أنه مسلّم أو عائدة. وتطابق الرسائل الواردة الاتصال بحسب رقم الهاتف داخل حيز العمل، وتهبط كنشاط message. received، وتشير إلى المحادثة التي تم الرد عليها.

طريقة الفشل

الرموز الخاطئة أو المفقودة تجيب 403. الحمولات المجهولة تُعدّ وتُتجاهل، ولا تكون قاتلة أبداً، لذلك لا يمكن لبوابة غير محسّنة أن تكسر النقطة النهائية.

ما هي البوابات المدعومة؟+

Twilio, Vonage, Plivo, MessageBird, Sinch, Infobip, Telnyx, ClickSend, Termii, Africa's Talking, BulkSMS, Textlocal, Meta WhatsApp Cloud, 360dialog, SMSAPI, Gupshup, Kaleyra, D7 Networks, Hubtel, و Webhook HTTPS مخصص لأي شيء آخر.

هل وثائق التفويض آمنة؟+

تُخزّن بيانات الاعتماد مشفرة في إعدادات الموصول ولا تعود أبداً إلى المتصفح. تعديل مدخل مع سر فارغ يحافظ على المدخل المخزن.

هل يمكن للذكاء الاصطناعي إرسال رسائل؟+

نعم، من خلال الإجراءات المسجلة التي تتطلب التأكيد وتدير نفس بوابة الموافقة. ويمكن للذكاء الاصطناعي أيضا قائمة مقدمي الخدمات المتصلين لشرح ما هو متاح.

CRM

الاحتفاظ بالعملاء وزيادة عددهم

تساعدك إدارة دورة الحياة في حماية العائدات القائمة. ويحصل كل حساب على درجة مخاطرة الانقطاع، ودرجة صحة، ونتيجة للتوسع، وكتاب لعب ناجح موصى به.

دورة الحياة
مجلس دورة الحياةلوحة لدراجة الزبائن (اللوح، والنشاط، والخطر، والتجديد) مع قضبان صحية على كل بطاقة حساب.دورة الحياةمساحة العملالصعود إلى الطائرةأكميالصحة 40النشطونغلوبكسالصحة 88Initechالصحة 76ألف - AT-RISKسويلينتالصحة 28تجديدأومبراتجدد في 12 يوماالتوسع + 8 آلاف دولار1STAGESمن الإلحاق إلى التجديد2SCOREDالصحة والتوسع3PLAYBOOKالخطوة التالية الموصى بها
وينتقل الزبائن من خلال الدخول، والنشاط، والمخاطرة والتجديد، كل واحد منهم يسجل في الصحة والتوسع بكتاب اللعب.

مجلس دورة الحياة

خريطة المرحلة

لوحة بصرية تبين مكان كل حساب: الإمكانات، الاحتمالات، الفرص، الزبائن، التوسع، التجديد، المعرضون للخطر، المنقطعون.

الحسابات المعرضة للخطر

الحسابات التي تحمل علامة خطر الانقطاع المرتفع - يظهر كل منها أكبر محرك (ذروة الدعم، عدم النشاط، فشل السداد) وحفظ موصى به.

فرص التوسع

الحسابات التي تظهر إشارات الاستعداد لشراء المزيد: ارتفاع معدل الاستخدام، وطلبات المميزات، والاستفسارات عن الخطط.

المدة المستحقة للتجديد

الحسابات التي تنتظر تجديدها، مصنفة حسب مستوى المخاطر وقيمة الإيرادات.

كيف تكتشف OpsIQ مخاطر التناقص

ويحسب خطر التناقص من الإشارات المتعددة المدمجة معاً:

إشارات CRM

صحة الصفقة، عدم النشاط، الخسائر الأخيرة، انخفاض المشاركة.

إشارات الدعم

عدد التذاكر المفتوحة، الارتفاعات في حجم التذاكرة، المشاعر السلبية، التصعيد.

المشاركة في منتجات

تواتر الدخول، استخدام الخصائص، زيارات الصفحات، API المكالمات.

إشارات الفواتير

عدم دفع المدفوعات، والفواتير المتأخرة، وطلبات خفض الرتبة، والزيارات إلى صفحات الإلغاء.

كتب اللعب

حفظ اللعبة

بالنسبة للحسابات المعرضة للمخاطر: الاتصال بصورة استباقية، ومعالجة الشواغل، وتقديم الدعم، والارتقاء بالمستوى عند الضرورة.

لعبة التجديد

بالنسبة للتجديدات المقبلة: تأكيد الرضا، واستعراض الاستخدام، والقيمة الحالية، وتقديم حافز إذا كان ذلك مناسباً.

لعبة التوسع

بالنسبة للحسابات الجاهزة للنمو: عرض خيارات التحسين، وتبادل قصص النجاح، وإظهار عائد الاستثمار.

مسرحية التبني

بالنسبة للحسابات التي لا تستخدمها بشكل كاف: توفير التدريب، وتبادل أفضل الممارسات، وتمكين الخصائص التي لا يستخدمونها.

اكتشاف فقدان العملاء قبل حدوثه

السيناريو:
العميل الذي يدخل عادة يوميا لم يسجل لفترة طويلة 2 وفتحوا 3 تذاكر دعم هذا الشهر.
ماذا نفعل:

يشير مجلس دورة الحياة إلى هذا الحساب على أنه "معرض للخطر" مع محركات: عدم النشاط (14 أيام منذ آخر تسجيل دخول) وذروة الدعم (_3x حجم التذكرة العادية). اللعب الموصى به: مكالمة توعية استباقية لفهم ما يحدث. هل هناك مشكلة في المنتج؟ هل هم يقيّمون المنافسين؟ يمكن للتدخل المبكر إنقاذ الحساب.

CRM

الحفاظ على نظافة بياناتك

ويقوم وكيل أمين البيانات تلقائيا بتحديد وإصلاح المسائل المتعلقة بنوعية البيانات: الازدواجية، والحقول المفقودة، والتناقضات، والسجلات المتقادمة.

أمين البيانات
أمين البياناتقائمة بقضايا نوعية البيانات (التكرار، المفقود، البقايا، الشكل)، كل منها عمل محدد واحد.أمين البياناتمساحة العملمشاكل البيانات التي وجدها وكيل الرقابةالازدواجية[email protected] و [email protected]دمجالمفقودون12 لا توجد شركة لديهمإثراءعفا عليها الزمن38الصفقات غير الممسوحة90+ أيامألف - الاستعراضالشكلأرقام الهاتف 4 الأشكالإصلاح كل شيء1CATCHESوثائق مزورة، وثغرات، ووثائق بالية2EXPLAINSلماذا حدد كل3FIXESبموافقتكم
عميل (ستيوارد) يبقيكCRMنظيفة، العثور على ازدواجية وثغرات وسجلات ثابتة وأشكال سيئة

ماذا يصطاد

الاتصالات المزدوجة

:: وجود سجلات متعددة لنفس الشخص (مثلا: ) [email protected] و [email protected] ويقترح القيّم دمجهما.

البيانات الناقصة

اتصالات بدون البريد الإلكتروني، صفقات دون مبالغ، شركات بدون مجال مقترح ملء من المصادر المتاحة.

السجلات غير المرتبطة

تعاملات بدون جهات اتصال مرتبطة، جهات الاتصال دون الشركات. يقترح الربط على أساس مجال البريد الإلكتروني والسياق.

أوجه عدم الاتساق

صفقة في مرحلة "الفوز" مع احتمالية 20% ، واتصال يحمل علامة "عميل" بدون صفقات، وشركة ذات صناعة غير متطابقة.

المراحل الخاطئة

:: الصفقات التي ظلت في نفس المرحلة لفترة طويلة أو الاتصالات التي لا تتطابق مرحلة دورة حياتها مع نشاطها.

كيف تستخدم

1
افتح قائمة المشرفين

اذهب إلى CRM واختر قسم Data Steward (أو افتحه من CRM Health).

2
الموافقة على الحلول الآمنة

البنود الخضراء آمنة: بيانات مزدوجة واضحة، وبيانات مفقودة بوضوح.

3
استعراض الباقي

البنود التي تحمل العلامة الكهرمية بحاجة إلى حكمكم: ازدواجية محتملة مع اختلافات طفيفة، تغييرات مقترحة في المراحل، ربط الشركات.

تنظيف الاتصالات المزدوجة

السيناريو:
وجد المرشد "جون سميث"[email protected] و "جي سميث"[email protected] نفس البريد الإلكتروني، أسماء مختلفة للعرض
ماذا نفعل:

يقترح القيّم دمج السجل: الاحتفاظ بالسجل مع المزيد من النشاط، ودمج الصفقات والأنشطة الأخرى للسجل. مراجعة الاقتراح، وتعديل الاسم المُظهر المتبقي إذا لزم الأمر، والموافقة. يُحتفظ بتاريخ كلا السجلين في الاتصال المدمج.

CRM

بنيت ليCRM

Build My CRM تسمح لك بوصف نظام إدارة العلاقة مع العملاء الخاص بك باللغة الإنجليزية البسيطة. OpsIQ يولد خطة قابلة للرجوع عنها ومعتمدة وتطبقها عند الموافقة عليها. لا ترميز، ولا تنقر على التهيئة اليدوية.

بنيت ليCRM
بنيت ليCRMوصف باللغة الطبيعية على اليسار ينتج خطة CRM مولدة للمراحل والحقول والشرائح على اليمين.بنيت ليCRMمساحة العملوصف عملكنحن وكالة تصميم مواقعبيع الرسوم الشهرية المستحقةالمشاريع غير المتكررة إلى المشارع الصغيرةالأعمال التجارية.بنيت ليCRMالخطة المولدةالمراحل: الرصاص → المقيدأنواع الصفقات: المستأجر، المشروعالميدان: القيمة الشهريةالقطاعات: المشاريع الصغيرة والمتوسطة الحجم، والوكالاتالتسلسل: الإدماجالموافقة والتطبيق1DESCRIBEالإنكليزية البسيطة2AI PLANSالمراحل والميادين والشرائح3APPROVEتطبيقات: عدم الترميز
صف أعمالك بالإنجليزية السهلةOpsIQمشاريع الموادCRM(الصور، الحقول، الأجزاء) وتطبقه عند الموافقة.

كيف يعمل

1
حدد ما تريد

نوع وصف الإنجليزيةCRM"أعد خطاً للتجديد مع المراحل:

2
استعراض الخطة

OpsIQ يعرض مخططاً لما سينتجه: خط الأنابيب، المراحل، احتمالات المراحل وقواعد التصنيف وقواعد دورة الحياة.

3
تطبيق

انقر على تطبيق لتنفيذ الخطة. كل تغيير مسجل كحزمة يمكنك إلغائها بنقرة واحدة.

4
التراجع إذا لزم الأمر

إذا كان هناك شيء غير صحيح، انقر على إلغاء لإعادة الحزمة بأكملها. CRM يعود إلى حالته السابقة.

ماذا يمكنك أن تبني

خطوط الأنابيب والمراحل

إنشاء خطوط أنابيب مسماة مع المراحل الشخصية، الاحتمالات الافتراضية، وعتبات الفساد.

قواعد التسجيل

تعزيز العلامات الرئيسية استنادا إلى السلوك: "العلامة الأعلى عندما ينظرون في التسعير،" "العلامات الأدنى عندما يزوران صفحة الوظائف."

قواعد دورة الحياة

تقدم تلقائيا مراحل دورة الحياة: "انتقل إلى SQL عندما يطلبون عرضا بيانيا،" "انتقال إلى العميل عند الفوز بالصفقة."

الحقول المخصصة

إضافة الحقول إلى الاتصالات، أو الصفقات، أو الشركات: النص، الرقم، التاريخ، انتقِ، مربع التحقق، URL، البريد الإلكتروني.

قائمة مرجعية للمؤهلات

حدد القائمة المرجعية MEDDICC أو BANT التي يقوم التدريب على الصفقات بتحديد درجات مقابلها.

إنشاء خطة للتجديد

السيناريو:
أنت تدير الاشتراكات في برنامج حاسوبي كخدمة وتحتاج إلى قناة لتجديدها.
ماذا نفعل:

Type: "Create a renewal pipeline. Stages: 90 Days Out (10%), 60 Days Out (25%), Contacted (40%), Negotiating (60%), Renewed (100%), Churned (0%). Set the rotting threshold to 14 days." OpsIQ generates the plan, you review it, and click Apply. The pipeline appears on your Pipeline page immediately.

ماذا لو وصفت شيئاً غير ممكن؟+

يقوم البنّاء فقط بتوليد أفعال يعرف كيفية التحقق منها. إذا طلبت شيئًا خارج قدراته (مثل "دمج مع API الخاص بي")، فإنه سيرفض الطلب ويشرح ما يمكن أن يفعله بدلاً من ذلك.

هل يمكنني إلغاء التغييرات؟+

أجل، كلّ من بنوا ابنيCRMتم القبض على العمل كحزمة قابلة للعكسCRMتغيير التاريخ ليرى كل الحزم و يفك أي منها

CRM

تجهزين نفسكCRMطريقك

الدليلCRMتشكيلة لفرق تفضّل النقر على الكتابة، كل الأماكن التي بنيت فيها سيارتيCRMويمكن أن يخلق أيضاً كمجالات تقليدية للشكل.

خطوط الأنابيب والمراحل

إنشاء، وإعادة تسمية، وتغيير الترتيب، وحذف خطوط الأنابيب والمراحل. وضع احتمال الفوز الافتراضي لكل مرحلة. وضع العتبة للتحلل (الأيام بدون نشاط قبل أن توضع علامة "متوقف") على الصفقة.

الحقول المخصصة

إضافة الحقول إلى الصفقات أو الاتصالات أو الشركات. أنواع الحقل: نص، رقم، تاريخ، اختيار (قائمة تنازلية مع خيارات محددة مسبقا)، مربع التحقق، URL وتظهر الحقول المخصصة في ملف الكائن وفي المرشحات.

قائمة مرجعية للمؤهلات

حدد القائمة المرجعية التي يستخدمها مدرب الصفقات لتقييم الصفقات. اختار MEDDICC أو BANT أو مجموعة معايير مخصصة. يمكن وضع علامة على كل بند باعتباره شرطيا أو اختياريا.

قواعد مراحل دورة الحياة

تحديد المراحل الانتقالية التلقائية: عندما يستوفي أحد الاتصالات شرطاً (ينظر في التسعير، أو يقدم استمارة، أو يشتري)، تتقدم مرحلته من دورة الحياة بصورة تلقائية.

قواعد تحديد نقاط التقدم

تعزيز أو خفض الدرجات القيادية استنادا إلى السلوك. أمثلة: "صفحة التسعير المشاهدة = +15 النقاط،" "الورقة البيضاء المحمولة = +10 نقطة،" "صفحة الوظائف التي تمت زيارتها=-5يمكن تحديد الحد الأدنى للعدّ (مثلاً، "يجب أن ينظر إلى التسعير على الأقل 10 مرات"). 2 times " ).

الرؤى المحفوظة

إنشاء اسم المرشح + ترتيب التركيبات للاتصالات، الصفقات أو الشركات. تقاسم وجهات النظر مع فريقك. تحديد نظرة افتراضية لكل نوع كائن.

إضافة قاعدة لتسجيل نقاط التقدم

السيناريو:
تريد الاتصالات الذين ينظرون إلى صفحة التسعير مرتين أو أكثر للحصول على درجة أعلى.
ماذا نفعل:

اذهب إلى CRM Configuration > Lead Scoring Rules. انقر على Add Rule. Set: Event = "pageview", URL يحتوي على = "/pricing الحد الأدنى للعدّ =2, تعزيز الدرجات = +20 في المرة القادمة التي يعمل فيها المسجل، ستحصل الاتصالات المطابقة لهذه القاعدة على +20 إلى رصيدهم المتقدم.

CRM

CRM الفحص الصحي

CRMالصحة هي صفحة تشخيص ذاتي تحقق منCRMتم إعداده بشكل صحيح و يعمل بسلاسة

فحص صحي
CRM فحص صحينقطة صحية في حلقة على 92 إلى جانب قائمة مرجعية للتحقق من النجاح والتشكيلة التحذيرية.CRM فحص صحيمساحة العمل92صحيةمراحل قيد التنفيذ تم تشكيلهاوصلة موصل & استيرادأفراد من الذكاء الاصطناعي تمكنوا!لا توجد متابعة نشطة!12 الاتصالات الشركة المفقودة1مراجعة الحساباتيتحقق من إعداداتك2FLAGSما هو المفقود3النتيجةعدد إجمالي واحد
صفحة واحدةCRMمراجعة الحسابات: تقييم صحي عام إضافة إلى قائمة مرجعية لما هو مُعدّ بشكل صحيح وما زال يحتاج إلى الاهتمام.

ما الذي يتحقق منه

المخطط

الجداول موجودة في قاعدة البيانات ولها الأعمدة الصحيحة، إذا لم يتم الترحيل، سيقوم نظام CRM Health بتعليم ذلك.

موظفو المساعدة الإنسانية

كل شيءCRMوكلاء (الاختبار، وسرقة البيانات، والاستخبارات التجارية، وما إلى ذلك) مسجلون وصحة.

الطرق

مسارات CRM API ونقاط النهاية AJAX مسجلة ويمكن استدعاؤها.

إجراءات العفو الدولية

ويسجل فهرس الإجراءات في سجل الإجراءات، وفي حالة عدم وجود أي إجراءات، يقوم نظام CRM Health بمعالجتها ذاتيا عن طريق إعادة تسجيلها.

عدد البيانات الحية

مجموع الاتصالات والشركات والتجارة والمهام والأنشطة والأحداث، وهو مفيد للتحقق من الواردات وتسجيل البيانات المستمر.

بعد التحقق من التكوين

بعد تثبيت CRM للمرة الأولى، افتح صحة CRM والتحقق من أن جميع الفحوص خضراء. إذا كان أي منها كثيفة أو حمراء، انقر على البند لتوضيح التشخيص والإصلاح المقترح.

كم مرة يجب عليّ التحقق من صحة CRM؟+

تحقق بعد الإعداد الأولي، وبعد تحديثات رئيسية، ومتىCRMالسلوك يبدو خاطئاًCRMوتعالج الصحة ذاتها العديد من المسائل (مثل تسجيلات الإجراءات المفقودة) بمجرد فتح الصفحة.

CRM

CRM وصلات للمطورين

CRM يكشف عن REST API العام الكامل و Webhooks الصادرة بحيث أنها تتناسب مع أي كومة دون تصدير يدوي.

API نقاط النهاية

المصادقة

API (الإذن: ) Bearer (opq_...) مع النطاق crm.read أو crm.write. /api/v1.php مع action و site_key.

الاتصالات

crm. contacts. list (البحث + الترشيح)، و crm-contacts-detail (حسب الهوية)، وcrm-connects-upsert (إنشاء أو تحديث)، و

الصفقات

crm. deals. list, crm. deal. detail, crmeals. create, crmmeals. update, crmials. advance (جميعها من خلال طبقة الثقة).

ثالثا - الأنشطة

crm. activities. list (الجدول الزمني للاتصال/التفاوض)، و crm-activities-record (تسجيل نشاط جديد).

الأحداث

crm. events. list (تغذية التغيير الدائم مع مؤشر since_id)، و crm. event. catalog (قائمة أنواع الأحداث المتاحة).

إنشاء صفقة من خلال API
POST /api/v1.php
Authorization: Bearer opq_live_xxx
Content-Type: application/json

{
  "action": "crm.deals.create",
  "site_key": "<workspace>",
  "title": "Acme renewal",
  "amount": 12000,
  "pipeline_id": 1,
  "stage_id": 2
}

أحداث شبكة الويب

opsiq.contact.upsert

مطرود عند إنشاء أو تحديث الاتصال، وهذا هو حدث الاتصال الذي سيشترك فيه؛ ولا يوجد حدث منفصل.

contact.lifecycle_changed

مطرود عندما ينتقل اتصال إلى مرحلة مختلفة من دورة الحياة

contact.status_changed

مطرود عندما يتغير وضع الاتصال

contact.conversion

مطرود عندما يتم تسجيل التحويل ضد اتصال

contact.tag_added

مطرود عندما يضاف علامة إلى اتصال.

contact.erased

مطرود عندما يتم محو الإتصال لطلب الخصوصية

crm.deal.created

مطرود عندما يتم عقد صفقة

crm.deal.stage_changed

يطلق عندما تتحرك الصفقة إلى مرحلة مختلفة

crm.deal.won

يطلق عندما تغلق الصفقة كما لو أنها ربحت

crm.deal.lost

يطلق عندما تغلق الصفقة كخسارة

crm.company.created

مطرود عندما يتم إنشاء شركة

crm.task.created

يطلق عند إنشاء مهمة جديدة (يدويا أو بواسطة الذكاء الاصطناعي).

email.replied

أطلق النار عندما يرد اتصال على رسالة إلكترونية للاتصال.

email.bounced

مطرود عندما يقفز بريد إلكتروني

💡
اتصال webhooks.events.list بالنسبة للمجموعة الموثوقة في تركيبك، مع حمولة كل حدث، وهي متولدة من رمز التسليم نفسه، حتى لا يخالف أبداً ما يصل فعلاً، كما ترد القائمة الكاملة في قسم ويب هوكس.

جميع أحداث webhook موقعة من قبل HMAC ويتم إعادة محاولة في حالة الفشل. اشترك في URL في الإعدادات > Webhooks، أو استطلع crm. events. list مع since_id لتلقي تغذية دائمة للتغيير.

Syncing CRM contacts to Google Sheets

السيناريو:
تريد أن يظهر كل اتصال جديد بـ CRM في Google ورقة لفريق التسويق الخاص بك.
ماذا نفعل:

إنشاء مشترٍ لـ webhook opsiq.contact.upsert أشير إليها Google تطبيق شبكي أو خدمة Zapier شبكة URLتتضمن الحمولة اسم الاتصال، والبريد الإلكتروني، والشركة، ودرجة القيادة، والمصدر. النص الخاص بك يضيف صفا إلى Google صحيفة لكل اتصال جديد.

CRM

الأجزاء

Segments save reusable contactfilters for CRM(ب) الآراء والتوعية والترقية وغير ذلك من الأدوات التي توعي الجماهير.

فرز المنتجات
الأجزاءويجمع محرر القطاع بين الشروط، ويبين عدد المطابقات الحية ويسمح للمشغل باختيار مرشح حي أو لقطة حية.الأجزاءمساحة العملالوضعمباشرLOGICجميعMATCHES1,248عرض الحيز العمليمرحلة الزبونيساوي العميل النشطRuleآخر نشاطفي حدود 30 أيامRuleالبلدالمملكة المتحدةRuleالنية العاليةدرجة على الأقل 70Rule1CHOOSE MODEمباشرة أو لحظية2ADD RULESكلها أو أي منها3REUSEحملات وحملاتCRM
ويجمع محرر القطاع بين الشروط، ويبين عدد المطابقات الحية ويسمح للمشغل باختيار مرشح حي أو لقطة حية.

A الجزء الحي )أ( يعاد حسابها من البيانات الحالية كلما استخدمت. صورة سريعة تجميد قائمة الأعضاء الحالية، وهو أمر مفيد عندما لا يتغير جمهور التوعية بعد الموافقة.

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

CRM

تقييم الخبرة

وتحوّل قواعد تقدير الدرجات السلوكية وإشارات السمات إلى درجات متسقة يمكن أن تستخدمها المبيعات والتشغيل الآلي.

فرز المنتجات
تقييم الخبرةيظهر تسجيل النقاط القواعد النشطة، والنافذة المتحركة وتغيير النقاط الإيجابية أو السلبية التي تنطبق عليها كل قاعدة.تقييم الخبرةمساحة العملالقواعد12SCORED8,412HOT LEADS286عرض الحيز العملينشاط التسعير3+ زيارات في 14 أيام+20شراء الكلمات الرئيسيةأو المشاريع+15مخاطر الدعمحدث الشكاوى في 30 أيام-10مصدر موثوقإحالة الشريك+121DESCRIBE RULEاستخدام الإنكليزية البسيطة2REVIEW FIELDSإشارة، نافذة، نقاط3RESCOREتطبيق على حيز العمل
يظهر تسجيل النقاط القواعد النشطة، والنافذة المتحركة وتغيير النقاط الإيجابية أو السلبية التي تنطبق عليها كل قاعدة.

إن بنّاء قواعد الذكاء الاصطناعي قادر على تحويل تعليمات باللغة الإنجليزية البسيطة إلى قاعدة محكمة. ولا يزال من الضروري مراجعة كل قاعدة قبل تفعيلها: تأكيد النشاط أو الكلمة الرئيسية، والحد الأدنى للعدّ، والنافذة المتحركة وتغيير النتيجة.

ويمكن أن تتعايش القواعد الإيجابية والسلبية. مساحة عمل Rescore ويمكن أن تغذي الدرجات الشريحة، وتحديد المسار، والتنقيب وشروط تدفق العمل.

CRM

سجل المبيعات

ويقارن سجل النتائج بين الممثلين باستخدام تحقيق الحصص، والإيرادات المكتسبة، والعمولات، والعملات المفتوحة للشهر المختار.

فرز المنتجات
سجل المبيعاتويرتب الجدول الشهري لممثلي المبيعات مع إبقاء الإيرادات المكتسبة والعمولات وخطوط الأنابيب المفتوحة مرئية.سجل المبيعاتمساحة العملPERIODJulyTEAM QUOTA82%فاز184 ألف جنيه استرلينيعرض الحيز العمليأمينة104% 62000 جنيه استرليني1st-حسناً88% 51 ألف جنيه استرليني2 - اللجنة الثانيةريتا76% 43 ألف جنيه استرلينيالثالثةقيد الإعداد312 ألف جنيه استرليني على مستوى الفريقألف - الاستعراض1CHOOSE MONTHمقارنة فترة واحدة2CHECK QUOTAالإنجازات حسب الممثل3COACHاستخدام سياق أنابيب التصدير
ويرتب الجدول الشهري لممثلي المبيعات مع إبقاء الإيرادات المكتسبة والعمولات وخطوط الأنابيب المفتوحة مرئية.

إن تحقيق الحصة ليس له معنى إلا عندما يكون لكل ممثل حصة حالية وتكون الصفقات لها المالك الصحيح، والمبلغ، والعملة، وحالة الإغلاق. استخدم سجل النتائج للتوجيه والاعتراف، وليس كمقياس للجودة الوحيد؛ واقترن مع صحة الصفقة، والنشاط، ودقة التنبؤ.

CRM

الموافقات على الصفقات

وتقتضي الموافقة على الصفقات توقيع المدير قبل إمكانية تحديد الصفقات العالية القيمة باعتبارها صفقة فاز بها.

فرز المنتجات
الموافقات على الصفقاتوتحدد سياسة الموافقة حدين أدنى للقيمة، ويبين الجدول القرارات المعلقة والموافق عليها والمرفوضة.الموافقات على الصفقاتمساحة العملPOLICYمفعلWAITING6OLDEST3hعرض الحيز العمليالمستوى 1الصفقات من £10,000مديرالمستوى 2الصفقات من £50,000كبار الموظفينتجديد المؤسسات£72,000 · طلبه بنمعلقمشروع الهجرة£18,500 · طلبته ريتاالمعتمد1SET THRESHOLDS0 تعطيل مستوى2REQUESTالممثل يقدم الصفقة3تقررالموافقة أو الرفض
وتحدد سياسة الموافقة حدين أدنى للقيمة، ويبين الجدول القرارات المعلقة والموافق عليها والمرفوضة.

Enable the policy and set Level 1 and Level 2 thresholds. A threshold of 0 عندما يحاول شخص غير مدير الفوز بصفقة عند العتبة أو فوقها، فإن OpsIQ ينشئ طلب موافقة بدلاً من تغيير المرحلة بصمت.

ولا تمنع السياسة المديرين والمسؤولين الإداريين الكاملي المسؤولية من اتخاذ قرارات، وينبغي أن يتضمن كل قرار اسم مقدم الطلب وصاحب الموافقة والوقت والأسباب التي تستدعي مراجعة الحسابات.

CRM

قواعد دورة الحياة

وتنقل قواعد دورة الحياة الاتصالات بين المراحل بصورة آلية عندما تتطابق بياناتها الحالية مع أحد الشروط المودعة.

فرز المنتجات
قواعد دورة الحياةويتم تقييم قواعد دورة الحياة حسب الأولوية؛ وتغير أول قاعدة مطابقة مرحلة الاتصال.قواعد دورة الحياةمساحة العملالنشطون7RUNSكل ليلةPRIORITYأعلى أولاًعرض الحيز العمليالرصاص → مؤهلالدرجة ≥ 60 والأنشطة التي اضطلع بها مؤخراًالأولوية 100المؤهلون → الزبائنحدث الشراء موجودالأولوية 90العميل → المعرض للخطرلا يوجد نشاط 60 أيامالأولوية 70في خطر → عميلالشراء الجديد أو الردالأولوية 601PICK STAGESمن وإلى2DEFINE FILTERنمط القسم JSON3ORDER RULESالفوز في المباراة الأولى
ويتم تقييم قواعد دورة الحياة حسب الأولوية؛ وتغير أول قاعدة مطابقة مرحلة الاتصال.

لكل قاعدة مرحلة مصدر، ومرحلة مقصد، وراية نشطة، وأولوية ومرشح على نمط القطاع. وتقوم مهمة دورة الحياة المقررة بتقييم الأولويات الأعلى أولا وتتوقف بعد أول مطابقة لاتصال.

يجب أن تكون القواعد مفهومة بشكل متبادل. تجنب قاعدتين نشطتين يمكنهما تحريك نفس الاتصال في اتجاهين متعارضين خلال نفس التشغيل. اختبر المرشح ضد شريحة قبل تنشيطه.

CRM

CRMالنشاط

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

فرز المنتجات
CRMالنشاطويتضمن تدفق الأنشطة أحداثا تتعلق بالدردشة والتذاكر والبريد الإلكتروني وشبكة الإنترنت والحوالات والأحداث الشاذة مع مرشحات وتصفح الصفحات.CRMالنشاطمساحة العملالأحداث2,804CUSTOMERS1,126ANOMALIES14عرض الحيز العمليتم حل الدردشة[email protected]الآنردت البطاقةT-1048 الفواتير4 دقائقالحدث الواردsubscription.upgraded12 دقيقةالتحويلرقم الطلب 7788 · £14919 دقيقة1FILTERالحدث والعميل2OPEN CONTEXTانظر السجل3PAGE RESULTSباء - إبقاء التحقيقات محدودة
ويتضمن تدفق الأنشطة أحداثا تتعلق بالدردشة والتذاكر والبريد الإلكتروني وشبكة الإنترنت والحوالات والأحداث الشاذة مع مرشحات وتصفح الصفحات.

الترشيح حسب نوع الحدث، التاريخ، الاتصال أو حالة العميل (بما في ذلك العملاء المدفوعين). التغذية هي نموذج قراءة للنشاط المسجل؛ وهي لا تحل محل سجل المصدر، أو محادثة، أو صفقة، أو وصل. افتح السجل المتصل قبل اتخاذ أي إجراء حساس.

CRM

تدفقات العمل

وتستجيب تدفقات العمل لحدث ما وتُجري سلسلة من الإجراءات المرتبة، بما في ذلك الخطوات المتأخرة التي يستأنفها برنامج Cron.

فرز المنتجات
تدفقات العملويظهر تنفيذ تدفق العمل ما يطلقه، والإجراءات المنجزة، والتأخير في الانتظار، والخطوة التالية.تدفقات العملمساحة العملالنشطون9RUNNING42فشلت1عرض الحيز العمليالمحفزcontact.createdابدأالخطوة 1إرسال رسالة ترحيب بالبريد الإلكترونيتمتأخيرالانتظار 2 أيامفي الانتظارالخطوة 2إنشاء مهمة مبيعاتالتالي1CHOOSE TRIGGERالحدث يبدأ السباق2ORDER STEPSالإجراءات والتأخيرات3MONITORاستئناف من خلال cron
ويظهر تنفيذ تدفق العمل ما يطلقه، والإجراءات المنجزة، والتأخير في الانتظار، والخطوة التالية.

إنشاء تدفق العمل عن طريق اختيار المحرك، وإضافة الخطوات بالترتيب وتفعيلها. التأخيرات مخزنة، لا تبقى على طلب المتصفح؛ cron الموحد يستأنف عند تشغيل تدفق عمل.

وتشمل النماذج البدائية الداخلة الترحيب بعد التسجيل، والشكر بعد الشراء والتأكيد التجريبي. استنساخ نموذج، واستبدال متلقيه/محتوياته، ثم الاختبار بسجل مراقب قبل التنشيط الواسع النطاق.

Design actions to be idempotent. A retry must not send duplicate money-moving requests or create duplicate records.

الدعم

تذاكر

التذاكر هي قناة الدعم الرسمية لديهم إدارات، أولوياتSLAأهداف، ملحقات، ملاحظات داخلية، وخياطة المحادثة كاملة يمكن أن تصل التذاكرOpsIQتنبيه، ونموذج/مقطع للتذكرة، والابتلاع عن طريق البريد الإلكتروني، وتصعيد الدردشة، والربط أوAPI.

تذاكر
تفاصيل التذكرةتذكرة مع شريط جانبي (الأولوية، الإدارة، SLA، الحالة)، وخيوط المحادثات، والذكاء الاصطناعي مسودة وسداد التدابير.تذكرةمساحة العملT-12345 جمهورية كوريا الشعبية الديمقراطيةالأولويةمرتفعالقسمالفوترةSLA3h بقي 12 دقيقةالحالةمفتوحلقد تم تحميلي مرتينالاشتراك في حزيران/يونيه 3.الذكاء الاصطناعيأكدت الصورة المكررةالشحن، إعادة تجهيز الأموال.مشروع رد منظمة العفو الدوليةرد التكاليف1THREADEDالمحادثة الكاملة + ملاحظات2SLA & ROUTINGالأولوية، الإدارة، الموقوت3AI DRAFTرد مكتوب لك
كل تذكرة تحمل أولوياتهاSLAموقّت وخيط كامل، ويمكن للمخابرات أن تصوغ ردك.

كيف تتدفق التذكرة

1
التذكرة وصلت

يرسل العميل رسالة عبر البريد الإلكتروني، أو تصعيد المحادثة، أو إدراج التذكرة،أو أنشأها المدير.تحصل التذكرات على هوية فريدة (مثل T-12345).

2
الفرز

ويقوم الذكاء الاصطناعي بقراءة الموضوع والعنوان، ويعطي الأولوية (منخفض/عادي/عالي/عاجل)، ويقترح إدارة، ويكشف عن المشاعر. وهذا يحدث تلقائيا إذا تم تفعيل الفرز.

3
رد

يفتح وكيل التذكرة، ويقرء السياق (ملف العميل، وبيانات المنصة من الموصولات، والتذاكر السابقة)، ويكتب رداً. ويمكن للذكاء الاصطناعي صياغة الرد، ويقوم الوكيل بتحريره قبل إرساله.

4
إغلاق

وعندما تحل المشكلة، يغلق الوكيل التذكرة ويُخطر العميل بذلك وإذا رد العميل بعد إغلاقها، تفتح التذكرات من جديد تلقائيا.

الإجراءات الخاصة بكل تذكرة

تغيير الإدارة

نقل التذكرة إلى إدارة مختلفة (مثلا من العامة إلى الفواتير). مفيد عندما يكون التوجيه الأولي خاطئا.

إسناد إلى وكيل

خصص التذكرة لعضو معين في الفريق. يقوم الوكيل المخصص برؤية التذكره في نظرته "تذاكري".

تضاف ملاحظة داخلية

Write a note visible only to staff. Use for: investigation findings, refund reasons, engineering context, previous commitments. Internal notes never appear to customers.

دمج التذاكر

دمج التذاكر المزدوجة من نفس العميل. موضوع التذكرة المدمجة يحصل على وسم [MERGED]. جميع الرسائل من كلتا التذكرتين يتم الحفاظ عليها في التذكرات الباقية.

رد معلب

إدراج نموذج رد مكتوب مسبقاً. {{customer_name}} و {{ticket_id}} يستعاض عنها تلقائيا.

إعادة كتابة الذكاء الاصطناعي

دع الذكاء الاصطناعي يحسن مسودة ردك: تعديل النبرة، أو اختصار/إطالة النص، أو إصلاح اللغة، أو الترجمة. وتراجع النتيجة قبل الإرسال.

تغيير الأولوية

حدد على منخفض، طبيعي، مرتفع أو عاجل. الأولوية تؤثر على مؤقتات SLA وترتيب الترتيب.

تغيير الوضع

حدد على أنه مفتوح، أو معلق، أو بانتظار العميل، أو حلّ، أو مغلق.

مثال عملي: التعامل مع عميل غير راضي

البريد الإلكتروني من العميل: "تم تحميلي مرتين لاشتراكي"

السيناريو:
Subject: Double charge on my account Body: Hi, I just checked my bank statement and I see two charges of $49.99 from your company dated June 3. I only have one subscription. Can you please refund the duplicate charge? This is really frustrating.
ماذا نفعل:

Step 1: AI triage assigns Priority: High, Department: Billing, Sentiment: Frustrated. Step 2: Agent opens the ticket. The connector panel shows the customer's Stripe charges, confirmed two charges on June 3. Step 3: Agent adds an internal note: "Confirmed duplicate charge in Stripe. Transaction IDs: ch_xxx and ch_yyy." Step 4: Agent drafts a reply: "Hi [Name], I can see the duplicate charge and I'm processing a refund for the second transaction right now. You should see $49.99 back in your account within 3-5 business days. I'm sorry for the inconvenience." Step 5: Agent triggers the refund action through the Stripe connector (with confirmation). Step 6: Agent sends the reply and sets status to Resolved.

الأقسام

إنشاء الإدارات في الإعدادات> التذاكر> الإداريات. إدارات مشتركة: العامة، الفواتير، التقنية، المبيعات، إساءة الاستخدام، بدء التشغيل. كل إدارة يمكن أن يكون لها مختلف قواعد الرد الآلي، المعرفة الذكاء الاصطناعي، ومهام الفريق.

الردود المعلبة

إنشاء نماذج الرد قابلة لإعادة الاستخدام في الإعدادات > التذاكر > الردود المعلبة.

مثال على نموذج رد معلب
Hi {{customer_name}},

Thanks for reaching out. I checked the details and here is what I found:

{{response_details}}

If you need anything else, just reply to this ticket and I will be happy to help.

Best regards,
{{agent_name}}
{{department_signature}}

دمج التذاكر

عندما يرسل العميل نفس السؤال عدة مرات (عبر البريد الإلكتروني والمحادثة، أو بريدين منفصلين)، يمكنك دمج المكررات. اذهب إلى التذكرة، انقر فوق الدمج، وانتخب التذكرتين الأخريين للدمج. تحصل التذكرتان المتبقيتان على جميع الرسائل من كلتا التذكرتيـن. يحصل موضوع التذكرـة المدمجة على وسم [MERGED] للإشارة إلى أنها تم الجمع بينها.

المنصات المُتصلة تتبع الدمج عندما تكون التذاكر على منصة متصلة أيضاًWHMCS, Zendesk(مدخل عملاء (سا إس يَحْدثُ هناك أيضاً: المنصّة تدمج نسخها، لذا التذاكر التي تحتفظ بها تظهر الرسالة الأولى للتذكرة المدمجة والردود WHMCSيدمجون OpsIQ التذاكر بنفس الطريقة.

الأولويةSLA

منخفض

الأسئلة غير العاجلة، طلبات الوظائف الخاصة، التعليقات العامة. 24 ساعات.

المعدل الطبيعي

أسئلة الدعم الموحدة - الاستجابة الأولى المستهدفة 8 ساعات.

مرتفع

التأثير على عمل العميل، الاستجابة الأولى المستهدفة: 4 ساعات.

عاجل

انقطاع الخدمة، حادث أمني، فقدان البيانات، خطأ في الفاتورة. 1 ساعة.

تبدأ ساعات SLA عند إنشاء التذكرة وتنتهي عندما تكون الحالة "في انتظار العميل". إذا لم يتم تحقيق هدف SLA، يتم إبراز التذكرات وتصعيدها بصورة اختيارية.

هل يمكن للعملاء رؤية الملاحظات الداخلية؟+

لا يحدث ذلك أبدا - الملاحظات الداخلية هي للموظفين فقط، ولا تظهر في بوابة طلبات العملاء أو إخطارات البريد الإلكتروني أو أي سطح آخر موجه للعملاء.

ماذا يحدث عندما يتم الرد على تذكرة مغلقة؟+

ويعاد فتح التذكرة تلقائيا وتعود إلى الصف النشط، ويتم إخطار الفريق بالرد الجديد.

هل يمكنني قفل تذكرة لمنع المزيد من الردود؟+

نعم. استخدم خيار قفل الموضوع لمنع كل من العميل والآلة الاصطناعية من إضافة ردود جديدة. مفيد للمنازعات المحسومة أو التحقيقات المغلقة.

الدعم

استوديو الخدمات:SLAتدفق الحالة والجودة

غرفة التحكم في كيفية تصرف عمليات الدعم الخاصة بك: سياسات SLA مع سلالم التصعيد، وقوائم ساعات العمل، وتدفق الحالة المفروضة، وإعدادات CSAT ومفاتيح السمات المؤسسية. افتحها من صفحة التذاكر (زر استوديو الخدمات في شريط العمليات).

SLA السياسات

كل تذكرة جديدة تحصل على أول رد ومواعيد نهائية للحل من أكثر السياسات النشطة تحديدا: الإدارة + الأولوية تتفوق على الإدارة، وتفوق على الأولوية، وتتفوق على المحددة.

سلالم تصاعد

وبدلا من إجراء واحد في حالة الإخلال، يمكن أن تحدد السياسة ما يصل إلى ست خطوات: على سبيل المثال تحذير المحال إليه عند 75% النافذة، تنبيه المديرين عند 100% إعادة تخصيص إلى وكيل مسمّى في 150% كل خطوة تنفذ مرة واحدة بالضبط لكل تذكرة.

ساعات العمل والجداول الزمنية

مع ساعات العمل، SLA الساعات لا تشتعل إلا خلال ساعات العمل. لذلك التذكرة التي فتحت مساء الجمعة لا يتم انتهاكها من قبل السبت. ويمكن ربط التقويمات المسماة (منطقة التوقيت، الأيام، الساعات، العطلات) إلى السياسات الفردية للفرق في مناطق مختلفة.

تدفق الحالة

مصفوفة من/إلى تقيد أي تغييرات الحالة يمكن للمديرين إجراؤها، مع تثبيت مسبق على غرار Zendesk. الأتمتة والبريد الإلكتروني الوارد والإجابات عن التذاكر التي يصدرها العميل مستثناة دائما، وبالتالي لا يمكن لمصفوفة صارمة أن تعيق خط الأنابيب أبدا.

الموافقات

يطلب الوكلاء الموافقة على التذكرة (الرد فوق عتبة، استثناءات السياسات). ويقرر موافق مسمّى أو أي مدير كامل بملاحظة؛ ولا يمكن للمتقدمين بالمطالبة أن يوافقوا أبدا على طلبهم. وتظهر الموافقات المعلقة كشعار في صندوق البريد الوارد.

علاقات التذاكر

ربط التذاكر باعتبارها ذات صلة، أو مكررة، أو والد/ولد أو وقف؛ وتقسيم الردود إلى تذكرة جديدة مرتبطة (عكس الدمج، دون إرسال البريد الإلكتروني إلى العميل)؛ متابعة التذاكرة للإخطارات داخل التطبيق، واختياريا CC متابعة عناوين البريد الالكتروني على الردود الصادرة.

صندوق البريد الوارد المباشر والتصادمات

مع صندوق البريد الوارد في الوقت الحقيقي، تظهر التذاكر الجديدة والردود للوكلاء خلال ثوانٍ من خلال تدفق الإخطار القائم. على وثيقة، يرى الوكلاء من هم الآخرين الذين ينظرون ويحصلون على لافتة تحذير عندما يكون أحد زملاء الفريق قد كتب بالفعل رداً. زر المطالبة بنقرة واحدة يعيّن التذكرة لنفسك.

التوجيه المعرفي للذكاء الاصطناعي

يمكن أن تتطابق قواعد التوجيه مع إشارات فرز الذكاء الاصطناعي: الأولوية، والفئة، والمشاعر ومخاطر التصعيد، بالإضافة إلى قيم الحقول المخصصة المطبوعة من استمارة طلب البوابة. وتظل القواعد التي تستخدم هذه الشروط خاملة حتى يتم تفعيل الخاصية.

💡
كل مفتاح مؤسسة يرسل OFF. تحويل واحد في استوديو الخدمة → الجودة والتشغيل الآلي هو اختيار الانضمام؛ تركهم مغلقة تحافظ على السلوك نفسه قبل الترقية.
لماذا يمكن للعميل أن يعيد فتح تذكرة مغلقة عندما تحظر مصفوفة اتصالي المغلقة → مفتوحة؟+

وتستثنى عن عمد الردود التي يصدرها الزبائن، وردود البريد الإلكتروني والتشغيل الآلي بحيث لا يمكن أبدا لسياسة صارمة أن تغلق العملاء أو تكسر خط الأنابيب.

لا تفعلSLAالسُلّان يَستبدلونَ عملَ الخرقِ القديمِ؟+

لا. السياسات التي يتم حفظها مع إجراء انتهاك واحد تظل تعمل دون تغيير. يستبدل السلم الإجراء الوحيد فقط على السياسة حيثما حددت الخطوات.

الدعم

الرد الآلي على التذاكر وتصاعدها

الرد الآلي يسمح الذكاء الاصطناعي للاستجابة للتذاكر الجديدة بشكل آلي. التصعيد تنقل التذاكر إلى إدارة مختلفة عندما يكتشف الذكاء الصناعي الاحتياجات المتخصصة. كلتا الخاصيتين تعمل عبر التذاكرة الأصلية والتذاكر التي أنشئت عن طريق البريد الإلكتروني.

الرد الآلي
الرد التلقائي على التذاكرتدفق: تذكرة جديدة، وتأخير دقيقتين، والرد من الذكاء الاصطناعي من المعرفة والسياق، ثم إرسال أو حفظ كمشروع.الرد الآليمساحة العملعندما تصل تذكرة جديدةتذكرة جديدةأي مصدرتأخير2 minAI repliesألف - الوثائق الأساسية + السياقأرسلتأو مشروعإذا رد شخص ما خلال فترة التأخير، يتم إلغاء الرد الآلي. يمكن أن يرتفع القصد إلى إدارة أخرى أولا.1DELAYالبشر يحصلون على الفرصة الأولى2AI REPLIESمن قاعدة البيانات + السياق3OR ESCALATEالطريق حسب القصد
التذاكر الجديدة تتأخر قليلاً (لذا يستطيع البشر القفز) ثم رد من شركة "آي آي" على معرفتك أو أرسلت أو تم تصفيتها كمسودة

كيف يعمل الرد الآلي

1
تظهر التذكرة

يتم إنشاء تذكرة جديدة من أي مصدر (البريد الإلكتروني، الدردشة، البوابة، API).

2
جدول الرد

OpsIQ ينتظر التأخير المحدد (الافتراضي: 2 وهذا يعطي الوكلاء البشريين فرصة الاستجابة أولا.

3
أول من يرد يفوز

إذا رد وكيل بشري خلال فترة التأخير، يتم إلغاء الرد الآلي.إذا لم يحدث ذلك، يولد الذكاء الاصطناعي إجابة.

4
توليد وإرسال

يقرأ الذكاء الاصطناعي التذكرة، ويتحقق من قاعدة المعرفة، وسياق الموصل، وتاريخ العميل، ثم يكتب ردًا. ويرسل الرد (أو يُوضع في طابور الانتظار كمسودة للمراجعة، اعتمادًا على الإعدادات).

كيف يعمل التصعيد

1
تشكيل الإدارات

تحديد الإدارات التي يمكن أن تتلقى تصعيد (مثلا، يمكن تصاعد الفواتير من العام، والتقنية يمكن صعوده من العام).

2
تصنيف التذكرة

وقبل الرد الآلي، يصنف نظام المعلومات الافتراضي قصد التذكرة: الفاتورة، التقنية، رد الأموال، إساءة الاستعمال، إلخ.

3
نقل إذا لزم الأمر

وإذا تطابقت نية التذكرة مع إدارة تصعيد، تُنقل التذكرات وترد ملاحظة داخلية توضح السبب.

4
إنشاء في الصوت الجديد

يتم توليد الرد باستخدام معارف إدارة المقصد وتدريب الذكاء الاصطناعي.

مرجع الإعدادات

تمكين الرد الآلي

مفتاح رئيسي، شغله لتمكين الذكاء الاصطناعي من الرد آلياً على التذاكر

الإدارات المسموح بها

الإدارات التي يمكن أن تتلقى الردود التلقائية - ابدأ بالإدارات المنخفضة المخاطر (العامة، والمبيعات) قبل تمكين إعداد الفواتير.

تأخير

مدة الانتظار قبل أن يستجيب الذكاء الاصطناعي (بالثواني). افتراضي: 120 ثانية ()2حدد على0للحصول على إجابات فورية.

الجدول الزمني للتأخير

خيار تحديد تأخيرات مختلفة لساعات العمل مقابل بعد ساعات.

توقّف عند رد المدير

إذا رد وكيل بشري أولاً، ألغ الرد الآلي. افتراضي: على

تمكين التصعيد

تمكين التوجيه التلقائي للإدارة استنادا إلى نية التذكرة.

إدارات التصعيد

الإدارات التي يمكن أن ترفع إليها التذاكر.

حالة التصعيد

:: تحديد الوضع الذي ينبغي أن يحدد عند التصعيد (مثلاً، مفتوح أو معلق).

ملاحظة بشأن الزيادة

ما إذا كان ينبغي إضافة ملاحظة داخلية تشرح سبب التصعيد.

تذاكر أنشئت بالبريد الإلكتروني

وتتبع التذاكر التي تنشأ من البريد الإلكتروني (عن طريق استطلاع صندوق البريد أو التسليم عبر قناة MX) نفس قواعد الرد الآلي والتصعيد. ويرسل رد الذكاء الاصطناعي كرد بالبريد الإلكتروني إلى العميل. وتذهب مشاريع الرسائل الإلكترونية إلى طابور المشاريع للمراجعة إذا كانت قد تم تشكيلها.

هل يقوم الذكاء الاصطناعي بالرد تلقائيا على أسئلة الفواتير؟+

فقط إذا قمت بتمكين الرد الآلي لإدارة الفواتير. نوصي بالبدء مع الرد آليا من أجل الفواتري وتفعيلها فقط بعد أن تكون قد دربت الذكاء الاصطناعي مع المعرفة الشاملة للفواتير واختباره بعناية.

ماذا لو أعطى الذكاء الاصطناعي إجابة خاطئة؟+

إذا أجاب العميل قائلا إن الإجابة كانت خاطئة، فينبغي لعميل بشري أن يتدخل. وينبغي مراجعة تاريخ الذكاء الاصطناعي لفهم لماذا أعطى الذكاء الإصطناعي الإجابة الخاطئة. ثم تحديث قاعدة المعرفة أو تدريب الذكاء الصناعي لمنع حدوث ذلك مرة أخرى.

هل يمكنني مراجعة الردود التلقائية قبل إرسالها؟+

نعم. حدد طريقة التسليم إلى "مسودة" بدلاً من "إرسال آلي". ستظهر مسودات الرد الآلي في صف المسودة لمراجعة بشرية قبل الإرسال.

الدعم

بوابة التذاكر

بوابة التذاكر التي تم إدخالها تسمح لك بإضافة واجهة لإدارة التذكرات إلى أي موقع على الشبكة OpsIQ (إدمين)

كيف يعمل
بوابة التذاكر:: بوابة دعم مدمجة في موقع شبكي تظهر للزبون تذاكره الخاصة وزر التذكرة الجديدة.yoursite.com/supportمركز الدعمتذكرة جديدةتذاكرك#1042:: مسألة السدادمفتوح#1038:: المساعدة في الإعدادتم حلها#1031:: نسخة من الفاتورةمعلق1EMBEDأضف إلى أي موقع2SELF-SERVEينظر الزبائن إلى تذاكرهم3NO LOGINمعالجة الهوية بطريقة آمنة
بوابة التذاكر

ثلاثة أنواع من الضم

تضمين داخلي

يعرض بوابة التذكرة داخل div على صفحتك. البوابة تأخذ العرض الكامل لحاويتها.

عائمة

يعرض زراً عائماً يفتح بوابة التذاكر في لوحة. مماثل لـ Widget للدردشة.

المصدق عليها

يتطلب رمز هوية موقعة.

التركيب

التذكرة والدردشة
<!-- Signed-in customer: your server adds a fresh identity_token -->
<script async src="https://your-opsiq-domain.com/widget.php?site_key=SITE_KEY&identity_token=SERVER_GENERATED_TOKEN"
        data-opsiq-widget="client-chat"></script>

<!-- Guest: the same tag without identity_token -->
<script async src="https://your-opsiq-domain.com/widget.php?site_key=SITE_KEY" data-opsiq-widget="client-chat"></script>
💡
Remote Sites → your site → Codes → C. Signed-in customers generates the complete code for your platform (PHP, WordPress, Laravel, Node.js, Python, Django, .NET, Rails, Java, Go), including the refresh handler that keeps a long visit signed in. The WHMCS hook and the Botble connector bridge already do this.

توليد رموز الهوية

لطريقة موثّقة، خادمك يوقع على سرّ الموقع قصير الأمد OpsIQ من هو الزبون ليرى فقط تذاكرهم الخاصة إنه معيار HS256 JWT أي مكتبة تعمل، السر لا يدخل في صفحة

إنشاء رموز هوية
<?php
// Generate identity token (PHP, no dependencies)
$secret = getenv("OPSIQ_SITE_SECRET");          // the site secret, server-side only
$b64 = fn($v) => rtrim(strtr(base64_encode(json_encode($v, JSON_UNESCAPED_SLASHES)), "+/", "-_"), "=");
$now = time();
$signing = $b64(["alg" => "HS256", "typ" => "JWT"]) . "." . $b64([
    "site_key"      => "SITE_KEY",
    "iat"           => $now,
    "exp"           => $now + 3600,
    "authenticated" => true,                        // required
    "platform"      => "php",
    "customer"      => [
        "id"          => $user["id"],               // required
        "email"       => $user["email"],            // required
        "name"        => $user["name"],
        "external_id" => (string) $user["id"],
    ],
]);
$token = $signing . "." . rtrim(strtr(base64_encode(hash_hmac("sha256", $signing, $secret, true)), "+/", "-_"), "=");
// Put $token on the widget URL as &identity_token=
Node. js, generate identity token
// Node.js — npm i jsonwebtoken
const jwt = require("jsonwebtoken");

function generateOpsIQToken(customer) {
  return jwt.sign({
    site_key: "SITE_KEY",
    authenticated: true,                            // required
    platform: "node",
    customer: { id: customer.id, email: customer.email, name: customer.name, external_id: String(customer.id) },
  }, process.env.OPSIQ_SITE_SECRET, { algorithm: "HS256", expiresIn: 3600 });
}

خصائص الوحدة الوسيطة

قائمة التذاكر

قائمة قابلة للبحث، مرشحة حسب الحالة. "في انتظارك" تبرز رموز التذاكر التي أجاب عليها الفريق.

محادثة متسلسلة

عرض كامل للمحادثة مع نص غني، والمرفقات، والختم الزمني.

مشروع الوفورات الآلية

ويتم حفظ مشاريع ردود العملاء تلقائيا بحيث لا يفقدون عملهم إذا ما غادروا الموقع.

الاقتراع الحي

يقوم البرنامج باستطلاع الردود الجديدة كل ~12 ثانية.

حل/إعادة فتح

ويمكن للعملاء حل أو إعادة فتح تذاكرهم الخاصة بنقرة واحدة.

ملاحظات الموظفين الداخلية لا تظهر أبدا للعملاء في التذكرة المدمج. وهذا هو حد أمني صارم.
الدعم

صندوق البريد الوارد

صندوق البريد الوارد للدردشة هو المكان الذي يدير فيه فريقك محادثات العملاء الحية. وهو يعرض المحادثات النشطة، والمحادثات المسندة، والمناقشات التي تتعامل مع الذكاء الاصطناعي، والتاريخ المحفوظ.

صندوق البريد الوارد
صندوق البريد الواردصندوق بريد الوارد من ثلاث ألواح للدردشة مع الوكيل: قائمة المحادثات، والمحادثة الحية مع مسودة رقاقة الذكاء الاصطناعي، ولوح سياق الزائر/CRM.صندوق البريد الواردمساحة العملدينار جزائريجينأين طلبي؟موظف فنيMensahسؤال بشأن الفواتيرRTريتامعالجة الطلباتأين طلبي؟اليوم مُنعّةمشروع التقرير جاهزالرد...زائرجين دوالولايات المتحدة الأمريكية Chrome3 أوامر سابقةالقيمة السوقية الإجمالية $480CRMالمرحلة: العميل1UNIFIEDكل محادثة حية2CONTEXTالزائر +CRMحلقة نقاش3AI ASSISTمسودة وإعادة كتابة
صندوق واحد لكل محادثة حية، قائمة المحادثة، الخيط مع مشروع AI على النقر، وزيارة كاملة + CRM سياق.

إدارة المحادثات

المحادثات النشطة

النقاط الخضراء = العميل يقوم بالكتابة أو كان نشطا مؤخرا.

معالجة بالذكاء الاصطناعي

محادثات حيث يستجيب الذكاء الاصطناعي يمكنك أن تتولى في أي وقت بالنقر على "انضم".

عين لي

محادثات خصصت لك تحديداً

في الانتظار

المحادثات التي ينتظر فيها العميل رداً عليها.

المحفوظات

المحادثات المنجزة، ويمكن البحث عنها حسب الكلمة الرئيسية والتاريخ والعميل.

التسليم من الذكاء الاصطناعي إلى الإنسان

عندما تتولى محادثة من الذكاء الاصطناعي، اتبع هذه القواعد الثلاث:

1
تحية شخصية

تعرف على نفسك بالاسم مرحبا، هذه (سارة) من فريق الدعم

2
السياق المرجعي

أظهر لي أنك قرأت المحادثة "أستطيع رؤيتكِ تسألين عن حالة طلبك"

3
تحديد التوقعات

أخبر الزبون ماذا سيحدث بعد ذلك "أنا أبحث في هذا الآن وسيكون لدي إجابة لك خلال دقائق قليلة"

تشغيل/إطفاء الذكاء الاصطناعي لكل محادثة

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

الوضع الغائب/خارج ساعات العمل

(ب) تحديد ساعات العمل في الإعدادات.1) مواصلة اﻻستجابة للزبائن، )2) أظهر رسالة "غائب" وإنشاء تذكرة للمتابعة، أو (3) تعطيل الدردشة بالكامل وعرض استمارة التذكرة. اختار السلوك الذي يناسب نموذج الدعم الخاص بك.

التعامل مع المحادثات الصعبة

1
إبقى هادئا

لا تطابق كثافة العاطفة لدى الزبون، اعترف بإحباطه دون أن تكون دفاعي

2
جمع الحقائق

قبل الرد، جمع المعلومات ذات الصلة: تفاصيل الطلبيات، حالة الحسابات، التذاكر السابقة.

3
تصعيد مبكر

إذا كانت الحالة تشمل رد الأموال، أو تهديدات قانونية، أو سوء المعاملة، أو الأمن، يرفع إلى عضو كبير في الفريق بدلا من محاولة التعامل معها وحده.

هل يمكنني الدردشة مع فريق (وكيل إلى وكيل)؟+

نعم، استخدم الملاحظات الداخلية في محادثة للتواصل مع الوكلاء الآخرين، ولا تكون هذه الملاحظة مرئية للعميل أبدا.

ماذا يحدث عندما أغلق محادثة؟+

تنتقل المحادثة إلى الأرشيف. إذا أرسل العميل رسالة جديدة في وقت لاحق، يتم إنشاء محادثة جديدة.

الدعم

قنوات الرسائل

اتصال WhatsApp, Facebook Messenger, Instagram مارك ألماني، Telegram و LINE بحيث الرسائل التي يرسلها العملاء إليك تصل في نفس صندوق البريد كما موقعك على شبكة الانترنت، والرد من قبل نفس مساعد الذكاء الاصطناعي.

كل قناة تتصرف بشكل متطابق بمجرد أن تصل رسالة العملاء تصبح محادثة في صندوق (شات) مساعدك يجيبها باستخدام نفس المعرفة والتعليمات التي تستخدمها دردشة موقعك على الإنترنت

ما الذي يبدو عليه التواصل

Facebook Messenger & Instagram

فتح موصلات → Facebook Messenger & Instagram DM، انقر على اتصال، الدخول مع Facebook الحساب الذي يدير صفحتك، واختر الصفحة. Instagram يأتي معه عندما صفحتك لديها. Instagram الحساب المهني مرتبط.

WhatsApp

انقرة واحدة حيث يقدمها مقدم خدمة الإنترنت الخاص بك: افتح وصلة مركز الرسائل واستخدام Connect WhatsApp, ثم اتبع التسجيل الموجه من ميتا لاختيار أو خلق WhatsApp إذا لم يكن الأمر كذلك، يرجى إدخال وثائق التفويض من أي من المصادر التالية: 20 بوابات.

Telegram

دقيقتان، أرسل رسالة إلى @BotFather في Telegram, أرسل /newbot, اختار اسماً واسم مستخدم ينتهي بـ"بوت"، ولصق الرموز التي تعطيك إياها في الحقل Telegram وصلة. OpsIQ يسجل الويب هووك من أجلك.

ليني

بعث رسالةAPIالقناة في المطورين، (لينبز)، راعي سرّ القناة ووصوله إلى "كين"، ثم ننسخ موقع الإنترنتURLموضحة فيOpsIQإلى "لين" و أطفئوا عبوات السيارات الخاصة

الرسائل النصية القصيرة

يضاف مقدم (Twilio, Vonage, Termii and others) في مركز الرسائل مع وثائق تفويضه ورقم مرسله.

كل موصل يظهر تعليماته الخاصة بخطوة داخل الدرج بما في ذلك بالضبط ما يجب أن ننسخه وأين لا تحتاج أبداً إلى أوراق اعتماد للمطور لخيارات البقعة الواحدة

تشغيل قناة

الإتصال بالقناة لا يبدأ الترتيبات → العميل تشاتي → السلف → قناة الرسالةكل قناة لها مفتاحها الآلي الخاص بها لذا يمكنك أن تُجري على واحد قبل فتح الباقي

1
إربط القناة

في (كونيكتورز) ، باستخدام التعليمات في درج الموصل

2
اختبروا الصلة

"إختبار الوقاحة" إنه يُجري مكالمة حقيقية للمزود ويخبرك ما الخطأ إن كان هناك أي شيء

3
قنوات اتصال تمكينية

الصفقات→العميلة (تشاد)→تقدم، شغل المفتاح الرئيسي ثم القناة

4
أرسل رسالة لنفسك

من حساب آخر، رسالة الصفحة رقمك أو الصدر يجب أن تظهر في صندوق الشات خلال ثواني

نوافذ الرد

برامج الرسائل تحد من المدة التي يمكن أن يجيب فيها أحد العملاء بعد كتابته.OpsIQيظهر الوقت المتبقي في كل محادثة وينفذ القاعدة بالنسبة لك

WhatsApp

24بعد ذلك يمكنك فقط إرسال نموذج معتمد والذي تصادره في نفس الكتاب المقدس

Messenger Instagram

24ساعات للردود العادية؛ ويمكن للوكلاء أن يجيبوا7بعد أيام تحت بدل (ميتا) البشري

Telegram_ - LINE, SMS

لا نافذة منصة مُعرضة.

⚠️
إذا فشل الرد لأن النافذة أغلقت، فإن المحادثة تُظهر السبب.OpsIQالحد الأقصى

أسئلة شائعة

هل يرى الزبائن أن الـ "آي آي" قد أجابت؟+

فقط إذا أخبرتهم، الرد يأتي من صفحةكم رقم أو حزمة كما سيظهر رد فعل بشري تعليماتك

هل يمكن لوكيل أن يتغلب على منتصف الخلاف؟+

نعم، افتحي المحادثة في صندوق (تشات) و اضغطي على (جين)، الـ(آي آي) يتوقف، أنتِ تطبعين، والزبون يرى خيطًا مستمرًّا من جانبهم.

ماذا لو فصلت قناة؟+

استخدموا فصاً عن الموصل، وتاريخ الرسالة محتفظ به؛ والرسائل الجديدة تتوقف ببساطة عن الوصول، والمنبر يُطلب منه التوقف عن إرسالها.

هل يمكن لحيزي عمل أن يستخدما نفس Facebook الصفحة؟+

رقم A Page تنتمي الى مكان عمل واحد في وقت ما، ربطها بمكان آخر يحركها، و أول محطة تعمل تستقبل رسائل، لذلك قطع عن عمد بدلا من إعادة الاتصال في أماكن أخرى.

الدعم

محادثات حقيقية عبر الدردشة

تبين هذه الأمثلة كيف ينبغي للذكاء الاصطناعي المدرب جيدا أن يتعامل مع السيناريوهات الشائعة. استخدمها لاختبار تدريب الذكاء الصنعي الخاص بك وتحديد الثغرات.

10 أمثلة على المحادثات

1. عميل يعود للسؤال عن الطلب

السيناريو:
العميل: مرحباً، لقد قمت بطلب3لقد طلبت هذا منذ يومين ولم أتلق أي إخطار بالشحن بعد 5523.
ماذا نفعل:

ينبغي للآلية الدولية: (1) انظر الترتيب #ORD-5523 من خلال الموصل. (2) أبلغ عن الحالة الراهنة ومعلومات التتبع إذا كانت متاحة. (3() إذا تأخر إصدار الأمر، يُعترف بالتأخير ويُقدَّم جدول زمني تقديري. (4لا تختلق حالة شحن إذا لم يكن للموصل وضع شحن.

2. السؤال عن التسعير من جانب العميل المحتمل

السيناريو:
العميل: كم تكلف خطة Pro الخاصة بكم؟ هل تعرضون الفواتير السنوية؟
ماذا نفعل:

ينبغي للآلية الدولية: (1) الرد من قاعدة المعارف مع التسعير الحالي. (2() يرجى شرح الفرق بين الفواتير الشهرية والفواتير السنوية.3) إذا لم تكن الإجابة في قاعدة المعارف، قل ذلك وعرض ربطها بالمبيعات. (4)أ( ﻻ تخترع تسعيرا غير موجود في قاعدة المعارف.

3. زبون غاضب يطالب باسترداد المبلغ

السيناريو:
العميل: هذا سخيف، المنتج الذي قدمتموه لا يعمل وأريد استرداد أموالي الآن.
ماذا نفعل:

ينبغي أن تقوم منظمة العفو الدولية بما يلي:1نعترف بالإحباط بهدوء.2() يطلب رقم الطلب أو البريد الإلكتروني.3(ب) شرح عملية استرداد الأموال.4() إنشاء تذكرة دعم أو تصعيد إلى عميل بشري.5لا تعد باسترداد الأموال، وهذا يتطلب موافقة إنسانية.

4. حالة الفاتورة المزدوجة

السيناريو:
الزبون: لقد تم تحميلي مرتين هذا الشهر، ويظهر مصرفي تكلفة اثنين من $29.99.
ماذا نفعل:

The AI should: (1) Acknowledge the concern. (2) Collect the relevant details (email, dates of charges). (3) Explain that billing issues require human review. (4) Create a Billing department ticket with the details. (5) Set priority to High.

5. زبون متعدد اللغات

السيناريو:
هل تعلمون ماذا أفعل؟
ماذا نفعل:

ينبغي للآلية الدولية: (1) الرد بلغة العميل إذا كانت تلك اللغة مدعومة. (2) اﻹجابة على السؤال عن التسليم إلى فرنسا من قاعدة المعارف.3() إذا لم تكن اللغة متوفرة، يُرجى الرد باللغة الافتراضية وذكر اللغات المتاحة.

6. محادثة بعد ساعات العمل

السيناريو:
العميل: مرحباً، هل هناك أحد؟ أحتاج إلى مساعدة مع حسابي.
ماذا نفعل:

ينبغي للآلية الدولية: (1) إذا تم تشكيلها للذكاء الاصطناعي بعد ساعات العمل، اﻻستجابة والمساعدة.2) إذا أنشأت بعد ساعات العمل تذاكر، قل: "فريقنا غير متصل بالشبكة حاليا. لقد أنشئت تذكرة دعم لك وسوف يتابع شخص ما خلال ساعات العمل." (3)أ( يقدم رقم التذكرة.

7. مشتر للمقارنة قبل الشراء

السيناريو:
الزبون: كيف يقارن منتجك بـ [المنافس سين]؟
ماذا نفعل:

ينبغي أن تقوم منظمة العفو الدولية بما يلي:1صف قوّات منتجك في الواقع.2لا تفسد المنافس3() إذا كانت هناك صفحة مقارنة في قاعدة المعارف، يرجى الاتصال بها.4إذا سأل الزبون عن المميزات التي لا تملكها، كن صريحاً

8. العميل يريد توصية

السيناريو:
العميل: أدير متجراً صغيراً على الإنترنت يتلقى حوالي 100 طلبية في الشهر، أي خطة هي الأنسب لي؟
ماذا نفعل:

ينبغي للآلية الدولية: (1() طرح أسئلة توضيحية إذا لزم الأمر (مثلاً، ما هي السمات الأكثر أهمية).2() التوصية بخطة تستند إلى قاعدة المعارف. (3) وشرح لماذا تلبي تلك الخطة احتياجاتهم.4(ب) ذكر أنه يمكنهم البدء بخطة أصغر حجما والارتقاء بها في وقت لاحق.

9. يحاول العميل الحصول على خصم غير مأذون به

السيناريو:
العميل: رأيت على الانترنت أنك تعطي 50% هل لي بواحدة؟
ماذا نفعل:

ينبغي للآلية الدولية: (1) شرح الترقيات الحالية إذا كانت هناك أي منها. (2)ﻻ توجد أو وعد بخصومات ليست في قاعدة المعارف. (3(ب) إذا أصر العميل، عرض ربطهم مع فريق المبيعات.

10. يحتاج العميل إلى المساعدة فيما يتعلق بإحدى الخصائص

السيناريو:
العميل: كيف أصدر بياناتي؟ لا يمكنني إيجاد زر التصدير.
ماذا نفعل:

ينبغي للآلية الدولية: (1) توفير تعليمات خطوة بخطوة من قاعدة المعارف.2() يدرج المسار الدقيق للصفحة وموقعها.3) إذا كانت السمة تتطلب خطة محددة، ذكر ذلك. (4إذا لم تكن السمة موجودة، كن صريحا واقترح بدائل.

الدعم

توجيه الرسائل النصية وتصاعدها

عندما يحتاج الدردشة الحية إلى شخص حقيقي، يجيب الذكاء الاصطناعي على سؤالين: أي فريق هو مالك هذه المحادثة، ومن ينبغي أن يُخبر. وكلاهما يتم تشكيله في الإعدادات، ودردشة العميل، وتدفق الدعم، تحت إدارات توجيه الذكاء الصناعي.

اختيار الإدارات التي يمكن أن تستخدمها الآلية

الصندوقان في تلك اللوحة هما القائمة البيضاء. الإدارات التي تم نقلها إلى اليمين هي الوحيدة التي يمكن للذكاء الاصطناعي توجيهها أو فتح تذاكر فيها. أي شيء يبقى على اليسار غير مرئي له، حتى لو كانت الإدارة موجودة وموظفة. ابدأ بتضييق وإضافة الإدارت بينما تعمل على تزويدها بالموظفين.

💡
إذا لم يتم تمكين أي قسم على الإطلاق، فإن OpsIQ يعود إلى التوجيه القديم عبر كل قسم يمكنه العثور عليه. اعتبر ذلك شبكة أمان، وليس اختيارًا للتشكيل.

من يتلقى التصعيد

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

أعضاء فريق الإدارة

ويتلقى كل مدير نشط ملحق بالإدارة نسخته الخاصة، ويتم تجنب الحسابات المعلقة والمعطلة.

الإدارة الابتدائية

يستخدم عندما لا يكون هناك أعضاء في الفريق، لذا فإن التصعيد مازال يصل إلى شخص ما.

لا أحد ملحق

لا يمكن التسليم لوحة التوجيه تشير إلى تلك الإدارة باللون الأحمر والذكاء الاصطناعي لا يخبر الزائر أن الإنسان قد تم إخطار.

⚠️
لا يستخدم عنوان البريد الإلكتروني الخاص بالإدارة بشكل متعمد أبدا كمتلقي. ذلك العنوان هو صندوق بريد التذاكر الواردة للإدارة، وهو واحد من البريد الوارد الذي يتم مطابقته مع فتح التذاكير. التصعيد المرسل إليه سيعاد إلى الأنابيب كتذكرة جديدة بدلا من الوصول إلى شخص ما.

الإدارة الشاملة

وهناك إدارة واحدة على وجه التحديد تحمل علامة "الجميع". فهي تستقبل المحادثات التي لم يتمكن الذكاء الاصطناعي من تحديد موقعها بثقة، وهي الملاذ الأخير بدلاً من المسار الطبيعي.

1
الربح بالإشارات الواضحة

وتذهب صيغة الفاتورة إلى إدارة إعداد الفواتير، وصيغة الاستضافة والأخطاء إلى إدارة تقنية، ولغة الشراء إلى المبيعات.

2
يحاول المصنف الآلي التالي

وإذا كانت الكلمات الرئيسية غير حاسمة، يقرأ النموذج المحادثة ويختار من الإدارات التي تمكنت.

3
ثم الجميع

فقط عندما يأتي كلاهما فارغاً تتلقى إدارة الالتقاط كل شيء المحادثة.

4
حارس المبيعات

وإذا كان الهدف هو إدارة مبيعات ولم يظهر الزائر أي إشارة شراء، فإن OpsIQ تبحث عن قسم دعم أو قسم فني بدلاً من ذلك، بحيث لا تتراكم أسئلة الدعم العادية في المبيعات.

ماذا يقال للزائر

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

الفريق يقول "لا أحد لإخطار" لإدارة+

لا أحد ملحق به، افتح الفريق والإدارات، أرفق على الأقل مدير نشط واحد ثم أعد تحميل صفحة الإعدادات.

هل يمكن أن تذهب تصعيدات الدردشة إلى مكان آخر غير الفريق؟+

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

لماذا تم تخطّي اختباري؟+

تحقق مما إذا كانت إدارة مبيعات. وإذا كان الأمر كذلك، ولم يظهر الزائر أي إشارة شراء، OpsIQ طرق إلى إدارة الدعم أو الإدارة التقنية عن عمد.

الدعم

صناديق البريد الإلكتروني والمسودات

يمكن لـ OpsIQ أن يتصل بصناديق البريد الإلكتروني لإنتاج تذاكر بشكل آلي من الرسائل الواردة وإرسال الردود كبريد إلكتروني. كما يوفر ردود مسودة بواسطة الذكاء الاصطناعي للمراجعة البشرية.

البريد الإلكتروني
البريد الإلكتروني إلى البطاقةأن IMAP صندوق بريد على اليسار يغذّي الرسائل الواردة إلى تذكرة متسلسلة مع رد مصاغ بواسطة الذكاء الاصطناعي على اليمين.البريد الإلكترونيمساحة العمل[email protected] · IMAPطلب سداد التكاليف[email protected]لا يمكنني الدخول[email protected]نسخة من الفاتورة[email protected]التذكرة رقم 1042من البريد الإلكترونيأريد أن يسدد لي ثمنتكرار التهمةمسودة ذكاء اصطناعياستعراض وإرسال رد1INGESTIMAP & التحويل إلى2TO TICKETSتلقائيا3AI DRAFTSالردود المقدمة للاستعراض
Pull email in over IMAP (or forwarding), turn each into a threaded ticket, and let the AI draft the reply for review.

ربط صندوق بريد

البروتوكول

IMAP (most providers), Gmail API (Google Workspace), or Microsoft Graph (Outlook 365).

الإعدادات المطلوبة

المضيف، الميناء، التشفير (SSL/TLS)، اسم المستخدم، كلمة المرور أو كلمة سر التطبيق، المجلد (عادة صندوق البريد).

رسم خرائط الإدارات

رسم صندوق البريد إلى قسم التذاكر. الرسائل الإلكترونية إلى [email protected] تصنع تذاكر في قسم "الدعم".

إنشاء حساب Gmail (خطوة بخطوة)

1
تفعيل التحقق من الخطوات 2

اذهب إلى Google الحساب > الأمن 2-خطوة التحقق وتفعيلها.

2
كلمة المرور

اذهب إلى Google الحساب > الأمن > كلمات مرور التطبيق.OpsIQنسخة من الوثيقة 16كلمة المرور

3
ادخل في OpsIQ

Go to Email > Mailboxes > Add. Set host: imap.gmail.com, port: 993, encryption: SSL, username: [email protected], password: the app password.

4
الاختبار

انقر فوق اختبار الاتصال. OpsIQ سيبدأ استطلاع البريد الإلكتروني الجديد في الفترة المحددة.

التوقعات 365 تثبيت

1
تحقق من أن IMAP مفعل

في إعدادات Outlook > البريد > تزامن البريد الإلكتروني، تأكد من أن IMAP مفعل.

2
استخدام كلمة المرور التطبيق أو التوثيق الحديث

إذا تم تفعيل MFA، أنشئ كلمة سر تطبيق. وإلا استخدم كلمة السر العادية الخاصة بك.

3
ادخل في OpsIQ

المضيف: outlook.office365.com، الميناء: 993 تشفير: SSL اسم المستخدم: [email protected].

cPanel إعداد البريد الشبكي

1
IMAP إعدادات

في cPanel > حسابات البريد الإلكتروني، انقر على حسابك للبريد الإلكتروني لتحديد إعدادات _IMAP.

2
ادخل في OpsIQ

المضيف: عادة mail.yourdomain.com أو اسم مضيف الخادم الخاص بك، الميناء: 993 (SSL) أو 143 (STARTTLS)، اسم المستخدم: عنوان البريد الإلكتروني الكامل.

مشاريع رسائل البريد الإلكتروني للآلية

عندما يكون الرد الآلي محدداً على وضع "المسودة"، يقوم الذكاء الاصطناعي بإنتاج مسودات رد تظهر في صف المسودات. يمكنك:

ألف - الاستعراض

Read the draft and check for accuracy.

تحرير

تعديل النص أو النبرة أو المحتوى قبل الإرسال.

إرسال

الموافقة على المشروع وإرساله في شكل رد بالبريد الإلكتروني.

نبذ

يحذف المشروع إذا لم يكن مناسبا.

إرسال آلي

وإذا كانت الثقة عالية بما فيه الكفاية وتم تمكين الإرسال التلقائي، ترسل المشاريع تلقائيا بعد تأخير قابل للتعديل.

لماذا لا يتم تحويل البريد الإلكتروني إلى تذاكر؟+

الشيك: (1هل صندوق البريد متصل وسليم؟ انظر إلى الحالة الخضراء في البريد الإلكتروني > صناديق البريد.2هل وظيفة كرون جارية؟ استفتاء البريد الإلكتروني يتطلب كرون.3هل يجري ترشيح البريد الإلكتروني أو نقله إلى مجلد غير صندوق الواردات؟

هل يمكنني استخدام صناديق بريد متعددة؟+

نعم، يمكن ربط كل صندوق بريد بإدارة مختلفة. [email protected] تذهب إلى الدعم، [email protected] يذهب إلى الفواتير.

الدعم

رضا العملاءCSAT)

يقيس CSAT رضا التذاكر والدردشة، ويظهر الردود غير السعيدة ويقارن بين الذكاء الاصطناعي والنتائج البشرية.

فرز المنتجات
رضا العملاءThe CSAT وتجمع الصفحات بين بطاقات الإنجاز، ومتابعة الجرار، والتعليقات، وانهيار الإدارات والعناصر، والحديث عن التغذية المرتدة.رضا العملاءمساحة العملRESPONS386AVERAGE4.6POSITIVE91%عرض الحيز العمليمتابعة الناقدين12 الردود المصنفة1–2ألف - الاستعراضالدراسات الاستقصائية للتذاكرأُرسلت في 24h بعد الإغلاقآليتعليقات عبر الدردشةألف - المساعدة التقنية 4.5:: الإنسان 4.7قارننظرة الوكيلالدرجات وعدد الردودمدرب1WATCH AVERAGEاستخدام الاتجاه، لا علامة واحدة2FOLLOW DETRACTORSاقرأ التعليق3COMPARE FAIRLYالذكاء الاصطناعي والإنسان
The CSAT وتجمع الصفحات بين بطاقات الإنجاز، ومتابعة الجرار، والتعليقات، وانهيار الإدارات والعناصر، والحديث عن التغذية المرتدة.

وتحدد مواعيد إجراء الدراسات الاستقصائية للتذاكر بعد إغلاق السوق (عادة ما تكون في الفترة من 24 ويكون الرد الإيجابي على هذا السؤال هو درجة.4أو 5. استخدم صف النقد للحصول على درجات 1 أو2وقراءة البطاقة/المحادثة قبل الاتصال بالزبون.

ويُبلغ عن ردود الفعل في المحادثات بشكل منفصل للمحادثات التي يحلها الذكاء الاصطناعي والمحادثات البشرية. ولا ينبغي استخدام أحجام العينات الصغيرة لتصنيف العملاء أو النماذج.

الدعم

بث الفريق بالبريد الإلكتروني

وتتيح صفحة منصة البريد الإلكتروني للمشغل المأذون له إرسال رسالة لمرة واحدة إلى جميع الوكلاء العاملين، أو وكلاء مختارين أو إدارة واستعراض تاريخ الإرسال.

فرز المنتجات
منصة البريد الإلكترونيويبين محرر البريد الإلكتروني للفريق الجمهور والموضوع والرسالة وتاريخ التسليم السابق.منصة البريد الإلكترونيمساحة العملالمستفيدون12DELIVERED11فشلت1عرض الحيز العمليالجمهورجميع العوامل النشطةمختارةالموضوعتناوب الدعم في تموز/يوليهجاهزرسالةالجدول الزمني وملاحظات الزيادةجاهزالتاريخالبرامج السابقة والنتائجعرض1CHOOSE PEOPLEجميع الموظفين أو فريق مختار2WRITE CLEARLYالموضوع والرسالة3REVIEW HISTORYتأكيد النتيجة
ويبين محرر البريد الإلكتروني للفريق الجمهور والموضوع والرسالة وتاريخ التسليم السابق.

هذه الصفحة هي لرسائل التشغيل الداخلية، وليس لتسويق العملاء. اختار أصغر جمهور صحيح، وانظر إلى الأسماء والعناوين مسبقاً ثم أرسل. يستخدم التسليم مسار البريد الصادر المحدد ويسجل النتيجة.

الدعم

صناديق البريد، والتسليم والبريد الإلكتروني الوارد

تكوين كيفية OpsIQ يرسل البريد الإلكتروني، ويحول الرسائل الواردة إلى تذاكر ويثبت أن المجال المرسل جاهز.

فرز المنتجات
إعدادات البريد الإلكترونيوتجمع إعدادات البريد الإلكتروني بين توجيه الرسائل الصادرة، والهوية من المرسل إليه، واستهلاك صندوق البريد، والتحقق من قابلية التسليم، والاختبار عبر البريد.إعدادات البريد الإلكترونيمساحة العملخارجيSMTPMAILBOXES3نطاقتمرعرض الحيز العمليالموصّل المفضلSMTP /وصلة مقدم الخدمةمشكلةمن الهويةSupport <[email protected]>جاهزصندوق بريد IMAP[email protected] صندوق البريدالاقتراعإمكانية الإنجازSPF · DKIM · DMARCتمر1CHOOSE OUTBOUNDموصل أو SMTP2CONNECT INBOXIMAP أو أنبوب3اختبارإرسال وتحقق
وتجمع إعدادات البريد الإلكتروني بين توجيه الرسائل الصادرة، والهوية من المرسل إليه، واستهلاك صندوق البريد، والتحقق من قابلية التسليم، والاختبار عبر البريد.

البريد الإلكتروني الصادر

Full administrators can choose the preferred email connector; OpsIQ falls back to configured SMTP/mail delivery when appropriate. Set a recognisable From name/address, send a test and check the 24-hour success/failure metrics.

صناديق بريد

يحتاج صندوق البريد IMAP إلى اسم، وعنوان بريد إلكتروني، والإدارة المستهدفة، والمضيف، والمنفذ، والنمط الأمني، واسم المستخدم، وكلمة السر، والمجلد، وحالة الاستفتاء، وخيار التحقق من صحة الشهادة. استفتاء الآن للتحقق من الامتصاص قبل الانتظار لـ cron.

أنابيب فورية

على نفس الخادم، يمكن أنبوب البريد أن ينقل الرسالة RFC822 الخام مباشرة. ويمكن لخادوم بريد عن بعد أن يرسل الرسالة الخام إلى نقطة نهاية واردة محمية باستخدام رموزه. ويدخل كلا المسارين نفس خط الأنابيب لإزالة التكرار والتسريب وتسيير التذاكر.

إمكانية الإنجاز

التحقق من SPF/DKIM/DMARC هو دليل استشاري لنطاق From المحدد. لا يضمن التحقق الأخضر وضع صندوق الوارد، ولكن ينبغي إصلاح الفشل قبل إرسال رسائل الإنتاج.

الدعم

استوديو بوابة الدعم

ويقوم ستوديو بوابة الدعم بتصميم ونشر تجربة الدعم الموجهة نحو العملاء دون الحاجة إلى أصول خارجية للصور.

فرز المنتجات
استوديو بوابة الدعميعرض استوديو البوابة عرضا مسبقا متجاوبا إلى جانب الموضوع، والتصفح، والمعارف، والتذاكر، والمساعد، والنموذج، وحاشية الصفحة، CSS الضوابط.استوديو بوابة الدعممساحة العملTEMPLATEحديثةاستعراضسطح المكتبالدولةمسودةعرض الحيز العمليالسمةألوان العلامة التجارية والطباعةتحريرالملاحةالمعرفة، التذاكر، المساعدتحريراستمارة التذكرةالحقول، والتوجيه والنسختحريرنشرالتحقق وبدء التشغيلألف - الاستعراض1CHOOSE TEMPLATEابدأ من الهيكل2PREVIEW SIZESمن الحواسيب المكتبية إلى الأجهزة المحمولة3PUBLISH SAFELYاستعراض ثم الإفراج
يعرض استوديو البوابة عرضا مسبقا متجاوبا إلى جانب الموضوع، والتصفح، والمعارف، والتذاكر، والمساعد، والنموذج، وحاشية الصفحة، CSS الضوابط.

استخدام النموذج كنقطة انطلاق، ثم تشكيل الموضوع والتصميم والتصفح والبحث عن المعارف واستمارة التذاكر والمساعد وحاشية الصفحة والعلامة التجارية وسلوك التذاكرة وتعديلها CSS - استعراض مسبق على أجهزة الحاسوب المكتبي واللوحات اللوحية والهواتف المحمولة قبل النشر.

الدعم

ثغرات المعارف

وتجمع صفوف الفجوات المعرفية أسئلة العملاء التي لم تتمكن الآلة الحاسبة من الإجابة عليها بثقة حتى يتمكن الفريق من تحسين التغطية.

فرز المنتجات
ثغرات المعارفوترتب صفوف الفجوات الأسئلة المفقودة أو ذات الثقة المنخفضة وتتتبع ما إذا كان الفريق قد حلها.ثغرات المعارفمساحة العملOPEN GAPS28REPEATED9RESOLVED116عرض الحيز العمليحدود الهجرةسُئل 14 مرةمرتفعدعم نهاية الأسبوعسُئل 8 مرةمتوسطتوقيت السدادسُئل 6 مرةمتوسطAPI المنطقةسُئل 3 مرةمنخفض1REVIEW QUESTIONانظر سياق الحوار2CHOOSE FIXالمادة أو الطلب3RESOLVEتحقق من الإجابة التالية
وترتب صفوف الفجوات الأسئلة المفقودة أو ذات الثقة المنخفضة وتتتبع ما إذا كان الفريق قد حلها.

لذا، فمن الأفضل أن نفتح ثغرة لقراءة السؤال الأصلي والمحادثات القريبة منه، ثم نختار الحل الصحيح: تحديث مقال قائم، أو إنشاء مقال معرفي جديد، أو إضافه واقعة تجارية، أو تصويب البيانات المرتبطة، أو تغيير تعليمات التصعيد. ولا نضع علامة على حلها إلا بعد التقييم أو الاختبار الحقيقي الذي يعود بإجابة مقبولة.

الدعم

إدارة صفحة الحالة

وتبلغ صفحة إدارة الحالة عن صحة الخدمة والحوادث باستخدام المكونات والحالتين الحاليتين والتحديثات.

فرز المنتجات
إدارة الحالةوتدرج إدارة الحالة المكونات والحوادث بحيث يمكن للمشغلين نشر معلومات خدمة واضحة ومختومة زمنيا.إدارة الحالةمساحة العملOVERALLتشغيليالمكونات7INCIDENTS1عرض الحيز العمليالموقع الشبكيتشغيليأخضرAPIتدهور الأداءراقبتناول البريد الإلكترونيتشغيليأخضرالحادث الحاليAPI استقصاء التأخيرمفتوح1UPDATE COMPONENTاختار حالة إزالة2POST INCIDENTتحديثات خاضعة للتوقيت3RESOLVEاختتام الموجز
وتدرج إدارة الحالة المكونات والحوادث بحيث يمكن للمشغلين نشر معلومات خدمة واضحة ومختومة زمنيا.

عندما تؤثر حادثة ما على العملاء، يجب نشر إشعار أولي، وإضافة تحديثات ذات ختم زمني عند تغير الحقائق، وإغلاقها بموجز موجز للحل. ولا تستخدم صفحة الحالة كسجل داخلي لتصحيح الأخطاء؛ فالتشخيص الحساس ينبغي أن يبقى في السجل الداخلي. OpsIQ وسجلات الخواديم.

الذكاء الاصطناعي

ضع الذكاء الاصطناعي الخاص بك

AI Configuration is where you choose your AI provider, model, and cost controls. OpsIQ supports multiple providers: Claude (Anthropic), GPT-4o (OpenAI), Gemini (Google), and Grok (xAI). You can use your own API key (BYOK) or Managed AI if available on your plan.

إنشاء نظام للذكاء الاصطناعي
تكوين الذكاء الاصطناعيلوحة إعدادات الذكاء الاصطناعي: خيار Managed-AI / BYOK ، واختيار النموذج، ومقياس شهري لميزانية الرموز.تكوين الذكاء الاصطناعيمساحة العملتكوين الذكاء الاصطناعيمقدم الخدمةالذكاء الاصطناعي المدارةمفتاحك (BYOK)النموذجمتوازنالميزانية الشهرية للإدارة المتكاملة62%1TWO MODESالذكاء الاصطناعي المدار أو BYOK2PICK A MODELالسرعة مقابل العمق3BUDGETSالحدود القصوى للرموز ومراقبة التكاليف
اختار الذكاء الاصطناعي المدار أو مفتاحك الخاص، واختار نموذجا للسرعة مقابل العمق، وحدد سقف الإنفاق الشهري بميزانية رمزية.

اختيار مقدم خدمات

_Claude (Anthropic)

عقلية قوية، حذر مع الحقائق، جيد في اتباع التعليمات المعقدة.4-20250514)توقيع( كلود -3.5 أفضل لـ: محادثات الدعم، الأسئلة التقنية، التحليل التفصيلي.

GPT-4o (GPT-4)OpenAI)

سريع، إبداعي، معرفة عامة جيدة. النماذج: gpt-4o, gpt4o-mini أفضل للردود السريعة، الكتابة الإبداعية، الأسئلة المعرفية الواسعة

_Gemini (Google)

جيد في الأسئلة الوقائعية، دعم متعدد اللغات.gemini-2.0-الإضاءة،gemini-1.5 أفضل ل: دعم اللغات المتعددة، البحث عن الحقائق.

الأصفر (xAI)

رد سريع و مختصر النماذج: grok-3-mini-fast أفضل للرد السريع، نبرة غير رسمية

BYOK مقابل الذكاء الاصطناعي المنظم

BYOK (أحضر مفاتيحك الخاصة)

أنت تقدم مفتاحك الخاص API من مقدم الخدمة. تدفع للمقدم مباشرة. التحكم الكامل في اختيار النماذج واستخدامها.

الذكاء الاصطناعي المدارة

"أى آي" تم توفيره كجزء منOpsIQالخطة لاAPIنحتاج إلى مفتاح، النفقة مُقابلة من رصيد ائتماني في خطتك

إنشاء خطوة بخطوة

1
اذهب إلى تشكيل الذكاء الاصطناعي

في OpsIQ admin، تصفح إلى الإعدادات > تشكيل الذكاء الاصطناعي.

2
اختيار مقدم الخدمة

اختر مقدم خدمة الذكاء الاصطناعي الخاص بك من القائمة المنسدلة.

3
أدخل المفتاح API

إذا استخدمت BYOK, أدخل اسمك API بالنسبة للذكاء الاصطناعي المدار، يتم معالجة هذا بصورة آلية.

4
اختار النموذج

انقر على النموذج المحدد الذي تريد استخدامه، فالنماذج الأصغر حجماً أسرع وأقل تكلفة، والنماذح الأكبر تعطي إجابات أفضل.

5
اختبار التوصيل

انقر على "اختبار الاتصال" للتحقق من أن مفتاح API والنموذج يعملان. تعني العلامة الخضراء نجاح العملية.

6
احفظ

انقر على حفظ لتفعيل تشكيلك للذكاء الاصطناعي.

ضوابط التكاليف

الميزانية الشهرية

حدد الحد الأقصى للإنفاق الشهري على رموز الذكاء الاصطناعي. وعندما يتم الوصول إلى الميزانية، تتدهور ميزة الذكاء العاطفي بشكل لطيف (استجابات أقصر، لا رد آلي) بدلا من التوقف تماما.

الحد الأقصى لرمز المحادثة الواحد

الحد الأقصى من الرموز لكل محادثة واحدة. يمنع المحادثات العابرة من استهلاك أرصدة فائضة.

تنبيه الرصيد المنخفض

عندما ينخفض رصيدك الائتماني في نظام المساعدة الذاتية إلى ما دون العتبة (الافتراض: 50,000 رمز.

تشكيل كل حيز عمل

إنّ تشكيل الذكاء الاصطناعي هو لكل مساحة عمل. إذا كنت تدير مواقع متعددة، يمكن أن يستخدم كل مساحة العمل مقدماً مختلفاً ونموذجاً وميزانية مختلفة. ويرث مجال العمل الافتراضات العالمية ما لم يتم إبطالها. لتشكيل كل مساحات العمل: انتقل إلى مجال العمل، ثم اذهب إلى تشكيل العقل الصناعي وحفظ الإعدادات هناك.

الحصول على مفاتيح API

_Anthropic (Claude)

اذهب إلى console.anthropic.com > API المفاتيح > إنشاء مفتاح. نسخ المفتاح الذي يبدأ بـ "sk-ant-".

OpenAI (مجموعة غات)

إذهبْplatform.openai.com > APIالمفاتيح تخلق مفتاحاً سرّياً جديداً، عُلِم المفتاح بدءاً بـ "إسك-

_Google (Gemini)

اذهب إلى aistudio.google.com الحصول على API مفتاح. إنشاء مفتاح لمشروعك. نسخ المفتاح.

xAI (اليونان)

اذهب إلى console.x.ai > API المفاتيح, أنشئ ونسخ مفتاحك

اختبار نظام الذكاء الاصطناعي الخاص بك

السيناريو:
بعد إدخال مفتاحك API ، انقر على "اختبار الاتصال". ينبغي أن ترى علامة خضراء ومثال استجابة من الذكاء الاصطناعي.
ماذا نفعل:

إذا فشل الاختبار: (1) تحقق من أن API إن المفتاح صحيح (لا توجد فجوات إضافية).2) تحقق من أن حسابك لديه فواتير مع مقدم الخدمة. (3) تحقق من أن اسم النموذج صحيح. (4) إذا كنت تستخدم إدارة الذكاء الاصطناعي، تحقق من أن ترخيصك نشط.

أي مقدم أفضل؟+

لا يوجد أفضل مقدم خدمة واحد. Claude هو ممتاز لمحادثات الدعم. GPT-4o سريع ومتنوع. _Gemini يتعامل مع لغات متعددة جيدا. جرب كل واحدة ورؤية أي منها ينتج أفضل النتائج لحالة استخدامك المحددة.

هل يمكنني تغيير مقدمي الخدمات في وقت لاحق؟+

نعم. تغيير مقدم الخدمة والمفتاح API في أي وقت. تاريخ المحادثة الحالية يتم حفظها. الذكاء الاصطناعي سوف تستخدم مقدم الخدمات الجديد لجميع المحادثات المستقبلية.

ماذا يحدث عندما تنفد رصيدي؟+

تتحلل منظمة العفو الدولية بشكل جيد: فالاستجابات تصبح أقصر، وتتوقف تلقائياً، ويظهر الإسمان تحذيراً منخفض التوازن.CRMاستمر في العمل بدون أي آي.

الذكاء الاصطناعي

حديث أكثر ذكاءً وأرخص مع العملاء

مجموعة من الضوابط التي تجعل موكلك يتحدث إما أذكى (توجد أسباباً في حساب العميل كوكيل بشري) أو أرخص (يرسل الـ(آي أي أقل أو يجيب على خطوات أقل)، وكل سيطرة تزول عن طريق التقصير والاستقلال، وتتحول إلى سلوك لا يغير أبداً أي سلوك آخر، يعيش معظمها تحت قيادة (سيتينتس شانت بيفيور)

إجابات أذكى (طريقة الوكيل)

ويجيب الروبوت العادي على سؤال واحد من بحث واحد. طريقة الوكالة على ذلك، يمكن للمساعد أن يقوم بعدة عمليات فحص حسابية فقط في دور واحد وإستجوابهم مثل "هل لدي تذاكر مفتوحة" وهل يُجيب رصيدي بما يكفي لتجديدي القادم؟" في رد واحد مع الرياضيات التي تم القيام بها، لا يُستخدم إلا للعملاء المتحققين من الحسابات أو إعادة الأسئلة، وكل شيء آخر يسير على الطريق العادي للرد الوحيد.

طريقة الوكالة

إلى بضعة مشاهدات فقط من حيث القراءة في كل مرة، وإستجابة قبل الإجابة، استدر عندما يكون لديك منصة متصلةWHMCS, Shopify, Stripe, Zendeskغير مرئية اليوم، لم يتغير

عمق التفكير في إجابات الوكلاء

مدى صعوبة النموذج في التفكير في التحولات المعقدة (منخفض/متوسط/عالي). ابدأ على منخفض؛ معظم أسئلة الدعم يتم معالجتها بشكل جيد هناك.

نموذج الوكيل

يضع نموذجا أقوى فقط لدور الوكلاء المعقدة، لذلك تظل محادثات اليومية على نموذج خفيف ورخيص ولا تدفع سوى الدور الصعبة للعمق. فارغ = نموذجك المعتاد للدردشة مع العميل.

الخطة المقبلة: الردود على جواز السفر (بيتا)

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

المحادثة والتفاهم

ذاكرة المحادثات الطويلة (بيتا)

يحتفظ بموجز تشغيلي قصير للرسائل القديمة (الأسماء، وأرقام التذاكر/الفواتير، والمبالغ، والقرارات) حتى يظل المساعد متسقاً عبر محادثات طويلة جداً دون إعادة إرسال النص الكامل.

التسامح مع الأخطاء المطبعية

يقرأ الأخطاء المطبعية الصغيرة ("تذاكري المفتوحة"، "الفواتير غير المدفوعة") ككلمات مقصودة بحيث يتم العثور على المعلومات الصحيحة بدلاً من أن تفوت. يعمل مع كل منصة متصلة. مُعطل تلقائيًا؛ مفيد للدردشة المكثفة عبر الهاتف المحمول.

سياق الحسابات الرشيدة

فقط يعلق على حساب العميل عندما يكون السؤال عن حسابهم (التوازن والفواتير والتذاكر والخدمات)

وفورات في التكاليف

تخط البحث عن المعرفة للتحية (بيتا)

"مرحباً" و "شكراً" لا تُطلق بحثاً عن قاعدة المعرفة هذه الردود لا تستخدمه أبداً

أطول إجابة مسموح بها (بالرموز)

يحدد الحد الأقصى لطول الرد الوحيد. طول الرد هو الجزء الأكثر تكلفة من المكالمة، لذلك فإن حداً معقولاً (حوالي 500 للدعم) هو أكثر ضوابط التكلفة فعالية في المحادثات. لا يقلل إلا من حدودك العالمية ولا يرفعها أبداً.

ضعي عقلك الاصطناعي

عمق التفكير (الدردشة بين الزبائن والمديرين)

كم يفكر النموذج قبل الإجابة (من الأدنى إلى الأعلى) - إبقاء محادثة الزبون على الحد الأدنى/المنخفض للسرعة؛ الاحتفاظ بإعدادات أعلى للتحليل والطيار الإداري.

نموذج الذكاء الاصطناعي لكل وظيفة

ويمكن لكل سطح من هذه الأجهزة (الحديثات الحية، وكتابات التذاكر، والملخصات والتحليلات، والنسخ المسمّى، والترقية، والاستخبارات الموقعية، والأكثر) أن يُدار على نموذجه الخاص به، ولايت حيث تُعتبر الأمور سريعة، وتكون قوية حيثما تكون النوعية ذات أهمية.

ضوابط تكاليف المحادثات الإدارية

يمكن للطيار الإداري الاحتفاظ بذاكرة عمل محدودة وتحميل الأدوات التي يحتاجها السؤال فقط (أدوات بسيطة) بدلاً من كل أداة في كل دور.

تدريب الذكاء الاصطناعي

تعليمات الضغط

تعليماتك تُرسل على كلّ منعطف، لذا فإن طولها يتكرر. {variable} أو قاعدة، و تقارير عن حمايتها لذلك لا يغير أبداً معنى ذلك

"ما الذي يوجد بالفعل في الدماغ" (ℹ️)

يظهر ما OpsIQ يعرفه بالفعل عن عملك لكل مساحة، لذلك يمكنك حذف أي شيء كنت تكرر في تعليماتك الخاصة.

💡
أين يذهب المال؟ من أجل التكلم عن طريق الدعم القصير، فإن المدخلات (التكليفات + بيانات الحسابات + التاريخ، ترسل كل دور) عادة ما تكون تكاليفها أكثر من الرد القصير، والاختناق وسياق الطلاء يساعد معظمها هناك، ولطالما تولدت النتائج، وتُهيمن على ذلك الحد الأقصى للرد وعلى عمق التفكير الأدنى.
هل هذه تغيّر طريقة الرد على المحادثة؟+

لا. كل عنصر من عناصر التحكم مطفأ تلقائيا ومستقل، وإن كان إشعال أحدها يزيد فقط في سلوكها؛ فإن إطفاؤه يعيد الدردشة إلى ما كانت عليه تماما قبل ذلك.

أي ترتيب يجب أن أشغلهم؟+

تشغيل المحادثة اليومية على نموذج خفيف وتثبيت نموذج قوي أكثر من الوكيل. ثم، إذا كان لديك منصة متصلة، تفعيل نمط الوكيل، ثم التخطيط مقدما، ثم ذاكرة محادثات طويلة. ثم السياق القليل، skip-KB-for greetings، والرد على الرأس. في نهاية المطاف ضغط تعليماتك. شاهد بعض المحادثات الحقيقية بعد كل تغيير.

مجموعة أدوات الوكيل الإداري: البحث على شبكة الإنترنت، وكتب التشغيل، والبعثات، ونقل الملفات

إن محادثة الذكاء الاصطناعي الإداري هي مهندس عامل، وليس مجرد صندوق أسئلة. فهي قادرة على البحث عن إصلاحات على شبكة الإنترنت، والاحتفاظ بمكتبة من إجراءاتك التشغيلية، وإجراء دوريات على خوادمك وفقاً لجدول زمني، ونقل الملفات. ومعظم هذا يتم بالسؤال عنه في المحادثة؛ والشيء الوحيد الذي يمكنك تحديده مقدماً هو أي مزود للبحث على الشبكة يستخدمه، وذلك على صفحة "إعداد الذكاء الإصطناعي الخاص بك".

البحث على شبكة الإنترنت

بنيت في

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

الكتب المتداولة

في الدردشة

مكتبة محفوظة من إجراءاتك ("كيف نفعل X هنا"). يقوم العميل بكتابة واحدة بعد أن يتوصل إلى عمل صعب ويتبعها في المرة القادمة، وبالتالي تظل المعرفة على قيد الحياة حتى نهاية المحادثة.

البعثات

مجدول

دوريات قراءة فقط كل صباح تحقق من مساحة القرص و سجلات الأخطاء وأخبرني النتائج تأتي على جرس إدارتك

نقل الملفات

في الدردشة

طلب ملف سجل والحصول على وصلة تنزيل خاصة، أو نسخ ملف من خادم متصل إلى آخر. 5 MB.

البحث على شبكة الوكيل الإداري (في إنشاء نظامك للذكاء الاصطناعي)

مزود خدمات البحث

ما الذي يستخدمه الوكيل للبحث على شبكة الإنترنت. الافتراض هو DuckDuckGo: بدون مفتاح، مجاني، يعمل في كل تثبيت. Brave Search, Tavily and. Serper.dev (Google وعادة ما تسفر عن نتائج أفضل، ولكن كل منها يحتاج إلى تحليل API إذا فشل مقدم خدمات مفتاح لأي سبب (مفتاح خاطئ، حصة مستهلكة، مشكلة شبكية)، فإن ذلك البحث يعود إلى DuckDuckGo تلقائيًا، وبالتالي لا يصبح البحث مظلما أبدًا.

البحث عن المفتاح API

المفتاح لمقدم الخدمة الذي اخترته، مطلوب فقط لـ Brave أو Tavily أو Serper. بمجرد حفظه يتم إخفاؤه ولا يظهر أبداً على الصفحة مرة أخرى؛ قم بإلصاق واحد جديد ليحل محله. لا يصبح مقدم الخدمة المرتبط بالمفتاح نشطاً إلا عندما يتم حفظ كل من مقدم الخدمات ومفتاحه.

الكتب المتداولة

عندما يعمل الوكيل على مهمة تريد إنجازها بنفس الطريقة مرة أخرى، قل "خزن ذلك ككتيب تشغيل اسمه nightly-cleanup". من الآن فصاعدًا، سيرى الكتاب التنفيذي باسمه في كل جلسة، وعندما تطلب المهمة باسمها (أو توصفها) فإنه يقوم بسحب الخطوات ويتبعها. يمكنك أن تطلب منه إدراج أو تحديث أو حذف كتب التنفيذ في أي وقت.

💡
كتاب التشغيل هو دليل، وليس تصريحاً حراً. عندما يتبع الوكيل أحدها، فإن كل خطوة من شأنها تغيير الخادم لا تزال تمر عبر وضع الإذن الحالي الخاص بك وتظهر بطاقات الموافقة المعتادة. ولا يمكن أبداً أن يتخطى كتاب التنفيذ موافقة.

البعثات

المهمة هي عمل متكرر يقوم به العميل بنفسه: كل ساعة، يوميًا في وقت محدد، أو أسبوعيًا في يوم محدد. البعثات قراءة فقط من حيث التصميم. يمكنهم قراءته الخوادم والبيانات والشبكة، ولكن لا يمكنهم أبدًا تغيير أي شيء؛ فهم يحققون ويقدمون تقارير. عندما تنتهي مهمة ما، تصل النتائج كإخطار على جرس إدارتك. قل "أجري دورية الصباح الآن" لتحريك واحدة عند الطلب، أو أطلب من العميل إدراجها، تعليقها أو حذفها.

⚠️
تجري البعثات من OpsIQ cron، لذلك يجب أن يتم إعدادها (انظر Cron و التشغيل الآلي). "أُطلقه الآن" مرة واحدة من المحادثة يعمل حتى بين عمليات cron على معظم الخوادم.

نقل الملفات

طلب ملف ("أحصل على سجل أخطاء اليوم من الخادم الشبكي") والوكيل يقوم بوضعه في المراحل ويرد مع رابط تنزيل خاص. يعمل الرابط فقط للمديرين المسجلين وينتهي بعد حوالي يوم واحد. الملفات محدودة عند 5 MB؛ لأي شيء أكبر، اسأل الوكيل لضغطها أو تقصيرها على الخادم أولاً.

يمكن للوكيل أيضاً نسخ ملف واحد بين خادمين متصلين، مرة أخرى حتى 5 MB. وتُعامل الكتابة على الوجهة كما لو كانت أي تغيير آخر يقوم به: في وضع السؤال تحصل على بطاقة موافقة أولاً، ويُحتفظ بالنسخ الاحتياطي للملف القائم، والنسخة قابلة للعكس. من أجل السلامة، يُعاد قراءة محتويات الملف من المصدر في اللحظة التي تُطبَّق فيها النسخة، لا يتم أخذها من الدردشة.

الذكاء الاصطناعي

تدريب الذكاء الاصطناعي

التدريب على الذكاء الاصطناعي هو حيث تعلم OpsIQ كيف يتصرف. أنت تكتب الإشارات التي تحدد الشخصية، والحدود، وتركيز المعرفة، وقواعد التصعيد. اعتبر ذلك مثل كتابة دليل تدريب لعميل دعم جديد.

تدريب الأجهزة الآلية
تدريب الذكاء الاصطناعيمحرر تعليمات الذكاء الاصطناعي مع علامات العميل / مدير ونغمة الإنجليزية البسيطة، دائما ولا تحكم أبدا.تدريب الذكاء الاصطناعيمساحة العملالذكاء الاصطناعي للعملاءإدارة الشؤون الإداريةطنودي، موجز، لا يحاول أبداً أن يكون مضطرباًدائماتقديم خدمة تسليم الوثائق البشرية في حالة المنازعات المتعلقة بالفواتير.أبدًاوعدت بإعادة الأموال دون التحقق من الحساب1TWO MANUALSالعميل والمدير2PLAIN ENGLISHصوت، دائما، أبدا3GROUNDEDبالإضافة إلى قاعدة معرفتك
تدريب الآي مثل تعيين جديد، وزبائن وكتيبات ادمان مكتوبة باللغة الإنجليزية السهلة (الطن، دائماً، أبداً)، مثبتة في KB الخاص بك.

مجالان للتدريب

نداءات الذكاء الاصطناعي للعملاء

يتحكم في كيفية تحدث الذكاء الاصطناعي مع عملائك في أداة المحادثة. هذا هو أهم إشارة للحصول على الحق.

التعليمات الإدارية للذكاء الاصطناعي

يتحكم في كيفية مساعدة الذكاء الاصطناعي لفريقك الإداري في لوحة التحكم للمشغل. هذا يتعامل مع الاستفسارات الداخلية وتنفيذ العمل.

كتابة نموذج ذكاء اصطناعي لخدمة العملاء

ينبغي أن تغطي قائمة طلبات الذكاء الاصطناعي لعملائك هذه المجالات:

1
الهوية

من هو الذكاء الاصطناعي؟ أعطيه اسماً، ودوراً، شخصية. مثال: "أنت لونا، مساعدة دعم عملاء صديقة ومستنيرة في متجر أكيم".

2
النبرة والأسلوب

كيف ينبغي أن يتواصل؟ مثال: "كن محترفاً ولكن دافئاً. استخدم لغة بسيطة. تجنب المصطلحات المتخصصة. اجعل الردود موجزة (2-_3 فقرات كحد أقصى)."

3
حدود المعرفة

ماذا يجب أن يعرف وما لا يعرف؟ مثال: "أنت تعرف عن منتجاتنا، وتسعيرها، وشحنها، وسياسة إعادتها. وأنت لا تعرف عما تفعله الشركات المنافسة أو القرارات الداخلية للشركة".

4
قواعد التصعيد

متى ينبغي أن تسلم إلى إنسان؟ مثال: "تصعيد إلى وكيل بشرى عندما: يطلب العميل استرداد الأموال، أو يذكر الإجراء القانوني، أو يُبلغ عن قضية أمنية، أو يسأل نفس السؤال ثلاث مرات".

5
أشياء لا تفعلها أبداً

حدود صارمة. مثال: "لا تعد أبدا برد الأموال، ولا تشارك أبدا صيغ التسعير الداخلية، ولا تختلق أبدا خصائص المنتج التي لا وجود لها، ولا تعطي أبدا مشورة طبية أو قانونية أو مالية".

مثال على النداءات

الزبون المثالي (AI) السريع
You are Aria, a friendly customer support assistant for TechGear.

PERSONALITY:
- Warm and professional
- Concise (2-3 paragraphs max per response)
- Use simple language, no jargon
- If unsure, say so honestly

KNOWLEDGE:
- Our products: laptops, accessories, software subscriptions
- Pricing: as listed in the knowledge base
- Shipping: free over $50, 3-5 business days standard, 1-2 days express ($12)
- Returns: 30-day money-back guarantee, must be in original condition

ESCALATION (hand off to human):
- Refund requests over $100
- Account security concerns
- Legal threats or complaints
- Customer explicitly asks for a human

NEVER DO:
- Promise specific delivery dates (say "estimated")
- Share discount codes not in the knowledge base
- Make up product specifications
- Give financial or legal advice
الزبون المثالي (AI) السريع
You are Atlas, an AI assistant for CloudHost web hosting.

TONE: Technical but accessible. Assume the customer has basic web knowledge.

KNOWLEDGE:
- Shared hosting, VPS, dedicated servers
- cPanel, DNS, SSL, email configuration
- WordPress, Joomla, Drupal installation
- Common error codes and troubleshooting

ESCALATION:
- Server outages affecting multiple customers
- Data loss or security breach reports
- Billing disputes over $50
- Complex migration requests

BOUNDARIES:
- Do NOT access customer servers or databases
- Do NOT change DNS records or passwords
- Always recommend the customer makes changes themselves
- For code issues, suggest steps but clarify you cannot debug their application

صقل التعليمات البرمجية مع مرور الوقت

1
بدء العمل بالأساسيات

لذا، لابد أن تبدأ بالهوية والنبرة والحدود الأساسية. ولا تحاول تغطية كل شيء في اليوم الأول.

2
Review AI History weekly

قراءة المحادثات التي أعطى فيها الذكاء الاصطناعي إجابات خاطئة أو دون المستوى الأمثل.

3
تحديث الطلب

أضف قواعد محددة من أجل القضايا المتكررة، إكسِر إذا إستمرّت منظمة العفو الدولية في إعادة الأموال الواعدة، أضيفي "لا تعدني أبداً برد المال"

4
إضافة المعارف

إذا لم يستطع الذكاء الاصطناعي الإجابة على سؤال ما، أضف الجواب إلى قاعدة المعارف بدلاً من محاولة إدراج كل شيء في الطلب.

⚠️
إبقي التعليمات الخاصة بك تحت 2,000 يمكن أن تؤدي النداءات الطويلة المفرطة إلى إرباك الذكاء الاصطناعي وزيادة تكاليف الرموز.
ما هو الفرق بين الطلب وقاعدة المعارف؟+

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

هل يمكنني أن أحصل على نداءات مختلفة للإدارات المختلفة؟+

إذا كنت بحاجة إلى سلوك مختلف للذكاء الاصطناعي للإدارات المختلفة، استخدم قاعدة المعرفة لتوفير معلومات محددة بالإدارة وذكر سياق الإدارة في التعليمات.

الذكاء الاصطناعي

تاريخ الذكاء الاصطناعي

يعرض تاريخ الذكاء الاصطناعي كل محادثة أجراها الذكاء الإصطناعي مع العملاء والمديرين. واستخدامه لمراجعة أداء الذكاء الصناعي، وإيجاد إجابات خاطئة، وتحديد الثغرات في التدريب.

تاريخ الذكاء الاصطناعي
تاريخ الذكاء الاصطناعيسجل لعمليات الذكاء الاصطناعي مع علامات نوعية، والسؤال والإجابة، ووقت الاستجابة والنتيجة.تاريخ الذكاء الاصطناعيمساحة العملكل دورة للذكاء الاصطناعي مسجلةدردشةأين طلبي؟شحنت اليوم، تتبع جهاز البريد0.9sأجيبتذكرةمشروع رد بشأن T-12345صيغ إقرارات سداد1.4sdraftedمسؤول.لخص تذاكر هذا الأسبوع12- موجز السطر المُعاد2.1sتمدردشةس: ألغِ خطتيhanded off to a human0.7sescalated1EVERY TURNالطلب، والرد، واتخاذ إجراء2SEARCHABLEالتصدير3OWNER-ONLYتتبع كامل لمراجعة الحسابات
وسجل كل دور من وكالات الاستخبارات (الفصل، مشروع التذاكر، الإجراء المخصص) على وجه الدقة وبسرعة الرد ومدته ونتائجه.

ماذا تظهر كل محادثة

التاريخ والوقت

عندما حدثت المحادثة

هوية الزبون

الاسم والبريد الإلكتروني إن كان معروفاً، وإلا IP والبلد.

القناة

إضافة للدردشة، الرد الآلي على التذاكر، مسودة البريد الإلكتروني أو الذكاء الاصطناعي الإداري.

الرسائل

محضر كامل للمحادثة: رسائل الزبائن وردود الأجهزة الذكية.

استخدام الرموز

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

الإجراءات المتخذة

أي إجراءات اتخذها المساعد الشخصي أثناء المحادثة (بحث عن أمر، أو إصدار تذكرة، وما إلى ذلك).

التقييم

إذا تم تفعيل CSAT، تقييم رضا العميل لهذه المحادثة.

إيجاد المشاكل

البحث حسب الكلمة الرئيسية

البحث عن مواضيع محددة لمعرفة كيف يتعامل معها الذكاء الاصطناعي. مثال: البحث عن "الرد" للتحقق مما إذا كان الذكاء الصناعي يتبع سياستك الخاصة بالردود.

حسب التصنيف

أظهر فقط المحادثات ذات التقييم المنخفض للتركيز على العملاء غير الراضين.

الترشيح حسب القناة

أظهر فقط ردود التذكرة التلقائية لمراجعة الردود الآلية بصورة منفصلة عن المحادثات.

الترتيب حسب استخدام الرموز

قد تشير المحادثات العالية إلى مشاكل: الذكاء الاصطناعي يترددون، أو يذهب في دوائر، أو الفشل في الإجابة على السؤال.

روتين مراجعة الحسابات الأسبوعي

1
تحقق من المحادثات ذات التقييم المنخفض

ما الذي حدث خطأ؟ هل كانت هناك فجوة في المعرفة، أم أن الأمر يتعلق بنبرة التحدث، أم أنه كان هناك إجابة خاطئة؟

2
تحقق من المحادثات ذات القيمة العالية

قد تشير هذه إلى الارتباك. هل تكرر الذكاء الاصطناعي نفسه؟ هل فشل في فهم السؤال؟

3
التدريب على تحديث المعلومات

بالنسبة للفجوات في المعرفة، أضف مقالات إلى قاعدة المعارف. وبالنسبة للقضايا السلوكية، حدث الطلب من الذكاء الاصطناعي. وبالنظر إلى الإجابات الخاطئة المتكررة، أضيف قواعد تصويب صريحة.

تحديد الثغرات المعرفية

السيناريو:
تبحث في تاريخ الذكاء الاصطناعي عن "التركيب" وتجد 15 محادثات حيث قال فيها الذكاء الصناعي "لا أملك تعليمات تركيب محددة لهذا المنتج".
ماذا نفعل:

هذا يعني أن قاعدة معرفتك تفتقر إلى أدلة التركيب. إنشاء مقالات قاعدة المعرفة لخطوات تركيب كل منتج. بعد إضافتها، اختبرها بسؤال أسئلة الذكاء الاصطناعي التثبيت.

الذكاء الاصطناعي

رؤى الذكاء الاصطناعي

AI Insights automatically analyzes conversation patterns and surfaces actionable findings: common questions, satisfaction trends, knowledge gaps, and escalation patterns.

رؤى الذكاء الاصطناعي
رؤى الذكاء الاصطناعي (مركز الاستخبارات)مركز الاستخبارات: موجز اليوم للذكاء الاصطناعي، والإنذارات الذكية، وأداة تقييم القيادة / تحليل الصفحة، ومجموعة من الأدوات الأخرى. 14- رسم بياني لنمط حركة المرور اليوميةرؤى الذكاء الاصطناعيمساحة العملموجز اليومحركة المرور إلى الأعلى 12%; 3 (أ) الخطوط الساخنة؛2الصفقات تحتاج إلى متابعة.التنبيهات الذكيةارتفاع عدد أخطاء الدفعالقفز على /pricingقيادة ساخنة جديدة من الولايات المتحدةالإيرادات قبل الأسبوع الماضيتسجيل رقم / تحليل صفحةIP أو URL…إركض14- نمط حركة المرور اليومية1موجز اليوممنظمة العفو الدولية تكتب موجز الصباح2SMART ALERTSحالات الشذوذ التي ظهرت إلى السطح3ON DEMANDتسجيل نتيجة إيجابية؛ وتحليل صفحة
مركز الاستخبارات الحقيقي: موجز اليوم المكتوب بالذكاء الاصطناعي، والإنذارات الذكية للشذوذات، وتقييم القيادة عند الطلب وتحليل الصفحة، والإعلان. 14- نمط حركة المرور اليومية.

ما تظهره الرؤى

الأسئلة الرئيسية

الأسئلة الأكثر شيوعا. إذا كان "كيف أعيد تعيين كلمة المرور الخاصة بي؟" هو #1، فإن قاعدة معرفتك تحتاج إلى دليل بارز لإعادة تعيين الكلمة.

اتجاهات الرضا

CSATهل تحسنت نسبة الرضا عن معدل التراجع أو تتناقص؟ قد تشير الانخفاضات المفاجئة إلى تغير قاعدة المعرفة الذي حطم شيئاً ما.

معدل الفصل

ما هي النسبة المئوية للمحادثات التي تحلها منظمة العفو الدولية بدون تدخل بشري؟ معدل أعلى من ذلك70%جيد50%يعني أن "آى آي" بحاجة إلى المزيد من التدريب

أسباب التصعيد

لماذا يتم تسليم المحادثات إلى البشر الأسباب الشائعة: طلب العميل إنسان، الذكاء الاصطناعي لا يمكن أن يرد، موضوع حساس، مسألة الفواتير.

ثغرات المعارف

مواضيع حيث يقول الذكاء الاصطناعي في كثير من الأحيان "لا أعرف" أو يعطي إجابات ذات ثقة منخفضة.

متوسط طول المحادثة

كم عدد الرسائل في كل محادثة. المحادثات الطويلة جداً (10+ رسائل) قد تشير إلى أن الذكاء الاصطناعي لا يفهم السؤال.

استخدام الأفكار المتبصرة لتحسين

السيناريو:
تظهر رؤى الذكاء الاصطناعي أن 23% من التصعيدات هي "سأل العميل عن الضمان" ولم يتمكن الذكاء الصناعي من الإجابة.
ماذا نفعل:

وهذه فجوة معرفية واضحة.1(ج) كتابة مقالة ضمانية شاملة في قاعدة المعارف تغطي جميع شروط الضمان، وعملية المطالبة، والاستبعادات.2(ج) تحديث المعلومات الواردة في المرفق المخصص للإحالة إلى المعلومات المتعلقة بالضمانات.3(أ) رصد الاثارة في الأسبوع المقبل لمعرفة ما إذا كانت تصعيدات الضمان تنخفض.

الذكاء الاصطناعي

دليل ممارسات الذكاء الاصطناعي

الإدارة الذكية OpsIQ) يساعد فريقك على إدارة OpsIQ من داخل لوحة التحكم الإدارية. يمكنك أن تطلب منه البحث عن البيانات، وشرح الخصائص، وتلخيص التذاكر، وتنفيذ أفعال المنصة.

إدارة الشؤون الإدارية
دليل ممارسات الذكاء الاصطناعيصندوق أمر Ask-OpsIQ مع بطاقة إجراء منصة مقترحة بواسطة الذكاء الاصطناعي تظهر البارامترات والتأكيد/الإلغاء.اسأل OpsIQمساحة العملاسأل OpsIQتعليق الخدمة لحساب متأخر #4821الذكاء الاصطناعيالإجراء المقترح: تعليق الخدمةالحساب: #4821 (تأخر تقديمه) $120)منصة: WHMCS · قابلة للرجوع عنها · مراجعة حساباتهاتأكيدإلغاء1ASK ANYTHINGأوامر باللغة الانكليزية البسيطة2PROPOSE FIRSTالإجراء المبين قبل تنفيذه3YOU CONFIRMالنطاق والمراجعة
أخبر العميد (AI) بما تريده بالإنجليزية الواضحة، إنه يقترح الإجراء الدقيق (المتذبذب والمراجع) وينتظر تأكيدك

ماذا يمكن للذكاء الاصطناعي الإداري أن يفعل

البحث عن البيانات

قل: "أرني كل التذاكر من. [email protected]"أو" ما هو وضع الطلب # ORD-5523?"

Summarize

اسأل: "ملخص آخر 10 تذاكر" أو "ما هي القضايا الرئيسية الدعم هذا الأسبوع؟"

شرح السمات

اسأل: "كيف يمكنني إنشاء الرد الآلي؟" أو "ماذا تعني بطاقة معدل الرجوع؟".

تنفيذ الإجراءات

أسأل: "أنشئ تذكرة لـ [email protected] أو "أغلق التذكرة T-12345"

استفسارات المنبر

اسأل: "كم عدد الزوار الذين تلقيناهم أمس؟" أو "ما هو دخلنا هذا الشهر؟".

أمثلة على المحادثات

البحث عن زبون

السيناريو:
يطلب المدير: "ابحث عن العميل [email protected] وأظهر لي نشاطهم الأخير"
ماذا نفعل:

وتنظر منظمة العفو الدولية إلى العميل في جميع مصادر البيانات ذات الصلة: جلسات الزوار، والتذاكر، والمحادثات الدردشة، والأوامر،CRMوهو يعيد ملخصا للنشاط الأخير مع ربطه بكل بند.

الحصول على موجز يومي

السيناريو:
السؤال: "ما الذي حدث اليوم؟"
ماذا نفعل:

The AI summarizes: "Today you had 245 visitors (up 12%), 8 new tickets (3 resolved by AI), 2 new orders totaling $198, and 1 chat escalation about a shipping delay."

تنفيذ الإجراء

السيناريو:
السؤال الإداري: "تغيير التذكرة T-5523 الأولوية إلى عاجل"
ماذا نفعل:

يؤكد الذكاء الاصطناعي: "سأغير أولوية التذكرة T-5523 من العادية إلى الملحة. وهذا سيؤثر على توقيت SLA. هل تؤكدون؟" وتؤكدين، ويُنفذ العمل.

💡
لا ينفذ الذكاء الاصطناعي الإداري إلا الأعمال المسجلة في سجل الأعمال، ولا يمكنه اختراع أعمال أو الوصول إلى نظم خارج السجل. OpsIQ.
الذكاء الاصطناعي

سيناريوهات الذكاء الاصطناعي للعملاء

يغطى هذا القسم سيناريوهات الذكاء الاصطناعي المشتركة التي تواجه العملاء مع السلوك المتوقع ونصائح التدريب.

الذكاء الاصطناعي للعملاء
سيناريوهات الذكاء الاصطناعي للعملاءمكتبة من أسئلة العملاء المزدوجة مع سلوك الذكاء الاصطناعي المتوقع وعلامة نتائج لكل منها.سيناريوهات الذكاء الاصطناعي للعملاءمساحة العملمكتبة السيناريوهات: السلوك المتوقع للمبادرة"أين طلبي؟"ابحث عن الطلب عبر الموصل، أعط تتبعحل"أريد استرداد المال"الاعتراف، لا تعد أبداً بتسليم إنسانالتسليم"هل الخدمه متوقفة؟"التحقق من الحالة، والإبلاغ عن الوضع الراهنالحالة"ألغي حسابي"تأكيد النية، ثم توجيهها إلى الإنسانتأكيد1SCENARIOSأسئلة شائعة2EXPECTEDكيف ينبغي للذكاء الاصطناعي أن يستجيب3اختبارتحديد الثغرات التدريبية
مكتبة من أسئلة العملاء الحقيقيين و بالضبط كيف يجب على آي أن يتعامل مع كل واحد منهم، لاختبار تدريبك وإيجاد الثغرات.

مكتبة السيناريوهات

الاستفسار عن حالة الطلب

السيناريو:
العميل: "أين طلبي؟"12345?"
ماذا نفعل:

السلوك المتوقع للذكاء الاصطناعي: (1) ابحث عن الطلب من خلال وصلة المنصة. (2)أ( اﻹبﻻغ عن الحالة الراهنة )التجهيز، الشحن، التسليم(.3() يدرج رقم التعقب إذا كان متاحاً.4) إذا تأخر الطلب، اﻹقرار بذلك وتقديم الجدول الزمني التقديري.5لا تختلق أبدا معلومات التعقب.

طلب إعادة تعيين كلمة السر

السيناريو:
العميل: "لقد نسيت كلمة المرور ولا أستطيع الدخول"
ماذا نفعل:

السلوك المتوقع للذكاء الاصطناعي: (1) توفير خطوات استعادة كلمة السر من قاعدة المعارف. (2) أضف رابط أو مسار الصفحة لإعادة التشغيل. (3) يذكر أن البريد اﻻلكتروني لإعادة التعيين قد يستغرق بضع دقائق.4) اقتراح التحقق من مجلد البريد غير المرغوب فيه. (5إذا لم يتمكن العميل من إعادة تعيينه، أرسل المشكلة إلى شخص آخر.

طلب خاصية

السيناريو:
العميل: "هل يمكنك إضافة الوضع المظلم إلى التطبيق المحمول؟"
ماذا نفعل:

السلوك المتوقع للذكاء الاصطناعي: (1)شكراً على اﻻقتراح.(2) شرح كيفية التعامل مع طلبات السمات (تسجيلها، استعراضها، ترتيب أولوياتها).3) لا تعد ببناء الخاصية. (4() إذا كانت هناك سمة مماثلة، ذكرها.

نزاع بشأن الفواتير

السيناريو:
العميل: "لقد تم تحميلي ثمن الخدمة لكنها لا تعمل"
ماذا نفعل:

السلوك المتوقع للذكاء الاصطناعي: (1) اﻻعتراف باﻹحباط. )2) تحقق من حالة الخدمة إن أمكن. (3) تصل إلى إدارة الفواتير مع كل التفاصيل. (4) ﻻ تعد برد اﻷموال. )5حدد أولوية التذكرة على مستوى عال.

سؤال خارج الموضوع

السيناريو:
الزبون: "ما هو الطقس في لندن اليوم؟"
ماذا نفعل:

السلوك المتوقع للذكاء الاصطناعي: (1"أنا مساعد دعم [الشركة] الخاص بك ويمكنني المساعدة مع الأسئلة حول منتجاتنا وخدماتنا. للحصول على معلومات الطقس، جرب خدمة الطقس."2) اسأل إذا كان لديهم سؤال عن المنتج.

كيف أختبر سلوك الذكاء الاصطناعي للعملاء؟+

افتح موقعك في متصفح خاص/غير معروف وتحدث مع الذكاء الاصطناعي كعميل. جرب الأسئلة الشائعة، والحالات الحدية، والسيناريوهات المنافسة. تحقق من أن الذكاء الإصطناعي يتبع قواعدك السريعة ويستخدم محتوى قاعدة المعارف بشكل صحيح.

الذكاء الاصطناعي

قاعدة معارف الذكاء الاصطناعي

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

قاعدة المعرفة
قاعدة المعرفةالمصادر التي تغذي مخزن المعرفة، ثم الذكاء الاصطناعي يولد إجابة مستندة ومستشهد بها.قاعدة المعرفةمساحة العملمصادر الدعمالبحث في الموقع الشبكيمقالات المساعدةالأسئلة الشائعةالمستندات المستوردةالمعرفةمعنى + كلمة رئيسيةالذكاء الاصطناعيرد مسببمع مصدر مقتبس."تأخذ المبالغ المردودة 3-_5أيام عمل."1INGESTالبحث، الأسئلة المتكررة، الاستيراد2RETRIEVEدلالية + كلمة رئيسية3GROUNDEDالردود من محتوىك
Crawl your site and import docs into the knowledge base; the AI retrieves the right pieces and answers, grounded and cited.

كيف يعمل

1
يطرح العميل سؤالا

ما هي سياسة العودة؟

2
الذكاء الاصطناعي يبحث في قاعدة المعارف

OpsIQ يجد مقال "سياسة العودة" من خلال مطابقة الكلمات الرئيسية والمعنى الدلالي.

3
الذكاء الاصطناعي يولد استجابة

تقرأ آلة التعرف على النصوص المقالة وتحرر رداً باللغة الطبيعية استناداً إلى محتوى المقالة.

4
يحصل العميل على إجابة دقيقة

الإجابة تستند إلى سياستك الفعلية، ليس البيانات العامة للتدريب من قبل الذكاء الاصطناعي.

إنشاء مقالات جيدة

موضوع واحد لكل مادة

ضع مقالة منفصلة لكل موضوع: سياسة العودة، وأسعار الشحن، وإعداد الحساب، وإعادة تعيين كلمة المرور.

أسئلة وأجوبة

ان البداية هي سؤال الزبون ثم تقديم الاجابة وهذا يساعد الذكاء الاصطناعي على مطابقة الاسئلة مع المقالات.

كن محدداً

"يجب أن تبدأ عمليات العودة خلال 30 أيام من التسليم" أفضل من "لدينا سياسة عودة."

تشمل الحالات الطرفية

ماذا عن العائدات الدولية؟ وماذا عن المنتجات الرقمية؟ وما الذي يحدث مع الأشياء المشتراة في المبيعات؟ تغطي الاستثناءات.

إبقائه مستكملا

استعراض المقالات كل ثلاثة أشهر، وحذف المعلومات التي عفا عليها الزمن، وتحديث التسعير والسياسات والإجراءات عند تغييرها.

مقالات البدء التي يجب أن تكتبها

الشحن والتسليم

تكاليف الشحن، زمن التسليم، التعقب، الشحن الدولي، وتأخيرات المناولة.

عمليات الإرجاع والمبالغ المردودة

نافذة العودة، والشروط، والعملية، والجدول الزمني للسداد، والاستثناءات.

إدارة الحسابات

إعادة تعيين كلمة السر، وتغيير البريد الإلكتروني، وحذف الحسابات، وتصدير البيانات.

التسعير والفواتير

توصيفات الخطة، ودورة الفواتير، وطرق الدفع، والفواتير والعملة.

أدلة المنتجات

كيفية استخدام كل منتج أو خاصية. تعليمات خطوة بخطوة مع لقطات الشاشة.

حل المشاكل

المشاكل الشائعة والحلول: رسائل الخطأ وطرق إصلاحها.

معلومات الاتصال

ساعات العمل، وقنوات الدعم، وأوقات الاستجابة، ومسار التصعيد.

الشؤون القانونية والامتثال

موجز سياسة الخصوصية، موجز شروط الخدمة، GDPR طلبات البيانات.

معرفة الموصل

يمكن لكل وصلة أن تساهم بالمعرفة في الذكاء الاصطناعي. عندما يتم تمكين وصلة، فإن مقالات المعرفة الداخلية الخاصة بها (كتالوج المنتج، الأسئلة الشائعة، حل مشاكل المنصة المحددة) متاحة للذكاء الصنعي تلقائيًا. يمكنك تعطيل أو تشغيل معرفه وصلة لكل وصله في إعدادات وصلة.

ميزانية الرمز

قاعدة المعرفة لديها حد أقصى من الرموز القابلة للتعديل (الافتراض: 32,000 رموز) التي تتحكم في كم سياق المعرفة يرسل إلى الذكاء الاصطناعي لكل محادثة. إذا كانت قاعدة معرفتك كبيرة جداً، فإن الذكاء الإصطناعي يختار المقالات الأكثر صلة ضمن هذه الميزانية. زيادة الحد الأقصى إذا لم تجد الذكاء الصناعي مقالات ذات صلة؛ خفضه إذا كنت تريد تخفيض تكاليف الرموز.

كم عدد المقالات التي يجب أن أكتبها؟+

تبدأ بـ5-10 إضافة المزيد كما تحدد الثغرات من خلال تاريخ الذكاء الاصطناعي و AI Insights. معظم الأعمال التجارية تحتاج إلى مساعدة 20-50 مواد للتغطية الشاملة.

هل يمكنني استيراد مواد من نظام آخر؟+

في الوقت الحاضر، يتم إنشاء المقالات يدويا في OpsIQ يمكنك نسخ ولصق المحتوى من الأسئلة الشائعة القائمة، أو مراكز المساعدة، أو الوثائق.

ما هو الشكل الذي ينبغي أن تكون عليه المواد؟+

النص البسيط يعمل بشكل أفضل. الذكاء الاصطناعي يفهم اللغة الطبيعية بصورة أفضل من HTML أو markdown المنظمين. اكتب كما تشرح للزبون.

الذكاء الاصطناعي

تقييم الذكاء الاصطناعي ومنظمة واتشوا

وتحول مجموعات التقييم أسئلة العملاء الحاسمة إلى اختبارات قابلة للتكرار لجودة الإجابة، والاستشهاد، والتصعيد، وأمان الإجراءات.

فرز المنتجات
التقييمAI Evaluation lists golden test cases, required behaviours, latest results and scheduled Watchtower runs.التقييممساحة العملSETS6CASES84PASS RATE96%عرض الحيز العمليسياسة الشحنالإشارة مطلوبةتمرطلب سداد التكاليفمطلوب تأكيد بشريتمرالمطالبة غير المؤيدة بالأدلةالإجراءات المحظورةتمرمسألة الهجرةالمصدر غير موجودالملف1CREATE CASESالمدخلات الذهبية والقواعد2RUN SAFELYاختبار تجريبي أو تقييم حي3WATCHجدول يومي أو أسبوعي
AI Evaluation lists golden test cases, required behaviours, latest results and scheduled Watchtower runs.

يمكن للمديرين الكاملين أن يخلقوا مجموعات التقييم مع الطلب، وعلامات المصدر المتوقعة، والاقتباسات المطلوبة، وقواعد التأكيد البشرية، وتوقعات التصعيد والإجراءات المحظورة.

منظمة واتشوار :: يحدد مواعيد للتحقق يومياً أو أسبوعياً من خلال برنامج cron ويجري عدداً محدوداً من الحالات (حتى ثماني حالات لكل عملية مقررة)؛ ويستعرض الإخفاقات إلى جانب مقدم الخدمة/النموذج، وإصدارات الاستدعاء السريع، وإنتاج المعارف، والإجراءات المقترحة والتكاليف قبل تغيير سلوك الإنتاج.

الذكاء الاصطناعي

اللغات والترجمة التحريرية

وتدير اللغات النصوص المترجمة الموجهة إلى الزبائن والسلوك المستخدم عندما يتبع OpsIQ لغة زبون.

فرز المنتجات
اللغاتوتبين صفحة اللغات اللغة المصدرية، واللغات المترجمة، وحالة المسودة/الحالة الفعلية، وسلوك لغة الزبون.اللغاتمساحة العملالمصدراﻻنكليزيةLANGUAGES4حي3عرض الحيز العمليالفرنسيةالواجهة والمحتوىمباشرالألمانيةالواجهة والمحتوىمباشرالإسبانيةمشروع الترجمةمسودةمتابعة الزبونالرد باللغة المكتشفةمفعل1SET SOURCEلغة المشغل الأصلية2ADD LANGUAGEالترجمة في الخلفية3PUBLISHمسودة أو قيد التنفيذ
وتبين صفحة اللغات اللغة المصدرية، واللغات المترجمة، وحالة المسودة/الحالة الفعلية، وسلوك لغة الزبون.

OpsIQ يترجم النص الذي يدخله المشغل ويوجه إلى العميل. وحدد اللغة المصدرية بشكل صحيح قبل إعداد الترجمات، وأضف اللغات المستهدفة، ثم استعرض المسودات قبل نشرها. ويتحكم " اتبع لغة الزبون ", ". في لغة الاستجابة؛ وتسيطر ترجمة واجهة أداة التحكم على أزرارها وعلاماتها ونص النظام.

لا تعتمد على الترجمة الآلية في النصوص القانونية أو المتعلقة بالتعويضات أو الأمن أو السلامة دون مراجعة بشرية.

كل مكان يحتوي على صياغتك الخاصة مدرج مع عدد الرسائل: رسائل المحادثة العميل، الترويجات، الرسائل الاستباقية، تدفقات المحادثات، الجولات المصحوبة بمرشدين، الإعلانات، فقاعات التهديد و الدراسات الاستقصائية والاستماراتيغطي سطح الاستقصاء كل استطلاع منشور بالكامل: العنوان، كل سؤال، كل خيار إجابة، الأزرار، نسخة الترحيب والشكر، صفحات كروم ونتائج الصفحات. المفاتيح مرتبطة بالسؤال ID وقيمة الخيار، لذلك إعادة ترتيب الأسئلة أو الخيارات لا تفقد ترجمة أبدا، وإعادة صياغة رسالة واحدة يعيد ترجمة تلك الرسالة فقط.

ويتبع استطلاع البريد الإلكتروني بعد المحادثة اللغة التي تحدث بها الزائر فعلاً، شريطة أن تكون تلك اللغة هي واحدة من اللغات التي تقدمها هنا؛ وإلا فإنه يستخدم لغة نظامك. وتترجم حقوله الستة القابلة للتحرير على هذه الصفحة أيضاً، ولهذا السلوك مفتاحه الخاص في إعدادات محادثة العميل.

رسائل التذاكر والبوابات ويغطي مشغلو النصوص الثابتة من النوع الذي يتلقى فيه كل زبون بعد ذلك بلغة واحدة هي: الإقرار بالتذكرة، وفتحها، وإغلاقها، وتأكيدات التعليقات عليها، والاشتراكات لكل إدارة، وخارطة الترحيب بالمدخل. )لا تحتاج شركة AI إلى أي من هذه الصيغة، بل إنها تجيب بالفعل على لغة العميل(. البريد الإلكتروني للعملاء بلغتهم مُتاحة OpsIQ ويحل الكتابة والبريد الإلكتروني التذاكر لغة المتلقي في هذا الترتيب: اللغة التي اختاروها في البوابة أو مركز المساعدة )محملة على التذكرة(، والفئة المحلية في سجل اتصالاتهم، ثم اللغة التي كتبوها محليا، والمكتشفة محليا من خلال مجموعة النصوص والعلامات دون اتصال خارجي، ولا تستخدم اللغات المختارة في صفحة اللغات إلا في أي وقت مضى، وبالتالي فإن السمة غير صحيحة إلى حين إضافة لغات. HTML ولا تترجم اللفافة البريدية عن عمد: فهي علامة، وليس استفزازاً، وتستعمل دائماً لغة النظام البريد الإلكتروني الذي يتصف به الموظفون (الإخطارات، وتنبيهات الإدارات، وملخصات التحليل، والتقارير المقررة، والرقم القياسي الأسبوعي).

PeopleOS HR

PeopleOS: نظام التشغيل المنظم للقوة العاملة

تشغيل دورة حياة الموظفين من طلب الشراء إلى التغاضي عن العمل بالخدمة الذاتية المتنقلة، وتدفقات العمل المدعومة بالأدلة، وعمليات الإدماج المطبوعة، والرقابة البشرية على القرارات الحساسة.

خريطة النظام التفاعلي
PeopleOS مركز قيادة دورة الحياةثلاثي الأبعاد PeopleOS :: لوحة متابعة تربط بين التوظيف والموظفين وكشوف المرتبات والتعلم والذكاء الاصطناعي الخاضع للإدارة.PeopleOS مركز القيادةالحياةالسكان248فتح الأبواب12بيانات المراقبة15 / 15دورة الحياةالتوظيفهيّانموالمكافأةالانتقالضيف واحدالهوية + أدلة التوظيفالمراقبة الإنسانيةالطعن، التصويب، الاستيلاءاثبتالأدلة على النتائج والإفراج
PeopleOS يحتفظ بدورة الحياة والضوابط والأدلة في سجل واحد محكم.

المديرين

تشغيل

إدارة شؤون الناس، والتنظيم، والتوظيف، والالتحاق بالخدمة، والوثائق، والإجازات، وتسوية كشوف المرتبات، والمنافع، والأداء، والتعلم، والعلاقات مع الموظفين، والتحليلات والحوكمة.

الموظفون والمديرون

الخدمة الذاتية

استخدام بوابة إلكترونية متحركة في السجلات الخاصة والطلبات والوثائق والتسجيل والوقت وتفسير الأجور والتعلم والمعلومات والحقوق المتعلقة بالشركات.

المطورون

تمديد

استخدموا المعالج hr.* الإجراءات والاستعراض platform.hr.* العمليات من خلال عقد واحد، بالإضافة إلى أصناف الموصلات الكاتبة، والرقم القياسي المتولد في نظام PeopleOSAPIويورد الفرع كل شخص له نطاقه.

⚠️
PeopleOS ليس مسجلا لكشوف المرتبات، أو مستشارا قانونيا، أو مكتبا للتحقق من الخلفية، أو مقدم خدمات تحديد الهوية. وتحتفظ النظم الخارجية المعتمدة بهذه المسؤوليات. ولا يوجد التحقق الفني الأخضر أبدا موافقة قانونية أو دليلا على تقديم الخدمات.

الحصول PeopleOS الموارد البشرية

PeopleOS تشمل خطة المؤسسة إدارة الموارد البشرية، وهي مضافـة إلى كل خطة مدفوعة الأجر أخرى: يفتح مالك الحساب الحساب→مضافا إليه:يلتقط جهازاً من طراز PeopleOS HR ويبدأ المحاكمة الحرة أو يضيفها بشكل صحيح، فالأطر تختلف عن عدد الأشخاص وكمية تجنيدهم ومقابلتهم ونشاطهم في مجال مكافحة المخدرات، وتوضع الأسعار والحدود على الحساب وليس مكتوبة في المنتج، لذا انظر العجلات الحالية على المخرج. صفحة التسعيرما تفعله الوحدة، سطحاً على السطح PeopleOS صفحة المنتج المتعلق بالموارد البشرية.

من يستطيع أن يضيفها

خطة مدفوعة الأجر نشطة، لا يمكن أن تضيفها خطة مجانية، وخطة مدفوعة ما زالت في إطار خطتها الخاصة يجب أن تنتظر حتى تنتهي المحاكمة.

المحاكمة الحرة

المحاكمة تجري على المستوى الذي تختاره عندما تنتهي بدون شراء الحق يتم سحبها ولا شيء مُتهم

عندما لا يكون ملكاً

PeopleOS لا يظهر الموارد البشرية في الشريط الجانبي، أو مجموعة الأوامر، أو الإعدادات أو المساعدة داخل التطبيق. وهناك وصلة مباشرة إلى صفحة موارد بشرية تقدم الملحق بدلا من الصفحة.

الوصول إلى غطاء من النمور

عندما تصل إلى الحد الأقصى للإطارات تقدم الصفحه التاليه

تركيبات مأهولة ذاتيا

الاستحقاق يسافر في الرخصة أضف الإضافات على حسابكOpsIQالحساب والتركيب يلتقطه في رخصته القادمة

إنشاء الأسبوع الأول

كل شيء تحته شاشه حقيقيه لا يوجد هنا يحتاج لمطور

1
شغل الوحدة

مفتوح PeopleOS→HR Homeمجلس العلم يبدأ بالمفتاح الرئيسي PeopleOS HRلا يمكن الوصول إلى أي صفحة من صفحات الموارد البشرية أو سطح الموظفين، وفتح مفتاح التشغيل هو تأكيد ذو بقعتين؛ وإغلاقه هو نقطة واحدة.

2
دع فريق "السيّد" يقوم بالتشكيل

مفتوح PeopleOS→طاولات وتقول ما تريد بلغة عادية: سياسة الإجازة مع أيامها و إشعارها، والعطلات العامة لبلد ما، فئة من القضايا التي لهاSLAكبسولة نفقة، ونموذج على متن الطائرة، نبض شهري، تستعيد الخطة بما تفهمه وما يفترض لا شيء يمضي حتى تؤكد ذلك؛ خطوة متوسطة الخطورة تحتاج إلى شخص ثانٍ؛ كل ركض يترك إيصالاً.

3
اسم بوابة الموظفين

مفتوح PeopleOS→خط المواجهة→تصميم الموقععلى تركيبة ذاتية البوابة تعيش في /hr/<address>; عنوان البوابة يُعاد تسميتها على الفور و وصلات الإشارة القديمة تستمر بالعمل لأن العنوان القديم إلى الأمام /hr على مضيف الفضاء الخاص بك ولا يحتاج إلى عنوان.

4
نشر موقعك المهني

مفتوح PeopleOS→التوظيفكل نشرة تنشرها من طلب معتمد تظهر على صفحة المهن العامة فتح صفحة الوظائف العامة في قمة التجنيد يظهر بالضبط ما يراه المرشح

5
سجل كشك للأجهزة المشتركة

مفتوح PeopleOS→خط المواجهة→Kiosks واختيار سجل الكشك- يتم عرض الجهاز مرة واحدة؛ فتح صفحة الكيوس على اللوحة أو PC (إنها كذلك). /kiosk على مضيف البوابة و يرعىها الناس يركبون بريدهم الإلكتروني و PIN أو مع رمز الشارة القصيرة الأجل من بوّابة البوابه

6
يقرر ما يمكن أن يفعله الموظفون بأنفسهم

مفتوح الترتيبات→HR- كل سلطة من مؤسسات الخدمة الذاتية (السجلات، والطلبات، والوثائق، والإجازات، وتفسير الأجور وما إلى ذلك) مُحددة لكل موظف أو مدير فقط أو فريق واحد والأفرقة التي يعمل تحتها؛ وكل سجلات للتغيير التي قدمت هذا الطلب ولماذا، وسلطة تغلقها تفسر للموظف بدلاً من أن تكون مفقودة بصمت.

7
يضاف الناس ويعطيهم إمكانية الوصول

مفعل PeopleOS→الناس إنشاء الشخص، وعمله ومديره - لا يمكن الوصول إلى بوابة توفير إلا بعد أن يكون للشخص بريد إلكتروني صالح وعلاقة عمل مقصودة؛ وتُستدعى الدعوة من نفس الشاشة والقادمة تبدأ من الرحلة التي أقيمت فيها.

دورة الحياة

الخطة والتجنيد

إنشاء طلبات معتمدة، ونشر الوظائف، وتلقي الطلبات من خلال حلقات العمل الشبكية التي تُعاد فيها الصمود، واستعراضات الهيكل، والمقابلات في الجدول الزمني، والقرارات المتعلقة بالسجلات، والعروض المقدمة للنشر، والتوظيف.

الانضمام والحكم

:: بناء وحدات مدعمة بالأدلة في رحلات المركب، وجمع النسخة الصحيحة من الوثائق، ومعدات الطلب، ونموذجات الدخول المعتمدة، ووصول بوابات غير مقروءة.

العمل والنمو

إجازة التشغيل، الجداول الزمنية، تفسيرات الأجور، الاستحقاقات، النفقات، الأهداف، التغذية المرتدة، الاستعراضات، التعلم، المهارات، الفرص الداخلية، الخلافة، تحليل القوة العاملة.

الدعم والحماية

توفير الدعم الخاص للموارد البشرية، وإدارة حالات العلاقات بين الموظفين، والاحتفاظ القانوني بالبيانات، وطلبات البيانات، والتصحيح، والإيضاح، والاستئناف، والمراجعة البشرية المستقلة.

التغيير والمغادرة

(ب) استخدام تغييرات فعالة في العمالة، وإلغاء إمكانية الحصول على الخدمات، واسترجاع المعدات، والتوفيق بين مقدمي الخدمات الخارجيين، وتطبيق الاحتفاظ بالأدلة المطلوبة والحفاظ عليها.

الوصول والهوية

ويمتلك الشخص الكانوني سجلات عمل وجوانب هوية خارجية متحقق منها، فالبريد الإلكتروني بيانات اتصال غير قابلة للتعديل ولا مفتاح الهوية الدائم أبداً، وقراءة البواخر ذاتية؛ وتحتاج آراء المديرين والمديرين إلى إذن صريح.APIيمتد نطاق الطبقة فوق الرخصة و لا يتجاوزها أبدا

إضافة عامل جديد

السيناريو:
إنشاء الشخص، وتعيين وظيفة ومدير، وتوفير الدخول من البوابة، ثم فتح رحلة على متن الطائرة.
ماذا نفعل:

استخدام الركض الجاف والايدمانAPIيكتب، يؤكد أن الشخص لديه رسالة إلكترونية صحيحة وعلاقة عمل مقصودة قبل إرساله.

حل الهوية المزدوجة

السيناريو:
نظامان خارجيان يتعرفان على نفس العامل بشكل مختلف
ماذا نفعل:

ربط الوجهين المتحقق منهما بالشخص الكانوني وحل النزاع صراحة، ولا تدمج السجلات لمجرد أن قيمتي البريد الإلكتروني المتغيرتين متطابقتان.

PeopleOS HR

سير العمل في مجال الموارد البشرية وبورت الموظفين

كيف أن كل رئيسي PeopleOS وكيف يتم تشغيل المنطقة وما يراه الموظفون بعد التسجيل.

الناس والتنظيم

الحفاظ على الشخص الكانوني، والعمالة، ونوع العمل، والمدير، والفريق، والموقع، والمهارات، والوثائق، وهيكل التنظيم الفعال.

التوظيف والعروض

:: الانتقال من طلب الموافقة إلى وضع طلبات الإقامة والتطبيق والأدلة المنظمة والمقابلة والقرار وعرضها والتوظيف في طرق إقامة وطعن.

الإلحاق والوثائق

(أ) الخطوات التي أمر بها المالك تحديداً؛ جمع الوثائق وتنقيحها وتوقيعها وانتهاء صلاحيتها والاحتفاظ بها وحذفها مع تقديم أدلة على النسخ والوصول إليها.

الوقت والإجازات والموعد

تحديد أنواع الإجازات المدعمة بالسياسات، والأرصدة، والطلبات، والموافقة، والعطلات، والتوافر، والمناسبات التقويمية، والمصالحة.

الأجور والاستحقاقات والنفقات

:: شرح الأجور، والأحداث التي يوافق عليها العمال في شكل يدوياً على كشوف المرتبات، وتسوية الاستثناءات، وإدارة استحقاق الاستحقاقات وتنظيم سداد التكاليف.

الأداء والنمو

(ج) تحقيق أهداف التشغيل، والفحص، والتغذية المرتدة، والاستعراضات، والمعايرة، والتعلم، والمهارات، والتوجيه، والفرص الداخلية، والخلافة.

الخدمات والعلاقات المتعلقة بحقوق الإنسان

:: تقديم الدعم الخاص للموظفين مع الحفاظ على التظلم والانضباط والمبلِّغين عن المخالفات والأدلة المُغلقة في حالات الأذن المتفرغة.

التحليل والتخطيط

استخدام تدابير القوة العاملة، وخطط الحسابات الرئيسية، والمعايير المرجعية، والمقاييس المستمدة من السجلات؛ وعدم استنتاج النتائج المفقودة كنجاح.

خريطة بوابة الموظفين

نظرة عامة

تحتاج إلى اهتمامكم، والتغييرات التي طرأت منذ الزيارة الأخيرة، والطلبات المفتوحة، والأحداث المقبلة، والتقدّم والإعلانات.

موجز وسجلات

العمالة، والسجلات المتحقق منها، والوثائق، والأذون، وطلبات الخصوصية، وطلبيات التصحيح.

دعم الموارد البشرية ومهامها

وتُعرض على حدة المحادثات الخاصة والطلبات والإجراءات التي تحتاج إلى مهام من جانب الموظفين والشركات.

أيامك الأولى

جدول زمني مدعوم بالأدلة مع المالك، وحالته حسب الأصول، وإكماله، والعمل المغلق.

الوقت والإجازة

الأرصدة، وطلبات الإجازات، والتوافر، والجداول الزمنية، والعواقب التقويمية.

المهارات والنمو

التعلم، وإثبات المهارات، والأهداف، والتغذية المرتدة، والتوجيه، والفرص الداخلية.

راتبي موضح

ويسمح للموظف برؤية التعويض عن الكشوف المالية التي تُدفع بلغة الضيافة والمعلومات المتعلقة بالمطابقة بين المرتبات.

الشركة

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

الحقوق والمقررات

التفسيرات والطعون والموافقة والتصحيح وطلبات السحب والحذف.

💡
البوابة هي أولاً متحركة، ولا تزال بطاقة الحساب قابلة للتداول، وتُغطى الملاحة والمحتوى بصورة مستقلة على الشاشات الواسعة، ونفقات الملاحة المتنقلة بدلاً من دفع الصفحة أو تغطيتها.

تسلسل التشغيل الآمن

1
سياسة وتصاريح الثقة

تحديد الولاية، والأدوار، ومسارات الموافقة، والاحتفاظ بالموافقات، ومراقبة السمات قبل تحميل السجلات الحية.

2
الاتصال بمقدمي الخدمات الخارجية

تركيب مجموعة الأدوات المناسبة الموقعة، وإدخال وثائق التفويض على الأقل سعراً، وإجراء اختبارات الاتصال والتطابق.

3
تشغيل في صندوق الرمال أو الظل

(ب) ممارسة سير العمل الكاملة مع البيانات المحددة ومقارنة الأدلة المتوقعة قبل التمكين من التنفيذ الحقيقي.

4
الإصدار تحت المراقبة المزدوجة

ويبحث مراجع آخر مرخص له الأدلة المقدمة، والأمن، والخصوصية، والقانونية، والنـزاهة، وإمكانية الوصول.

PeopleOS HR

ألف - معلومات أساسية، ونزاهة، وضوابط فيديو وقانونية

PeopleOS يتعامل مع الأتمتة كمسار أداة محكم: إذن السياسة، ومحاولة التنفيذ، ونتيجة مقدم الخدمات والإثبات هي حقائق منفصلة.

AI وضوابط العملاء

ويستخدم كل عامل أدوات مصنّفة مسجلة ذات غرض وولاية قضائية وألطبقة المعرضة للمخاطر والاستقلال الذاتي الأقصى، إذ أن الاستيلاء على البشر، والكسر في الدوائر، والحوادث، وتغيير الولاية القضائية يتوقف عن التنفيذ، ويمكن أن تشكل التصويبات مجموعة بيانات مقترحة ولكن لا تدرّب شيئاً إلى أن يكمل شخص آخر مرخص له استعراض خصوصياته.

الإنصاف

تعريف مجموعات، وقواعد العينات الدنيا، والمقاييس، وهوية المقيِّم، وتقييم مُطلق قانوناً، وتظل البيانات مفقودة؛ ولا تتحول أبداً إلى تصريح.

التفسيرات والطعون

(ب) بناء تفسيرات من قرار محكم وشريطة سياساتية، وتوجيه نداءات إلى إنسان مستقل والحفاظ على الأدلة الختامية.

الولاية القضائية

:: عدم الإفراج عن مجموعات السياسات القطرية إلا بمالك قانوني مسمّى به، واستشهد بمصادر قانونية واختبارات عابرة، ووقف التغييرات في قانون الدرجة العالية الممرات المتأثرة.

قانون الاتحاد الأوروبي بشأن الذكاء الاصطناعي

الحفاظ على قائمة جرد النظام، وفئة المخاطر، وتقييم الأثر في الحقوق الأساسية، والإخطارات، والمشرفين، والتكييف والأدلة.

حدود فرز الفيديو

الاعتماد لا يُشترط المشاركة

hr.interview.room.provision يخلق موقعاً للقاء hr.interview.room.connect يمكن أن يثبت وصول وسائل الإعلام إلى العامل.

الموافقة على وجه التحديد

والتسجيل والتصنيف والحياكة الحيوية خيارات منفصلة، وينطبق الانسحاب على الغرض المختار.

لا يوجد تحليل للمظهر

ولا يوجد في عقد الفيديو مجال أو طريقة للعاطفة، والاهتمام، والجاذبية، والعرق، والإعاقة، أو التظاهر.

مسارات الإنسان والنص

ويمكن للمستعرض أن يتولى المسؤولية الدائمة عن الدورة، ولا يزال هناك طريق للإقامة في النصوص.

الاحتجاز والحذف

وتُبلغ الموصلات عن النقل المشفر، وسياسة الاحتفاظ النشطة، ومراجع وسائط الإعلام التي تقدم معلومات عنها، ويجب أن تدعم حذفها بصورة يمكن التحقق منها.

الغرفة المُنشأة،

السيناريو:
غرفة زومURLيوجد، ولكن جسر الإعلام لم يوصل الصوت/الفيديو إلى عامل المقابلة.
ماذا نفعل:

أظهر الاجتماع على أنه مُحكم ومشاركة منظمة العفو الدولية ككاذب، وحافظ على إمكانية إجراء المقابلات البشرية ومسارات إقامة النصوص المتاحة.

(كالباك) يقول أن الشيك قد تم

السيناريو:
تمّ إنجاز تقارير موقعة عن فحص المعلومات الأساسية على الشبكة.
ماذا نفعل:

سجلوا النداء كتلميح ثم اسألوا مقدم الطلب فقط رد الحالة الموثق قد يستكمل الشيك

🚫
ويمكن أن يسجل المقيِّم تقييماً تقنياً لإمكانية الوصول، ولكن الشهادة التي يقدمها الفريق تتطلب شخصاً مستقلاً.() كما يتطلب إثبات مقدِّم الخدمات والإفراج القانوني والأدلة النزيهة أصحابها الحقيقيين الذين يحملون اسمهم().
PeopleOS HR

PeopleOSAPIتنمية الاتصال

استخدام الجنرال API فيما يتعلق بعمليات الموارد البشرية الخاضعة للتنظيم والعقود المصممة لربط النظم الخارجية الموثوق بها.

General API مصادر الحقيقة

أرسلJSONإلى POST /api/v1.phpإكتشاف سطح الركض من خلال meta.actions"افتح الباب" /api/v1/openapi.phpوPostman في /api/v1/postman.phpالرقم القياسي المولد أدناه يحمل العد الدقيق للمعالجة hr.* الإجراءات والاستعراض platform.hr.* عمليات في هذا البناء، لذا لا شيء على هذه الصفحة يُطبع باليد.

قائمة بالأشخاص
curl -sS https://your-opsiq.example/api/v1.php \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"action":"hr.people.list","page":1,"per_page":50}'
"جراى-رون" تكتب
curl -sS https://your-opsiq.example/api/v1.php \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"action":"hr.people.create","display_name":"Ada Reaudit","primary_email":"[email protected]","worker_type":"employee","idempotency_key":"hire-2026-0042","dry_run":true}'

الاستخدام hr.read أو hr.write ولا يزال مسار المدير المستهدف يفحص إذنه، فالطقوس تتطلب مفتاحا ثابتا للفكرات؛ وتستلزم الكتابات العالية المخاطر تأكيدها.

كل عجلات معالجه*

48 curated hr.* actions (22 reads, 26 writes) and 484 reviewed platform.hr.* operations, out of 2420 named actions in this build. Generated from the action registry, the same source as meta.actions, OpenAPI and Postman.

الناس والتنظيم والهوية (9)

hr.employee.provision

Write. Scope: hr.write. Provision seatless employee access and send the invitation. Required: person_uuid.

hr.employee.restore

Write. Scope: hr.write. Lift an employee access suspension (written reason required) and provision again. Required: person_uuid, reason.

hr.identity.facets

Read. Scope: hr.read. List a person's identity facets and open conflicts. Required: person_uuid.

hr.identity.link

Write. Scope: hr.write. Link an identity facet to a person. Required: person_uuid, facet_type, facet_key.

hr.org.tree

Read. Scope: hr.read. Read the organisation tree.

hr.people.create

Write. Scope: hr.write. Create an HR person. Required: display_name.

hr.people.get

Read. Scope: hr.read. Get one HR person. Required: person_uuid.

hr.people.list

Read. Scope: hr.read. List HR people.

hr.people.update

Write. Scope: hr.write. Update an HR person. Required: person_uuid, display_name, primary_email.

طلبات الشراء والملصقات (3)

hr.postings.list

Read. Scope: hr.read. List job postings.

hr.requisitions.create

Write. Scope: hr.write. Create a requisition. Required: title, openings, justification.

hr.requisitions.list

Read. Scope: hr.read. List requisitions.

الإجازات والتعلم وسوق الموصلة (3)

hr.learning.overview

Read. Scope: hr.read. Read courses, paths and enrolments.

hr.leave.overview

Read. Scope: hr.read. Read leave types and requests.

hr.marketplace.overview

Read. Scope: hr.read. Read HR connector accounts, conflicts and deliveries.

التصديق على المرشدين والصحة (2)

hr.connectors.certify

Write. Scope: hr.write. Certify an HR connector (scope sandbox|production; production demands provider-side proof under dual control). Required: connector_class, connector_key, scope, evidence, submitted_by.

hr.connectors.health

Read. Scope: hr.read. One connector account's health: certification level and scope, last reconciliation verdict, failures and webhook backlog. Required: account_uuid.

غرف المقابلات (7)

hr.booking.slots_reconcile

Write. Scope: hr.write. Release booking slots whose claim never became a booked meeting.

hr.interview.room.connect

Write. Scope: hr.write. Connect the AI to interview media; refuses unless media really reaches the worker. Required: media_uuid.

hr.interview.room.consent

Write. Scope: hr.write. Record or withdraw consent for ONE interview purpose (recording, biometric_liveness, transcription). Required: media_uuid, purpose, state.

hr.interview.room.pause

Write. Scope: hr.write. Pause a live interview. Required: media_uuid.

hr.interview.room.provision

Write. Scope: hr.write. Provision an interview room (a place to meet — NOT AI participation). Required: session_uuid, transport, accommodation_route.

hr.interview.room.state

Read. Scope: hr.read. Read an interview room, including whether the AI is actually participating. Required: media_uuid.

hr.interview.room.takeover

Write. Scope: hr.write. A human takes the interview; the AI cannot speak in it again. Required: media_uuid, reason.

العملاء وممرات دورة الحياة (7)

hr.agent.incident.close

Write. Scope: hr.write. Close an agent incident — the same act that lifts the suspension it caused. Required: incident_uuid, resolution.

hr.agent.step

Write. Scope: hr.write. Run one agent step: gate verdict, execution and outcome reported separately. Required: run_uuid, agent_key, tool_key, jurisdiction, purpose.

hr.agent.step.status

Read. Scope: hr.read. What actually happened at a step (permitted, executed, proven, failed, compensated). Required: run_uuid, seq.

hr.agent.takeover

Write. Scope: hr.write. A human takes an agent run; no further agent steps are accepted. Required: run_uuid.

hr.agent.tool.grant

Write. Scope: hr.write. Grant an agent a tool for one jurisdiction and purpose, up to a risk ceiling. Required: agent_key, tool_key, jurisdiction, max_risk, purpose.

hr.agent.tools

Read. Scope: hr.read. List the registered typed tools an agent may use, and open agent incidents.

hr.lifecycle.lanes

Read. Scope: hr.read. Every lifecycle lane with its mode, KPIs and whether a live tool path really exists behind it.

الولاية القضائية (5)

hr.jurisdiction.capabilities

Read. Scope: hr.read. What this product may do in one country, per feature, with the law behind each answer. Required: code.

hr.jurisdiction.change.raise

Write. Scope: hr.write. Report a change in the law; a high or critical one suspends every lane in that jurisdiction at once. Required: pack_key, summary, severity.

hr.jurisdiction.coverage

Read. Scope: hr.read. Computed coverage for every market: released pack, named counsel owner, cited sources, passing tests.

hr.jurisdiction.explain

Read. Scope: hr.read. Why an action about one person is allowed, reduced or blocked, with the rule and citation. Required: person_uuid, feature.

hr.jurisdiction.pack.release

Write. Scope: hr.write. Put a drafted policy pack into effect; refused without a named counsel owner and a cited law. Required: release_uuid.

القرارات والطعون (2)

hr.decisions.appeals

Write. Scope: hr.write. File an appeal against an AI decision on a person's behalf; it must be heard by an independent human. Required: decision_uuid, subject_type, subject_id, grounds.

hr.decisions.explanation

Read. Scope: hr.read. Plain-language explanation of one AI decision: what was looked at, which policy, and how to appeal. Required: decision_uuid, audience.

جودة AI (2)

hr.ai.corrections

Write. Scope: hr.write. Bundle recent reviewer corrections into a dataset; it is pending privacy review and trains nothing.

hr.ai.quality.overview

Read. Scope: hr.read. The AI quality board: sampled defect rate, override pressure per workflow, coaching reception.

محادثات القوى العاملة والاحتفاظ بها (4)

hr.thread.delete

Write. Scope: hr.write. Delete a workforce conversation; refused while it is under legal hold. Required: thread_uuid, reason.

hr.thread.legal_hold

Write. Scope: hr.write. Place or lift a legal hold on a workforce conversation. Required: thread_uuid, on, reason.

hr.thread.retention

Write. Scope: hr.write. Set a conversation's retention class (standard|extended|permanent). Required: thread_uuid, retention_class.

hr.threads.retention_sweep

Write. Scope: hr.write. Run the conversation retention sweep; legal holds are never swept.

الجاهزة والإفراج (4)

hr.experience.metrics

Read. Scope: hr.read. Measured persona experience metrics (self-service rate, decision cycle, coaching usefulness, quality) from live journeys.

hr.global.readiness

Read. Scope: hr.read. The whole launch picture: 15-gate leadership score, release readiness checks and jurisdiction coverage.

hr.readiness.read

Read. Scope: hr.read. Run the HR release readiness report.

hr.release.verify

Write. Scope: hr.write. Run the four HR release gates (schema, manifest, probe, readiness).

حصص الموصل

التوظيف

hr_job_board, hr_background_check, hr_identity_verification, hr_assessment و hr_tax_right_to_work.

الاستيعاب والركب

hr_esignature, hr_calendar, hr_video و hr_equipment_it.

عمليات القوة العاملة

hr_payroll, hr_benefits, hr_learning, hr_expense_payment, hr_directory و hr_data_warehouse.

الاتصال

hr_messaging لا يتضمن العقد طريقة لقراءة الموظفين.

نقاط نهاية بوابة مقدمي الخدمات

PeopleOS HR Provider Gateway1.0
GET    /v1/hr/health
POST   /v1/hr/job-postings
PATCH  /v1/hr/job-postings/{provider_ref}
POST   /v1/hr/job-postings/{provider_ref}/close
GET    /v1/hr/job-postings/{provider_ref}
POST   /v1/hr/background-checks
GET    /v1/hr/background-checks/{provider_ref}
POST   /v1/hr/identity-verifications
GET    /v1/hr/identity-verifications/{provider_ref}
DELETE /v1/hr/identity-subjects/{subject_ref}
POST   /v1/hr/payroll/worker-events
GET    /v1/hr/payroll/state?cursor=...
GET    /v1/hr/payroll/exceptions
POST   /v1/hr/equipment/requests
POST   /v1/hr/access/requests
GET    /v1/hr/provisioning/requests/{request_ref}
POST   /v1/hr/provisioning/requests/{request_ref}/revoke

البوابة تتطلب من شركة HTTPS، وتحجب الأهداف غير الآمنة/الخاصة، وتثبت صحة البياناتDNSالنتائج، لا تتبع أي إعادة توجيه أو حدود حجم الاستجابة،JSONوتحمل ايديولوجية محددة، وتدعم أخذ الأوقات بعين الاعتبارHMACفي كلا الاتجاهين، دائماً ما تكون الويب هي تلميحات تُتبعها إعادة فرز المزود.

أبواب الشبكة الداخلية

ثلاثة أبواب عامة تتلقى ردوداً من مقدمي الخدمات: POST /opsiq/ajax_api.php?ajax=hr_connector_webhook (الميادين) connector_class, connector_key, topic), ?ajax=hr_esign_webhook (connector_key, offer_uuid, provider_refو ?ajax=hr_check_webhook (check_uuidكل منهما يتحقق من الجسد عن طريق الموصل المعتمد، ويحرق التسليم بحيث يموت إعادة التشغيل، ولا يسجل سوى استفسار معلق لإعادة الاستخدام؛ والرد الخاص بمقدم الخدمة يغير السجل. وكل رفض هو نفس الإجابة العامة عمدا. PeopleOS لا يقدم أحداث webhook الخارجة اليوم: webhooks.events.list هي السلطة و الاسماء لا شيء في hr العائلة، لذا إلتقي hr.* القراءة أو الاستخدام hr.connectors.health.

مراجع مفصلة

PeopleOS دليل كامل

اقرأ doc/contracts/PEOPLEOS_HR.md في تركيب ذاتي الدفع لكل مشغل، API، الموصل، الويب وقاعدة الإطلاق.

عقد لمطوري البوابة

مجموعة السوق تحتوي على README.md, DEVELOPER.md, connector_contract.json, hr_profile.json وقائمة ملف موقعة

PeopleOS HR

الاختبار والاستعداد للإنتاج

وتحسب مطالبة الإطلاق من الأدلة، ويُفصل عن عمد مدى استعداد التعبئة، ومنح الشهادات، والموافقة القانونية، وتقييم الإنصاف، والإثبات بشأن إمكانية الوصول.

1
المدونة والعقود المثبتة

تنفيذ بنية PHP، وحدة PHP HR، route/API التكافؤ، OpenAPI/Postman عمليات التفتيش، وبيانات الطرود، JSON التحقق من صحة المخطط.

2
ممارسة تدفقات العمل الكاملة

اختبار التعيين، واستعراض التنفيذ، والمقابلة/الفيديو، والالتقاط، والتوقيعات، والإجازات، وكشوف المرتبات، والبوابة، والإخطارات، والطرائق، ومسارات فشل الاتصال.

3
اختبارات مراعية لاحتياجات الجميع وميسورة الوصول إليها

أجهزة الحاسوب المكتبي، وأجهزة اللوحات والهواتف؛ لوحة المفاتيح، التركيز، العلامات، التناقض، إعادة التدفق، الأدوات، الأغلفة، أجهزة الاتصال، أجهزة الهاتف، جهاز الإخطار والملاحة المستقلة.

4
جمع الأدلة الخارجية

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

5
الإصدار تحت المراقبة المزدوجة

المستعرض يختلف عن المُقدّم يُقرّ دليل التوصيل والإفراج، ويُقيّد أو يقتل موصلاً إذا انتهى إثباته.

ما تعنيه كل نتيجة

تم التوقيع على الحزمة

ولم تتغير الملفات منذ التوقيع على مجموعة الأوراق المالية المأذون بها، ولا تثبت أن حساباً لأطراف ثالثة يعمل.

"ساندبوكس"

السلوك الضار والانتقالات الحكومية متوافقة، ولا يثبت أن هناك مورداً حقيقياً أو فترة إقامة أو حذف.

موصل إنتاجي مصدق عليه

وقد أقر حساب محدد لأماكن العمل الالتزامات الخمسة الواقعة على جانب مقدمي الخدمات بموجب رقابة مزدوجة.

تقرير الفريق التقني المعني بالتنوع البيولوجي

توجد أدلة مؤتمتة بقيادة المقيّم عن أسطح مسمّاة، وهي ليست شهادة من الدرجة الثانية.

الإطلاق جاهز

وجميع البوابات المطلوبة خضراء في الوقت نفسه ولا توجد أدلة منتهي الصلاحية أو تلغيها أو تختفي أو تتعارض معها.

⚠️
لا تخلق أبداً سجلاً قانونياً أو عدلاً أو موفراً أو مستقلاً للاختبار فقط لتطهير البوابة، وسجل المجمّع والمالك بدلاً من ذلك، إن وجهة النظر المتعلقة بالاستعداد قيمة تماماً لأنها ترفض الادعاءات غير المدعومة.
لماذا تم تركيب موصل لكن لا يزال غير متاح؟+

يثبت التثبيت وجود الحزمة. قم بتفعيلها، وحفظ وثائق التفويض الحقيقية ذات الامتيازات الدنيا، واجتياز اختبار الاتصال، ثم إعطاء التوافق PeopleOS :: نطاق إنتاج الحسابات باستخدام أدلة حقيقية من مقدمي الخدمات ومراجع مختلف.

لماذا لم يغير جهاز الويب السجل؟+

قد يكون الاستدعاء صحيحاً ولكنه مجرد إشارة. تحقق من صندوق البريد الإلكتروني للويب هووك، ونقطة نهاية حالة المزود ونتيجة التسوية. PeopleOS لا يغير الحالة الرسمية إلا بعد إعادة الاستفسار.

أين الموارد البشرية الكاملة القابلة للقراءة الآليةAPI?+

اتصلوا بالبطاقات والمرشّحات من أجل الرواق والقاعدة./api/v1/openapi.phpو/api/v1/postman.php.وهي متولدة من نفس سجل فترات التشغيل.

الدعم

مركز المساعدة

إن مركز المساعدة الخاص بك هو موقع للمساعدة الذاتية يتكون من المقالات التي تنشرها. ويمكن للعملاء قراءته والبحث فيه على صفحته العامة الخاصة، وداخل أداة المحادثة مباشرة، حتى يتمكنوا من العثور على إجابات بأنفسهم قبل أن يفتحوا محادثة. كل شيء في ذلك يأتي من قاعدة معرفتك، وبالتالي فإن نفس المحتوى الذي يستند إليه الذكاء الاصطناعي يعمل أيضاً على تمكين مساعدتك العامة.

حيث يراه عملائك

صفحته العامة الخاصة

:: موقع للمساعدة نظيف وقابل للبحث في الموقع التالي: /help.php. الزبائن يتصفحون حسب الفئة، والبحث، وفتح أي مقالة يمكنك أن تعطيه اسمك الخاص والأسلوب

داخل أداة المحادثة

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

شغله

1
فتح صفحة مركز المساعدة

اذهب إلى Config, then Help Center في إدارة حسابك وتشغيله تمكين مركز المساعدة العام.

2
أعطيه اسماً ونظرة

حدد اسم مركز المساعدة، الذي يظهر في العناوين وعلامة التبويب المتصفح ، واختار أسلوباً بصريًّا. يمكنك إطفاء التنقل الأعلى لصفحة نظيفة بدون قائمة.

3
نشر بعض المقالات

لا يظهر شيء حتى تنشر مقالات في هذا الموقع، والجزء التالي سيتناول كيفية ذلك.

نشر مقالات في مركز المساعدة

المقالات تعيش في قاعدة معرفتك. يظهر مقال في مركز المساعدة بمجرد نشره ووضع علامة عليه بأنه عام. هناك بعض الطرق لفعل ذلك:

نشر مقالة واحدة

افتح المقال، وحدد أنه منشور، وتشغيل خيار لعرضه في مركز المساعدة.

نشر كل شيء في وقت واحد

استخدم نشر جميع زر لدفع مجموعتك المنشورة بأكملها إلى مركز المساعدة بنقرة واحدة، بدلاً من عملها واحد في كل مرة.

تحويل الأسئلة المتكررة إلى مقالات

هل لديك بالفعل الأسئلة الشائعة؟ نشر كل شيء إلى المساعدة لتحويلها إلى مواد مساعدة حتى تجلس بجانب كل شيء آخر.

استيراد قاعدة معارف قائمة

هل تنتقل من مكتب مساعدة آخر؟ استيراد يقوم زر في علامة المقالات بعرض قاعدة معارف موجودة لك. لديك ثلاث طرق لإرشادها إلى محتوىك:

لصق URL

أعطيه عنوان مركز المساعدة الحالي الخاص بك. إذا كان يتعرف على المنصة (مثل Zendesk) يقرأ شجرة الفئة بالضبط من تلك المنصة. وإلا فإنها تبحث في الموقع وتعيد بناء الهيكل من الصفحات، واستيراد فقط المقالات الحقيقية وتخطى الدخول، التسعير، والاتصال صفحات.

اختر تطبيقاً متصلاً

إذا كان هناك منصة متصلة بالفعل بهذا الحيز العملي وتحتوي على قاعدة معارف، فإنها تظهر في قائمة تنزيلية تحت استيراد من تطبيق متصل. انتقِه واستورده، لا تحتاج إلى URL أو كلمة المرور. لن يُدرج التطبيق إلا بعد توصيله وتثبيته.

تحميل CSV

لا يوجد موقع حي لتحديده؟ title, category, and body ضع Parent / Child في عمود الفئة لبناء فئات متداخلة.

أياً كانت الطريقة التي تختارها، ستحصل على عرض مسبق أولاً: المقالات التي وجدها، مجمعة حسب الفئة، كل منها مع مربع اختيار بحيث يمكنك إسقاط أي شيء لا تريده. لن يتم حفظ أي شيء حتى تنقر على استيراد. بعد ذلك يمكنك تحقق من المجال الاستيراد بأكمله بنقرة واحدة، أو إعادة التزامن URL أو استيراد التطبيق المتصل في وقت لاحق لسحب المقالات الجديدة والمتغيرة.

💡
المطورون: أي وصلة يمكن أن تعلن قاعدة معرفتها لهذه القائمة المنبثقة من خلال إعلان kb_capabilities في دورته التاسعة والخمسين settings.json )النوع( kb_source)ب( مع adapter و)أ( base_templateانظر الفرع المتعلق بالموصلات والمرجع الخاص بموصل المنصة.

تنظيم مع الذكاء الاصطناعي

ومركز المساعدة المنظّم سهل التصفح فيه ويسهل البحث فيه. تنظيم مع الذكاء الاصطناعي يقوم زر بعمل التنظيف من أجلك. في نقرة واحدة يقرأ مقالاتك المنشورة، ويرتبها إلى فئات معقولة، ويضيف علامات. وهو ينشئ فئة عندما تحتاج إليها، ويعيد استخدام فئة مناسبة بالفعل، ويتخطى أي شيء قمت بتنظيمه بالفعل ، لذلك يمكنك إطلاقه مرة أخرى كلما أضفت مقالات جديدة. دع الذكاء الاصطناعي ينظم نفسه إلى فئات فرعية في إعدادات مركز المساعدة ويمكن أن يحفظ أيضا المقالات تحت Parent / Child )ب( فئات، وهو أمر مفيد بعد استيراد قاعدة معرفية كانت تحتوي على أقسام فرعية.

💡
إن الفئات تعطي العملاء طريقة للتصفح، والعلامات تجعل البحث أكثر دقة على كل من الصفحة العامة وفي الوسائط. ويمكنك إعادة تسمية أو نقل الأشياء بعد ذلك. ويمنحك الذكاء الاصطناعي نقطة انطلاق قوية، وليس إعدادًا عالقًا بها.

مركز المساعدة داخل أداة المحادثة الخاصة بك

يمكنك عرض مركز المساعدة داخل وحدة المحادثة حتى يبحث الناس عن إجابات قبل أن يبعثوا لك برسالة. في إعدادات وحدة محادثتك، اختر مكان ظهور رابط المساعدة:

في العنوان

أيقونة مساعدة صغيرة في أعلى الوسيلة.

في الأسفل

رابط نصي تحت مربع الرسالة، مثل "تصفح مركز المساعدة". يمكنك تغيير الصياغة.

المكانان

أظهره في العنوان وفي الأسفل لزيادة ظهوره إلى أقصى حد.

رابط المساعدة له لون خاص به تحت إعدادات المظهر. اتركه مفتوحاً لا شيء لتناسب لون جهاز الإطلاق الخاص بك، أو اختار صلبة أو تدرج. تجربة المساعدة بأكملها تتبع موضوع أداة التحكم الخاص بك، لذلك يبدو دائما كجزء من علامتك التجارية.

وضع مركز المساعدة على عنوان الويب الخاص بك

خارج الصندوق مركز المساعدة لديك بالفعل عنوان نظيف، قابل للمشاركة من جانبه (على سبيل المثال /help/your-help-centerويمكنكم أن تذهبوا خطوة أبعد من ذلك وتقدموه تحت رعاية السيد الرئيس. المجال الخاصلذا الزبائن ومحركات البحث يرونها كجزء من علامتك التجارية، على سبيل المثال yourdomain.com/help أو help.yourdomain.comكل شيء يستمر في العمل على مجالك: الروابط، الصور، البحث وتقييمات المقالات.

تحت موقعك الرئيسي

في Config، ثم مركز المساعدة, افتح إدراج انقر على علامة التبويب "المساعدة" واختر "عرض مركز المساعدة الخاص بك على عنوانك الشبكي".Cloudflare, Nginx أو أباتشي)، يمكنك نسخ الكتلة الجاهزة، ولصقها في موقعك. دليل الإعداد زر بجانبه مع الخطوات الدقيقة.

على نطاق فرعي

أفضل help.yourdomain.com? نفس اللوحة لديها خيار النطاق الفرعي. على Cloudflare النطاق فرعي هو الطريق الأكثر موثوقية، وهو يعطيك عنوان نظيف مع لا شيء بعده.

💡
الاستخدام Cloudflare انها فقط تقوم بتشغيل عاملها على عنوان يتم التعامل معه من خلال Cloudflare(السحابة البرتقالية). نطاقك الرئيسي غالبا ما يشير مباشرة إلى موقعك، لذلك فإن القاعدة الموضوعة على النطاق الرئيسي لا يمكنها أن تفعل شيئا بهدوء. الطريقة الموثوقة هي استخدام نطاق فرعي وكيلي مثل help.yourdomain.comدليل المُنشأة يَمْشيك خلال الواحد DNS سجل وطريق.
جيدSEOبمجرد أن يكون مركز المساعدة الخاص بك، محركات البحث الرقم القياسي مقالاتك تحت العلامة التجارية الخاصة بك، كل صفحة تعلن عنوانها الصحيح و خريطة الموقع تُدرجها،
💡
هل تستخدم رابط المساعدة في الوحدة أيضاً؟ في إعدادات "فتح في مركز المساعدة" لوحدة المحادثة، حدد أين تذهب الوصلة إلى نطاق مركز المساعدة الخاص بك ثم تفتح تلك الروابط على موقعك أيضاً، وليس على صفحة الويب الخاصة بك. OpsIQ العنوان.

انظر كيف يسير مركز المساعدة الخاص بك

بالإضافة إلى التصويت على مقالة واحدة، يملك مركز المساعدة خياره الخاص محلل- تحويلها في أماكن مركز المساعدة، وتسجل بهدوء كيفية استخدام الناس لمساعدتكم: المواد الأكثر استعراضا، وما يبحثون عنه، والبحث الذي عاد فارغا (قائمة جاهزة للكتابة)، والعمل مع البلد الزائر والجهاز وحده، حتى لا يحتاج إلى جهاز الدردشة المركب للإبلاغ. كلاهما حيث تظهر مساعدتك، الصفحة العامة والمساعدة في الوحدة، وكذلك مجتمعةً، بحيث يمكنك رؤية كم من كل منها يستخدم فعلاً.

💡
تبقى التحليلات مغلقة حتى تعملها، ويمكنك أن يكون لديك زائر IP عناوين مجهولة لا شيء مسجل قبل أن تختار المشاركة

اختار ما يظهر في كل جزء من الصفحة

كل قسم من أقسام مركز المساعدة (الفئات في الصفحة الرئيسية، المقالات الشعبية، قائمة المواد على صفحة فئة وأكثر) لها قاعدتها البسيطة الخاصة بها. كل شيء البنود)أ( عدد المحددين, the الأحدثأو فقط تلك التي تفعلها خاصية عندما تضع قاعدة نهاية لقائمة، يحصل الزبائن على رابط "عرض كل شيء"، لذا لا شيء خارج عن المتناول حقاً.

أنت أيضاً تقرر كيف ستبدو الأصوات المفيدة: مخفية، نسبة صديقة مثل "12 أو 14 وجدت هذا مفيداً "، أو عدد الأصوات البسيطة. وضع الحد الأدنى من التصويت يوقف مقال جديد بالكامل عن إظهار "0من0".

انظر أي المقالات تعمل

كل مادة تبين هل كان هذا مفيداً؟ يسألك البرنامج عن رأيك في موضوع معين. كل نعم أو لا يحسب لكل مقال، بحيث يمكنك أن ترى بمجرد نظرة سريعة أي المقالات تجيب على الأسئلة جيداً وأيها تحتاج إلى إعادة كتابتها. يتم تجاهل التصويت المتكرر من نفس الزائر، لذلك تظل الأعداد صادقة.

النصوص والعلامات

يمكنك تغيير العناوين الرئيسية والعلامات في مركز المساعدة لتتناسب مع صوتك. اترك أي حقل فارغاً وسيعود إلى وضعه الافتراضي المعقول، لذلك لا تقوم إلا بتحرير الصياغة التي تريد تغييرها فعلياً.

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

أسئلة شائعة

هل أحتاج إلى كتابة محتوى منفصل لمركز المساعدة؟+

لا، إنها مبنية على نفس المقالات التي تستخدمها بالفعل قاعدة المعرفة للذكاء الاصطناعي. فإذا نشرت مقالاً مرة واحدة فإنه يمكن أن يخدم كلاهما.

هل يمكنني الاحتفاظ ببعض المواد الداخلية؟+

نعم، لا يظهر في مركز المساعدة سوى المقالات التي تنشرها وتضع عليها علامة "عام".

هل سيظل العملاء قادرين على الاتصال بشخص ما؟+

نعم، رابط المساعدة على الوحدة يقع على بعد نقرة من بدء محادثة، لذا فإن الخدمات الذاتية لا تضع أحداً في فخ.

النموSEO

Site Intelligence (Site)SEOجناح)

الاستخبارات الموقعيةOpsIQمبنيةSEOيزحف موقعك مثل محرك البحث، المسارات التي ترتادها وتبحث في الكلمات الرئيسية، ومشاهدة الوصلات الخلفية والمنافسين،

ذكاء الموقع
لوحة معلومات الموقعAn SEO لوحة بيانات تبين سجلاً صحياً للموقع، وتتبع رتب الكلمات الرئيسية واتجاه حركة المرور.ذكاء الموقعyoursite.com86صحة الموقع3 مسائل حاسمةتتبع ترتيب الكلمات الرئيسيةمكتب المساعدة#3الدردشة الحية#7إدارة علاقات العملاء للوكالات#12النقرات العضوية1..الزحفيحدد المسائل التقنية2المسارالترتيب، الكلمات الرئيسية، الروابط الخلفية3محلل نظم معلوماتتوضيح وصياغة التصويبات
The Site Intelligence overview: a site-health score from the latest crawl, live keyword rank tracking, an organic-clicks trend, and the three-step cycle: زحف, track, let the AI draft the fixes.

الحصول على الاستخبارات الموقعية

إن استخبارات الموقع هي جزء من الخطط التي تحمل ذلك، وفي خطة لا يوجد بها هذا الجانب، فإنها تعمل تماماً مثل : PeopleOS الموارد البشرية: يفتح صاحب الحساب الحساب→مضافا إليه:لا يمكن أن تضيفها خطة مجانية أو خطة مدفوعة الأجر لا تزال في إطار مخططاتها الخاصة، إلى حين أن الملجأ مخبأ من الجانب، ووصلة مباشرة تقدم الإضافات؛ وعندما تصل صفحة واحدة على الصفحة يقدم الصف التالي؛ وعندما تنتهي المحاكمة دون شراء يُرفع الحساب ولا يُفرض أي شيء على حساب الاستحقاق. صفحة التسعير.

اركضوا زاحفاً، ابدأوا هنا

OpsIQ زيارة صفحاتك كما يفعل محرك البحث، لإيجاد المشاكل التقنية: روابط معطوبة، العناوين المفقودة، المحتوى الناعم، الصفحات البطيئة، مشاكل الفهرسة.

1
هيا بنا

في العرض العام، انقر لبدء البحث. OpsIQ يضعها في صف ويعمل من خلال صفحاتك في الخلفية؛ مؤشر الحالة يظهر التقدم المحرز.

2
قراءة التقارير

عندما ينتهي من ذلك، افتح القضايا وقائمة الصفحات. كل قضية مصنفة حسب شدتها بحيث يمكنك التعامل مع أكبر الفوز أولا.

3
دعنا نترك الذكاء الاصطناعي يساعدنا

يقوم محلل الـ "آي آي" بإعداد موجز واضح عن الخطأ و لماذا يهم، ويمكنه أن يُولّد ما يقترح من إصلاحات لك قبل التطبيق.

ماذا تتتبع خدمة Site Intelligence

صحة الموقع

تمسح صفحاتك للتقنيةSEOالمسائل وقوائم كل صفحة بمشاكلها، إعادة تشغيل أي وقت أو تحديد موعد لها.

تتبع الرتب

أضف الكلمات الرئيسية التي تهتم بها؛ OpsIQ يتحقق من مكان موقعك ويعقب الحركة على مر الوقت.

البحث عن الكلمات الرئيسية

اكتشاف أفكار جديدة للكلمات الرئيسية لاستهداف، مع مدرب الكلمات الرئيسية الذكاء الاصطناعي للمساعدة في تحديد الأولويات.

روابط خلفية

انظر من يوصلك إليك، وتحديث القائمة، وعدم الموافقة على الروابط التي لا تريد أن ترتبط مع موقعك.

المتنافسون

أضف مجالات المنافسة ومقارنة ظهورك ضدهم، مع تحليل منافس الذكاء الاصطناعي.

شبكة محلية (خريطة)

مسح الرؤية المحلية للقائمة عبر شبكة جغرافية لمعرفة أين تظهر على الخريطة، بالإضافة إلى أدوات Google Business Profile.

سرعة الصفحة

تشغيل صفحة سرعة التحقق بحيث يمكنك إصلاح الصفحات البطيئة التي تضر الترتيب والتحويلات.

محتوى الذكاء الاصطناعي

:: إعداد موجزات ومشاريع للمحتوى تهدف إلى الكلمات الرئيسية التي تستهدفها.

ألف - التقارير

إنشاء تقارير قابلة للطباعة وصالحة للعملاء عن كل ما سبق.

اتصال Google لبيانات دقيقة

ويحول وصلان Google التقديرات إلى أعداد حقيقية:

Google وحدة البحث

البحث

سحب الاستفسارات، والنقر والانطباعات بالضبط. Google تقارير لموقعك، رسم خرائط ممتلكاتك، وإمكانيات الترتيب السطحي مباشرة من Googleبياناته الخاصة.

Google Analytics 4

حركة المرور

أحضر بيانات المرور و الخطوبة إلى جانبكSEOالبيانات، لذا التقارير تظهر بوضوح وسلوك معا.

التحديثات المقررة والتقارير البيضاء

لا يجب عليك أن تدير كل شيء باليد، ترتعش من جديد، وتدقق في الرتبة، وفحص الكلمات الرئيسية، وشيكات الوصلة الخلفية، ومسح الأحجية المحلية، وتوليد التقارير على الكوادر (يوما أو أسبوعيا حسب الخطة والحجم).OpsIQ(ج) انظر قسم الكرون والتشغيل الآلي - تُصدر التقارير المولدة بوصفها وثائق مطبوعة وجاهزة للعملاء: ترسل الوكالات كل عميل بانتظامSEOالتحديث، ولأن بيانات كلّ مجال منفصلة، كلّ عميل يرى نفسه.

Some Site Intelligence features call external data providers and AI through OpsIQ مُقدّم مُحدّد، إنّهم يعملون خارج الصندوق عندما يُمكّن الجناح من خطّتكِ، إذا لمْ تُنفّذ إعادة تجديد، فتأكدي OpsIQ(جرون) يعمل (انظر Cron and Auto).
هل أحتاج إلى إضافة أي شيء لموقعيSEOالتعقب؟+

Google Search Console and GA4.

هل يمكنني تتبع أكثر من مجال واحد؟+

نعم، أضف كل مجال على حدة؛ وتظل عمليات البحث والترتيب والتقارير الخاصة بها معزولة تماما عن بعضها البعض.

كم مرة يجب أن أزحف؟+

أسبوعي هو الكثير لمعظم المواقع؛ الزحف على الطلب بعد المحتوى الكبير أو تغيير البنية. وضع جدول زمني حتى لا تنسى أبدا.

النموSEO

التشغيل الآلي (التنفيذ الذاتي)SEOالوكيل)

إن التنفيذ الذاتي هو جزء من الاستخبارات الموقعية التي تطبق بالفعل المكسورين و يوصي المحلل بدلاً من أن يُسدي إليك فقط، ويعمل العميل بشكل صارم على ما وجدته المخابرات الموقعية (لا يمكن أبداً اختراع تغيير) ويسير كل شيء عبر نفس الحلقة الآمنة: استعراض سريع، موافقة خطاك، الشطب الحي، الطلقة التلقائية،

التنفيذ الذاتي
التنفيذ الآليSEOالعميلتدفق يوصى بهSEOيصلح الانتقال من خلال ما قبل الاستعراض، والموافقة وكتابة حية، مع اثبات إعادة التدفئة.التنفيذ الذاتيyoursite.comالحلول الموصى بهاAdd missing <title>مباشر في الدليلإصلاح robots. txtمباشر في الدليلxmlالاستعراض)الفرقة العاملة المعنية بالتمييز(+ <title>AI Helpdesk - OpsIQ</title>+ <meta name=description ...>- <title>Home</title>الموافقةالسفنأثبت ذلكعدد الإصدارات المفتوحة 124صورة سريعة محفوظة1استعراضاختبار التباين لكل إصلاح2الموافقة والكتابةSSHأو مستضيفةAPI3اختبار وإلغاءإعادة البحث + الصورة
كيفية تشغيل الجلسة: يقوم الوكيل بإدراج التصحيحات التي أوصت بها بالفعل Site Intelligence، ويعرض فرق التشغيل الجاف لكل منها، ويطبق تلك التي وافقت عليها على. SSH أو مستضيف. API صور سريعة قبل كل كتابة، وإعادة الزحف لإثبات انخفاض عدد القضايا المفتوحة.

ما يمكن أن يغيره

ويقوم الوكيل فقط بتطبيق الحلول التي أوصت بها بالفعل خدمة Site Intelligence (أو محلل الذكاء الاصطناعي) لذلك المجال.

تكوين الخادوم

sitemap.xml، robots. txt وإعادة التوجيه، القواعد القياسية والرؤوس في htaccess (Apache / LiteSpeed) أو nginx config.

سلاسل إعادة التوجيه

انهيار سلسلة إعادة توجيه متعددة القفزات إلى قفز واحد مباشرة إلى النهاية URL، داخل نفس كتل. htaccess المدارة، بحيث تتوقف السرعة وقيمة الرابط عن التسرب من خلال القفز الإضافي.

Page <head>

عناوين الصفحات المفقودة أو الضعيفة، والوصف الفوقي، والوسم الرسمي، وقطع البيانات المرتبة (المخطط).

WordPress SEO

Yoast, Rank Math and SEOPress titles & meta, and image alt text, applied through WP-CLI on theSSHطريق أو ريستAPIعلى الطريق المستضيف.

WordPress البيانات المنظمة

الإضافاتJSONإلى صفحات مفقودةSSHطريق مساعد صغير مُدار يطبع علامة الماركوب حتى يعمل مع أو بدونSEOعلى الطريق المستضيفSEOالبلوجين يحمله

الروابط الداخلية

يضيف وصلة داخلية ذات صلة ضمن الرابط القائم WordPress يوجد رابط واحد في كل صفحة، لا يكون أبدا داخل عنوان أو رابط موجود أو رمز قصير، ويجب أن يوافق عليه دائما أولاً.

إعادة كتابة المحتوى في الصفحات الرقيقة

مسودة كاملة المحتوى البديل للصفحات الرقيقة (يتم تشغيلها من خلال خيار البحث، انظر أدناه). كل مسودة يتم مراجعتها والموافقة عليها من قبلك قبل أي شيء ينشر، ويحتفظ بالمحتوى القديم بحيث يمكن استعادته.

مخزن الصفحات (WordPress)

يشغل W3 Total Cache page caching عندما تجد السرقة مشاكل السرعة ويتم تركيب هذا الملحق، وبالتالي تقدم الصفحات بسرعة أكبر.

Shopify SEO

المنتجات والتحصيلSEOأوصاف وصفحة وجسيمات مدونةSEOزائد301إعادة توجيه، من خلالShopifyAdminAPI.

Webflow SEO

عدد الصفحاتSEOالعنوان ووصف الميثان من خلالWebflowالبياناتAPIv2.

إعداد الحلول تلقائيا (خياران للبحث)

إن لوحة تحديد تكوين الذكاء في الموقع لنطاق (إعدادات البحث) تحتوي على خيارين يقرران كم من الوقت يستغرق الوكيل لتصفيف الصفحة لك. وكلاهما مطفأ بصورة افتراضية، ويستخدم كلاهما تقدير الذكاء الاصطناعي، وبالتالي لا يمكنك إشعالهما إلا عندما تريد أن يتم ذلك العمل بدلاً منك.

إعداد الحلول بالذكاء الاصطناعي تلقائيا بعد كل عملية تصفح

كل عملية مسح تكتب أيضاً محتوى الإصلاح الملموس (العناوين، الأوصاف الفوقية، النص البديل، المخطط، إعادة التوجيه) لما وجدته، بحيث تكون الحلول جاهزة للمراجعة والتطبيق في اللحظة التي تنتهي فيها العملية بدلاً من أن يتم توليدها لاحقاً عند الطلب.

إعادة كتابة المحتوى بالذكاء الاصطناعي (صفحات رقيقة)

يمكن للوكيل أن يقوم بصياغة محتوى بديل كامل للصفحات الرقيقة. لا شيء يتم نشره أبداً بذاته: كل مسودة تظهر كتغيير تستعرضه جنباً إلى جنب وتعتمده أو ترفضه، ويُحتفظ بالمحتوى السابق حتى يكون قابلاً للعكس، وهو محدود بعدد قليل من الصفحات في المرة الواحدة. يستخدم رصيد الذكاء الاصطناعي لكل مسودة.

💡
كل من الخيارين يقوم فقط بالإعداد وعمل المسودة. ولا يزال كل تغيير يمر بنفس الموافقة على الخطوة، واللقطة، والإلغاء كما هو الحال مع أي إصلاح آخر، لذا فإن تشغيلهما لا يضع شيئا حياً في حد ذاته أبدا.

انه يرتبط بطريقتين

SSH / SFTP المسار

ذاتية الإدارة

بالنسبة للمواقع على خادمك الخاص، يتصل الوكيل عبر. SSH/SFTP يقوم بتحرير ملفات تكوين الخادم وصفحته مباشرة، ويشغل واجهة البرنامج النصي لـ WP-CLI WordPress أفضل عندما يكون لديك الوصول إلى القشرة وتريد التحكم الكامل في الملفات.

مستضيفة API المسار (لا يوجد) SSH)

لا قشرة

بالنسبة للمنصات التي لا تسمح SSH الوكيل يعمل بالكامل من خلال مسؤول API موصل، WordPress (الاستعراض + كلمة جوازات التطبيق)، Webflow (داتا)API و Shopify (أدمين)API لا يوجد شيء في المضيف

💡
Wix and Squarespace have no public SEO-write API, so on those platforms Auto-Implement runs in advisory mode: it shows you the exact change to make (the precise title, meta or setting) for you to apply by hand. Everything else is read-only and safe.

شغل الموصلات

يصل الوكيل إلى كل منصة عن طريق وصلة:

بنيت في

Shopify و WordPress سفينة اتصال مع OpsIQ فقط مكنهم من تحت (كونيكتورز) و إضافه أوراق اعتماد المخزن

من السوق

Webflow، Wix و Squarespace تقوم بتركيب من Connectors → Marketplace، ثم الاتصال بالطريقة نفسها.

كيفية سير الدورة

1
اختاروا الحلول

افتح التنفيذ الآلي (صاروخ) من قسم استخبارات الموقع. وهو يعرض قائمة بالمشاكل التي اكتشفتها بالفعل استخبارة الموقع والتي يمكن إصلاحها في هذا المجال.

2
استعراض كل تغيير

لكلّ إصلاحٍ، يظهر العميل نزيفاً جافاً (ما سيكتبه بالضبط) قبل أن يلمس أي شيء الموقع الحي.

3
الموافقة خطوة بخطوة

أنت توافق (أو تتخطى) كل تغيير على حدة. لا شيء يتم تطبيقه بدون موافقتك الصريحة على تلك الخطوة.

4
انه يكتب ثم يلتقط الصور

عند الموافقة، الوكيل يَجْعلُ التغييرَ الحيّ فوقSSHأو المستضيفAPIو ينقذ الطلقة أولاً، لذا أي تغيير يمكن أن يُعاد.

5
أثبت ذلك، عيش

وبينما يقوم الوكيل بتطبيق كل تغيير، فإنه يعيد التحقق من الصفحة على الفور ويعرض حكم "الإصلاح الحي" خطوة بخطوة، لذا فأنت تشاهد كل إصلاح ينزل إلى صفحة الحياة عندما يحدث. وفي نهاية المطاف، يعيد الوكيل البحث في الموقع بأكمله ويؤكد انخفاض عدد القضايا المفتوحة.

السلامة والفواتير

SEO-فقط

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

الموافقة على أساس كل خطوة على حدة

يتم استعراض كل كتابة كتفاوت وتطبيقها فقط بعد موافقتك على تلك الخطوة المحددة.

صورة سريعة

يتم حفظ لقطة قبل كل كتابة، وبالتالي يمكن إلغاء أي تغيير.

إثبات الخطوة الفعلية

كل صفحة متغيرة يتم إعادة التحقق منها في اللحظة التي تكتب فيها وتحصل على "حكم ثابت حي" ، لذلك يتم تأكيد التصحيح ضد الصفحة الحية فورا ، وليس فقط في إعادة الزحف الختامية.

لا ينشر المحتوى أبدا تلقائيا

الروابط الداخلية وإعادة كتابة المحتوى على صفحات رقيقة لها تأثير أكبر، لذلك يتم عرضها دائماً لك للموافقة عليها ولا تطبق أبداً تلقائياً، أياً كان الوضع الذي تنفذه.

الذكاء الاصطناعي المدار فقط

التنفيذ الآلي يعمل على الذكاء الاصطناعي المدير؛ وهو محظور عندما يستخدم مجال العمل مفاتيحه الخاصة (BYOK).

الفوترة

AI tokens bill normally as you use them, plus one flat peruse fee per-Implement session, both drawn from the same Managed-AI credit.

التنفيذ الآلي مطفأ بصورة افتراضية. قم بتفعيله في صفحة تشكيل الذكاء الاصطناعي (بطاقة التنفيذ الأوتوماتيكي) وتأكد من أن الموصل الخاص بمنصتك موصول أولا.
هل يغير أي شيء بدون سؤال؟+

لا. كل تغيير يتم مسحه كمقارنة تشغيل جاف وتطبيقها فقط بعد أن تعتمد تلك الخطوة بالضبط. تُحفظ لقطة قبل كل كتابة حتى يمكنك التراجع.

هل أحتاج إلى SSH الوصول؟+

لا WordPress, Shopify أو Webflow ويعمل هؤلاء من خلال مسؤولهم الرسمي APIs بدون وصول قذيفة SSH هو واحد فقط من المسارين، تستخدم عندما تريد العميل لتحرير عقد الخادم والملفات مباشرة على خادمك الخاص.

كيف أعرف أنّه نجح؟+

بعد تطبيق التصحيحات المعتمدة، يقوم الوكيل بإعادة زحف الموقع ويعرض عدد المسائل المفتوحة قبل وبعد ذلك، حتى يتسنى لك التأكد من أن التصحيحين قد قللا من المسائل.

هل سيعيد كتابة محتوى الصفحات أو ينشره بنفسه؟+

لا. إن إعادة كتابة المحتوى بواسطة الذكاء الاصطناعي مغلقة إلى أن تقوم بتشغيلها في خيارات البحث، وهي مقصورة على عدد قليل من الصفحات الرقيقة لكل عملية، وتُعرض عليك كل مسودة للموافقة عليها جنباً إلى جنب قبل نشر أي شيء. ويُحتفظ بالمحتوى السابق، وبالتالي يمكن دائماً إلغاء إعادة الكتابة.

هل يمكنني استخدامه مع مفاتيح الذكاء الاصطناعي الخاصة بي؟+

لا. التنفيذ الآلي هو الذكاء الاصطناعي المدار فقط وهو محظور تحت BYOK. إنه يقوم عادة بفرض رسم على رموز الذكاء الإصطناعي بالإضافة إلى رسم ثابت واحد لكل استخدام في كل جلسة، من نفس ائتمان الذكاء الإداري.

النمو والمشاركة

استوديو المسح

Survey Studio is the workspace for creating editable surveys that can be delivered as a rich standalone page, website widget or inline embed. The current product also provides hosted links, signed draft previews, private invitations, QR sharing, response browsing and survey-scoped analytics. The website widget is one delivery choice; it is not the definition of a survey.

⚠️
الحدود الحالية مقابل المستهدفة: تجربة الإنشاء والعرض المسبق العالية الأداء، Connector Builder survey (أ) توافرت الآن القدرات، وسجل/حدود الخدمات الصحية التي تملكها الدراسة الاستقصائية، ولا يزال الاستوديو بحاجة إلى هيكل مستقل متعدد الانتشار، وموقع على بوابة بيانات الهوية المتعلقة بالدراسة الاستقصائية، ويستهدف/يستخدم الأسلاك دائماً،CRMإرسال خدمات التوعية إلى منطقة التدفق والطباعة surveys.* API_.

إنشاء استقصاء

1
اختار كيف سيأخذ الناس ذلك

The current wizard offers Standalone page & link, Website widget and Inline embed. The approved target flow begins with survey type and later adds CRM email, private-link and QR deployments as first-class choices.

2
اختار الغرض

اختار NPS، CSAT، CES، ردود فعل المنتج، ما بعد الشراء، الإلغاء، الاستقبال، الموقع الشبكي، الحدث، الحلقة الدراسية على الإنترنت، الدعم، الريادة/العرض العملي، التجربة، الشهادة، البحث، الموظف، الاستلام أو التعليقات العامة.

3
استخدام نموذج كامل أو البدء فارغاً

يحتوي الدليل الحالي على مبدعين جاهزين قابلين للتحرير ومجمعين حسب الغرض. إن اختيار نموذج يخلق مسودة مستنسخة: تغيير استطلاعك لا يغير المبتدئ أو أي استطﻻع آخر.

4
تعديل أو استعراض سريع

Customize opens every question, design, behavior and delivery control. Quick review opens the same draft at the final customer-view check. Nothing publishes or sends automatically.

خيارات الإنجاز والسلوك الحالي

صفحة مستقلة

صفحة تحمل علامة تجارية تتجاوب مع URL الخاص بها. استخدم الدعوات الخاصة وانتهاء صلاحيتها عندما يحتاج كل متلق إلى رابط خاضع للمراقبة.

أداة الموقع الشبكي

القناة القديمة المهاجرة: يمكن أن تستخدم قواعد الصفحة، والجغرافيا، والجهاز، والزائر، والتاريخ، والعينة، ووقت التجميد، والزيارة، والحصة. ولا تزال مدعومة بجسر العناصر النشطة القديمة بينما يتم بناء بنية نشرها.

تضمين داخلي

استقصاء يتجاوب مع التغييرات ويوضع داخل صفحة أو بوابة أو منتج أو مركز للمساعدة.

البريد الإلكتروني

اليوم ستوديو يمكن أن يولد دعوةHTMLووصلات خاصة.CRMالاتصالات/الفصلات، مع الموافقة والقمع والجداول الزمنية وإعادة التأهيل والاستجابة، هي الوصل الموافق عليهCRMهدف إدماج التوعية.

تصميم المؤسسة وتقديمها

تحتوي صفحات الاستقصاء على مواضيع مملوكة للاستقصاء وعائلاته لتخطيط الصفحات، وضوابط استجابة، ونسخة ترحيب وإكمال، ومسح مسودة موقع عليها. ويظهر مشهد المصور بعرض كامل أسفل المحرر، وليس كجزء جانبي ضيق. وهو يستخدم وقت التشغيل المستضاف الحقيقي في إطار مصنف ودعم عرض سطح المكتب، واللوحات، والهواتف؛ ولا يقوم حركة التصفح المسبق بكتابة الردود أو التحاليل.

💡
ويجب أن تكون استهداف وقت التشغيل، والهوية، والأصول، والعرض، والتحليل مملوكة للاستقصاء. ولا يجوز إعادة استخدام المحتوى الترويجي إلا من خلال نسخة/استيراد صريح لمرة واحدة تنتج بيانات مستقلة عن الاستقصاء؛ يجب ألا يكون للتعديلات التي تتم لاحقا على الترويج أي تأثير.

الشكل الكامل للمنتج

عمليات النشر المستقلة

مباشر

ويمكن أن يكون للاستقصاء نسخة منفصلة من الصفحة، و Widget، والضم، و CRM البريد الإلكتروني، وخصوصية-الرابط ونشر QR، كل مع حالته الخاصة، والتصميم، والجمهور، والتحليلات.

CRMالتوعية والحملات

مباشر

بناء جمهور متحقق منهCRMوتجميدها إلى صيغة غير قابلة للتداول، وإصدار دعوة موقعة لكل منها، وإرسالها عبر موصل البريد الإلكتروني المثبت بدليل تقديم خدمات الدعوة.

مجموعة الأدوات الميدانية والتحقق منها

مباشر

أزرار انزلاقية، اختيار الصور، تحميل الملفات، التوقيع، العنوان، الهاتف، العناوين والنص الغنى بالمعلومات، مع الحد الأدنى/الحد الأقصى للطول، البريد الإلكتروني/الرسائل القصيرة URL/number المحدد مسبقا، نص الخطأ العادي والملء المسبق لكل سؤال URL البارامترات.

المنطق والصيغ والنتائج

مباشر

مجموعات AND/OR الشروطية، وقواعد الفرع، ومحرك الصيغة الآمنة على الإجابات، وشرائط الدرجات التي تحمل صفحة نتائجها الخاصة: اختبار مدرج يقع على قراره.

اللغة، الكشك، الملء المسبق

مباشر

قائمة تنزيلية للغة الزائر تتضمن فقط اللغات التي بها ترجمات حقيقية، ووضع الكشك للأقراص المشتركة (أهداف أكبر، إعادة ضبط آلي، لا تحويلات)، وبناة وصلة ملء مسبق، ونص شارة آمنة قابل للتحرير ونص الساق.

اختبار النسخة A/B

مباشر

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

موجز أسبوعي

مباشر

بريد إلكتروني أسبوعي مع آخر 7 (أ) أيام مؤشرات الأداء الرئيسية للاستقصاء، وأكثر الاستقصاءات ازدحاما، ونبض التعليقات، وأحدث إحاطة عن الذكاء الاصطناعي، المرسلة من خلال وصلة الاتصال الصادرة المربوطة.

دال - الحوكمة

مباشر

وتقتضي الموافقة على النشر (أربع عيون) وجود مدير ثانٍ لإطلاق المسودة بالضبط؛ أما التحرير فيعيد إقرارها. وتسمح روابط تقاسم المسودة للمراجع برؤية المسودة الحقيقية دون تسجيل الدخول إلى حسابه.

منصة المطورين

مباشر

عقد موصل 2.2 وإجراءات التغذية المرتدة* بشأن التقارير api/v1، أحداث استقصائية معيارية*، وصلات شبكية موقّعة دائمة مع صيغ نقل Slack و Google Sheets، واستجابة واحدة PDF التصدير.

النمو والمشاركة

تحليل الاستقصاءات والتغذية المرتدة هما منتجان مختلفان

يشرح التحليل الاستقصائي كيف تصل الدراسة الاستقصائية نفسها إلى الناس وكيف تعمل. وتوضيح التغذية المرتدة ما قاله العملاء عبر جميع المصادر المسموح بها وما يجب أن يفعله العمل التجاري بشأنها. ويرتبط المنتجان ببعضهما البعض ولكن لا يتقاسمان أو يستبدلان الحقائق التحليلية.

تحليل الدراسات الاستقصائية

(أ) يُدخل من الدراسة الاستقصائية الفردية في استوديو الدراسات الاستقصائيـة، وليس من التنقل الجانبي العالمي؛ ويقيس الأهلية والتعرض وسلوك التحريك والبدايات والإكمال والتخلي والاحتكاك بين الأسئلة والفروع والتوقيت ونتائج النشر/الحملة/الإصدار والموثوقية أثناء التنفيذ.

عرض عام للآراء

تغذية تسلسلية مستفادة من التصاريح لإكمال استجابات الدراسة الاستقصائية، وتركة المعلومات المستعارة، والدردشة، والتذكرةCSAT(ب) ردود التذكرة، وتقديرات العملاء من جانب المنظمة الدولية للطاقة الذرية، والتصويت المفيد في قاعدة المعارف، والمصادر الخارجية/الذرية المعتمدة.

تحليل التعليقات

يحلل معنى العميل: الاتجاهات الأصلية للمقاييس، والمواضيع/المواضيع الرئيسية، والشعور، والعاطفة، والنية، والإلحاحية، والطلبات، والشكاوى، والثناء، وقطاعات الرحلة/المنتج/الخدمة/الفريق، والمنتقدين، والنتائج المغلقة.

ملكية البيانات

وتظل الإجابات على الاستقصاء ذات حجية في مستودع الاستقصاءات. وتُخزن التغذية المرتدة مرجعاً للمصدر قابلاً لإعادة البناء وإشارات مشتقة، ثم تُحمَّل الأدلة المسموح بها عند الطلب.

⚠️
ولا تزال صفحة التعليقات الحالية تحتوي على متصفح للردود على الاستقصاءات وصندوق بريد وارد منفصل، ولم تستخدم مجاميع الذكاء الاصطناعي فيها بعد نموذج المصدر الموحد بالكامل. والتصميم الموحد لعرض عام/صندوق دخل/تحليل/مصادر وصحّة هو هدف التنفيذ.

NPS, CSATيجب دائماً أن تحافظ على أسلوبها الأصلي وحجمها وعيناها ونوافذها وقائمة القاسم، ويجب ألا يدمجا أبداً في متوسط واحد غير مفسر.

النموSEO

استوديو العروض الترويجية

استوديو الترقية يحوّل موقعك إلى محرك تحويلات، ثمّ يُظهر الرسالة الصحيحة للزائر المناسب في اللحظة المناسبة، كل شيء يتم تسليمه من خلال الشاشة الكاملة OpsIQ لا يوجد شيء إضافي للتركيب أنت تصمم وتنقذ الحملات في أي وقت

استوديو العروض الترويجية
مصمم استوديو الترويجمصمم حملة بصرية مع مجموعة من الكتل، ونافذة على القماش، ولوحة استهداف.استوديو الترويج - المصممالكتلxمرحباً بكم، {first_name}!احصل على خصم 15% على طلبك الأولSAVE15استرداد قسيمتيالاستهدافالبلدالولايات المتحدة، كاليفورنياالمحفزنية الخروجألف/باء50 / 50نشر1التصميمسحب الكتل على القماش2الهدفالبلد، الصفحة، الجمهور3الإجراءالفائز من الاختبارات الميدانية/الاختبارات الإضافية + رؤية الذكاء الاصطناعي
المصمم البصري: مجموعة من الكتل على اليسار، وحملة على القماش (هنا كوبونات تنبثق باستخدام رمز {first_name})، ولوح الاستهداف + النشر على اليمين.

الصورة الكبيرة

الحملة

ماذا

ترقية واحدة: جمهور، وعلامة، وحانة، وزلاجة، وشاشة كاملة، أو خط مباشر أو جغرافياً، لكل منهما هدف: المبيعات، والرصاص، والتوقيع، والدردشة، والمسح، والإعلان.

التصميم والنماذج

كيف

تُبني النظرة في المحرّر المرئي، كل إنقاذ يخلق نسخة جديدة، لذا يمكنكِ العودة دائماً، لا شيء قد فقد

استهداف

من

من يراها: البلد، الصفحة، الجهاز، مصدر المرور، العودة مقابل جديد، الجدول الزمني، و (مع موصل) زبائنك المزودين بالسجلات.

المشغلات

عندما

عندما يظهر: فوراً، عند التأخير، عند الحركة، عند نية الخروج، عند عدم الاستخدام، عند النقر، بعد N صفحة، أو من نشاط المحادثة/التذكرة.

تحليلات

ثالثا - النتائج

الانطباعات الحية، والنقر عبرها، والتحويلات، وقناة التسرب، والتقسيمات القطرية / الصفحة / الجهاز، والفائزون A/B، وآراء الذكاء الاصطناعي.

أطلق أول ترويج لك في. 5 الخطوات

1
ابدأ من نموذج أو فارغ

افتح ستوديو الترويج وانقر على حملة جديدة، أو اختر تصميما جاهزا من معرض النماذج. وتفتح مسودة في المصمم.

2
صممه

تُنقّف في القطع والعناوين والنص والأزرار والصور والشارات والإحصائيات والاستمارات والقوارب والمقاطعات والفيديو والتصنيفات وعجلات العمود الفقري، وألوان الصفراء والتدرجات وآثار الـ 3 دال مع الشرائح.

3
خصّصها

نوع الرموز مثل. {first_name}, {country} أو {company} في وقت العرض تصبح قيم الزائر الحقيقية

4
الهدف والمحرك

اختار من يرى الإعلان (الدولة، الصفحة، الجهاز، الجمهور) ومتى يطلق (التأخير، التنقل، الخروج-المقصد). اترك قاعدة فارغة لتعني كل شخص.

5
التحقق ثم النشر

انقر على تحقق من أجل مسح سريع قبل الإطلاق، ثم نشر.

القطع التي يمكنك بناءها

المحتوى

الميزانية الأساسية

العنوان، الفقرة، القائمة، اقتباس، صورة، إيكون، شارة، إنتكاس، فاصلة وفضّل، أيّة حواجز في المبنى.

دعوة إلى العمل

الميزانية الأساسية

أزرار مع إجراءات حقيقية: فتح رابط، بدء محادثة، إنشاء تذكرة، نسخ كوبون، أو القفز إلى صفحة.

الاستعجال والاحتجاز

متميز

أجهزة العد التنازلي، والنماذج (البريد الإلكتروني/الهاتف/النصوص)، وإعلانات القسائم، وإدراج الفيديو.

Gamified & feedback

متميز

عجلات لعبة "الدوران من أجل الفوز"، وبطاقات الشق، والتصنيفات NPS/Stars وقناتي متعدد الخطوات.

التصميم والتأثيرات

متميز

الكولوم، الحانات التقدمية، الحصة الاجتماعية، دغدغة الإثبات الاجتماعي، نعم/لا خطوتين، الخيوط، آثار ثلاثية الأبعاد، تلال، توهج، مظلة، ازدحام زجاجي.

رموز الشخصية

ضع أي من هذه في العناوين، الفقرات، الأزرار، الشارات، الإحصاءات، القوائم أو الاقتباسات. يتم استبدالها بالتفاصيل الحية للزائر في اللحظة التي يظهر فيها الترويج (دائماً مطهرة لأسباب السلامة):

الرموز المتاحة
From the visit:   {country} {city} {device} {page_path} {utm_source} {referrer}
From your CRM:    {first_name} {last_name} {email} {company} {segment} {lifecycle_stage}
From a connector: {balance_due} {unpaid_invoices}   (logged-in customers only)

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

البلد والموقع

عرض فقط في (أو إخفاء من) البلدان المختارة، المدن أو المناطق الزمنية عن طريق GeoIP. عظيم للعروض الخاصة بالمنطقة أو إعادة توجيه جغرافي.

Pages & URLs

حدد صفحات معينة باستخدام تساوي / تبدأ ب / تحتوي على / regex، واستبعد الصفحات أيضا.

الجهاز

حواسيب مكتبية أو طاولة أو متنقلة، مثل حانة نحل على متن متحركة، وطريقة على الحاسوب المكتبي.

نوع الزائر

جديد، عائد، معروف (فيك)CRM)أ( أو مجهول؛CRMأجزاء، مرحلة دورة الحياة، النتيجة الرئيسية أو لغة المروج.

مصدر حركة المرور

بواسطة جهاز آلي (الوارد، أوتوم - كامبائيين) أو موقع الإشارة، مثل الزوار فقط من إعلان محدد.

الجدول الزمني والتواتر

تواريخ البدء/النهاية، وفترات اليوم، وكم مرة يمكن للشخص أن يراه (في كل جلسة، في اليوم، بعد إغلاقه / النقر / التحويل).

تقسيم الحركة بين الاتجاهين A/B

عرض نسبة مئوية من الزوار وتشغيل المتغيرات وجها لوجه؛ الشخص نفسه دائما ينظر إلى نفس المتغير.

الجمهور (المتصلون)

مع موصل مُمكَّن، هدف من دولة الحساب الحي، مثل الزبائن الذين لديهم فواتير غير مدفوعة الأجر أو المشتركين النشطين.

المشغلات

اختار كيف تظهر الترويج: فورا، بعد التأخير، على عمق التنقل، عند الخروج-نية، عندما تكون غير نشطة، عند النقر على عنصر، بعد عدد من الصفحات المشاهدة، على استمارة التخلي، أو من نشاط المحادثة / وثيقة. window.OpsIQPromo.fire('event').

العملاء المستهدفون الذين دخلوا على الشبكة (المتصلون)

هذا ما يجعلOpsIQالترقيات الخاصة: ربط منصة مثلWHMCS(أو أي موصل يدعم الجمهور) والاستوديو يمكن أن يستهدف الزوار من خلال حسابهم الحي.

1
تمكين وصلة الجمهور

تحت إشراف (كونيكتورز) ، يمكن الشخص الذي يكشف عن حقائق المشاهدين WHMCS يَعمَلُ خارج الصندوقِ - يُعترف بالزبائن بأمان عندما يُسجّلونَ إلى ذلك المنبر، OpsIQ لا يثق أبداً بالبريد الإلكتروني المطبعي

2
إضافة قاعدة الجمهور

في الحملة الاستهداف > الجمهور، يشترط التسجيل وإضافة قواعد مثل الفواتير غير المسددة >= 1أو أن الاشتراك قد تأخر استحقاقـه، 0.

3
جعل البيانات الخاصة بهم

استخدام الرموز مثل. {first_name} أو {balance_due} تذكرة "لديك فاتورة متأخرة" تكتب نفسها

إن لم يكن بوسع الموصل تأكيد حقيقة (أو أن الزائر ليس مسجلاً) فإن الترقية لا تظهر ببساطة، لذا عرض مستهدف بالبيلجات لا يصل أبداً إلى الشخص الخطأ وبناء موصلك الخاص؟ انظر: "مشاهدو التعزيز يستهدفون" أدناه.

التجارة المترابطة (القوة العظمى في مجال الاستوديوهات)

بطاقات منتجات من متجرك

البيانات الحية

مجموعة من المنتجات تسحب مواد حقيقية (الاسم، السعر، سعر البيع، الصورة، الصلة) مباشرة WHMCS, WooCommerce, Shopify أو OpsIQ"أستمري في التدوير" و البطاقة تستكمل سعرها من المنصة كل ساعة

قسائم المشتريات من المتجر

القسائم

يمكن لقطعة كوبون أن تصنع رمز الخصم الحقيقي في متجرك في اللحظة التي تنشر فيها، لذلك فإن الرمز الذي يكشف عنه الزائر يعمل دائمًا عند التحقق.

إيرادات الحقيقة

نسبة

الأوامر الحقيقية من منصاتكم مطابقة للحملات بالساعة (برمز القسائم المستخدمة أو بالبريد الإلكتروني للرصاص)

الدليل الاجتماعي الحقيقي

الثقة

يمكن للدغات الواقية اجتماعياً أن تقود بأوامر حديثة حقيقية (أدا) أمرت خطة البداية 2h قبل" "الاسم الأول والبند فقط، لا بريد إلكتروني أو مبالغ.

التجارب والرحلات

المتغيرات ألف/باء والفائز التلقائي

:: الاتجار عبر متغيرات التصميم؛ والسماح بالاستوديو بتشجيع الفائز الإحصائي تلقائيا، أو حركة اليد إلى جهاز تحديد المسار الذي ينتقل الزوار نحو ما يحول بين الأدلة.

زيادة الاحتفاظ

احتفظ بجزء من الزوار الذين لا يرون شيئاً، لذا يمكنك إثبات أن الحملة نفسها تسبب الزيادة.

أشكال القطاع

:: مختلف المحتويات لكل جمهور على حملة SAME (الزوار المتنقلون، والسلال الكبيرة، والزبائن العائدون)، ويحصل كل قطاع على نسخته الخاصة به.

تجربة التجارب

ويمكن للمتغيرات أيضاً أن تختبر متى تظهر: فورية مقابل مؤجلة مقابل نية الخروج، مقيسة وجهاً لوجه.

الرحلات (التسلسل)

الهدف من قبل ما فعله شخص بحملة أخرى (الحملة المشاهده A ولكن لم يتحول) لبناء تسلسلات ترقية متعددة الخطوات.

إعلانات

يمكن لزوار قرص صغير أن يعيدوا فتحه بعد إغلاق الحملة، لذلك لا تذهب أبدا إلى الأبد.

أعرف ما حدث

خريطة حرارة النقرات

مصمم

في المصمم، قم بتغيير خريطة الحرارة لرسم نقرات الزائر الحقيقي على كل كتل تصميمك.

خطوة القمع

قناة

وتبين الحملات المتعددة الخطوات بالضبط أين ينقطع الناس عن المشاهدة، شاشة بشاشة.

مقارنة الحملات

استوديو

:: القيام بأربع حملات جانبية (الضغط والنقرات والتحويلات)، مع إبراز أفضل قيمة.

قصة أسبوعية

الذكاء الاصطناعي

كل يوم اثنين، يظهر ملخص في إشعاراتك؛ ويكتب زر القصة الأسبوعية 📖 موجزا بلغة واضحة مع الخطوات التالية عندما تريد ذلك.

العمل بصورة مريحة

الذكاء الاصطناعي والأفكار

تحدث مع مساعد التصميم لتحرير القماش ("جعل العناوين الرئيسية عاجلة، أضف العد التنازلي")، احصل على أفكار الحملة من بيانات حركة المرور الخاصة بك، ترجمة حملة لكل بلد، أو إصلاح آلي لدرجة تصميم منخفضة.

استيراد مجموعات العلامات التجارية

وهناك أمر واحد يقرأ موقعك على الإنترنت ويقترح ألوان علامتك التجارية الحقيقية والخطوط؛ ثم حفظ كل خيار يقود معهم.

قناة الشاشات المتعددة

وتصبح القطع الخشبية صحيحة في كل شاشات الشاشة: تُقدَّم لكل شاشة، وشاشات أضافة أو إعادة ترتيب، ويتبع العرض التمهيدي على طول.

النسخ المسماة والوجود

تسمية الإصدارات المهمة ("إطلاق المرشح")، واستعادة أي منها، ورؤية تحذير عندما يكون أحد زملاء الفريق يقوم بتحرير نفس الحملة.

جهاز حكام الشياطين

انظر إلى سطح المكتب، واللوحات وأجهزة الهاتف المحمول جنبا إلى جنب في عرض واحد؛ تبدل مساحات البكسل لتحديد موقع دقيق.

الصفحة المستضافة والقنوات

ويمكن أن تكون كل حملة أيضاً صفحة قائمة بذاتها مستضافة للسير الذاتية والرموز الوصفية، أو تسلسلاً لتنقيط البريد الإلكتروني من أجل القيود المحتملة التي تم التقاطها، أو مسودة لدفع شبكة الإنترنت بنقرة واحدة.

سلامة المؤسسة

نشر نوافذ التجميد (فترات تجميد التغيير)، ووضع مفتاح تعليق جميع العمليات في حالات الطوارئ، والموافقات، وسجل مراجعة الحسابات، وإلغاء النسخ.

هل أحتاج إلى إضافة الرمز إلى موقعي؟+

لا. الترويج يتم من خلال نفس OpsIQ widget الذي قمت بتركيبته بالفعل.

هل سيرى الزوار نفس النافذة المنبثقة مرارا وتكرارا؟+

رقم تحديد أغطية التردد (في كل دورة/يوم، أو التوقف بعد أن يغلق شخص ما أو ينقره أو يحوله) وتطبق التخلفات المعقولة.

من يستطيع النشر؟+

تقتصر عمليات النشر والتعليق والحفظ والعودة على مالكي مساحة العمل والمديرين الكاملين، ويمكن لأي عضو من أعضاء الفريق أن يقوم بإنشاء وتصميم المسودات.

النموSEO

مصمم الترقية

وبرنامج تصميم الحملات هو محرر كتلة استجابي لبناء تجربة حملة واستعراضها وإصدار نسخ منها ونشرها.

فرز المنتجات
مصمم الترقيةيجمع المصمم بين قماش حي، وعرض مسبق للأجهزة، والكتل، ومتغيرات التخصيص، والتعليقات، وتاريخ الإصدار.مصمم الترقيةمساحة العملVIEWPORTسطح المكتبالنسخةv12الدولةمسودةعرض الحيز العمليكتلة بطلالعناوين الرئيسية ووسائط الإعلام والدعوة إلى العملتحريرمجموعة العروضالخصم والموعد النهائيتحريرالتخصيصمتغيرات الاتصال والحملةجاهزتحقق من الإطلاقالتعليقات والتحققألف - الاستعراض1BUILD BLOCKSتحرير التصميم الحي2استعراضحاسوب مكتبي، لوحة حاسوبية، هاتف محمول3PUBLISHالإصدارات المصنفة
يجمع المصمم بين قماش حي، وعرض مسبق للأجهزة، والكتل، ومتغيرات التخصيص، والتعليقات، وتاريخ الإصدار.

استخدم الكتل لتشكيل التجربة، وتجربة كل نافذة مدعومة وإدخال المتغيرات الشخصية المعتمدة. مراجعة التعليقات ومنشأ وسائط الذكاء الاصطناعي قبل الإطلاق.

النموSEO

نماذج الترقية

وتوفر النماذج معرضاً أولياً لفئات الحملات التي يقوم بها استوديو الترويج، ويمكن البحث فيه.

فرز المنتجات
نماذج الترقيةويقوم معرض النماذج بفرز التصميمات العالية المستوى وتطبيق ألوان علامة حيز العمل عندما يصبح أحد النماذ جرى إعداده مسودة.نماذج الترقيةمساحة العملالفئةالتحويلRESULTS24العلامة التجاريةنُفذتعرض الحيز العمليعرض الخروجالوسائط ذات الطابع العاجل وطلبات التسليممعاينةالترحيب بالزوار الجددقائمة الراية والمزايامعاينةإطلاق منتجالبطل، الدليل والعدّ التنازليمعاينةطلب التعليقاتنموذج استقصاء مقتضبمعاينة1FILTERالفئة والبحث2استعراضتفتيش التصميم الكامل3USEإنشاء مسودة ذات سمة مميزة
ويقوم معرض النماذج بفرز التصميمات العالية المستوى وتطبيق ألوان علامة حيز العمل عندما يصبح أحد النماذ جرى إعداده مسودة.

البحث أو الترشيح حسب الفئة، تحميل نتائج إضافية، استعراض التجربة الكاملة، ثم اختار استخدام النموذج. The new campaign remains a draft and can be changed in Promotion Designer before publication.

النموSEO

تحليل الترقيات

وتربط تحليلات الترويج بين الانطباعات والنقر على النقاط وبين التحويلات، وسياق الجمهور، ونتائج الإجراءات المتصلة، وتعلم الحملات.

فرز المنتجات
تحليل الترقياتوتبين تحليلات الترويج أداء العناوين الرئيسية، والجمهور المستهدف، وتفاصيل العوامل المحركة، والنتائج المحتملة للتصدير والإجراءات المتصلة.تحليل الترقياتمساحة العملIMPRESSIONS42.8kمعدل المشاركة6.4%CONVERSIONS814عرض الحيز العمليالبلدالمملكة المتحدة 31%التوزيعصفحة/pricing · 22%التوزيعالمحفزنية الخروج 44%التوزيعإجراء وصلالقسيمة المنشأة 97% النجاحالنتيجة1الإجراءمن الانطباعات إلى التحويل2SLICEالصفحة، البلد، الجهاز3LEARNتطبيق الرؤية
وتبين تحليلات الترويج أداء العناوين الرئيسية، والجمهور المستهدف، وتفاصيل العوامل المحركة، والنتائج المحتملة للتصدير والإجراءات المتصلة.

لذا، يجب على الشركات أن تقوم بتحليل البيانات بشكل أكثر دقة. وقراءة الانطباعات ومعدل النقر والتحويلات معًا. وتجزئة النتائج حسب البلد والصفحة والمحرك والجهاز؛ وتصدير القنوات المحتملة الملتقطة عند الضرورة. وتظهر نتائج عمل الموصل ما إذا كانت المتابعة التي وعدت بها الترويج قد نفذت فعليًا. وينبغي معاملة موجزات الذكاء الاصطناعي والتعلم كفرضيات للتحقق منها، وليس دليلا آليا.

النموSEO

إعلانات

وتنشر الإعلانات رسالة في منطقة الإخطار بالوحدة مع تحديد اختياري للهدف والجدول الزمني والدعوة إلى العمل.

فرز المنتجات
إعلاناتويشمل محرر الإعلانات المحتوى، ودعوة إلى النقر على الرابط، والجمهور المستهدف، والشريحة، وقاعدة الصفحة، والتواريخ الفعلية والأسلوب المرئي.إعلاناتمساحة العملالنشطون3AUDIENCEالجزءالجدول الزمنيتموز/يوليه 22–29عرض الحيز العمليالعنوانالصيانة المقررةجاهزالمحتوىرسالة Markdownجاهزالهدف المحدد للتكلفةاقرأ التحديثاختياريRule:: العملاء النشطونالهدف1WRITEالعنوان وMarkdown2الهدفالجمهور، الجزء، الصفحة3الجدول الزمنيالنافذة النشطة
ويشمل محرر الإعلانات المحتوى، ودعوة إلى النقر على الرابط، والجمهور المستهدف، والشريحة، وقاعدة الصفحة، والتواريخ الفعلية والأسلوب المرئي.

اختار جميع الزوار، أو الزوار المسجلين أو الزائرين الجدد؛ واختياريا تضييق الجمهور مع قطاع الاتصالات والصفحة قاعدة. تحديد نشاط من/نشط إلى التواريخ وراية نشطة.

النموSEO

حملات الدفع

وترسل حملات الدفع إشعارات المتصفح إلى الزوار المشتركين بعد أن يغادروا الموقع.

فرز المنتجات
حملات الدفعويبين مكون الدفع مدى الاشتراك، والمحتوى، والوسائط، والأعمال، وقواعد الاستهداف وحالة الجدول الزمني.حملات الدفعمساحة العملSUBSCRIBERS8,214تم الإرسال31.6kCLICK RATE5.8%عرض الحيز العمليالعنوانعربتك تنتظركجاهزالجسمارجع اليوم للتسليم المجانيجاهزالهدف المحدد للتكلفةفتح السلةجاهزالجدول الزمنيإرسال الآن أو في موعد محددمسودة1PREPARE PUSHالعنوان، والجسم، والرمز2الهدفالجمهور، الجزء، الصفحة3SENDالآن، الجدول أو المسودة
ويبين مكون الدفع مدى الاشتراك، والمحتوى، والوسائط، والأعمال، وقواعد الاستهداف وحالة الجدول الزمني.

حدد مفاتيح الدفع الشبكية أولا تحت إعدادات الدفع شبكية. يمكن أن تشمل الحملة عنوانا، جسد، أيقونة، صورة البطل، شارة، CTA وحتى اثنين من أزرار العمل؛ يظل الإخطار الدائم إلى أن يتفاعل الزائر.

استهدف حسب الجمهور، وقطاع الاتصال الاختياري وقاعدة الصفحة. حفظ مسودة، جدولها أو إرساله فورا. استخدام الاشتراك والنقر قياسات لتقييم الوصول. HTTPS وعامل خدمة مستضاف بشكل صحيح مطلوب على مواقع طرف ثالث مدمج؛ انظر Web Push على المواقع الأخرى.

النموSEO

رسائل استباقية

الرسائل الاستباقية تصل تلقائياً لحظة تطابق سلوك الزائر مع القاعدة، قبل أن يسألوا، تبني كل قاعدة بثلاث أجزاء: OpsIQ تم تشغيله في موقعك

استباقية
رسائل استباقيةمكون قاعدة استباقية في ثلاثة أجزاء: اختار عمل (دردشة، لافتة، جولة، دفع، البريد الإلكتروني)، وإضافة الشروط، وتحديد فترة تجميد التواتر.رسائل استباقيةمساحة العمل1 الإجراءرسالة الدردشةالعلامةجولةدفعالبريد الإلكتروني2:: الشروطpage = /pricingالوقت على الصفحة > 20sالعودة3:: التواترمرة واحدة في كل دورةالحالة1إجراءالدردشة، اللافتة، البريد الإلكتروني، دفع...2CONDITIONSالصفحة، الوقت، النتيجة، العودة3الترددوقت التجميد لكل زائر
كل قاعدة استباقية هي ثلاثة خيارات: ماذا يحدث (الدردشة، اللافتات، الجولة، دفع، البريد الإلكتروني، webhook)، متى (الظروف)، وكم مرة (وقت التجميد).

ألف - الأجزاء الثلاثة للقاعدة

1
ما ينبغي أن يحدث (الإجراء)

عرض فقاعة محادثة أو لافتة على الصفحة، وبدء جولة مصحوبة بمرشدين، وإرسال رسالة إلكترونية أو بريد إلكتروني، والتكليف بإدارة ما، أو إطلاق وصلة شبكية. {{visitor_name}} و {{page_title}} تصبح قيماً حقيقية.

2
متى ينبغي أن يطلق (الظروف)

نارو الذي يحفزه: الصفحة/URL والوقت على الصفحة، عمق الغطس، النتيجة الرئيسية، العودة ضد جديدة، دون شروط، تشعل القاعدة لكل زائر، وتضيف على الأقل واحدة لاستهدافها.

3
كم مرة (التواتر)

(ج) وضع نظام لتهدئة بحيث لا يُستَنقَل الشخص نفسه، مثل مرة واحدة في كل دورة أو مرة في اليوم، ولكل قاعدة مركز مفتوح/مفتوح.

⚠️
فضاء العمل الذي يُنظّف "وقت الرنة/القواعد في الساعة" يسمح للخادم باتخاذ إجراءات (البريد الإلكتروني، الدفع، الويبك، تعيين) OpsIQ (كرون) يهرب، اتركه إذا أردت فقط أن تعيش على صفحة "نودج"
هل ستطلق النار على الجميع؟+

فقط إذا لم تضيف أي شروط. أضف شرطاً واحداً على الأقل (صفحة، معدل القيادة، العودة...) لاستهداف الزوار الصحيحين.

:: كيف ترتبط هذه بالحركة والرحلات؟+

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

النموSEO

تدفقات الروبوتات الدردشة

تقاطع مداخل (الدردشة) و الإجابات على الكلمات الرئيسية وطرق المرشدة بدون شفرة، التدفق هو مجموعة من الخطوات المترابطة (الندوات): أنت تسأل السؤال، الزائر يختار خياراً ويرسلها التدفق إلى فرع المطابقة

كيف يعمل
تدفقات الروبوتات الدردشةقماش التدفق: أفرع نقد تحية إلى ثلاثة أزرار للخيار، كل واحد يقود إلى خطوة قادمة، يتطلع إلى النظام أو يسلّم إلى إنسان.ألف - تحيةكيف يمكنني مساعدتك؟تتبع طلبيسؤال بشأن الفواتيرتحدث إلى شخصابحث عن الترتيب→الوكيل البشريعوامل التحريك: تحية · كلمة رئيسية · دليل · تفاصيل لاحقة · نهاية المحادثة
تدفقات الروبوتات الدردشة

التدفق مقابل الذكاء الاصطناعي · متى تستخدم أي

استخدام تدفق

عندما يكون الطريق قابلاً للتنبؤ وتريده متطابقاً في كل مرة: درج الحجز، ساحرة العودة، "أي خطة؟"

استخدام الذكاء الاصطناعي

عندما تكون الأسئلة مفتوحة هل هذا يعمل مع مؤسستي؟

المشغلات

ألف - تحية

يجري كرسالة افتتاحية عندما يفتح زائر لأول مرة المحادثة.

الكلمة الرئيسية

يجري عندما يكتشف الزائر كلمة قمت بإدراجها (مثل رد الأموال، التسعير، الإلغاء).

بعد التفاصيل/بعد التأخير

تبدأ بمجرد أن يتم تبادل تفاصيل الاتصال، أو وقت محدد في المحادثة.

عند انتهاء الدردشة/الاستباقية

يجري عندما ينتهي الدردشة (على سبيل المثال، تقييم)، أو تبدأ من قاعدة الرسالة الاستباقية.

صنع واحد في أربع خطوات

1
خلق التدفق

انقر على تدفق جديد، اسمه، اختار نوع المحرك (والكلمات الرئيسية إذا كانت كلمة رئيسية)، حفظ. يبدأ معطلاً.

2
افتح القماش

قم بلعق (إديت) و المبني البصري حيث تضيف خطوات (الألعاب، الأسئلة مع الأزرار والفروع)

3
إضافة فروع ونقل

بالنسبة لكل خيار، رسم فرع إلى الخطوة التالية. إنهاء المسارات من خلال حلها، أو تسليمها للذكاء الاصطناعي، أو نقلها إلى الإنسان.

4
جعله يعمل

انقر على تمكين. التدفق يذهب حي في أداتك فورا. تعطيل أي وقت دون فقدان التصميم.

هل تحل التدفقات محل الذكاء الاصطناعي؟+

لا، إنها تركض جنبا إلى جنب، وتستخدم تدفقات من أجل مسارات يمكن التنبؤ بها، وأجهزة الاستخبارات الجوية لطرح أسئلة مفتوحة؛ ويمكن أن ينتقل التدفق دائماً إلى أي منهما.

النموSEO

الجولات المصحوبة بمرشدين

الجولات المرشدة هي سير خطوة بخطوة تشير إلى أجزاء من صفحتك مع فقاعات الكلام وضوضاء، لتوجيه الزائر عبر التسجيل أو خاصية جديدة. وهي موضوعة تماما ومبني في مصمم بصري مع عرض مسبق حي. لا تعمل جولة إلا عندما تكون مؤشر عليها نشطة.

كيف يعمل
الجولات المصحوبة بمرشدينصفحة مظلمة مع حلقة ضوء حول زر إضافة الصفقة وقراءة فقاعة الكلام المواضيعية الخطوة: 1 أو 4 مع زر التالي.+ أضف صفقةSTEP1of OF4إنشاء أول صفقةانقر هنا لإضافة صفقة إلى قائمة الصفقات.التالي →
الجولات المصحوبة بمرشدين

كيف تبنى جولة

سوف تقدم أي إفصاحات مطلوبة عندما يتفاعل المستخدمون النهائيون مع الذكاء الاصطناعي أو الأنظمة الآلية؛

كل خطوة تستهدف عنصراً وتظهر فقاعة مع نصك. أضف عدد التوقفات التي تحتاجها المرحلة ورتبها.

الموضوع

ابدأ من مرحلة ما قبل أو تصميم فقاعة الخاص بك (الكولات، الخريجين، الضوء) مع استعراض مباشر على اليمين.

المحفز

خياريا ربط قاعدة استباقية بحيث تبدأ الجولة تلقائيا عندما تنفجر تلك القاعدة (على سبيل المثال زيارة أول لوحة معلومات للزائر العائد).

نافذة

الجولة مؤهلة للتشغيل فقط عندما يكون نشط مرشح. إزالة الترس لتحويلها دون حذفها.

صنع واحد في أربع خطوات

1
جولة جديدة

انقر على جولة مرشدة جديدة، واسمها، واختياريا ربط قاعدة استباقية حتى تبدأ تلقائيا.

2
إضافة خطوات

أضف كل نقطة توقف: اختر العنصر الذي يشير إليه وكتب نص الفقاعة. اعيد ترتيب المسار حتى يتدفق.

3
صممه

اختار إعداد مسبق أو أسلوب الفقاعة بنفسك. تظهر المراجعة الحية بالضبط ما يراه الزوار.

4
تنشيط

الزموا النشاط وإنقاذ، الجولة الآن يمكن أن تدار على محركها أو تبدأ من قبل قاعدة رسالة استباقية

كيف تبدأ الجولات؟+

على محركهم الخاص أو عن طريق قاعدة "الرسالات الاستباقية" "مُجرّد جولة" لذا تقرر أي زوار يرون الجولة ومتى

النموSEO

حيث يقوم العميل بنشر OpsIQ كـ

تحول أهداف التحويل نشاطاً تهتم به (في حدث عبر الإنترنت، رسالة دردشة، قرار بتذكرة) إلى تحويل مسجل بإسناد كامل. OpsIQ يسجل تحويلاً ضد الاتصال ويربطه بالحملات والأجزاء والمصادر التي قادت إلى هناك.

كيف يعمل
حيث يقوم العميل بنشر OpsIQ كـتدفق الهدف: حدث webhook payment. succeeded يصبح تحويلا مسجلا "للشراء" بقيمة $49، يعزى إلى مصدره وحملة، مع بدء سريع للرقائق المحددة مسبقا أعلاه.البداية السريعةالشراء باستخدام نظام Stripeعقدت جلسات إيضاحالاشتراك في الرسالة الإخباريةpayment.succeededاتصالات الويب الواردةالتحويل"الشراء"$49تمت الإشارة إلى أحداث invoice.payment_succeeded وsubscription في Sales Bridge.المصدر: الحملة
حيث يقوم العميل بنشر OpsIQ كـ

تحديد هدف في ثلاث خطوات

1
اختار النشاط المثير

إختار نوع النشاط الذي يُعتبر تحويلاً، أو استخدم بداية سريعةStripeالشراء، وحجز ديمو، والاشتراك في النشرة الإخبارية بدأ.

2
اسمه وحدد قيمة

Give the conversion a name (purchase, demo_booked, signup) and optionally a fixed value and an attribution window.

3
احفظ

حفظ وتفعيل - من الآن فصاعدا، كلما أطلق النشاط، OpsIQ تسجل تحويلا ضد الاتصال مع النسب إلى الملامسات السابقة.

الأهداف موصولة بالفعل في webhooks الواردة: أي هدف الذي يتطابق مع نوع حدث الدخل يطلق تلقائيا في اللحظة التي ينزل فيها الحدث. استخدم صفحة Inbound Webhooks للربط بين Stripe، Calendly أو أي نظام يمكنه POST JSON.
ما الذي يمكن أن يكون تحولا؟+

أي نشاط مسجل: حدث مُحدَّد في موقع (ويهوك) (الدفع، تمّ التوصيل)، وتلقي بريد إلكتروني للدردشة، وتسوية التذاكر، وأي شيء على جدول الاتصال.

تحليلات

لوحات معلومات مخصصة

وتسمح لك لوحات القياس المخصصة ببناء نظرتك الخاصة للمقاييس المهمة، بدلاً من الاعتماد على الاستعراض العام القياسي فقط. أضف الأدوات التي تريدها، وسحبها وتغيير حجمها إلى التخطيط الذي تحبه، ثم حفظه وتقاسمه مع فريقك.

لوحات معلومات مخصصة
لوحات معلومات مخصصةإنشاء لوحة تحكم مع مؤشرات الأداء الرئيسية وعناصر الرسم البياني، ومنطقة إسقاط مقطوعة، وزناد لإضافة عنصر.لوحات متابعة مخصصةمساحة العمللوحة التحكم الخاصة بيأضفالزوار2,481الإيرادات$8.2كالاتجاراسحب أداة هناالصفحات الرئيسية/pricing/docs/signup1ADD WIDGETSقياسات ورسوم بيانية2ARRANGEسحب وإعادة الحجم3تقاسممع فريقك
إنشاء لوحة الإدارة الخاصة بك: أضف مؤشرات الأداء الرئيسية، والرسوم البيانية وعناصر القوائم، وسحبها وتغيير حجمها إلى الشكل الذي تريده، ثم تقاسمه مع الفريق.

بنّي واحداً في ثلاث خطوات

1
أضف عناصر

انقر على إضافة وحدة تحكم واختار المقياس أو الرسم البياني الذي تريد تتبعه. كرر ذلك لكل شيء تريده على اللوحة.

2
ترتيب التصميم

"أُعيدوا تشغيلها وسحبوا حوافهم إلى مكان آخر" "مُحققون في أعلى المستويات، يُرسمون أدناه، أيًّا كان ما يقرأ أفضل."

3
احفظ وشارك

حفظ لوحة التحكم وشاركها مع فريقك حتى ينظر الجميع إلى نفس الأرقام.

احتفظي بمجالس منفصلة لوظيفة منفصلة (لوحة يومية) مع العد الحي، و لوحة "مراجعة شهرية" مع مخططات الاتجاهات"
النموSEO

حملات التواصل

Outreach is OpsIQ's 1:1 and bulk email engine: compose a personalised message or run a campaign to a CRM segment, with reply detection, send-time control, open/click tracking, a tracking pixel and one-click unsubscribe. It is consent-gated and CAN-SPAM / CASL compliant.

التواصل
حملات التواصل(ب) شاشة التوعية مع علامات التبويب المكتوب/الحملات/النماذج/الردود وجدول الحملة الذي يبين معدل الإرسال ومعدل الفتح ومعدل الردود.التواصلمساحة العملالحملاتالمؤلفالنماذجالردودالحملةتم الإرسالمفتوحالردالرسالة الإخبارية الصادرة في حزيران/يونيه1,20048%7%متابعة المحاكمات34062%14%استعادة82039%5%:: إلغاء الاشتراك بنقرة واحدة على كل رسالة تُرسل11:1 & BULKألف أو حملة2TRACKEDالفتح والنقر والرد3COMPLIANTتسجيل الخروج
محرك التوعية: إرسال1:1أو تنفيذ حملات لقطاع، وتتبع الفتح والردود، والبقاء متوافقة مع الكشف عن سحب الاشتراك والرد المدمجة.

الأزرار الأربعة

المؤلف

كتابة رسالة شخصية1:1البريد الإلكتروني مع {tokens} من الاتصال و CRM.

الحملات

إرسال إلىCRMجزء، مقرر أو الآن، مع الحد الأقصى ومراقبة وقت الارسال.

النماذج

نماذج الرسائل القابلة لإعادة الاستخدام من أجل التوعية المتكررة.

الردود

ويسجل كشف الرد الردود ويوقف تلقائيا متابعة أي شخص رد.

كيف تجري الحملة

1
اختار جمهوراً

اخترCRMالجزء (أو رفع قائمة) - يُطبَّق القمع والموافقة تلقائيا.

2
ألف - المؤلف

كتابة الرسالة مع رموز الشخصية؛ استعراض مقارنة مع الاتصال الحقيقي.

3
جدولة وإرسال

إرسال الآن أو في أفضل وقت. يفتح سجل بكسلات التتبع؛ وتُعزى النقرات والردود.

ويُعد التواصل موافقة وإلغاء، ويشمل ذلك عصيان واحد على كل إرسال، ويتبع برنامج المساعدة الاجتماعية/مركز تنسيق الإجراءات المتعلقة بالطرق البرية.
تحليلات

visualHtml

:: إرسال تقارير مبرمجة بالبريد الإلكتروني إلى مجموعة مختارة من المتلقين المختارين في جدول زمني (يوميا أو أسبوعيا أو شهريا) كعلامة مطبوعة بيضاء PDF- وضعه مرة واحدة ويهبط التقرير في صناديق تلقائيا من خلال OpsIQ (كرون)

visualHtml
visualHtmlThe scheduled-reports screen: a table of reports with their schedule, recipients and last-sent time, plus a Save-report button.التقارير المقررةمساحة العملvisualHtml+ حفظ التقريرتقريرالجدول الزمنيالمستفيدونآخر رسالةحركة المرور الأسبوعيةمون 9:00[email protected]2 أيامSEOتقرير العملاءشهريًا[email protected]يونيو 1موجز المبيعاتيومي[email protected]todayتم تسليمها كعلامة بيضاءPDFعن طريقOpsIQcron1AUTOMATEDيومي · أسبوعي · شهري2العلامة البيضاءPDF إلى الزبائن3المستفيدونأُرسلت بالبريد الإلكتروني في الموعد المحدد
وضع تقرير مرة واحدة (مجموعة قياسية، ونطاق، والجدول الزمني، والمتلقين) OpsIQ بريد إلكتروني أبيض PDF تلقائياً على كتفك

إعداد تقرير

1
اختار ما تريد إرساله

اختار مجموعة القياس (حركة المرور، SEO، المبيعات، الدعم...) ونطاق تواريخ.

2
تحديد الجدول الزمني والمستفيدين

يوميا أو أسبوعيا أو شهريا، في الوقت الذي تختارونه، إلى متلق واحد أو أكثر بالبريد الإلكتروني.

3
احفظ

وفر ومكن، فالتقرير يولد ويرسل رسائل إلكترونية في الموعد المحدد، ولا خطوة يدوية.

💡
التقارير المُقرَّرة التي تُنفّذ عن طريق OpsIQ cron, if a report does not arrive, confirm the cron is running (see Cron and functioning).
الخصوصية

الخصوصية والامتثال

صفحة الامتثال الخاصة هي المكان الوحيد الذي تُظهر فيه مراجع حسابات تتعامل معه بشكل مسؤول: دفتر الموافقة، وسجل الدخول إلى الزملاء، وسياسة الإقامة والاحتفاظ بالبيانات الخاصة بك، وجاهز للطباعة DPA_ في وجهة نظر واحدة، فقط المديرون الكاملون يمكنهم فتحها.

الخصوصية والامتثال
الخصوصية والامتثالThe Privacy & Compliance screen: tabs for Consent ledger, Access log, Residency and DPA, with a consent ledger table of grants and revokes by channel.الخصوصية والامتثالمساحة العملبوتسجل الدخولالإقامةDPAاتصلالقناةإجراءالتاريخ[email protected]البريد الإلكترونيممنوحةيونيو 12[email protected]pushملغىيونيو 10[email protected]marketingممنوحةيونيو 9دليل قابل للبحث عن كل موافقة منحت أو ألغيت، حسب القناة1ConsENT LEDGERإثبات كل منحة2ACCESS LOGمن لمس البيانات3DPAنموذج قابل للطباعة
:: شاشة واحدة جاهزة لمراجعي الحسابات: دفتر أستاذ للموافقات قابل للبحث (منح/إلغاء الموافقات حسب القناة)، وسجل للدخول يبين من لمس البيانات، وإعدادات الإقامة/الاحتفاظ، ونموذج قابل للطباعة DPA.

الأزرار الأربعة

بوت

سجل قابل للبحث عن كل منحة موافقة وإلغاء، بالاتصالات، القنوات (البريد الإلكتروني، الدفع، الخدم، داخل الشبكة)، العمل، المصدر والتاريخ.

سجل الدخول

الذي في فريقكِ رأى، محرر، مُصدّر، محيّة أو رسالة بيانات إتصال مع المُعلّم، الاتصال، العمل IP بالضبط ما يطلبه منظم

الإقامة والاحتفاظ

أعلن مكان تواجد بيانات هذا الحيز العملي، وحدد عدد أيام الاحتفاظ بسطور النشاط (0 = إلى الأبد)، وسجل مراقب البيانات وموظف حماية البيانات.

النموذج DPA

إضافة لتجهيز البيانات قابلة للطباعة تتضمن معلوماتك المتعلقة بالمسؤول عن المعالجة، والعنوان، وموظف معالجة البيانات، ومكان الإقامة والاحتفاظ. PDF.

الخصوصية والامتثال يرتبط مع استوديو موافقة الكعكة (التي تجمع الموافقة) وصفحة التصدير (التى تنتج نسخة البيانات ل DSAR). انظر أيضا Cron والتشغيل الآلي لتنظيف الاحتفاظ الليلي.
الموصلات

ربط منصاتك

وصلة القنصل OpsIQ إلى المنابر الخارجية: مخازن التجارة الإلكترونية، ونظم الفواتير، ومجهزات الدفع، ومقدمو البريد الإلكتروني، والعرف APIs يمكن للمحقق، بمجرد اتصاله، أن يبحث عن الأوامر وبيانات العملاء والاشتراكات وأكثر ويتخذ الإجراءات بموافقةكم.

كيف يعمل
موصلات محوريةOpsIQ النواة الموصولة بـ WHMCS, Shopify, Stripe, WooCommerce, SendGrid و Google نبذة عن الأعمال التجارية، يبين كل منها حالة الاتصال.WHMCSShopifyStripeWooCommerceSendGridGoogle النفقات العامةOpsIQالموارد الأساسية1PLUG IN25+ موصلات جاهزة2AI CONTEXTبيانات المنصة الحقيقية3ACTIONSلقد انتهينا بموافقتكم
الموصلات

السفن معOpsIQ

هذه هي اللحظة التي تستقر فيها وتحتاج فقط أوراق اعتمادها

WHMCS

الفوترة

:: إعداد فواتير استضافة الشبكة: العملاء، الخدمات، التذاكر، الفواتير، المجالات، حواسيب خدمة الشبكة.

Shopify

التجارة الإلكترونية

التجارة الإلكترونية: الطلبات، الزبائن، المنتجات، المخزون، المدفوعات، الهواتف على الشبكة.

WooCommerce

التجارة الإلكترونية

WordPress:: التجارة الإلكترونية: الطلبات والعملاء والمنتجات والقسائم والشحن.

WordPress

لجنة الخدمة الميدانية

المحتوى والمستعملون على أساسWordPressالموقع.

مربع

المدفوعات

المدفوعات ونقطة البيع: الأوامر، الزبائن، الفهرس.

osCommerce

التجارة الإلكترونية

التجارة الإلكترونية القديمة: الطلبات والعملاء والمنتجات.

Botbleفندق

الجسر

ألف Botble موقع فندق CMS من خلال الموقع. OpsIQ التنفيذ المرجعي لمنصة لا تحتوي على أي برامجيات. API.

Zendesk

الدعم

مكتب المساعدة: التذاكر، المستخدمون، المنظمات، التعليقات.

Google موجز الأعمال التجارية

التسويق

الأعمال التجارية المحلية: الاستعراضات، والنشرات، والأسئلة والأجوبة، والمنظورات. OAuth.

Google الجدول الزمني

الإنتاجية

"الجداول والمناسبات"OAuth.

GmailوIMAP

البريد الإلكتروني

البريد: في الداخل وخارج البريد، مزامنة الكتاب الإلكتروني.

SendGrid

البريد الإلكتروني

الإيميل: إرسال البريد الإلكتروني وإدارة النماذج.

Mailgun

البريد الإلكتروني

تسليم البريد الإلكتروني: إرسال رسائل البريد عبر Mailgun.

Slack_, Telegram, LINE, X DM

رسالة

رسائل قنوات للمحادثات الداخلية والخارجة

قنوات Meta

رسالة

Facebook Messenger, Instagram دال - الإدارة العامة WhatsApp.

Site Intelligence (Site)GA4"إبحث عن (كونسول)"

تحليلات

التحليلات وبيانات البحث عنSEOجناح.

التخصيب الموقعيCRMالواردات

CRM

إثراء الشركة واستيراد العملاء السائبين.

متاح من السوق

هذه حزمة منشورة، وليس جزءاً من النسيج، وتركيب واحدة من (كونيتورز) و(تسوريكوب) وهي مُنسخة في ملف الموصلات الحية، ثم تتصرف تماماً مثل تلك التي سبقت ذلك.

Stripe

سوق

المدفوعات: الرسوم، الزبائن، الفواتير، الاشتراكات، المدفوعـات، المنازعات.

BigCommerce

سوق

التجارة الإلكترونية: الطلبات، الزبائن، المنتجات، الفئات، العلامات التجارية.

Magento 2

سوق

التجارة الإلكترونية: الطلبات، الزبائن، المنتجات، الفئات، المخزون.

PrestaShop

سوق

التجارة الإلكترونية: الطلبات، الزبائن، المنتجات، قواعد السلة، الناقلون.

OpenCart

سوق

التجارة الإلكترونية: الطلبات، الزبائن، المنتجات، الفئات.

Amazon SES, Postmark

سوق

توصيل البريد الإلكتروني

Jira، خطي

سوق

(القضية وتتبع المشاريع)

Zoom, Microsoft التقويم، Outlook Mail

سوق

الاجتماعات، والتقويم والبريد.

DocuSign, أبولو, سيربابي Google Analytics

سوق

التوقيع والتنقيب والبحث والتحليل

Webflow_، Wix، Squarespace

سوق

منابر موقعية

💡
قائمة الموصلات تتحرك مع نشر الطرود، والقائمة الموثوقة لتركيبك هي صفحة القناصين: ما هو مدرج في القائمة هو ما اكتشفه الزمن، وتبيّن حرف السوق ما يمكنك إضافته.

تركيب وصلة

1
اذهب إلى الوصلات

تصفح إلى موصلات في الشريط الجانبي الإداري.

2
وجد الموصل

تصفح القائمة أو البحث.

3
جعله يعمل

انقر على الموصل وحدد خيار التمكين.

4
أدخل وثائق التفويض

يرجى ملء الحقول المطلوبة: API المفتاح، URL ولكل وصلة متطلبات محددة موثقة في لوحة إعداداتها.

5
اختبار التوصيل

انقر على "اختبار الاتصال". النتيجة الخضراء تعني أن الموصل يمكنه الوصول إلى المنصة الخارجية. وتظهر النتيجة الحمراء الخطأ.

6
تكوين السمات

اختار أي السمات لتفعيل: المعرفة تزامن، webhook تزامن ، AI أفعال. لا جميع الموصولات تدعم كل السمات.

ماذا تعطيك الوصلات

سياق الذكاء الاصطناعي

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

سياق الذكاء الاصطناعي (مؤلفو المدخلات)

يقوم ContextProvider الخاص بوصلتك بتغذية التذكرة-AI ملخص حساب قراءة فقط لمالك التذكره. customer_id عند معرفة ذلك، وإلاّ في حالة التذكرة التي تُعاد فيها بطاقة النقل بالسيارات حيث علم التكس customer_trust_email صحيح، انظر إلى الحساب customer_email (مرسل التذكرة المتحقق منه). /context/customer-by-email هذا هو ما يجعل الذكاء الاصطناعي يقترح رصيد/فاتورة حقيقية بدلاً من أن يقول "رجاءً انضم". احترام فئة البيانات للمشغل تتحول (customer_sections, customer_allow_creditو ابقوا بقراءة فقط ولا تبعثون الأسرار

دليل الزبائن (مؤلفو الوصلات)

IdentityProvider للموصل يغذّي ثلاثة بحث عالمي عن التذاكر: lookupCustomerById() (بطاقة العميل) lookupCustomerServices() (جدول المنتجات/الخدمات)، listCustomers($query,$limit)"زبون البحث أو البريد الإلكتروني" على شكل بطاقة جديدة {id, external_id, name, email, company, phone, platform, platform_label}. القاعدة عن بعد: إذا كان زبائنك يعيشون في قاعدة بيانات أو خدمة أخرى، جلب لهم على منصة الخاص بك API داخل هذه الأساليب، لا يقرأ أبدا جداول النظام الآخر مباشرة (في) OpsIQ"إنّهم أصحاب أماكن فارغة، لهذا السبب يعود قراؤ محليّ إلى مخلٍّ فارغ"API URL; keep a local read only as a same-DB fallback.

التذاكر المتحركة بالبريد الإلكتروني، الكشف عن مسارها (مؤلفات الاتصال)

عندما يصبح البريد الإلكتروني الوارد تذكرة أصلية، OpsIQ يكشف المرسل عن طريق الاتصال lookupCustomerById(0, ['email'=>$sender]) عبر كل وصلة؛ أول توافق "يمتلك" العميل و platform slug is stamped on the ticket.created الحدث _pipe_owner_platform (فارغ = ضيف).WHMCS-البريد الإلكتروني العميل يفتح تذكرة في WHMCS (WHMCS ويكون المرسل المجهول ضيفا أصليا. إذا كان وصلتك تعكس التذاكر الأصلية على منصة خاصة بها, أنت ticket.created يجب أن يكون المعالج على هذا: if (array_key_exists('_pipe_owner_platform',$payload) && $payload['_pipe_owner_platform'] !== '<your-slug>') return;- لا يوجد المفتاح على تذاكر غير مزودة برسوم (الطلب/الرجل/المديرية)، لذا تلك المرآة كما كان الحال من قبل، ويعيش التحكم في كل إدارة تحت إدارة الفريق→تذاكر مفتوحة عن طريق البريد الإلكتروني (Anyone / Customers only / Off).

الإجراءات

يمكن للمحقق أن يقوم بعمل من خلال الموصل: إنشاء التذاكر، تحديث الأوامر، إلغاء الاشتراكات، كل ذلك بموافقة من خلال الوصية لاير.

المعرفة

ويساهم المتآمرون بمواد معارف خاصة بالمنبر إلى منظمة العفو الدولية.Shopifyويضيف الموصل متاعب التجارة الإلكترونية؛WHMCSويضيف الموصل إلى استضافة المعارف.

استيراد قاعدة المعارف (مؤلفو الوصلات)

إذا كان منبرك يستضيف قاعدة معارف، أعلن عن kb_capabilities إقفل settings.json )النوع( kb_source) ويظهر وصلتك في محرر مركز المساعدة استيراد KB → الاستيراد من تطبيق متصل الانقطاع عن العمل كلما كان مُمكّناً ومُحدَّداً في مكان العمل، وهو أمر توضيحي لا يوجد طريقة لتنفيذه: اسم مبني adapter (zendesk بالنسبة لمركز المساعدة الخاص بالشجرة الدقيقة API، أو crawl )لأي موقع من مواقع قاعدة البيانات( base_template مثل https://{subdomain}.zendesk.com, التي OpsIQ يملأ من الإعدادات المخزنة للموصل الخاص بك. وثائق التفويض لا تغادر الخادم أبدا؛ المتصفح فقط يرسل الموصل slug. لدعم منصة جديدة، أضف opsiq_kb_<platform>_manifest() المرجع الكامل: connectors/PLATFORM_CONNECTORS.md §5.

خطافات الويب (Webhooks)

وتسجل بعض الوصلات وصلات شبكية مع المنصة الخارجية للإخطارات بالحدث في الوقت الحقيقي (الأوامر الجديدة، وتحديث التذاكر، وما إلى ذلك).

تتبع المبيعات

وتغذي وصلات التجارة الإلكترونية بيانات الإيرادات في لوحة المتابعة الخاصة بالمبيعات من أجل إسنادها وتحليلها.

💡
الموصِّلات محصورة في نطاق مساحة العمل. ويمكن أن يكون لكل مساحة عمل موصِّلات مختلفة مُفعَّلة ببيانات اعتماد مختلفة.WHMCS مساحة العمل WHMCS موصل؛Shopify مساحة العمل Shopify موصل.
هل يمكنني استخدام موصلات متعددة في وقت واحد؟+

نعم. يمكنك أن يكون لديك Shopify للطلبات و Stripe للمدفوعات في نفس مساحة العمل. الذكاء الاصطناعي يدمج البيانات من جميع الموصلات المعمول بها.

ماذا لو لم يكن منصتي مدرجة؟+

استخدم بنّاء الموصول لإنشاء موصل مخصص لأي منصة مع REST API. أو تحقق من السوق للحصول على موصلات المجتمع المبنية.

هل تعمل الموصلات مع OpsIQ المستضافة ذاتيا؟+

نعم، تعمل أجهزة الاتصال بشكل متطابق في الإصدارات السحابية والإصدارات المستضافة ذاتيا.

الموصلات

عقد وصلة المبيعات والفواتير

كل وصلة تجارية تستخدم نفس عقد الحدث المحايد للمنصة. WHMCS هو التنفيذ المرجعي، ولكن جسر SaaS والمحلات ومقدمي خدمات الدفع ووصلات الأسواق وحزم بناة الاتصال يجب أن يخضعوا لنفس القواعد.

ما يجب أن ينشره كل موصل تجاري

دفتر أستاذ رسمي واحد

Publish realised economic events to opsiq_sales_events through CommerceEventRegistry::normalize(). Do not build a connector-specific Sales table or make core analytics query a remote platform directly.

هوية مصدر مستقرة

المنصة هي سجل الموصل، مثل whmcs, shopify أو opsiq_saas. traffic_source يحتوي على إسناد اكتساب متحقق منه عندما يتم توفيره؛ وإلا استخدم نفس السلوك كخيار احتياطي. OpsIQ يقوم بحل اسم الموصل المريح في واجهة المستخدم.

عدم التكرار

يجب أن يكون event_id حاسما. رسم خريطة واحدة على الأقل order_ref غير قابلة للتغيير، invoice_ref أو subscription_ref حتى تحاول Webhook وإعادة ملء تحديث نفس الحدث بدلا من خلق مبيعات مزدوجة. service_ref يحدد المنتج المتأثر أو حالة الخدمة عندما تكون موجودة.

الختم الزمني للمصدر

occurred_at هو وقت الدفع أو الحدث الاقتصادي الذي أبلغت عنه منصة المصدر. لا يستعاض أبدا عن تواريخ الدفع التاريخية بوقت الاستيراد.

النقد والصرف الأجنبي

إرسال المبلغ المصدر وعملة ISO صالحة من ثلاثة أحرف. إذا سمح الإعداد المتصل OpsIQ تحويل العملات الأجنبية، يتحول الإبلاغ إلى عملة إبلاغ مساحة العمل؛ وإلا فإن التقارير تحافظ على عملة المتجر أو منصة الفواتير. يجب ألا يشفر رموز الموصل بشكل ثابت عملة للإبلاغ أو سعر صرف.

دورة الحياة القائمة على الأدلة

استخدام جديد، تجديد، ترقية، رد، رصيد دائن أو غير معروف. التصنيف من سبب الفاتورة، الاشتراك أو علاقة الخدمة، نوع بند السطر، أو حقل مصدر رسمي آخر. الشراء المتكرر من قبل نفس العميل لا يعتبر تجديدا بصورة آلية.

حدود المبيعات

لا تدخل في قسم المبيعات والتحويلات إلا إيصالات التجارة الجديدة المدفوعة الإيجابية أو تجديدها أو ترقيتها أو غير المعروفة بشكل مشروع. ويجري الإبلاغ عن عمليات الاسترداد من خلال تحليلات استرداد العائدات وصافي العائد. وتظل أحداث رصيد الحساب، وإعادة شحن محفظتك، وعمليات إعادة شراء الرموز، وأموال إضافة الحسابات أحداث دفتر الأستاذ الخاص بالفواتير ولا تُحسب أبدًا كمبيعات أو تحويلات أو حجم طلبيات أو عائدات مبيعات.

CRMيبقى منفصلا

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

كل إشارة دفع تفتح الصف

لا تعتمد على اسم واحد من أسماء الأحداث، وعندما يرسل المنبر عدة تأكيدات لدفع واحد (الفواتير المدفوعة، والطلب المدفوع، والمعاملة المضافة، والمدفوعات المنجزة) يجوز لأي منها فتح صف دفتر الأستاذ بمجرد أن يؤكد المنهاج البيع؛ وتنهار بصمات الأصابع في صف واحد.

التسوية المقررة (العقد 2.3)

A connector whose platform can list completed sales declares sales_reconciliation and implements SalesReconciliationInterface::reconcileSales(). Core re-reads the platform list on a schedule (once per workspace interval, bounded, cursored) through the same idempotent writer, so a dropped webhook cannot lose revenue. Conformance fails a package that can list history but does not reconcile. The Connector Builder derives the capability from the sales backfill action.

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

وتحويلات opsiq_conversions وملخصات لوحة التحكم هي إسقاطات توافقية أعيد بناؤها من دفتر الأستاذ. ولا يجب أن يعامل الموصِّلون الإسقاط كمصدر مالي للحقيقة. ويمكن لتنقيحات العقود أن تعيد تقييم الصفوف المستمدة دون حذف تاريخ الفواتير الأساسي.

حدود المنصة النائية

يقوم الموصل عن بعد بقراءة منصةه عبر API المصدق عليه المحدد. يجب ألا يعتمد أبداً على جداول قاعدة البيانات الخاصة بنفس الخادم. ويقدم ConnectorRegistry مفتاح النطاق site_key المصدق عليها بالضبط، ويجب تطبيقه على كل كتابة في دفتر الأستاذ وملء إضافي. فضاء العمل أو نطاق المجموعة هو تجميع وقت القراءة فقط؛ ولا ينبغي أن يوسع أبداً ملكية الأحداث المخزنة.

مثال على حدث مدفوع الأجر

حدث تجاري طبيعي
{
  "event_id": "acme_store:invoice:INV-1042",
  "event_name": "invoice.paid",
  "platform": "acme_store",
  "order_ref": "ORDER-884",
  "invoice_ref": "INV-1042",
  "subscription_ref": "SUB-28",
  "service_ref": "SERVICE-91",
  "status": "paid",
  "lifecycle_type": "renewal",
  "amount": 129.00,
  "currency": "USD",
  "traffic_source": "acme_store",
  "occurred_at": "2026-07-23 08:30:27"
}

رسم خرائط بـنـاء الوصلات

عندما تكون المبيعات والفواتير متوفرة في بناة الموصل، حدد المبلغ والعملة وحالة المصدر وتاريخ المصدر بالإضافة إلى أمر واحد على الأقل أو إشارة إلى الفاتورة أو الاشتراك. حدد lifecycle_type عندما يعرض API دليلاً رسمياً على دورة الحياة. ويمر SalesIngest الذي تم توليده عبر كل صف من خلال نفس معيار CommerceEventRegistry المستخدم من قبل موصلات داخلية ومواقع السوق.

⚠️
يتم الاحتفاظ بالأرصدة الدائنة وأموال الإضافة عن عمد لتاريخ الفواتير، وسياق رصيد العميل وتحليل دفتر الأستاذ. واستبعادها من المبيعات لا يحذفها؛ بل يمنعها فقط من تضخيم أداء التجارة.

دورة الحياة... من النوع الذي يقرر ما يصبحCRMالصفقة

lifecycle_type ليست بطاقة تحليليةOpsIQيقرأه ليقرر ما إذا كان البيع يدخلCRMخط أنابيب، لذا كل موصل مبيعات يتخذ قراراً بشأن خط الأنابيب سواء كان ينوي ذلك أم لا.

جديد

يفتح صفقة مغلقة (أعمال جديدة).

التجديد، والارتقاء

وسجلت كإيرادات متكررة - لا صفقة جديدة في مجال الأعمال التجارية - تتغير التجديدات على منحنى مختلف الاحتمالية وتخلط بينها وبين الفاسدين، ويفسد كلا التوقعات.

المبالغ المردودة، الائتمان

لا تفتح اتفاقاً أبداً بأي طريقة، المال يعود إلى الزبون ليس ربحاً

مغفل/مجهول

الإيرادات فقط، البيع مسجل لكن لا تصل أبداً إلى خط الأنابيب

بيع واحد، صف دفتر حسابات واحد: الهوية هي (سلي)، وليس الحدث

لا تتطابق مع event_id و أدخل نفسك event_id is platform:eventName:externalId, which answers “did we already process this delivery” and cannot answer “have we already recorded this sale”. A platform that announces one payment twice — as invoice.paid ومرة أخرى payment.completed - نعنّان مُنْطِفين ويَهبطان بنفس المال مرتان، بدون أي شيء لتتصادم ولا شيء للتحذير.

💡
وُجد على النسيج المرجعي: ستة فواتير تضم ثلاثة صفوف دفتر الأستاذ، من ثلاث مسارات شفرة تستخدم ثلاثة مخططات مختلفة - مطبعة.0.00لذا لا يبدو كل شيء خاطئاً، وأي عملية لاحقة لاستعادة مبالغ حقيقية كانت ستحسب دفعة واحدة ثلاث مرات.

وبدلا من ذلك، يحسب القانون هوية البيع التجارية )البيع(sale_fingerprintيطابق صفاً قائماً عليه ويحفظ الأصلي event_id عن تحديث، ومرشحات إلى الأعمدة الحقيقية:

الطريقة الوحيدة التي تدعمها لكتابة دفتر المبيعات
\OpsIQ\Commerce\CommerceEventContract::upsertSaleRow('opsiq_sales_events', $row);
نفس البيع، العديد من الأحداث

فاتورة، مدفوعة، دفعة، مكتملة وبيعية. مكتملاً مقابل فاتورة واحدة تتقاسم بصمات واحد وتستكمل صف واحد.

المبالغ المستردة تبقى منفصلة

المال يخرج هو حقيقة مختلفة من النقود القادمة، إعادة فواتير تحتفظ بهويتها الخاصة، حتى لا تستطيع أبداً أن تلغي الدفع الذي ستدفعه عكس ذلك.

لا مرجع، لا بصمات

الصف الذي لا يحمل أي أمر أو فاتورة أو اشتراك أو إشارة الخدمة ليس له بصمات على الإطلاق لذا صفين غير مرتبطين لا يتصادمان أبداً

الأسبقية المرجعية

فاتورة، ثم طلب - راجع، ثم الاشتراك - رف، ثم الخدمة - راحة - أقوى أولا، لذلك بيع واحد يحتفظ بهوية مستقرة.

دفتر الأستاذ فقط: لا إعادة كتابة بيع

استرداد أموال أو إلغاء أو تصويب دخول جديدلا تُفسد الأمور على الإطلاق، إعادة كتابة المبلغ إلى صندوق مسترد يبدو أمراً متقلباً ويكسر ثلاث أشياء في الحال:

إنه يدمر الإيرادات الإجمالية

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

يكتب عكس مسارها في الفترة الخاطئة

ويجب أن تخفض عملية إعادة سداد قيمة بيع شهر آذار/مارس من آذار/ مارس، وأن يعاد كتابة الصف الذي كان مقررا في كانون الثاني/يناير إلى فترة مغلقة.

إنه يكسر مسار مراجعة الحسابات

سجل دخول دفتر الأستاذ ما حدث في وقت معين، التصويبات هي مخالفات، وهذا هو كيف أن عمل نظام الحجز المزدوج للقيد قد نجح لمدة خمسة قرون.

لذا الموصل يُبلغ عن عكس مساره بدلاً من تطبيقه: refunded_at و refund_amount وإلى جانب دورة حياة البيع، والسماح للمتصل بكتابة المبلغ المسترد كصف خاص به مؤرخ عند حدوث المبالغ المردودة، ولا يمكن للاثنين أن يتزامنا أبدا لأن البصمة تفصل بين العودة من عملية بيع.

💡
نفس المبدأ ينطبق على المبالغ، لا تُعيدوا بيعها كميّة مخزنة للقيمة الحالية للمنبر0في وقت الدفع، والمال سُجّل بالفعل عندما قام الزبون بالضغط عليه واستعادة قيمة الوجه تُحسب مرتين

عقد التصنيف

OpsIQ يقرر دورة الحياة مرة واحدة, in \OpsIQ\Commerce\SaleLifecycleClassifierالموصل يُعلن فقط أيّ منصة خاصة بها الكلمات تعني ماذا، عن طريق تنفيذ \OpsIQ\Connectors\SalesLifecycleConnectorInterface::salesLifecycleVocabulary()ثم اتصل بالمصنف المشترك لا تعيدي تنفيذ المنطق

دفتر السمع، تفويض القرار
public static function salesLifecycleVocabulary(): array
{
    return [
        'credit'             => ['addfunds'],                  // adds balance, sells nothing
        'upgrade'            => ['upgrade'],                   // resizes an existing commitment
        'recurring'          => ['hosting', 'domainrenew'],    // continues something owned
        'acquisition'        => ['domainregister'],            // obtains something new
        'recurring_prefixes' => ['domainaddon'],               // families that grow over releases
    ];
}

$lifecycle = \OpsIQ\Commerce\SaleLifecycleClassifier::classify([
    'explicit'    => $platformSaidSo,     // wins outright when present
    'line_types'  => $types,              // your platform's own line/item types
    'vocabulary'  => self::salesLifecycleVocabulary(),
    'is_order'    => $cameFromANewOrder,
    'is_refunded' => $moneyWentBack,
]);
💡
ويُثبت مبدأ القبول ويتقاسمه: فثم يعاد تمويله/إلغاءه، ثم الائتمان، ثم رفع مستواه، ثم يكون (أودر)، ثم يتكرر الشراء، ثم لا يعرف بعد ذلك، ويرفع أعلى من نظام التحقق لأن المنصات تُصدر أمراً بالترفيع أيضا؛ وتُعقد في مكان آخر دونه لأن الفاتورة الأولى للاشتراك الجديد تحمل نوعاً متكرراً من أنواع الإيجار غير الآمر.

إعلان كامل مفردات المنصة

هذا هو الفشل الذي يكلّف أكثر ويبدو أقل خطأ.WHMCS موصل مطابق ['hosting','addon','domain'] - قائمة كاملة.WHMCS لا يُطلق سراحه Domain نوع من خطوط النطاق الحقيقي؛ وهو يُصدر DomainRegister, DomainRenew, DomainTransfer, PromoHosting, PromoDomain, DomainAddon* و Upgradeجميعهم تخطيوا القائمة unknown: 1,288 فواتير، ثلاث سنوات، لا خطأ ولا خطّ.

كل عميل جديد يستورد تاريخه من خلال مشبك احتياطيفاذا لم يؤثر حشرة التصنيف على مكان عمل واحد - فهو يؤثر في كل مكان عمل يركب عبر ذلك الموصل، وفي اللحظة التي ينظرون فيها أولا إلى خط الأنابيب، ويحصل على الشعار من وثائق المنبر أو تعداد البيانات الحية، ويطابق الأسر المتنامية من جانب الأسر المعيشية. البادئة لذا لم يرَ أحدٌ مُصنفاً بعد مع أقاربه بدلاً من الإختفاء

💡
فحص عملي: عد كم عدد الصفوف الخاصة بك إلى غير معروف، وربط مبيعات صحي يصنف كل شيء تقريباً، وتدفق ثابت من المجهول يكاد لا يكون أبداً بيانات لم تكن لديك - إنه مفترق لم يكن لديه قط أي جهاز اتصال.

إصلاح التاريخ المستورد

كل شحنةOpsIQالموصلات المبيعية تنفذ هذا — WHMCS, Shopify, WooCommerce, osCommerce, SaaS Bridge, Stripe, BigCommerce and Magento 2. Treat it as expected, not optional: a customer imports their old records on day one, so a classification fix that cannot reach that history only helps people who signed up afterwards. Implement \OpsIQ\Connectors\SalesLifecycleRepairInterface::reclassifySale() باستخدام أي شيء من أجل الحبل المُناسب، يجلب موصلك بالفعل. tools/crm_backfill_sales_lifecycle.php ثم يصلح تاريخ موصلك المستورد بدون رمز للربط: فالجفاف الذي يجري عن طريق التقصير، يدعم نفسه ويتحقق من عدد الصف قبل الكتابة، ويعاد عكسه عبر دفتر دفاتر غير صحيح، ولا يكتب أبداً إجابة فاشلة.

💡
وإذا لم يتمكن موصلك من إعادة قراءة السجلات السابقة - أي لا يمكن أن يكون هناك اتصال على الشبكة - لا يُمكن أن يُثبت الطريقة، فالاستئناف الذي يعود إلى مجهول هو أسوأ من عدم التنفيذ: فإعادة المدفن ستعيد كتابة الصفوف الجيدة بأنها غير سرية وتبليغ بالنجاح.
💡
تظل المراجع التفصيلية للحزم متاحة في connectors/CONNECTOR_EVENTS. md و connectors / PLATFORM_CONNECTORIS. md في توزيعات مصادر ذاتية الاستضافة.
الموصلات

عقد السفر لأغراض المناسبات

تقبل خدمة Journey Intelligence مظروفاً واحداً للحدث المحايد للمنصة من وحدة التحكم في المتصفح، والموصلات الداخلة، وجسر SaaS، وحزم الأسواق، ومخرجات Connector Builder. وتترجم أسماء المنصات المحددة على الحافة؛ ولا يستهلك رمز القناة والإسناد والاستخبارات الموقعية سوى الأحداث القياسية.

العزلة وحدود الثقة

مفتاح نطاق النظير الدقيق

كل حدث مرتبط بالمفتاح site_key للنطاق المصدق عليه. يجب على الموصل أن يأخذ ذلك المفتاح من ConnectorRegistry أو من نقطته النهائية المصادق عليها، ولا يمكن أبدا أخذه من جسم طلب غير موثوق به. تحتفظ المجالات بسجلات مستقلة؛ ومجموعة النطاق هي تجميع وقت القراءة فقط.

الهوية العاجزة

event_id مطلوب للموصلات ويجب أن يكون حاسما لنفس الحدث الأصلي.تقوم المحاولات المتكررة، و Webhooks، والملء الخلفي بتحديث حدث واحد بدلا من تكرار رحلة أو بيع.

الاسم الأصلي زائدا الاسم الرسمي

حافظ على اسم_الحدث_المصدر للأدلة وحل المشاكل، ثم رسمه إلى اسم_الأحداث_العادي. يجب ألا تتفرع تحليلات النواة أبداً على سلك وصلة.

أدلة الخادم تفوز

يمكن لمراقبة المتصفح أن تبدأ أو تستنتج رحلة. تؤكد أحداث الموصل المصدق عليها التسجيل، والدخول، والدفع، والشراء، والتجديد، ورد الأموال وغير ذلك من نتائج المحطة الطرفية. إن رموز الترابط الصحيحة المرتبطة بالموقع هي أقوى اتصال؛ أما الرموز غير الصحيحة فترفض ولا يثق في هوياتها المضمنة.

الخصوصية

لا ترسل إلا المحددات والحقول اللازمة للرحلة المعلن عنها، واحترم الموافقة وإعدادات الخفاء والاحتفاظ، ولا تضع أبدا بيانات الاعتماد أو بيانات البطاقات أو أسرار التحقق من الهوية أو رسائل خاصة في الممتلكات.

المظروف النموذجي

مظروف السفر
{
  "contract_version": 1,
  "event_id": "myshop:order:884:paid",
  "source": "myshop",
  "source_event_name": "order.paid",
  "event_name_canonical": "commerce.purchase.completed",
  "site_key": "exact_domain_site_key",
  "occurred_at": "2026-07-23T08:30:27Z",
  "visitor_id": "optional-browser-visitor",
  "session_id": "optional-browser-session",
  "journey_id": "optional-journey",
  "attempt_id": "optional-attempt",
  "correlation_token": "optional-signed-token",
  "customer_ref": "C-42",
  "user_email": "[email protected]",
  "object_type": "order",
  "object_ref": "884",
  "order_ref": "884",
  "outcome": "succeeded",
  "evidence_level": "server_confirmed",
  "confidence": 1,
  "properties": {"amount": 129, "currency": "USD"}
}

التصنيف القانوني

تشمل الأسر المدعومة صفحة المشاركة/أحداث دعوة إلى الفعل؛ والتسجيل في الحسابات، والدخول، والتحقق المتعدد الأبعاد من الهوية وإعادة تعيين كلمة المرور؛ ومراحل التوجيه والاستمارة؛ والمنتَج، وسلة التسوق، والتسليم، والسداد، والشراء، والاشتراك، والتجديد، ورد الأموال؛ وإعجابات الترويج، والتحويلات؛ وأحداث مركز المساعدة، والدردشة، والتذاكر؛ والأحداث الأمنية؛ والأنشطة الخاصة بفضاء الاسم. account.signup.succeeded, account.login.succeeded, lead.form.succeeded, commerce.payment.succeeded, commerce.purchase.completed, commerce.subscription.renewed و commerce.refund.completed.

الاستدلال والتأكيد والتخلي عن المتصفح

يمكن للوحدة أن تعمل بدون وصلة من خلال مراقبة بنية الصفحة، وتصرفات الاستمارة، ونتائج DOM وسجل رحلة الزائر. ويظل هذا الدليل مصنفًا بشكل صريح على أنه ملاحظ أو مستنتج. يقوم الموصل بإضافة تأكيد الخادم الرسمي ويمكنه ربطها بمحاولة المتصفح ذاتها. يتم تخزين التخلي أولاً كمرشح؛ ولا يصبح مختلطًا إلا بعد نافذة عدم النشاط المحددة في واجهة المستخدم فقط عندما لا يكون هناك أي استعادة لاحقة أو نجاح موجود.

دال - الإسناد والإيرادات

ويفضل الإسناد رموز الارتباط الموقّعة الصحيحة، ثم الإشارة إلى رحلة أو محاولة أو جلسة أو تجارة دقيقة، ثم الرسم البياني للهوية الموافق عليها، وأخيرا مطابقة سلوكية محدودة. 1تقرأ الإيرادات المنسوبة إلى بيانات استخبارات الموقع هذا دفتر الأستاذ؛ ولا تشكل الأرصدة الدائنة، وعمليات تجديد موارد الحوافظ المالية، وعمليات تجديد المبالغ الرمزية، وإضافة الأموال أبدا تحويلات شراء.

⚠️
نموذج الإسناد، نوافذ النظرة الخلفية، التعامل مع حركة المرور المباشرة، الحد الأدنى من الثقة، وقت التوقف عن العمل وتعاريف القنوات هي سياسات واجهة المستخدم.

بيان الوصلة وبرنامج بناء الوصلات

إعلان رحلة الربط
{
  "capabilities": ["sales", "journey_events"],
  "journey_capabilities": {
    "journey_events": true,
    "payments": true,
    "subscriptions": false,
    "correlation_token": false,
    "backfill": true
  },
  "journey_event_mappings": [{
    "source_event_name": "order.paid",
    "event_name_canonical": "commerce.purchase.completed",
    "field_map": {
      "order_ref": "order.id",
      "customer_ref": "order.customer_id",
      "amount": "order.total",
      "currency": "order.currency",
      "occurred_at": "order.paid_at"
    }
  }]
}

يعلن فقط القدرات الحزمة حقا يوفر. Connector Builder التحقق من الرسم البياني ويولد نفس المكيف المحايد للمنصة التي تستخدمها حزم الطرف الأول. 100 من خلال نقطة النهاية المولدة للتكامل الموثق.

💡
ويظل دفتر الأستاذ التجاري المصدر المالي للحقيقة. وينشر جسر التجارة إلى الرحلة النتائج التي يؤكدها الخادم، ويسوي بين الإسناد بعد إدخال دفتر الأستاذ الحالي المتكافئ، لذا فإن دفعة واحدة لا تصبح أبدا مبيعتين.
الموصلات

كيف تعمل إجراءات الذكاء الاصطناعي

إن كل وصلة تعلن مجموعة من الإجراءات: وهي الأشياء التي يستطيع الذكاء الاصطناعي أن يقوم بها عبر المنصة الخارجية. والواقع أن الإجراءات هي الجسر بين "ما يقوله الذكاء الصناعي" و"ما يفعله".

إجراءات العفو الدولية
كيف تعمل إجراءات الذكاء الاصطناعيطلب العميل يرتبط ببطاقة عمل من نوع حذف، ثم قائمة مرجعية: الإذن تم التحقق منه، أنت تؤكد، API متصل.كيف تعمل إجراءات الذكاء الاصطناعيمساحة العمل"إلغاء اشتراك"عميلالذكاء الاصطناعيcancel_subscriptiondeleteمطلوب تأكيدparams: subscription_id (من السياق)أنواع الإجراءاتreadأكتبdeleteتم التحقق من الإذن والدورأنت تؤكد العملAPI استدعاء · نتائج مبلغ عنها1DECLAREDكل وصلة تتضمن قائمة بالأعمال2GATEDالإذن + التأكيد3THEN RUNAPI استدعاء، النتيجة العودة
ويصبح الطلب إجراء معلن (يُنص على قراءته/كتابته/حذفه) يتم التحقق من الإذن به، وتأكيده، ثم تنفيذه والإبلاغ عنه.

دورة حياة الإجراءات

1
الزبون يطلب شيئاً

"إلغاء اشتراكيّ" الذكاء الاصطناعي يعرف أنّ هذا يتطلّب إجراء "الإلغاء_الاشتراك".

2
تحقق الذكاء الاصطناعي من التراخيص

هل هذا الإجراء مسموح به؟ هل تم تشغيله؟ هل للمستخدم الحالي الدور الصحيح؟

3
الذكاء الاصطناعي يجمع البارامترات

يحتاج العمل إلى هوية اشتراك، ويبحث الذكاء الاصطناعي عنها من سياق العميل أو يسأل العميل.

4
إقرار التعيين

وفيما يتعلق بالأعمال المدمرة أو ذات الأثر البالغ، تطلب الهيئة تأكيدا قبل تنفيذها.

5
باء - التنفيذ

يدعو الإجراء المنصة الخارجية API.

6
نتيجة

ويقوم الموظف المسؤول عن التنفيذ بإبلاغ العميل بالنتيجة.

أنواع الإجراءات

Read actions

البحث عن البيانات دون تغيير أي شيء. أمثلة: list_orders, get_customer آمن، لا حاجة إلى تأكيد

إجراءات الكتابة

إنشاء أو تعديل البيانات. أمثلة: create_ticket, update_order. قد يتطلب تأكيدا.

Delete actions

أزال البيانات. مثال: cancel_subscription. دائما يتطلب تأكيدا.

أفعال HTTP

مُعلن في أفعال.json عامة API المكالمات المحددة بشكل توضيحي.

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

"إختبارات "العجز" في الأعمال json بطاقة موصل محايدة لفتح تذكرة OpsIQ يَبْرجُ الصنفَ الكاملَ بالزي الرسمي عبر كُلّ موصل: التذاكر تَنخفضُ خارج aI عندما المشغلِ يَطفئ الوعي AI Ticket، ويُحْصَّلُ لخلق التذكرة OpsIQ مركب خاص (إذاً جهاز التوصيل لا يمكنه تكراره)OpsIQ لا يجب أن تعرفوا أسماء عملكم أبداً، إنّ (كونيكتور) يكشفها كإنزال للقدرات لكل فعل

إجراءات مدونة السلوك

تم تنفيذه في PHP في فئة الوصلة. التحكم الكامل على المنطق.

تعريف مثالي للعمل
{
  "lookup_order": {
    "label": "Look up an order",
    "description": "Find an order by ID or email",
    "method": "GET",
    "endpoint": "/admin/api/2024-01/orders.json",
    "params": {
      "order_id": { "type": "string", "label": "Order ID" },
      "email":    { "type": "email",  "label": "Customer email" }
    }
  }
}
الموصلات

ابنِ موصلًا

يسمح لك بناة الموصل بإنشاء موصل كامل لأي منصة مع REST API. لا توجد برمجة ضرورية للموصلات الأساسية.

ابنِ موصلًا
باني الموصلاتA no-code connector form: name, auth type, base URL, an action mapping, a passing test and a publish button.باني الموصلاتمساحة العملباني الموصلاتالاسممنصتيالمصادقةOAuth 2.0(PKCE)الأساس URLhttps://api.example.com/v2إجراءGET/customers → قائمة الزبائناجتاز الاختباروصلة طرد1NO-CODEالاسم، التوثيق، القاعدة URL2ANY APIالمفتاح، Bearer، الأساسي، HMAC، _OAuth3PUBLISHInto /connectors/<slug>/
صوبوا البنّاء في أيّ مهرجان API حُدّدْ وقتًا، قاعدة URL والتصرفات، اختباره، ونشر موصل عمل لا حاجة لرمز

مقدم خدمات كاملة API التغطية

Each generated API connector can expose separate Native API Read and Native API Write actions. Curated actions remain preferred; native actions cover provider endpoints added later. The runtime supports REST, GraphQL, JSON, form, XML, raw and multipart bodies, bounded pagination, API-version headers and idempotency while keeping credentials inside the workspace connector settings.

⚠️
تم مصادرة حزم السوق من/marketplace_connectorsفضلا عن حزم/connectors.زيادة نسخة الطرد، وتجديد العقد والوثائق، وإجراء اختبارات للتطابق، ثم إعادة التوقيع ونشر النسخة الجديدة من السوق.

مستشار بنّاء الوصلات

يحتوي الدليل على ست خطوات، تظهر كأشرطة في الأعلى. يمكنك القفز بينها بحرية، و احفظ المسودة في الساق يحافظ على عملك في أي نقطة.

1
الهوية والملامح

الاسم، اللف، الوصف والرمز، و icon، ثم اختيار ملف العقد: المعيار API، التجارة، مكتب المساعدة، صندوق البريد، الاستخبارات الموقعية، جسر ساسا إس، منبر الشرطة المحلية، أو منصة معدومةAPI عندما لا يخدم المنبر أي شيء يمكن تسميتهOpsIQيجب أن تُثبت جسراً، الملامح تختار نقطة انطلاق كاملة للقدرات؛ ما زال بإمكانك تعديل القدرات الفردية.

2
المصادقة

اختار نمط التحقق الذي تستخدمه المنصة وملأ حقوله. أدخل هنا أيضاً بيانات الاختبار الحقيقية: فهي تُستخدم لاختبار الاتصال في الخطوة التالية، ولا يتم تخزينها بعد نشرك.

3
الاختبار

أدخل API القاعدة URL و التحقق من نقطة النهاية، ثم إجراء اختبار اتصال مباشر باستخدام وثائق التفويض من الخطوة 2أفعل هذا قبل أن تحدد أي إجراءات، إذا كان الشفقة أو القاعدة URL خطأ، كلّ عمل تكتبه بعد ذلك سيفشل لنفس السبب وستفسد الأمر الخطأ

4
الإجراءات

حدد كل عملية: الاسم، طريقة HTTP، مسار النقطة النهائية، البارامترات، رسم حقل الاستجابة، وإعدادات الموثوقية الموضحة أدناه. يمكنك تشغيل كل عمل على حدة ضد API الحي من هذه الخطوة.

5
المشغلات

رسم أحداث webhook التي ترسل منصة إلى OpsIQ الأحداث، حتى الأشياء التي تحدث على منصتك يمكن أن تبدأ العمل في _OpsIQ.

6
استعراض وتعاقد المؤسسة ونشر

Review every action, trigger and capability. Enterprise profiles expose the generated queue, worker, hook, migration, ticket-mirror, attachment and conflict contract before publishing. Publishing writes the package into /connectors/<slug>/.

⚠️
فالنشر لا يدير جناح التطابق، ولا يصحّح النشر إلا شكل السحرة ويصدر تحذيرات لا تحجب، بل إن الملامح الكاملة - أي الملفات الخاصة بالقدرات، والعقد الذي يحدد هويته وفحص الدمى - تجري عندما تضغط على الجري، ثم في وقت الانقلاب.

ما الذي يفعله النشر أن الشكل لا يظهر لك

خمسة سلوكيات من المولد تفاجئ الناس لا يوجد حشرة كلهم سيكلفونك بعد الظهر إذا قابلتهم بالخطأ

سؤال واحد يُقرّرُ المرورَ: هَلْ المنصّة تُقدّمُ API_؟

أجب عليه1من خلال اختيار طريقة الوصول إلى البيانات (أو "البلاتشوم بدونAPI"ملامح"APIالنمط يعلن native_api and emits the <slug>_api_call passthrough. Bridge mode declares platform_bridge بدلاً من ذلك، native_api حتى لو كان المشهد الأكبر سناً حمله، لذا فإن البيان، والفصل المتولد و الخبرة الفنية لا يمكن أن يخالف. ai_brain_aware يضاف في كلتا الحالتين.

"يعني التسلل"API"

المبني يتبع جوابك، لا يصلح الحقيقة لنفسه، والفشل عندما لا يقال شيءAPI-الطريقة، لذا لا ...APIمنصة يجب أن تقول ذلك عملياً "اختار "الرسم بدونAPI"الصورة، تحديد وصول البيانات إلى الجسر أو دغدغة platform_bridge; any one of the three is enough and they cannot contradict each other. Skip the question on a platform with no API and you are back to the old failure: a dead <slug>_api_call the model keeps reaching for. This used to be stamped unconditionally, so the trap is now escapable rather than gone.

تخلف اختبار الوصل إلى GET/ping

إذا تركت الطريق الفارغ، يكتب البُنيّ /ping إلى الموصل المتولد و في ملف الشخصيةjsonكتلة اختبار، تقريباً لا يوجد منصة حقيقية تخدم هذا الطريق لذا فشل الاختبار مع شرطة (هوتر)404على كل انشاءات وتقرأ مثل سوء تداول الزبائن بدلا من عيب في الطرود، وحدد مساراً للتحقق يجيب عليه برنامجك فعلاً، وللاطلاع على موصل الجسر، اتجه إلى نقطة النهاية الخاصة بك التشخيصية - فهو يثبت السلسلة بأكملها في مكالمة واحدة: الجسر ينتشر، والمباريات الرئيسية، والجسر يمكنه الوصول إلى قاعدة البيانات.

إعادة النشر ما زالت تُكتب على يدك

القدرات الآن تتبع إجابة الوصول إلى البيانات، لذلك لم تعد تنحرف. كل شيء آخر مولد لا يزال يعمل: تحرير ContextProvider. php أو أي ملف آخر صادر والنشر التالي يستبدل به. الاستثناء الوحيد المحمي هو ملف الجسر - الدليل فقط يحل محل جسر يحمل علامته الخاصة، وبالتالي فإن أحد الكتابة باليد يترك وحده.

اعادة نشر الملفات

إذا قمت بإزالة العلامة من قدرة ما، فإن الإصدار التالي سيزيل ملف مقدم الخدمات الخاص بها. التحرير اليدوي لأي ملف مولد - ContextProvider.php فوق كل شيء - يتم كتابته دون إنذار. نسخ التعديلات أولاً أو أخذ ملكية الحزمة عن طريق حذف.opsiq-بنّاءjson (بعد ذلك لن يقوم الدليل بإدارة هذا الملف بعد الآن).

"الحالة" دائماً ما تكون في مرحلة ما قبل المحاكمة

الساحر لا يملك أي سيطرة عليه، حزمة من المفترض أن تشحن كإنتاج يجب أن تكون قد تغيرت باليد في البيئاتjson- وهذا التحرير يكسر التوقيع، لذلك إعادة التصميم بعد ذلك.

التوقيع يثبت النزاهة وليس الأصل

تم توقيع حزمة البناء مع مفتاح النسيج الخاص بـ (إنستال) هذا يكشف عن التلاعب، لا يثبت من كتب الطرد وأي تركيبة تحمل نفس المفتاح يمكن أن تنتج نفس التوقيع

تصادم السائل فقط في شجرة واحدة

النشر يَرْفضُ a غطس الذي موجود بالفعل تحت/connectors/.إنها لا تنظر إلى/marketplace_connectors/,لذا حزمة من الحفلات الأولى المُعطّلة يدوياً مع نفس اللغم يمكن أن ينتهي به المطاف مظلّلاً

💡
لا يحتوي الدليل على خطوة لإنشاء المعرفة. يتم توليد ملف معرفي يصف منصة عملك لك من الاسم والوصف ونوع التوثيق والأعمال التي حددتها، ويجري تحميله في الذكاء الاصطناعي عند تمكين الموصل.

تحديد الإجراء (الخطوة 4)

لكل عمل الإعدادات التالية. الأربعة الأولى فقط مطلوبة؛ والبقية تتحكم في من يمكنه إدارته ومدى العناية التي يجب أن يتبعها.

مفتاح العمل وعلامته

المفتاح هو ما يدعوه الذكاء الاصطناعي؛ وعلامة التبويب هي ما يقرأه الإنسان. يتم تقسيم المفاتيح إلى مساحات أسماء مع وصلتك تلقائيًا، وبالتالي يمكن أن يكون لكل من وصلتين "list_orders" دون تصادم.

طريقة HTTP

GET أو POST أو PUT أو PATCH أو DELETE.

المسار URL

ملحق بالقاعدة URL:: الاستخدام {name} لتحديد المواقع، على سبيل المثال. /opportunities/{id}/stage

البارامترات

بالنسبة لكل بارامترات يمكنك أيضا اختيار أين تذهب: الجسم, الطريق, الاستفسار أو رأس. بارامترات المسار تملأ {placeholder}؛ يضاف بارامترات الاستفسار إلى URL.

رسم خرائط الاستجابة

قل أي حقل في JSON الرد يعني ما، وهو اسم الزبون الذي هو البريد الإلكتروني والذي هو مجموع الطلب هذا ما يسمح لـ "آي آي" بقراءة بيانات منصة عملك بدلاً من التخمين

من يستطيع استخدامه

فريقك (الذكاء الاصطناعي الإداري)، أو العملاء المسجلين (دردشة العملاء)، أو كلاهما، أو مساعد الكتابة. تجري أفعال العميل فقط للزبون المسجل، ويتم قفل حقول الهوية إليهم تلقائيا بحيث لا يمكن لعميل أن يطلب عن آخر.

يلزم تأكيد ذلك

يجب أن يوافق الإنسان قبل تنفيذ العمل.

التدميرية

يشير إلى العمل كعملية حذف أو تغيير حالة. يستخدم للتحذير قبل تنفيذه.

الإذن المطلوب

يجب أن يُمنح المعلم هذا الإذن لوكالة الاستخبارات المالية لإدارة العمل نيابة عنهم؛ ويمرّ المديرون الكاملون دائماً، ويختار من إدارة - الإدماجات، ويديرون الإدارة العامة، ويتدبرون أمر (البيع) أو يديرون أي شيء، ويتحكمون في العرف، ويُديرون الـ (بيفير)، ويديروا البعثات، ويتعاملون مع ذلك، ويستجيبون:

الوصف/التلميح

اختياري، ولكن يستحق الكتابة. يخبر الذكاء الاصطناعي متى يجب أن يصل إلى هذا العمل، على سبيل المثال "استخدام هذا عندما يطلب المدير تغيير مرحلة الصفقة". تلميح جيد هو الفرق بين عمل يستخدمه الذكاء الإصطناعي بشكل صحيح وآخر يتجاهله.

القدرة

بطاقة الطبقة الاختيارية، إما التذاكر (تقارير قراءة أو مشاهد) أو تذكرة - تصاريح (أفتح تذكرة). OpsIQ على سبيل المثال، تذكرة الاختباء تُقرأ عندما يقوم مشغل بإطفاء الوعي

مسار القائمة

اختياري - بالنسبة لنقاط النهاية التي تعيد قائمة، المسار المنقط إلى المصفوفة، مثل data أو data. items

مسار الخطأ

اختيارياً - حقل هيئة يعني حضوره أن المكالمة فشلت، على سبيل المثال الخطأ. APIs أن يعيد (هاتف) 200 على الفشل

أطلقه

يمكن تنفيذ كل عمل ضد ال API الحي من هذه الخطوة، بحيث يمكنك إصلاح مسار خاطئ أو اسم حقل قبل أن يستخدمه أي شخص آخر.

⚠️
أي عمل يستخدم POST أو PUT أو PATCH أو DELETE يبدأ بطلب الإذن manage_integrations و تأكيد بشري قبل أن يُنفذ هذا متعمد، إنّه عمل كتابي جديد لا يُغلق بدلاً من جعل (آي آي) يغير بياناتك غير مُوصَف بها، يمكنك تغيير كل شيء عن العمل، لكنّها تغيّرها بمعرفة.
💡
لكي يكون قابلا للاستدعاء من محادثة العميل، يجب أن يكون العمل قراءة فقط: اترك كلاً من Requires confirmation و Destructive غير مؤشر. عمل يمكن للعميل إطلاقه الذي يغير أيضاً الحالة ليس شيئاً سيتركك الدليل تقوم به عن طريق الخطأ.

Receiving webhooks (step 5)

خطوة Triggers تعطيك webhook URL للتسجيل مع منصة عملك، وتحقق من كل طلب يأتي إليها.

ترويسة التوقيع

العنوان الذي توقع به منصةك، على سبيل المثال X-Hub-Signature-256.

خوارزمية التوقيع

HMAC-SHA1 أو HMA C-SHA256 أو H MA C- SHA512.

خطة التوقيع

بسيط، ملخص سداسي أو قاعدة 64. Stripe- نمط، الشكل t=...,v1=... المستخدم من قبل Stripe والعديد من المنصات التي نسختها.

رمز التوقيع

اختياري. بعض المنصات تضع علامة قبل الموجز، مثل sha256=. اتركه فارغا إذا لم يفعل جهازك ذلك.

رسم خرائط الأحداث

كل حدث يرسله منصة عملك إلى الـ OpsIQ حدث ينبغي أن يثير.

التسجيل الآلي للوحدة الشبكية

إذا كان لديك منصةAPIلادارة محركاتها على الانترنت ليس عليك ان تسجلURLباليد افتح تسجيل هذا الرابط آلياً عند التمكين ووجهه إلى اثنين من الأفعال التي حددتها في الخطوة 4:

إنشاء-العمل-webhook

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

إجراء حذف الرابط الشبكي

يُستدعى عندما يكون الموصل معطلاً، باستخدام الهوية الملتقطة أعلاه، وبالتالي فإن تعطيل الموصل يوقف أيضاً منصة إرسالك إلى نقطة نهاية ميتة.

القدرات التي يمكنك تشغيلها

يحدد عقد الربط المواصفات والقدرات 2.2:: القدرات المولدة والقدرات الإعلانية تصدر مباشرة؛ وقدرات المؤسسة تنتج قدرات EnterpriseExtension.php (ب) سقال مع أسلاك دورة الحياة أثناء التشغيل.

الإجراءات

العمليات التي يمكن للذكاء الاصطناعي تنفيذها على منصة عملك: قائمة الأوامر، العثور على عميل، إصدار رد.

المشغلات

استلم webhooks من منصة وتحويلها إلى OpsIQ أحداث.

تذاكر السفر

AI Triage و Copilot الرد على التذاكر التي تبقى في منصة. اختار نقطة نهاية التي تعطي واحدة تذكرة مع ردود ورسم الحقول؛ OpsIQ يقرأ الخيط عبره.

صندوق البريد والاتصالات

أظهر بريد العميل على خطهم الزمني، إرسال من صفقة، ومزامنة دفتر عناوينك في OpsIQ CRM.

استيراد الزبائن

ابحث في قائمة عملائك واستورد كل واحد منهم كـ OpsIQ هذا هو ما يقوم به زر الاستيراد.

ألف - السياق

ضع البيانات الحية من منصة عملك في كل محادثة للذكاء الاصطناعي

الهوية

تعرف أي من عملائك هو زائر، وعرض ملفاتهم ومشترياتهم على تذكرة.

المبيعات والفواتير

:: إدخال أحداث الإيرادات والأرقام المتعلقة بمعدل التضخم في لوحات المتابعة OpsIQ.

تذاكر السفر إلى الخارج

تحويل التذاكر والبريد الإلكتروني الذي يقدمه منصة الويب الخاصة بك بواسطة webhook إلى OpsIQ خيط الدعم.

الردود الصادرة

يقوم موظفو النشر بـ OpsIQ بالرد على المنصة التي نشأت منها الخيط.

مستخدمو التزامن

استورد حسابات موظفيك إلى مستخدمي OpsIQ الإداريين.

إدارات التزامن

استورد إدارات الدعم الخاصة بك إلى OpsIQ.

استهداف الترويج وتغذية المنتجات

دعنا استوديو الترويج يستهدف على الحقائق التي تعرف عن شخص ما، وجعل منتجاتك الحقيقية داخل ترويج.

مقدم خدمات استوديو المسح

Expose server-verified Survey facts, escaped variables and bounded CRM

IP منع أصلي

عندما OpsIQ الوحدات IP, اتصل بكتلتك الخاصة API لذا فإن الحصار يتم إنفاذه هناك أيضاً.

الأحداث الأمنية

مُسدّدةIPإشارات التهديد منOpsIQ.

معرفة المنبر للذكاء الاصطناعي

كل وصلة تبنيها تشحن مرجعاً قصيراً يصف ما هي منصة عملك وماذا تفعل أفعاله. الذكاء الاصطناعي الإداري OpsIQ يقرأ هذا المرجع عندما يتم تمكين وصلتك، وبالتالي فإنه يفهم منصتك بدلاً من مجرد مشاهدة قائمة بأسماء الأفعال. وهذا يولّد لك.

API المرور

يحصل وصلك دائماً على استدعاء للأغراض العامة بحيث يمكن للذكاء الاصطناعي الوصول إلى نقطة نهاية لم تحدد لها عملًا مطبوعًا. استخدم الأعمال المطبوعة حيثما أمكن؛ هذا هو فتحة الهروب.

المرجع 2.2

صيغة العقد: 2.4 · 57 capabilities · 8 profiles.

موجزات موصلات

standard_api · Standard REST or GraphQL API

Actions, triggers, OAuth/API-key authentication and optional context/identity mappings. Capabilities: actions, triggers, native_api, ai_brain_aware.

commerce · Commerce and billing platform

Customers, orders, sales, subscriptions, billing, promotions and journey events. Capabilities: actions, triggers, journey_events, sales, sales_reconciliation, billing, sync_orders, customer_import, survey, promo_audience, promo_feed, context, identity.

helpdesk · Helpdesk and ticket platform

Inbound tickets, outbound replies/notes, customer roster, AI triage and bidirectional ticket mirroring. Capabilities: actions, triggers, inbound_ticket, outbound_reply, outbound_note, ai_tickets, customer_import, survey, context, identity, ticket_mirror, ticket_merge, attachment_bridge, conflict_resolution.

mailbox · Mailbox and email provider

Inbound/outbound mail, address-book sync, multi-account OAuth and CRM timeline integration. Capabilities: inbound_email, outbound_email, mailbox, email_mailbox, oauth, actions, customer_import, ai_reply.

site_intelligence · Site Intelligence data provider

SEO, analytics, search-console, local-search or monitoring provider with scheduled sync. Capabilities: actions, triggers, site_intelligence, seo, scheduled_workers, durable_queue.

saas_bridge · SaaS bridge

Deep two-way SaaS integration with customers, billing, identity, tickets, webhooks, queues, attachments and workers. Capabilities: actions, triggers, webhook, context, identity, customer_import, survey, journey_events, sales, sales_reconciliation, billing, inbound_ticket, outbound_reply, ticket_mirror, ticket_merge, attachment_bridge, durable_queue, scheduled_workers, database_migrations, conflict_resolution, enterprise_hooks, admin_assets.

no_api_bridge · Platform with no API (OpsIQ installs a bridge)

For a self-hosted PHP application that serves no callable API. The wizard generates a signed bridge file the operator drops into their own site, plus the typed actions that read and write through it. Capabilities: actions, platform_bridge, ai_brain_aware.

local_php_platform · Local PHP platform bridge

WHMCS-style local hooks, database access, two-way tickets, billing/customer sync, queues and migrations. Capabilities: actions, native_data, context, identity, customer_import, survey, journey_events, sales, sales_reconciliation, billing, inbound_ticket, outbound_reply, ticket_mirror, ticket_merge, attachment_bridge, durable_queue, scheduled_workers, database_migrations, conflict_resolution, enterprise_hooks, admin_assets.

القدرات الكانتونية

الإجراءات

Universal actions. Capability version: 1.0. Mode: generated. Runtime methods: registerActions. Package files: actions.json.

المحفزات

Inbound event triggers. Capability version: 1.0. Mode: generated. Runtime methods: handleWebhook. Package files: actions.json.

ويب هوك

Inbound webhook endpoint. Capability version: 1.0. Mode: generated. Runtime methods: handleWebhook.

journey_events

Universal Journey Event Contract mapping. Capability version: 1.1. Mode: generated. Interfaces: OpsIQ\Connectors\JourneyEventConnectorInterface. Package files: settings.json.

السياق

AI context providers. Capability version: 1.0. Mode: generated. Runtime methods: contextProviders. Interfaces: OpsIQ\Connectors\ContextConnectorInterface. Package files: ContextProvider.php.

guest_lookup

Guest record lookup without login (reference + proof match). Capability version: 1.0. Mode: generated. Runtime methods: contextProviders. Interfaces: OpsIQ\Connectors\ContextConnectorInterface. Package files: GuestLookupProvider.php.

الهوية

Admin/customer identity providers. Capability version: 1.0. Mode: generated. Runtime methods: identityProviders, detectAdmin, detectCustomer. Interfaces: OpsIQ\Connectors\IdentityConnectorInterface. Package files: IdentityProvider.php.

sales

Sales and revenue ingestion. Capability version: 1.2. Mode: generated. Interfaces: OpsIQ\Connectors\CommerceConnectorInterface. Package files: SalesIngest.php.

sales_reconciliation

Scheduled sales-ledger reconciliation against the platform. Capability version: 1.0. Mode: generated. Runtime methods: reconcileSales. Interfaces: OpsIQ\Connectors\SalesReconciliationInterface.

الفوترة

Cross-platform billing snapshot. Capability version: 1.0. Mode: generated. Runtime methods: billingProviders. Interfaces: OpsIQ\Connectors\BillingConnectorInterface. Package files: BillingProvider.php.

payments

Payment-provider capability bus. Capability version: 1.0. Mode: generated. Runtime methods: paymentsCapabilities.

التجارة

Sell through chat: canonical commerce role map. Capability version: 1.0. Mode: declarative. Package files: commerce_roles.json.

inbound_ticket

External ticket/email to OpsIQ ticket ingestion. Capability version: 1.0. Mode: generated. Runtime methods: handleWebhook. Interfaces: OpsIQ\Connectors\TicketMirrorConnectorInterface.

outbound_reply

Reply mirroring to the external platform. Capability version: 1.0. Mode: generated. Runtime methods: pushReply. Interfaces: OpsIQ\Connectors\TicketMirrorConnectorInterface.

ticket_merge

Ticket merges applied on the platform (native merge or private transcript note). Capability version: 1.0. Mode: generated. Runtime methods: mergeTickets. Interfaces: OpsIQ\Connectors\TicketMergeConnectorInterface.

sync_users

Staff/customer synchronisation. Capability version: 2.0. Mode: generated. Runtime methods: listCustomers. Interfaces: OpsIQ\Connectors\CustomerImportConnectorInterface. Package files: SyncImport.php.

sync_departments

Department/team synchronisation. Capability version: 1.0. Mode: generated. Package files: SyncImport.php.

sync_orders

Order roster and order-event synchronisation. Capability version: 1.0. Mode: declarative. Interfaces: OpsIQ\Connectors\CommerceConnectorInterface.

sync_products

Product, catalog and inventory synchronisation. Capability version: 1.0. Mode: declarative. Runtime methods: registerActions.

sync_projects

Project, issue and workspace synchronisation. Capability version: 1.0. Mode: declarative. Runtime methods: registerActions.

customer_import

CRM customer roster import. Capability version: 2.0. Mode: generated. Runtime methods: listCustomers, backfillChunk. Interfaces: OpsIQ\Connectors\CustomerImportConnectorInterface.

security_events

Receive and emit security events. Capability version: 1.1. Mode: generated. Runtime methods: securityCapabilities, syncBlockedIp, removeBlockedIp. Interfaces: OpsIQ\Connectors\SecuritySyncConnectorInterface.

security_native_block

Native remote IP/CIDR blocking. Capability version: 1.0. Mode: generated. Runtime methods: syncBlockedIp, removeBlockedIp. Interfaces: OpsIQ\Connectors\SecuritySyncConnectorInterface.

survey

Survey identity, audiences, recipients and variables. Capability version: 1.0. Mode: generated. Runtime methods: surveyAudienceCatalog, surveyAudienceFacts, surveyVariableCatalog, surveyVariables, surveyRecipientPage. Interfaces: OpsIQ\Connectors\SurveyConnectorInterface. Package files: SurveyProvider.php.

reply_feedback

Ticket reply feedback mirror (platform reply ratings land via the portal write method). Capability version: 1.0. Mode: generated. Runtime methods: replyFeedbackCatalog, pullReplyFeedback. Interfaces: OpsIQ\Connectors\ReplyFeedbackConnectorInterface.

promo_audience

Promotion targeting facts. Capability version: 1.0. Mode: generated. Runtime methods: subscribers. Interfaces: OpsIQ\Connectors\PromotionConnectorInterface.

promo_feed

Promotion product/content feed. Capability version: 1.0. Mode: generated. Interfaces: OpsIQ\Connectors\PromotionConnectorInterface.

email_mailbox

Mailbox bus, outbound mail and address-book sync. Capability version: 1.0. Mode: generated. Runtime methods: emailAccounts. Interfaces: OpsIQ\Connectors\MailboxConnectorInterface.

inbound_email

Receive inbound email. Capability version: 1.0. Mode: declarative. Runtime methods: poll, handleWebhook. Interfaces: OpsIQ\Connectors\MailboxConnectorInterface.

outbound_email

Send outbound email. Capability version: 1.0. Mode: declarative. Runtime methods: registerActions. Interfaces: OpsIQ\Connectors\MailboxConnectorInterface.

mailbox

Mailbox connector. Capability version: 1.0. Mode: declarative. Runtime methods: emailAccounts. Interfaces: OpsIQ\Connectors\MailboxConnectorInterface.

ai_tickets

AI triage and Inbox Copilot for remote tickets. Capability version: 1.0. Mode: generated. Runtime methods: loadTriageContext. Package files: AiOperations.php.

ai_reply

AI-assisted reply drafting. Capability version: 1.0. Mode: declarative. Runtime methods: registerActions.

ai_brain_aware

Connector expertise supplied to Admin AI. Capability version: 1.0. Mode: generated. Package files: ai_expertise_admin.md, ai_api_reference.md.

native_api

Native API passthrough. Capability version: 1.0. Mode: generated. Runtime methods: registerActions.

platform_bridge

Signed platform bridge (for platforms with no API). Capability version: 1.0. Mode: generated. Runtime methods: registerActions. Package files: bridge/.

native_data

Local database/platform data adapter. Capability version: 1.0. Mode: declarative. Runtime methods: nativeDataProviders. Interfaces: OpsIQ\Connectors\NativeDataConnectorInterface.

نظام إدارة علاقات العملاء

CRM capability provider (calendar, enrichment, telephony or customer data). Capability version: 1.0. Mode: declarative. Runtime methods: crmCapabilities. Interfaces: OpsIQ\Connectors\CrmCapabilityConnectorInterface.

block_registry

Remote sender block-registry synchronisation. Capability version: 1.0. Mode: declarative. Runtime methods: blockSender, unblockSender, isSenderBlocked. Interfaces: OpsIQ\Platform\BlockRegistryInterface.

inbound_comment

Inbound comment ingestion. Capability version: 1.0. Mode: declarative. Runtime methods: handleWebhook.

outbound_note

Outbound private note. Capability version: 1.0. Mode: declarative. Runtime methods: registerActions.

outbound_notification

Outbound notification delivery. Capability version: 1.0. Mode: declarative. Runtime methods: registerActions.

oauth

OAuth 2.0 authorisation. Capability version: 1.0. Mode: generated.

reviews

Review ingestion and response. Capability version: 1.0. Mode: declarative. Runtime methods: registerActions.

محلي

Local search/location data. Capability version: 1.0. Mode: declarative. Runtime methods: registerActions.

هذا

SEO data and actions. Capability version: 1.0. Mode: declarative. Runtime methods: registerActions.

site_intelligence

Site Intelligence provider. Capability version: 1.0. Mode: declarative. Runtime methods: siteIntelligenceProviders. Interfaces: OpsIQ\Connectors\SiteIntelligenceConnectorInterface.

محلل

Analytics data provider. Capability version: 1.0. Mode: declarative. Runtime methods: analyticsCapabilities.

comms

Communications/video-meeting provider. Capability version: 1.0. Mode: declarative. Runtime methods: commsCapabilities.

admin_assets

Connector-provided admin/account/public browser assets. Capability version: 1.0. Mode: generated. Runtime methods: adminAssets. Interfaces: OpsIQ\Connectors\AdminAssetConnectorInterface.

enterprise_hooks

Platform-native hooks and lifecycle callbacks. Capability version: 1.0. Mode: extension. Package files: EnterpriseExtension.php.

durable_queue

Durable outbox/inbox queue and retry policy. Capability version: 2.0. Mode: extension. Package files: EnterpriseExtension.php.

ticket_mirror

Bidirectional ticket mirror with conflict handling. Capability version: 2.0. Mode: extension. Interfaces: OpsIQ\Connectors\TicketMirrorConnectorInterface. Package files: EnterpriseExtension.php.

attachment_bridge

Attachment upload/download transfer. Capability version: 2.0. Mode: extension. Package files: EnterpriseExtension.php.

database_migrations

Connector-owned schema migrations. Capability version: 1.0. Mode: extension. Package files: EnterpriseExtension.php.

scheduled_workers

Connector-owned scheduled/background workers. Capability version: 1.0. Mode: extension. Package files: EnterpriseExtension.php.

conflict_resolution

Two-way sync conflict strategy. Capability version: 1.0. Mode: extension. Package files: EnterpriseExtension.php.

⚠️
تظل مواصفات البناء هي المصدر الرسمي - وضع قواعد الأعمال الخاصة بالمنصة في نقاط التمديد المولدة؛ وتبقى دورة حياة الحزم، والصفوف، والعاملين، وعمليات الهجرة، واختبارات الامتثال تحت إدارة البناء.

إعدادات الموثوقية على كل إجراء

إعادة المحاولة

عدد المرات لإعادة محاولة المكالمة الفاشلة، مع التراجع الذي يضاعف كل محاولة. 429s ويتم إعادة محاولة الأخطاء 5xx؛ 4xx هو خطأ طلبك وتكراره سيحرق فقط حد المعدل.

حدود المعدل

حد أقصى في الدقيقة لهذا التصرف، بحيث لا يمكن لعامل مشغول أن يضرب منصةك. اتركه عند 0 بدون حد.

انتهاء الوقت

كم من الوقت ينتظرون لبرنامجك قبل الاستسلام.

إقرار التعيين

تطلب موافقة إنسان قبل أن يبدأ العمل، استخدمها لأي شيء مدمر.

أنواع التوثيق

الخطوة 2 عرض سبعة أنماط إختر واحدة تطابق برنامجك API الوثائق، المولّد يُصدر العميل الأيمن لـ (هاتف)

مفتاح API في العنوان

مفتاح ثابت يرسل كعنوان ثابت، مثل X-API-Key. تعطي اسم العناوين و العلامة التي يجب أن يظهرها الاستمارة الإدارية. هذا يرسل المفتاح كعناوين فقط؛ إذا كان بريدك API يتوقع المفتاح كبارامترات استفسار بدلا من ذلك، استخدام Custom Headers أو وصلة كاملة الشفرة.

Bearer رمز

Token sent as Authorization: Bearer <token>. Common for modern APIs.

التوثيق الأساسي

اسم المستخدم وكلمة المرور، مشفرة بـ base64 في عنوان الإذن. أنت تختار علامات الحقلين اللذين يظهران على استمارة المدير.

HMAC- موقّع

المفتاح العام بالإضافة إلى سر، مع التوقيع على جسد الطلب. تعطي رأس التوقيعة ورأس المفتاح ورأس الختم الزمني الذي يتوقعه منصة عملك.

OAuth 2.0 (وثائق تفويض العملاء)

من خادم إلى خادم، بدون تفاعل مع المستخدم ودون إعادة توجيه. URL ونطاق اختياري؛ يوفر المدير هوية العميل والسرية. استخدم هذا عندما تصدر منصتك وثائق التفويض إلى تطبيق بدلاً من شخص.

OAuth 2.0 (زر الاتصال)

تدفق رموز الإذن مع PKCE، بالنسبة. Stripe, Shopify, Slack و QuickBooks-أنت تعطي الإذن URL, الرمز URL وبعد النشر، ينقر المدير على خيار Connect (الاتصال) في وصلة الاتصال، ويأذن بالوصول إلى منصتكم، ثم يقوم بتحديد النطاق. OpsIQ يخزن رموز تحديث الرموز و mints الوصول عند الطلب. URI للتسجيل في حسابكم OAuth التطبيق يظهر على صفحة إعدادات الموصل.

عناوين مخصصة

الشكل الحر JSON الخريطة الرأسية لأي شيء لا تغطيه الأنماط أعلاه، على سبيل المثال {"X-API المفتاح {api_key}","المستأجر إكس:"{tenant_id}"}. يصبح كل مكان حقل على استمارة الإدارية.

💡
تنطبق PKCE على تدفق زر الاتصال فقط، وليس لتدفق بيانات اعتماد العميل أي إعادة توجيه أو خطوة مستخدم، وبالتالي لا تنطبق عليها.

أساليب التصفح

التعويض

يستخدم بارامترات التحول والحد. مثال:? offset=100&limit=_50.

صفحة

يستخدم رقم الصفحة. مثال:? page=3&per_page=_50.

المؤشر

يستخدم رمز المؤشر من الاستجابة السابقة.

عنوان الوصلة

يستخدم عنوان استجابة الرابط مع rel="next".

متقدم: شفرة PHP الشخصية

مُتصل، لا يُعلِن أنّه من النوع المُسمّىOpsIQالمطاردة، أسماء الطريقة الواردة أدناه هي تلك التي تتطلبها "كونيكتور إنترفيس" وخطأ واحد هو قاتل في الحمولة وليس تحذيراً

الموصل - الإصدار - العقد الحقيقي، الحد الأدنى والقابل للهرب
<?php
/* connectors/myplatform/connector.php */
declare(strict_types=1);

use OpsIQ\Connectors\AbstractConnector;

require_once __DIR__ . '/Client.php';

return new class extends AbstractConnector {

    /* ── the three identity methods. NOT identifier()/label(). ── */
    public function slug(): string        { return 'myplatform'; }
    public function name(): string        { return 'My Platform'; }
    public function description(): string { return 'Orders and customers from My Platform.'; }

    public function capabilities(): array { return ['actions', 'context']; }

    public function settingsSchema(): array
    {
        $f = __DIR__ . '/settings.json';
        if (!is_file($f)) return [];
        $j = json_decode((string)file_get_contents($f), true);
        return is_array($j['settings'] ?? null) ? $j['settings'] : [];
    }

    /* ── NOTE THE ARGUMENT. testConnection() with no parameter is a fatal. ── */
    public function testConnection(array $settings): array
    {
        try {
            $resp = \OpsIQ\Connectors\MyPlatform\Client::callWithSettings($settings, 'GET', '/me', [], []);
            $code = (int)($resp['http_code'] ?? 0);
            return ($code >= 200 && $code < 300)
                ? ['success' => true,  'info'  => ['message' => 'Connection OK', 'http_code' => $code]]
                : ['success' => false, 'error' => "Verify endpoint returned HTTP $code"];
        } catch (\Throwable $e) {
            return ['success' => false, 'error' => 'Test failed: ' . $e->getMessage()];
        }
    }

    public function onEnable(array $settings): array  { return ['success' => true]; }
    public function onDisable(array $settings): array { return ['success' => true]; }

    public function handleWebhook(array $payload, array $headers, array $settings): array
    {
        return ['success' => true, 'note' => 'No triggers declared.'];
    }

    /* Inherited from AbstractConnector: reads actions.json for you.
     * Override only to ADD actions the manifest cannot express. */
    public function registerActions(array $settings): array
    {
        return parent::registerActions($settings);
    }
};
⚠️
Three things that fatal at class load rather than failing gracefully. The identity methods are slug(), name() and description() — not identifier() and label(). testConnection() TAKES an array of settings; a no-argument version is an incompatible signature. And there is no $this->http() or runAction() on AbstractConnector — HTTP goes through your own Client.php or through an action declared in actions.json.

إعادة عرض التذاكر في نظام التذاكرة الأصلي

عندما تملك منصتك تذكرة، عكسها إلى OpsIQ من وصلتك باستخدام مساعد استيعاب التذاكر الذي يرثه وصلتك (إنشاء لتذكرة جديدة، إضافة رد لمتابعات). إصدار أحداث التذاكرة العالمية والاشتراك فيها في وصلتك subscribers() طريقة ticket.created, ticket.replied, ticket.updated, ticket.deletedالرد الآلي، التصعيد، SLA و CSAT جميعا ترتبط نفس الأحداث، لذلك ترثهم دون أي رموز إضافية.

إذا كنت تعتني ticket.deletedأنت أيضاً تتعامل مع المشرقات حُذف تذكرة مدمجة يحمل merged_into ولا يرسل إلى موصل يعلن ticket_mergeالدمج يصل مرة واحدة ticket.merged بدلاً من ذلك، حتى يمكنك أن تدمج على منصة الخاص بك بدلاً مِنْ إغلاق تذكرة الاندماج هناك. القدرة على دمج التذاكر (العقد 2.4).

قل من كتب الرسالة الافتتاحية

التذكرة دائما لـ )ب( العميل، ولكن الرسالة اﻻفتتاحية يمكن أن تكتب بواسطة الموظفونعميل يفتتح تذكرة نيابة عن العميل أو يتواصل بشكل استباقي كل مكتب مساعد يدعم هذا ticket.created عقد بدلا من شيء كل وصلة يحل خصوصيا.

author_type

client (الافتراضي) أو admin. إذا حذفته، يُفترض أن العميل هو المستخدم.

author_id

هوية الموظف عندما يكون author_type=admin. لا يوجد هوية العميل أبداً

author_name

اسم الوكيل أو الإدارة يعود إلى "الموظفين"

author_email

عنوان العميل، لا يوجد أحد العملاء رسالة من الموظفين تحت البريد الإلكتروني للزبون هي خطأ في الإبلاغ ومراجعة الحسابات

وهذا ليس مجرد تجميل. المستهلكون author_type to decide whose turn it is. A staff-written opening reported as client يتركون أهلية للرد على رسالة كتبها وكيلكم ويجعل صدى منصة الافتتاح يبدو كرسالة زبون جديدة أجيبضع إشارة منصةك عليها في وصلتك event normaliser, أبدا في المستهلكين

الحظر المركزي

عندما يقوم أحد الوكلاء بمنع المرسل، فإن ذلك ينطبق على جميع كل شيء القناة (البريد الإلكتروني، الدردشة، البوابة، الوادي النباتي وكل توأم موصل) لأنّ المبنى يتم إنفاذه مركزياً قبل أن يرى أيّ موصل الرسالة، ووصلك لا يرثها بأي شيء ولا يوجد عمل مُحدد لتنفيذه ولا سبيل لإخطائه

النصف الاختياري هو خارجا: إخبار منصةك أن العميل قد تم حجبه هنا. لا تنفذها إلا إذا كان بإمكان منصتك التعبير عن شيء معادل.

القدرات()

يجب أن يشمل هذا الرقم الحجبي، ويجب على الصف أن ينفذ نظام تسجيل المرور، علماً بادعاء؛ والواجهة هي الضمانة، ويحتاج السجل إلى كليهما.

blockSender($b)

يستقبل نوع (email|domain|ip)، القيمة، سبب، admin_id، expires_at، site_key. يعيد [result, detail?, remote_ref?].

unblockSender($b)

نفس الحمولة، عكست لابد أن تكون مُمكنة فك شيء لم يغلق أبداً هو خطأ

isSenderBlocked($b)

ولأغراض التسوية، يُبلغ عن الانحراف بدلا من أن يكتشفه العميل. [النتيجة، مسدودة؟]

قيم النتائج

حسنا

تطبيق على منصة.

noop

في الحالة المطلوبة بالفعل

unsupported

ليس لديكم مفهوم معادل لهذا الأمر وليس خطأ

فشل

كان بإمكانك أن تفعل ذلك و حدث خطأ، أضف التفاصيل؛ فهي ستدخل في مسار مراجعة الحسابات.

الرفض هو الإجابة الصحيحة. العديد من المنصات ليس لديها "حجب هذا المرسل" مفهوم وتقدم فقط تعليق الحساب، الذي يوقف الفواتير، تسجيل الدخول والخدمات بدلاً من مجرد دعم البريد. رسم "عميل حظر عنوان التتبع" على "إغلاق حساب هذا العميل" سوف تسمح بقطع واحد خطأ النقر لإنهاء خدمات زبون دفع. إذا كان ذلك هو الرهان الوحيد لديك، أعد unsupported وتركها لوحدها

ويشمل الرفض أيضاً الحالة التي يقوم فيها المنبر يمكن أن يكون أنا لا أريد أن تفعل ذلك، ولكنني لن أسمح لك. API, not a feature: هي رفع يوجد فقط في واجهة المستخدم الإدارية للمنصة وهي رفع لا تملكه وصلتك.

مثال مُجدَّد؛Zendesk(التنفيذ المرجعي)

اقرأ connectors/zendesk/connector.php alongside this. It is short, and every branch below is a decision you will face too.

البريد الإلكتروني→حسناً

PUT/api/v2/users/{id}مع وقف التنفيذ، طلبات المستخدمين النهائيين المعلقة تتحول إلى التذاكر المعلقه بدلاً من فتح واحدةZendeskلا يوجد لدى المستخدمين النهائيين أي شيء، يعيدون المستعمل إلى موقعه

النطاق → غير مدعوم

يمكن لـ Zendesk تعليق مجال كامل، ولكن فقط من خلال الكلمة الرئيسية suspend: في منطقة النص blocklist للمركز الإداري، ولا يكتب API هذا الحقل.

ip → غير مدعوم

لا يوجد كتل على مستوى التذكرة IP.

عنوان مجهول→Noop

Zendeskلا يمكن أن نقبل عنوان لم يشاهده من قبل، ولا شيء نفعله ليس فشلاً، والمبنى المحلي ما زال يوقف التذكرة.

وكيل أو مدير → غير مدعوم

سيغلق الموظفون على زميل من مكتب المساعدة عنوان الموظفين للوصول إلى قائمة حصرية

هذا السطر الأخير هو الذي يستحق النسخ. لا يمكن للعقد أن يمنعك من رسم كتلة على شيء مدمر، لذلك يتعين على كل وصلة أن تقرر بنفسها ما ترفضه. detail المشغل يستطيع القراءة، يغلب الطاعة.

أبلغ بصدق لاحظوا كم عدد تلك الصفوف قليل okوهذا هو النتيجة الصحيحة، وليس الفجوة: فكل مجال لا يزال يعمل (وهو ينفذ في جوهر اللحظة التي يكتب فيها)؛ ولا يمكن ببساطة المرآة إلى الخارج. ok لفعل شيء لم تفعله سيخبر المشغل أن الكتلة وصلت إلى منصةك عندما لم تغادر أبداً OpsIQ.

القواعد

الكتلة المحلية تفوز دائماً

انها مكتوبة قبل أن يتم استدعاؤك و تبقى مهما ردت لا يمكنك منع المشغل من حجب شخص ما

لا ترمي أبداً

يتم التعامل مع الرمي على أنه غير مدعوم ومسجل. العودة فشلت مع تفاصيل بدلا من ذلك حتى يبقى السبب.

أن يكون ذا مقدرة مطلقة

ويجوز الإعلان عن نفس المجموعة أكثر من مرة.

عودة سريعة

الخروج من الطابور متزامن مع النقر على مفتاح المشغل.

لا تتصلي مجدداً

لا تقوم أبدا بإعادة الحظر إلى OpsIQ من معالجك. السجل يتخطى الموصل الأصلي، ولكن القفزة الثانية ستصبح حلقية.

كل إعلان مكتوب opsiq_block_registry_log (العمل، نوع، قيمة، سبب، دومينيك، أصل، موصل، نتيجة، تفاصيل وزمن) حتى يستطيع المشغل أن يرى مربعا وصل من منصة الخاص بك بدلا من عميل، وما فعله كل موصل عنه.

دفع المرفقات بشكل صحيح

اليد attachments array to create ()/addReply(). كل عنصر يحمل الملف في أحد ثلاثة أشكال:

content_b64

القاعدة 64 من ملف RAW، استخدام للملفات خلف الفم (في معظم الحالات المتفاوتة). OpsIQ يزيله ويعيد فتح ملفك أكثر شكل محمول

url/العنوان المصدر

URL https عام (مثلا Zendesk content_url). يجب أن يكون https؛ يمر باختبار SSRF / allowlist قبل تخزينه.

stored_path

مرجع ملف مخزن قمت بكتابته بالفعل (ما ينتجه محمّل المكوّن الأصلي).

Items also accept filename, mime_type and size_bytes. Caps: 12 MB/file, ~24 MB total, 10 files per call. Most platform read APIs return attachment أسماء الملفات فقط (ليس مناشف) لذا النمط الموثوق به هو: قراءة الأقواس حيث تعمل شفرة الخاص بك بالفعل (داخل المنبر، أو من حمولة ويب هوك)، وقاعدة 64 لهم، وشحنهم كما content_b64 على الحدث.

خروجي (OpsIQ → منصةك). وعندما يرفق أحد الموظفين ملفا، ticket.replied الحمولة تعطيك ملفات الرد كما stored_path البنود في إطار OpsIQ اقرأها وادفع في شكل منصة الخاص بك وتحقق من اطباء المنصات WHMCS تريد base64_encode(json_encode([[name,data]])) (JSON، لا تسلسل)؛ وتحمّل Zendesk البايت الخام إلى /uploads.json لعلامة ثم يضع comment.uploads؛ يرسل Gmail رسالة متعددة الأجزاء/مختلطة RFC-822 base64url-encoded in raw; Amazon SES inbound attachments need the S3 receive action (the SNS path caps at 150 KB).

المنصات عن بعد: API + webhook، لا جداول تطبيق آخر

إذا كان منصة عملك تطبيق أو قاعدة بيانات مستقلة (برنامج حاسوبي مستضيف كخدمة، WHMCS عن بعد، قاعدة بيانات مختلفة على نفس الخادوم)، لا تكتب أبداً جداولها مباشرة: قاعدة بيانات متداخلة تُكتب أرضاً على أي صلة نشطة و صامتاً تفتقد إلى الصفوف الحقيقية خارجا = استدعاء المنصة الموقعة REST API (الردود، الحالة، الإدارة، الحذف)؛ في الداخل = المنصة تنشر موقعا على شبكة الويب، handleWebhook() يتحقق منه ويطلق التوافق ticket.* حدث. لوقف حلقة مرآة، وسم ما تدفعه بعلامة منشأ (مثلا: mirror_origin:'opsiq')؛ المنصة تعيد صدى ذلك على webhook ومعالجتك الواردة تتخطى أصدائها الخاصة. OpsIQEvents::isMirroredEvent() في أعلى كل معالج.

حالة المرآة، والأولوية والإدارة

ينتقل الرد تلقائياً، وكيل الرد → answered, a عميل الرد → customer_reply; يعكس ذلك بنفس الطريقة. للتغييرات الصريحة اشتر على ticket.updated يكون نصها كما يلي: payload['changes'] (مثلا {status:'closed'}).

الحالة: مجموعة OpsIQ النموذجية هي open, customer_reply, answered, in_progress, pending, closed. احتفظ بخريطة صغيرة ذات اتجاهين لمفردات منصة عملك، وتأكد أن عمودك يقبل فعلا القيم التي تكتبها (مثل ENUM قيمة مفقودة تصبح فارغة في صمت من قبل بعض قواعد البيانات). القسم: الـ OpsIQ القسم (د) لا معنى له في جانبك لا ترسلها أبداً. أرسل الوصف (name, email و slug) وتسويتها ضد إداراتكم الخاصة عن طريق البريد اﻻلكتروني → اسم → سلج، وبالتالي " إدارة الفواتير ". لك إدارة الفواتير بدلا من عام. تحرك على كلا الجانبين ticket.escalated و)أ( department_id التغير في ticket.updated.

💡
ويجري التحكم في الوضع/الأولوية/الموضوع/الإدارة/الحذف بواسطة مفاتيح تحويل لكل وصلة (mirror_status_changes, mirror_priority_changes, Mirror_subject_change, mirror-department-changes، Mirror_deletes) تُقرأ من خلال الشبكة المشتركة. OpsIQ\Connectors\MirrorOptions helper. ادمج هذا الكتلة في إعداداتك.json و كل وصلة تذكرة-مرآة تقرأ المفاتيح بشكل متطابق.

ربط تذكرة بمنتج/خدمة

إذا اختار العميل منتجًا محددًا عند فتح التذكرة، قم بوضع إشارة حتى يرى الوكيل بطاقة خدمة مركزة (مع نقرة واحدة "انظر المنتجات الأخرى" للباقي).

related_service_id

Preferred: the service id exactly as it appears in your IdentityProvider::lookupCustomerServices() list (each service's id). Unambiguous match.

related_service_label

رمز لخدمة المنصة، مثل: WHMCS S396 (خدمة ميدانية)396)/D11 )المجال(11). OpsIQ يقوم بتفكيك الحرف الاختياري type-letter + id ويطابق قائمة الخدمات الخاصة بك، مع حارس للنوع حتى لا يتطابق رمز المجال أبدا مع منتج من نفس id. يكشف عن مرجع مطابق على كل خدمة لمطابقة دقيقة.

related_domain

اسم مجال؛ يطابق كسلسلة فرعية ضد كل تفاصيل الخدمة / المجال.

💡
بنّي قائمة المرفقات مرة واحدة، على النحو المبين أعلاه، ثم OpsIQ يقوم بالباقي: مستضيف URLs يتم مرور محتويات base64 وتخزينها وإعادة استضافتها من أجلك. لا تحتاج أبداً إلى كتابة مناولة الملفات لكل منصة.
⚠️
مفاتيح العمل هي حروف أقل وأرقام ومؤازرة3إلى80الشخصيات، كما يسمح بالنقاط؛ ويقبل متجر العمل2إلى100الشخصيات التي لا توجد بها نقط، لذا حافظوا على الرسائل والأرقام والتأكيدات وترضيهم، إضافة عمل لا يخلق مساراً لـ (أي جي إكس)، لذلك ليس هناك ما يُعاد تجديده - إنقاذ الموصل و هو متزامن.

دع (آي) يبنيها لك

ليس عليك أن تملئ الخطوات الستة باليد و تُصف الموصل بكلمتك الخاصةOpsIQ"إنّ (آي آي) يصوغ المواصفات بأكملها، ويديرها من خلال نفس المُصادقة على استخدامات السحر" "ويريك الخطة قبل أن يكتب أي شيء للقرص، هناك مكانان ليقوما بها، وينتجان نفس الحزمة."

في الساحر

مفتوح Connectors→+ يضاف الموصل→موصل البناءعلى الخطوة1سترى ✨أصنعه لي- نوع ما هو الموصل - المنبر، الذيOpsIQوينبغي أن يقرأ ما ينبغي أن يكتب، ومن يستخدمه - إضافة:APIالجذر إذا كنت تعرف ذلك، والضغط عليه الساحر يملأ كل خطوة من المشروع وأنت تعيد النظر وتحرر تماما كما لو أنك قمت بطباعته6نفس اللوحة تبدو ✨Refine with AIلذا يمكنك أن تطلب تغييراً (تقرأ الفواتير أيضاً) بدلاً من تحرير الحقول

بسؤالكOpsIQ

افتح اسأل OpsIQ لا يجب أن تسمّي أي عمل أو تعرف بوجود الساحر

1
اطلبي ذلك

على سبيل المثال: "بني لي وصلة ل. Trello. يجب أن يقوم بإدراج لوحاتي وقوائمي، وقراءة البطاقات، وخلق بطاقة على اللوحة. Trello يستخدم. API يجيب مساعد الطيار بجملة واحدة ويظهر صورة للسيارة التي يقودها مشروع هذا الموصل بطاقتك، رسالتك هي الموجز لذا ضعي المنهاج والقراءة و الكتابات فيه

2
تأكيد مشروع القرار

ولم يكتب أي شيء بعد، بل يقوم جهاز التكييف بصياغة المواصفات والتصديق عليها والردود على الخطة: ما يفعله الموصل، والإجراءات التي سيكشفها )الطقوس المميزة(، والافتراضات التي قام بها، والمسائل التي لا يزال يتعين عليك الإجابة عنها - وهي عادة وثائق التفويض الواجب تقديمها.24ساعات.

3
قل "أبنيه"

المُتفجر يظهر البناء card naming the connector and its slug. This one writes: it publishes the package into /connectors/<slug>/. Confirm it and you get the path back, together with the setting you still have to fill.

4
إدخال وثائق التفويض والتمكين

الموصل الجديد يُنشر لكن غير مُمكّن ولا يحمل أسراراً، افتحوا أماكنه، أدخلواAPIمفتاح أو رمز، صحافة الاختبارثم قم بتمكينحتى تفعل، لا يفعل شيئا.

💡
ولا يكتب مشروع الخطوة أي شيء على الإطلاق، فالخطوة البناءية مدمرة ومسالمة دائماً، ولا يمكن للمبادرة أن تنشر موصلاً أو تُمكّن واحداً منها أو تدخل في إبداع بمفردها.

ما هو الـ "آي" ولا يسمح له بفعله

المُثبت هو الجدار

المواصفات التي تُجرى في نفس نظام الزرّ الذي يستخدمه السحرة، إن لم يُمرّ، فإنّ (آي آي) قد أُعطيت الأخطاء وحاول مرة أخرى، حتى ثلاث مرات ثم ترفض كلمات المصادقة نفسها.

لا تكتب أي وثائق تفويض

مشروع الأسماء نمط التوثيق و الحقول التي تُقيمها لا يخترع أبداً مفتاحاً أو مُكَنّب أو سرّاً، أنتَ لملء تلك في وقت لاحق على صفحة الموصل

يجيب على الأسئلة، وليس تخمينات

وأي شيء لا يمكن أن يعرفه - حسابك د، أي منطقة، من نقطتين نهائيتين تكشف خطتك - تعود كسؤال على الخطة بدلا من افتراض صامت.

نقطة النهاية المخترعة تفشل بصوت عال

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

الطرد عادي

ما ينتجه هو مجموعة من المُعدات العادية للبناية: نفس الملفات المتولدة، نفس العقد، نفس التوقيع، قابل للتجزئة في الساحر، مُنع من صفحة (كونيكتورز) لا يوجد نوع مستقل من "الربط بين الـ"آي أي"

نموذجك يَعمَلُ صياغة

الجودة تتبع النموذج الذي تم تشكيله تحت (ستينغز)→AI. A small, cheap model drafts a correct but plain connector and asks more questions; a stronger model gets more of the endpoints right first time. Change it under AI formation; nothing else has to change.

⚠️
ولا يمكن للمتفجر أن يقوم إلا بتصرفات سجلت بالفعل هذه التركة، وإذا كانت أعمال بناء المرشد مفقودة - أي خطة لا تشملها أو دور بدونها manage_connectors -الشرطي يقول ذلك بدلاً من تقديم بطاقة تفشل عندما تنقر
الموصلات

ختم خلال الدردشة: خريطة دور التجارة

الموصل الذي يستطيع بيعه - منصة تخزين، نظام حجز، بوابة دفع - يعلن أي من عملياتهOpsIQ"أدوار التجارة الكانتونية"→العميلة (تشاد)→يبيعون الدردشة تلقائياً، ويتوقفوا عن الإعلان ويختفي، ولا توجد قائمة للتسجيل فيها.

الملف: commerce_roles.json

ويعيش الإعلان في ملفه الخاص على أساس الحزمة - وجود الملف هو المطالبةلا يمكن أن يعيش في connector_contract.json: هذا الملف يُعاد تجديده بواسطة أدوات التغليف وجهازه الكيميائي يرفض مفاتيح مجهولة، لذا فإن أي قطعة يدوية ستفشل في التصديق ثم تُخطى من جديد.

commerce_roles.json
{
  "commerce": {
    "roles": {
      "catalog_search": { "operation": "acme_search_products", "transport": "http" },
      "customer_lookup": { "operation": "acme_customer_lookup", "transport": "http" },
      "quote":          { "operation": "acme_quote_order",     "transport": "http" },
      "payment_methods": { "operation": "acme_payment_methods", "transport": "http" },
      "order_get":      { "operation": "acme_get_order",       "transport": "http" },
      "order_create":   { "operation": "acme_create_order",    "transport": "http",
                          "recovery": "acme_get_order" }
    },
    "customer_ordering": {
      "enabled": true,
      "version": 1,
      "mode": "direct_order",
      "audience": "clients_only",
      "account_flow": "existing_client",
      "payment_flow": "connector_methods",
      "identity_parameter": "external_customer_id",
      "quantity_parameter": "quantity",
      "label": "Acme Store",
      "checkout_hosts": [],

      "transaction_kind": "purchase",
      "decision_mode": "immediate",
      "payment_timing": "on_confirmation",
      "reversibility": "reversible",
      "cancellation_flow": "platform_only",
      "fulfilment_presence": "remote_delivery",
      "notify_flow": "platform_automatic",
      "customer_fields": {"name": "required", "email": "required", "address": "required", "phone": "optional"},
      "client_tools": ["catalog_search", "catalog_get", "quote"],
      "account_timing": "before_quote"
    }
  }
}

القواعد، ولماذا كل منها موجود

الأدوار هي مفردات مغلقة

OpsIQولا يُستدل من أي دور من اسم الدعوى، بل إن الدور الذي لا يُعلن عنه ليس له وجود - الإعلان هو العقد بأكمله.

العملية يجب أن تكون أحد أفعالك

كل عملية مجهزة يجب أن تكون موجودة في actions.json-التيبو يعلن قدرة لا يمكن تشغيلها، ويظهر للزبون "يمكنني التحقق من ذلك لك" يليه لا شيء.

دور قراء لا يشير أبداً إلى عملية تدميرية

يجب أن يرسموا خرائط للعمليات التي لا تغير شيئاً على منصة عملك

دور الكتابة لا يرسم أبداً عملية تسجيل عامة

رسم الخرائط order_create يدرج في جدول خام record.create, db.insert, recordCreateأي تهجئة، أيّ مُنفصل يتم رفضه هيكلياً، صف مكتوب مباشرة يتعدى على تسعير منصةِكَ، وحجز الأسهم والبريد التثبيتي، إصدار أمرٍ لا يؤمن به نظامك بالكامل

يُعلن دور الكتابة عن عملية الاسترداد

"النظرة المُمكنة التي تجيب على "هل كتبت أرضي؟

3 - تؤدي أدوار السداد التي يقوم بها مقدمو الخدمات إلى ثلاثة التزامات إضافية

ويجب أيضا أن تعلن مجموعة من التدابير التي تتحدث مباشرة إلى مقدم مدفوعات payment_profile (العمليات، والبلدان، والأساليب، البيئة - بيئة غير ثابتة هي الطريقة التي يسدد بها التكامل الاختباري دفعاً حياً؛ webhook_verify (خطة توقيع المزود الحقيقية؛ و مُرافقة سرية عامة يتم رفضها) event_map (أحداث تقديم على الكانتونات) موصل تجاري لا ينفّذ إلا record_payment ويتلقى بالفعل أدلة على الدفع الكانتوني التي تم التحقق منها؛ ويجب ألا يتظاهر بأنه المدخل.

نعلن كيف يمكن للزبائن أن يطلبوا من متجر متصل

ووصل البضائع وموصل لبوابة الدفع مختلفان بموجب عقود مخزن متصل يأمر الزبائناختاري أعمق طريقة يمكن أن يثبتها الرصيف، الخيار مُحزم داخل موقع commerce_roles.json; Store and Client Chat re-read it at execution time - Removing a role or disabling/uninstalling the connector therefore invalidates a previously rendered proposal instead of leaving stale authority behind.

catalog_only

الخرائط catalog_search أو catalog_get. OpsIQويمكن البحث عن المنتجات وتفسيرها، ولكنها لا تستطيع أن تظهر أمراً قابلاً للتنفيذ أو تأكيداً للمغادرة، ولا تزال كل مجموعة في هذا التقصير الصادق إلى أن تجتاز إجراءات الاقتباس والفحص/الكشف الخاصة بها العقد الأعمق وإصدار شهادات السوق؛ ولا تقل أبداً أي دعم للمعاملات من اسم منبر.

platform_checkout

أيضا خرائط quote و platform_checkout- عمل التجار - ليس OpsIQ checkout_url, checkout_reference و اقتباس الكانتونURLيجب أن يكون HTTPS، واسمه المضيف يجب أن يتطابق customer_ordering.checkout_hosts أو مضيف شركة HTTPS المستمد من checkout_host_settingو الاقتباس قد يعيش لا أكثر من15دقيقة - نسيج منتج، عربة مجمّعة محلياًURLأو العودةURLليست قدرة على مراقبة البضائع.

direct_order

أيضا خرائط quote, order_create و order_getمع order_create.recovery- يورد الإقتباسات مباشرة قبل التنفيذ، ويزود مفتاح الافتراض، ويطلب عملية الإنعاش بعد كل نتيجة غير معروفة قبل أي إعادة. payment_flow=opsiq_gatewayويجب أن يرسم خريطة إضافية record_payment مع عملية موثوقة للتعافي/الإعادة.OpsIQويتحقق بنشاط من معاملات البوابة، ويطابق المبلغ والعملة والتجار والمرجعيات النظامية، ويكتب مرجع مقدِّم الخدمات مرة واحدة، ثم يقرأ الفواتير/الأسطوانات التجارية. mark_invoice_paid لا يوجد دليل على الدفع يجب أن يتذرع العمل بالتسعير الخاص بالمنبر و الأسهم و النظام

التحقق من الهوية، وما يمكن للمشغل أن يغيره

عندماOpsIQيمتلك الدفع، يجب على زبون الدردشة أن يصل email_otp قبل أن يصدر أمر ماOpsIQبريد إلكتروني6هذا ليس شيئاً يُختاره أحد الموصلات، بل هو الحد الأدنى الذي يتطلبه التنفيذ order_create.

الاستثناء الوحيد، ومن يتحكم به

يمكن للمشغل أن يقبل عنوان غير مصدق عليه فقط حيث يُعلن موصلك fulfilment_presence: customer_presentيجب أن يصل ضيف فندق، لذا العنوان الخاطئ يُضيء توجيه إيصال و الغرفة ما زالت هناك. remote_delivery - الشحن، وتوفير الموارد، والتحميل - والتحقق مطلوبان مهما كانت مجموعات المشغل، لأن القيمة تترك على قوة ذلك العنوان وحده. minimum_assurance أو reversibility: irreversible أيضاً يزيل قدرة المشغل على تخطيه

كم من الوقت سيستمر الرمز

ثلاثون دقيقة بالخطأ، مشغل5دقائق24الساعات، يرى الزبون العد التنازلي المباشر الخاصة بهم "زون" ليس المشغل، رمز منتهي الصلاحية يقول بوضوح ويعرض رمزاً جديداً بدلاً من الإبلاغ عن رمز غير صحيح...

ما يجب على العميل أن يوفره: العملاء - الحقول

الاسم والبريد الإلكتروني مطلوبان دائماً ويتم جمعهما أولاً. address, phone و company as required أو optional لتناسب العمل: محل يُعلن عن عنوانه المطلوب؛ فندق يعلن أن الهاتف مطلوب، لأن الضيف الذي لا يمكنه الاتصال به ليس له اتصال بالحجز.OpsIQيرفض وضع أمر يفتقر إلى الحقل المطلوب، ويكتب البنّاء الخريطة العادية، وخط الأساس المتضمن لذلك العقد على القرص واضح.

عند إنشاء الحساب: حساب - تقدير

at_order )العجز( يسمح بأن يكتب الأمر ينشئ حسابا للمشتري للمرة الأولى. before_quote عندما أسعار منصتك لكل حسابWHMCSالضرائب التي يقتبسها العميل نفسه والاقتباسات من عملة الزبون -OpsIQيخلق الحساب من خلال الخاص بك customer_create و بمجرد معرفة الحقول المطلوبة، ثم يطلب الاقتباس لذلك الحساب، لذا بطاقة التثبيت تحمل ما سترسله في الواقع من فواتير. account_flow: connector_signup.

المساعد يُمْكِنُ أَنْ لا يَقْرأَ: الزبون - الأغبياء

مع أوامر الخلق، لم يقرأ المساعد قط كتالوج مسلوق، بل يدعو ثلاثة أدوات commerce_catalog_search (يعتبر الاستفسار الفارغ لمحة عامة عن أسر المنتج؛ وترد النتائج التي تتجاوز الحد بالاسم) commerce_catalog_get والبند الأول بالكامل commerce_quoteو الذي يربط خادم بطاقة التثبيت الموقع من خلال نفس الجدران التي كان دائماً بها طريق التوصيل، أداة واحدة لكل شفرة، موصلك كبارومتر، لذا متجر بستة موصولات يحصل على ثلاثة أدوات بدلاً من ثمانية عشر client_tools يقيد التخلف عن الدفع؛ الغياب يعني كل مصفوف catalog_only لا يقتبس أبداً الموصل، فالتكرير ليس أداة: زر البطاقة على الشبكة، بالضبط. CONFIRM القيادة على قناة، ولا شيء يقول نموذج ينفق المال.

ما الذي يجب أن تحمله موادك المفهرسة

id, name، زبونة آمنة summary, a category )وهكذا تجد كلمة العميل بندا اسمه رمز( currency, unit_amount_minor, available, and input_schema إذ يسمي الحقول احتياجات الطلب، ويسجل البحث كلمات العميل مقابل الاسم والأسرة والدورة والموجز.

رفض لسبب ما يمكن للزبون أن يتصرف

العودة {"success":false,"error":"…","missing":["domain"],"retryable":true} عندما تكون القيمة خاطئة أو مفقودة رفض تلك الأسماء missing أو retryable يصل إلى حرف الزبون؛ الفشل العاري يبقى عاماً لذا لا يوجد تسرب داخلي

العملة الأرضية ومحطة الطوارئ

عندما ينتقل المشغل إلى العملة الجيولوجية (السلسلة العالقة)→وبنفس الطريقة، يقرأ الزبون الأسعار بعملته الخاصة على كل سطح - نص دردشة، وبطاقة الويب، وورقة النص النقالي والعملة الافتتاحية للمخزن - باستخدام متجر فاكس الخاص بالمنبر، ولا يمكن استبدال سعرك أبدا: فالبطاقة تبين رقم الزوار إلى جانب مجموع المخزن، وتعالج البوابات بدقة المبلغ الذي تعرضه. وقف جميع البيع (Settings)→(التجارة) هي مفتاح التبديل للقتل: الفيلق، والاقتباسات، والتطلعات تظل مفتوحة؛ واقتراح وتأكيد التوقف على كل قناة.

عندما يبيع خلال الدردشة لا يتصرف

التاجر لا يمكن الوصول إليه

وقد تم كسر ختم الطرد: تم تحرير ملف بعد التوقيع، وإعادة نشر الحزمة، ولم يتم أبداً تحرير نسخة من السوق المجهزة؛ وتحديثها من فريق السوق.

الطلب معطل لهذا المتجر الآن

مفتاح القتل يعمل→التجارة→توقف عن البيع

لم يكن النظام متاحاً على هذه القناة بعد

القناة لا تدق تحت حيث يشتري الزبائن، سجل الخادم يسمون القناة

المساعد يصف بنداً لكن لا توجد بطاقة

لقد رفضت أداة الإقتباس كل مكالمة تم تسجيلها [opsiq][commerce][client_tool] مع السبب: رمز عنصر خاطئ، حقل لا يعلنه العنصر، مجال مكتسب، أو رفض التاجر نفسه. اقرأ السجل قبل أن تثق في إعادة صياغة المساعد.

المساعد يقول أنه لا يستطيع رؤية المنتجات

الصفحة تعود إلى مكان عمل آخر، كل شبكة من المواقع الشبكية تنتمي لحيز عمل واحد، ويجب تمكين موصل المخزن هناك.

رد معلب بدلا من إجابة

"أخبرني المزيد عن ما تحتاج إليه" يعني أن مكالمة مقدم خدمة الذكاء الاصطناعي نفسها فشلت؛ ويظهر تاريخ الذكاء الإصطناعي الخطأ بالضبط في ذلك التحول، ولم يتم الوصول إلى الأدوات أبدا.

مُعالجة الموصل لا تظهر في الدردشة

يقوم العامل بإعادة تدوير تغيير الشفرة خلال دقيقة لكن المحادثة تعيد عزف آخر بطاقة لها

يشاهد زائر نيجيري الدولارات على الرغم من أن العملة الجيولوجية تعمل

تحقق من أن الأرضIPقاعدة البيانات مصممة (قبطان خليط→(ج) وأن عملة الزائر لها سعر فاكس؛ مع عدم وجود معدلOpsIQيُظهر سعر المتجر بدلاً من رقم خاطئ.

مجموعكم هو الرقم الوحيد الذي يحرك المال

"يحمل إقتباساً" unit_amount_minor, quantity و total_amount_minorومن المغري أن نعامل الثالث على أنه مستقيم من أول اثنين، ليس كذلك، وافتراض أنه قد كلف بالفعل زبون مالا حقيقيا.

quantity هو ما اختاره (كوستومير) غرفة واحدة، رخصة واحدة، سياسة واحدة مضاعفتك يمكن أن تكون شيئاًOpsIQالليالي والمقاعد ودورات الفواتير و المسافة والوزن و المداخن فندق يقتبس غرفة واحدة لثلاث ليال ككم1الوحدة105,000المجموع315,000. OpsIQوحدة مضاعفة بالكم لتسعير بطاقة تأكيد، وأظهرت للضيف105,000ثم وجهت تهمة315,000التاجر عاد بالفعل، الاتفاق على رقم واحد وشحن آخر هو أسوأ شيء يمكن أن يفعله هذا العقد

القاعدة

total_amount_minor هو الرقم الوحيدOpsIQعروض وعلامات واتهامات ومطابقة unit_amount_minor إن كان مجموعكم ليس بالضبط ما تريدونه، اقتباسك خاطئOpsIQلن يصحح ذلك، لأن كل ما تم تعديله بشكل مفيد هو واحد لم توافق على شرفه.

ما يعنيه هذا لعملك

عودوا الرقم كله، وطبقوا لياليكم الخاصة، وخصوماتكم، وضرائبكم وأتعابكم قبل أن تجيبوا عليها، وإذا لم يتوافق خطكم - فوحدة واحدة من مجموع عددكم لا تساوي أبدا مجموعتكم -OpsIQيعامل كل شيء على أنه خط واحد بسعره الحقيقي بدلاً من اختراع انهيار لا يتوافق مع شيء

ستة إجابات تجعل هذا العقد يناسب أي صناعة

الإعلان الذي سبق أن بدأ كإعلان للمحل، شراء شيء، دفع الآن، هو لك، يمكنك إلغاءه كل واحد من هؤلاء الأربعة

إذاً موصل للمعاملات يجيب على ستة أسئلة أخرى كل واحد يفشل في القراءة الصارمة - عدم وجود أي شيء آمن دائما ولا يُسمح به أبدا، لأن القول بأن ما يفعله المؤلف عندما لا ينظر في المسألة.

transaction_kind

purchase, booking, subscription, bill_payment, transfer, application, top_up, renewalإنّه يُقرّر كلمة زبونكِ، إتّصال سلكيّ لنقل "أودر" يجعل المساعد يبدو وكأنه لا يفهم العمل الذي يتحدث عنه ولا كمية السباكة الصحيحة تسترد من ذلك. purchase.

decision_mode

immediate أو deferred- الاختيار deferred بالنسبة لأي شيء يذهب إلى الكتابة، والتقدير الائتماني، والإشارات، والقبول أو اللجنة.OpsIQثم يقول مقدمة بدلاً من تم تأكيدو نسلم الإشارة إلى السؤال عن ذلك، إخبار شخص ما أن تطبيقه مؤكد بينما يجلس مع إنسان هو أكثر شيء مدمر يمكن لمساعد الدردشة القيام به من أجل عمل منظم، وهو سلوك غير مقصود لكل تدفق ذي شكل التجزئة. immediate.

payment_timing

on_confirmation, deposit_then_balance, invoice_later أو no_paymentويقرر هذا ما إذا كان:OpsIQيفتح صفحة سداد على الإطلاقلذا لا يمكن استنتاجها payment_flow -هذا ما يقوله من خذ المال، هذا يقول ما إذا كان ومتى- اعملوا على الفواتير بعد ذلك، والتطبيقات التي لا تكلف شيئاً لتقدموه، تنتهي عند التأكيد بدلاً من الوصول إلى قائمة بوابة فارغة أو خاطئة.

reversibility

reversible أو irreversibleوأهم شيء يقوله موصل مالي، يمكن الإفراج عن غرفة ويمكن أن يعود حزمة؛ ولا يمكن نقلها بشكل كامل - لا يوجد أي رد فعل، والمال في النهاية الأخرى، والانتصاف الوحيد هو طلب من شخص غريب إعادتها. irreversible القوات تلقائيا cancellation_flow إلى none ويمنع أي مشغّل يُطْرَع من تَغيُّب التحقق من الهوية، مهما كان ما يقوله هذا الإعلانولا يُعتبر حقلين يختلفان على الدولة التي تُحل في وقت العمل، أيهما يُقرأ أولا. reversible.

cancellation_flow

none, platform_only أو connector_cancel- إن الأدوار التي ألغيت بالفعل لا توجد قاعدة بشأن من يمكن أن يصل إليهما، وال تخمينان خاطئان يفشلان في اتجاهات معاكسة: فالخمين مفتوح ورسالة دردشة تلغي حجزا مدفوعا بدون رسوم؛ والتخمين المغلق، ويُطلب إلى العميل الذي يريد إلغاءه أن يتصل. connector_cancel الاحتياجات الإضافية cancellation_quote و order_cancel مع انتعاشOpsIQلا تلغيه أبداً قبل أن تقول ما يكلفك none.

fulfilment_presence

customer_present أو remote_deliveryإذا كان عنوان بريد إلكتروني غير متحقق يمكن أن يكلف أي شخص، فلابد لضيف الفندق أن يصل، لذا العنوان الخاطئ لا يزال هناك إيصال وغرفة ما زالت موجودة؛ وقطعة من الطرود، أو خادم مزود بالأجهزة أو وصلة تحميل على قوة ذلك العنوان وحده. هذا ما يجعل من المشغل "التحقّق من بريد الكتروني" متاحاً على الإطلاقوقد أعلنتم عن ذلك بدلا من أن تختاروه - وهكذا لا يمكن أبدا أن يرث موصل يبيع السلع التعليل في الفنادق. remote_delivery.

minimum_assurance و disclosure (اختياري)

minimum_assurance دعك من الطلب أكثر إثبات الهويةOpsIQويشترط، على الأقل - أن يمارس المصرف الذي يتطلب زيادة في قيمة التحويل العقد، كما أنه يزيل قدرة المشغل على التغاضي عن التحقق بالنسبة لموصلك، لأن القرار الخاص بمخاطر التاجر يفوق قدرة المتعهد. disclosure الصياغة مبينة قبل الزرّ المؤكّد، مقابل سعر، رسم أو حق تبريد يجب أن تُقدّموه؛ بدونه، ينظّم تهريب الأعمال التجارية يتطلب صياغةً لإسم المنتج.

notify_flow

platform_automatic, platform_triggered أو noneعندماOpsIQأخذ المبلغ الخاص بك لا يهرب أبدا، لذا مهما كان عادة البريد الإلكتروني لا يطلق النار. platform_triggered "الطلب" order_notify (ب) دور في الانتعاش،OpsIQلا تسأل إلا بعد أن تثبت إعادة الدفع أن المال مسجل none يجعل منOpsIQ-بجانب التأكيد الإجباري، لأنّه خلافاً لذلك لا يسمع الزبون أي شيء على الإطلاق none.

نفس العقد، تسعة أعمال غير متصلة

لا أحد من هذه كانت مصممة كل منها هو العقد الذي يجيب بأمانة على صناعة مختلفةOpsIQلا أعرف شيئاً عن أي منهم

عقد واحد، تسعة صناعات
Hotel        booking      immediate  deposit_then_balance  reversible    -> payment page, "confirmed", identity may be waived
Online shop  purchase     immediate  on_confirmation       reversible    -> payment page, "confirmed", identity always verified
Bank         transfer     immediate  on_confirmation       IRREVERSIBLE  -> payment page, no cancel route, never waived
Insurer      application  DEFERRED   no_payment            reversible    -> no payment page, "submitted", never "confirmed"
Utility      bill_payment immediate  on_confirmation       IRREVERSIBLE  -> payment page, nothing to give back
Clinic       booking      immediate  invoice_later         reversible    -> NO payment page, billed afterwards
Tradesman    booking      immediate  invoice_later         reversible    -> NO payment page, invoiced on completion
Telecom      top_up       immediate  on_confirmation       IRREVERSIBLE  -> payment page, final once sent
University   application  DEFERRED   no_payment            reversible    -> no payment page, decision follows
تقديم رسوم إلى البرامج

بعد أن يتم التحقق من دفعة ستوريلي محلية والالتزام بها بشكل نشط،OpsIQالجسد payment.completed مع order_id, payment_id/provider_ref, gatewayبالضبط amount_minorISO currencyزبون، بنود خطية، قناة paid_atيجب أن يُثبت موصل البضائع تلك الأدلة من خلال record_payment ويقرأه؛ ويستهلك موصل للفحص المستضيف حدثاً له ذي حجية مدفوعة الأجر، ولا يجب أن يتلقى كتابة مزدوجة.

AI هو مقدم وليس مصدر السلطة

ويمكن للنموذج أن يختار منتجاً وكمياً معلنين، لكنه لا يستطيع اختيار اسم العملية، ويضع نظاماً للتفتيشURLأو إنشاء دولة تجار من النص، يتلقى الزبون بطاقة موقّعة بدقة ويجب أن يضغط على زر تأكيدها، وهذا التأكيد ملزم بحيز العمل والربط والبنود والكمية والاقتباس والعملة والخيط والانقراض.

الزبائن الاجتماعيون يحافظون على نفس التدفق بدون بريد إلكتروني فوري

WhatsApp, Messenger, Instagram, Telegramوعلى سبيل المثال، يقوم العميل الاجتماعي باستخدام نفس عملية التأكيد مرة واحدة في محادثته؛ فالنص العادي مثل "نعم" لا يعتبر أبداً سلطة أمر. وإذا كان العميل يتلقى رسالة نصية من شخص آخر، فإنه يستطيع إرسالها إلى الشخص الذي أرسل إليه الرسالة. أما إذا لم يتمكن العميل من إرسال رسالة إلى شخص آخر إلا بعد أن يكون قد تلقاها بالفعل، فهذا يعني أنه غير قادر على إرسال الرسالة إلى أي شخص آخر.

تاريخ النظام يتبع وصلة هوية محددة، لا تخمين بريد إلكتروني

وتفهرس الأوامر الوطنية بهوية قناة فاضحة، بحيث يمكن للمبادرة أن تجيب " أين هو أمري؟ " المتحدة دون طلب رقم بريد إلكتروني أو ترتيب.CRM(ب) تسجيل هوية الزبائن/الزبائن الموثوق بهم وتنفيذ عملية البحث في الموصل، ويتلقى مقدمو سياقات العملاء تلك الصلة المخزونة؛ ويجب ألا يختاروا حساباً من اسم عرض أو بريد إلكتروني مصمم على الدردشة؛ وبأمر واحد يطابق الإجابات مباشرة؛ وبعدة طلبات تلخص المباريات وتسأل عن أي منها لا يوجد ارتباط بين تاريخها.

جعل الحمولة عالمية: الحقول المطبعية والهوية المملوكة للخواديم

لا يوجد هناWHMCSفنادق أو محل أو مصرف أو منتج أو طريق أو فرع للبائعين، وقد صنف هذا الإجراء على النحو التالي: parameters (ب) شكل العملاء وخط الحاسب الآلي - يمكن لموصل الحجز أن يعلن التواريخ والضيوف؛ ويمكن لربط الفواتير أن يعلن دورة؛ ويمكن للوصل في المؤسسة مستقبلاً أن يعلن حقوله الآمنة.OpsIQيُحرّك الضوابط البدائية ويرسل القيم المجمعة فقط إلى عمل الموصلات المصنّفة.

الإجراء المطبعي للاقتباس
{
  "action_id": "acme_customer_quote",
  "scope": "client",
  "is_destructive": false,
  "parameters": [
    {"name":"external_customer_id","type":"string","required":true},
    {"name":"item_id","label":"Product","type":"string","required":true},
    {"name":"quantity","label":"Quantity","type":"integer","required":true,"minimum":1},
    {"name":"cycle","label":"Billing cycle","type":"select","required":false,
     "options":[{"value":"monthly","label":"Monthly"},{"value":"annual","label":"Annual"}]}
  ]
}

لـ clients_onlyمجموعة customer_ordering.identity_parameter )أ( إلى مواصفات العمل التي تستقبل العميل الخارجي للموصل؛ ولا يُظهر هذا الميدان أبداً لأحد الزبائن، كما أن أي قيمة مضافة للمتصلين قد أزيلت؛OpsIQالحقن فقط من الرابط المتحقق منه، وتركه الشيك فارغاً البريد الإلكتروني الكاتب هو دليل على مشاهدات ضيوف معلنة، وليس لوح خشبي ولا سلطة شراء.

المجالات الجماعية: وتنتمي حسابات العملاء وتشكيل الموصلات الموقّعة إلى حيز العمل في البوَّابة الرئيسية للمجموعة، غير أنه يجب التوقيع على هوية موقع العضو بالضبط الذي يجسد الشبكة باستخدام سر ذلك العضو.OpsIQيتحقق من ذلك السطح أولاً وبعد ذلك فقط يحل التجارة والزبون المترابط عن طريق المجموعة الأولية ولا يحل أبداً محل مفتاح الموقع العضو بالمفتاح الرئيسي ولا ينسخ السر الأساسي إلى موقع عضو.

الظرف الكانوني يجب أن يعود

فهرس
{
  "success": true,
  "data": {"items":[{
    "id":"42", "name":"Example product", "summary":"Customer-safe summary",
    "currency":"USD", "unit_amount_minor":2500, "available":true,
    "selection":{"item_id":"42"}
  }]}
}
اقتباس
{
  "success": true,
  "data": {
    "quote_id":"opaque", "currency":"USD",
    "unit_amount_minor":2500, "total_amount_minor":5000,
    "selection":{"item_id":"42","quantity":2},
    "expires_at":"2026-08-31T14:05:00Z"
  }
}

The platform- checkout response repeats the valid canonical quote and adds an HTTPS checkout_url- يُعاد تصنيف الاقتباس عند التثبيت ويقارن العملة والاختيار الكلي والمستقر بالضبط، ويترجم الموصل رده على المنبر إلى هذه الظرف؛ ولا يترجم النواة أبدا حقول البائعين أو يبنون التاجرURL.

جعل بوابة المشغلين متاحة في متجر الأم والحديث

القدرة على الدفع وحدها لا تضع بوابة أمام الزبائن بوابة سداد الممتلكات العقارية :: مبنى في بناية الموصلات، وهو يضيف عقداً صريحاً مستنسخاً، وفتح خرائط للتجهيز، ومراقبة نشطة للدفع، ويسمح للمزود بمجالات التفتيش التي تستقبله، وعندما يتم تركيب الموصل وتمكّن من اختياره في إطار التجارة، يظهر نفس المدخل في المخزن العام، والطريقة المسروقة، وفحص العملاء، والتحقق المستقل.

عقد بوابة المخزن الأصلي
{
  "commerce": {
    "roles": {
      "checkout_create": { "operation": "acme_checkout_create", "transport": "http",
                           "recovery": "acme_payment_status" },
      "payment_status":  { "operation": "acme_payment_status", "transport": "http" },
      "payment_profile": { "operation": "acme_payment_profile", "transport": "http" },
      "webhook_verify":  { "operation": "acme_webhook_verify", "transport": "http" },
      "event_map":       { "operation": "acme_event_map", "transport": "http" },
      "payment_refund":  { "operation": "acme_refund", "transport": "http",
                           "recovery": "acme_refund_status" }
    },
    "storefront_gateway": {
      "enabled": true, "version": 1, "label": "Acme Pay",
      "checkout_hosts": ["checkout.acmepay.com", "*.acmepay.com"]
    }
  }
}
ناتج الفحوصات الصوتية

خرائط عمل نظام التفتيش checkout_url وعندما يكون لدى مقدم الخدم واحد session_id-URLيجب أن يكون مكتب مراقبة الأسلحة البشرية، لا يحتوي على وثائق تفويض، ويطابق مضيفاً مسموع.

ناتج عن الحالة الكانوية

يؤدي الإجراء المتعلق بالوضع مقدما جديداAPIالبحث والخرائط paid كـ (بولان) حقيقي amount_minor كثلاجة currency كرمز ثلاثي الأبعاد للإيزو provider_ref- العودةURLولا يُدفع أبداً أي حقيقة، أو شباك الاستفسار، أو حمولة العملاء، أو تعليمات " مؤكدة "

عقد استرداد الموجودات الاختيارية

إذا كان البوابة تدعم المبالغ المستردة، خريطة payment_refund واسترداد الأموال، وإعادة التمويل إلى الصندوق accepted و completed زائد provider_ref; التعافي يؤدي إلى فحص المزود وعائداته statusبدون كلا الإجراءينOpsIQلا يُعلّمُ عن مُرَدَّداتِ التوصيل.

من يؤكد الأمر

الموصل لا يكتب أبداًOpsIQحالة الطلبOpsIQويقارن المبلغ المعاد والعملة المستردين بالظبط، ويسجل مرجع مقدِّم الخدمات؛ وعندئذ فقط يؤدي الجوهر عملية الانتقال التي تحققها الجهة المقدِّمة للمورد.() ولا يزال التحويل المصرفي الدليلي هو التدفق الوحيد الذي يمكن لوكيل مسمّى أن يوافق عليه.

في بناء المرشد، دغدغة التجارة، خريطة الأدوار، وتحدّد إما مخزن متصل يأمر الزبائن, بوابة سداد الممتلكات العقاريةأو كلاهما عندما يقدم الموصل العقدين حقاً، ويصدق الساحر على الإعلان ويكتب commerce_roles.json- ما زال النشر يستخدم عملية استعراض وتوقيع السوق العادية؛ ولا يتجاوز هذا العقد أبداً التحقق من مجموعة أو يجعل الموصل غير قابل للتركيب. php tools/verify_commerce_contracts.php.
💡
النقل http من أجل جهاز التحكم عن بعدAPIأو bridge لعملية مسمّاة على جسر منتشر (انظر الـ...API(ب) النمط الوارد أدناه: الأدوار هي النقل - التشخيص؛ فالزمن يحتاج فقط إلى النقل المعلن حتى يتمكن من إعداد جسر.
الموصلات

البيع من خلال الدردشة بدون وصلة: الأفعال والمثيرات

عقد التجارة الوارد أعلاه لا يتطلب حزمة وصل إذا كان منبرك الخاص بك - مكتب خلفي معتاد، مكتب داخليAPIنظام لا أحد يركب موصلاً من أجله يمكنك الوصول إلى نفس آلة البيع مع الأدوات التي تستخدمها بالفعل لدمج أي شيء آخر: الإجراءات العرفية (نقاط نهاية برنامج التبليغ الخاص بك، محددة في صفحة العمل) و(الأحداث على شبكة الإنترنت)، والعقد نفسه، والبطاقة نفسها، ونفس ضمان الهوية، وذخيرة الدفع ذاتها، والمبالغ المفقودة هو الطرد، لأنه ليس هناك رمز للتوقيع من طرف ثالث.

كيف يتناسب كل شيء معًا

تقوم ببناء عمل واحد لكل دور تجاري كل واحد هو نقطة نهاية واضحة من جانبك AI & Automation→الإجراءات مـعURLبعد ذلك تُوفّر إعلاناً واحداً يُحدّد أدواراً لتلك الأفعال، من تلك اللحظة يظهر متجرك في دردشة تماماً مثل مُستبقّى لك اقتباس، بطاقة تأكيد، العميل يتحقق من بريدهم الإلكتروني، نداءات الطلب لك أطلب عمل مع مفتاح الايدزOpsIQيَأْخذُ الدفعَ خلال بواباتِ العمل الفضائيةِ، لك لا شيء عن تجربة العملاء يقول "العادة"

الإعلان

احفظ هذاJSONكأماكن العمل commerce_custom_integration (Settings)→(ب) البيئات المتقدمة، أو عن طريق نظام ريستAPI)ه( نفس الشكل الذي تتسم به حزمة ما. commerce_roles.json مع عقدة التجارة action تسمية عملك المعتاد

commerce_custom_integration
{
  "enabled": true,
  "roles": {
    "catalog_search":  { "action": "acme_catalog" },
    "quote":           { "action": "acme_quote" },
    "order_get":       { "action": "acme_order_get" },
    "customer_create": { "action": "acme_customer_create",
                         "recovery": "acme_customer_by_email" },
    "order_create":    { "action": "acme_order_create",
                         "recovery": "acme_order_by_key" },
    "record_payment":  { "action": "acme_record_payment",
                         "recovery": "acme_payment_by_key" }
  },
  "customer_ordering": {
    "enabled": true, "version": 1,
    "mode": "direct_order",
    "audience": "guests_and_clients",
    "account_flow": "connector_signup",
    "payment_flow": "opsiq_gateway",
    "label": "Acme Store",
    "identity_parameter": "client_identifier",
    "quantity_parameter": "quantity",
    "transaction_kind": "purchase",
    "fulfilment_presence": "remote_delivery",
    "notify_flow": "platform_automatic"
  }
}

وأخيرا، إضافة custom_commerce إلى الموصلات المُمكّنة للبيع تحت (ستينغز)→العميلة (تشاد)→يبيعون خلال الدردشة ويعاد فحص القبول كل شيء الطلب، ويرفض بأسباب مسمّاة بدلاً من إخفاء متجرك بصمت: الدور الذي يتطلبه أسلوبك لا شيء15.7- كتاب لا يمكن إعادة تقييم نتائجه، وهو عمل تم حذفه أو تعطيله منذ إنقاذك.

ما يجب أن يفعله كل عمل

أعد الظرف الموصل

الرد {"success": true, "data": { ... }} أو {"success": false, "error": "a sentence a customer may read"}أعمالكم مسار النجاح يجب أن نوجه المظروف

الكمية: المجموع الكلي، في الوحدات الثانوية

العودة quote_id, product_name, quantity, unit_amount_minor, total_amount_minor, currency, selection, selection_summary, expires_atكل شيء في "مجموعك هو الرقم الوحيد الذي يحرك المال" أعلاه ينطبق حرفياً: الضرائب والرسوم والمضاعفات تذهب إلى ما مجموعه، لأن مجموعكم هو الموقع والمبين والموجه.

إنشاء النظام: احترام مفتاح الافتراض

أنت تستقبل idempotency_keyالموقع total_minor و currencyتم التحقق من customer_emailو بارامترات اقتباسك الخاصة، خزن المفتاح بالطلب؛ وإذا كنت قد وضعت بالفعل أمراً بذلك، أعيد ذلك الطلب بدلا من طلب آخر. reference منصة التعرف عليك

الاسترداد: إجابة عن كتاب واحد

order_by_key ويتلقى مفتاح الإيجابات والمرجعيات {"found": true, "order": {...}} أو {"found": false}وُجد أن الفرح هو وعد -OpsIQيمكن أن يعيد كتابة الكتابة على أساس قوتها.

دفعة تسجيل: طريقك الاستيطاني الخاص

تستقبل صفقة البوابة كـ مفتاح الإيداع بالإضافة إلى إشارة طلبكOpsIQلقد تحققنا من كمية وعملة مع البوابه وحددوا الأمر الذي دفع من خلال منطقكم الخاص - وأطلقوا رسائلك الالكترونية الخاصة بكم، وقللوا مخزونكم. platform_notified: true إذا كان منصتك تراسل العميل نفسه

مدخلات البطاقات تأتي من بارامترات عملك

أي بارامتر تُعلنه في عملكم (فيما عدا مظلة الهوية) أن شركة "آي آي" لم تجمعه يُصدر على بطاقة التثبيت كمدخلات يملأها الزبائن أنفسهم - مجال، تاريخ، مقعد.

اسمع مبيعاتك

حدثين يطلقان النار على حافلة الحدث المشترك لذا فإن مشاهدتك و آلات التشغيل الآلي تسمع كل بيع للحديث أينما نفذت

commerce.order.created

لحظة هبوط الطلب على الجانب التجاري، قبل الدفع - مرجع، موصل (أو custom_commerceكم، عملة، بريد إلكتروني للزبائن، خبأ

commerce.payment.confirmed

بالضبط مرة واحدة لكل أمر، عندما يتأكد المدخل من الدفع بشكل نشط، فهو يقود نفس المطالبة التي تمنع تكرار الإيصالات، حتى لا يستطيع أن يضاعف من إطلاق النار على موقعك الشبكي.

متى يتخرج إلى موصل

إن التكامل العرفي هو تشكيلة أماكن العمل: فهو يخدم مخزنك، في مجال عملكم، والوقت الذي ترغبون فيه بتوزيع التكامل - أي أماكن العمل الأخرى، والسوق، والتأليف، والتوقيع، والتركيب، والركائز المدفوعة الأجر - يحزم نفس الإجراءات والإعلان نفسه كوسيط للوصلات، ولا يتغير العقد؛ بل يغيّر المغلفة فقط.

الموصلات

ربط منصة لديها لا يوجدAPI(نمط الجسر)

عدد كبير من المنصات الحقيقية لا سفينة RESTAPIعلى الإطلاق، نظام إدارة الفندق، نظام الفواتير القديم، أداة داخلية للحديث، ما زال بإمكانك كتابةOpsIQموصل لواحد: يركب الموصل ملفاً واحداً من شرطة (فايف بي) أن المشغّل يسقط في وعاءه العام، وهذا الملف هوAPI- هذه الصفحة هي النمط الكامل، مع القواعد التي تجعل من الآمن تشغيل والسبب وراء كل قاعدة.

شكله

موصل طبيعي ينادي شخص آخرAPIلا شيء آخر يتغير: نفس الإجراءات، ونفس مقدمي السياق، وذات العقد المتعلق بالهوية، والمجموعة ذاتها.

1
أنت تكتب ملف شرطة

It lives in your package at bridge/opsiq-<platform>-bridge.php. It talks to the platform's database directly, or boots the platform's framework, or both. It answers JSON.

2
المشغل ينسخها في ويتوهم

بجانب الرقم القياسي الخاص بالمنصات لا يوجد شفرة للمنبر يتم تعديلها ولا تم تركيب البولوجين ولا شيء للاستمرار في تحديثات المنصات

3
لوحة الموصلات تُسلّمهم الملف

أماكنكjsonيُعلن (ويبوك) أنّه مُساعدة في التأريخ، الصفحة الموصلية تجعلها ملفاً قابلاً للنسخ مع بيئاتهم الحيّة التي تم استبدالها بالفعل، لذا لا يوجد شيء لتحريرها يدوياً

4
OpsIQيسميها خادم إلى خادم

عميلك أرسل طلبات جي تي مع المفتاح المشترك في اكسOpsiq-رأس (بريدج كي)، القاعدةURLتحديد موقع المنصّة.

يستطيع بنّاء الوصلة توليد هذا من أجلك الآن. اختار "المنصة بدون. API" profile (or set data access to bridge) وسوف يصدر ملف الجسر، وقطعة اللوحة المطابقة والإجراءات المطبوعة التي تقرأ وتكتب من خلاله - لـ. Laravel تطبيق قراءة.env، لـ WordPress wp-config.php، أو مع التفويضات التي تلصق في أي شيء آخر. OpsIQ بروتوكول الجسر: الموصل يولد بصورة مأمونة api_key عندما يُمكن، يرسله كما X-Opsiq-Bridge-Keyوربط نفس القيمة المنقذة OPSIQ_BRIDGE_KEY في الملف المطبعي، الكاتب اليدوي فقط عندما يكون منصك ليس من تلك أو عندما تحتاج إلى سلوك لا يغطيه الجسر المولد
💡
كل شيء على هذه الصفحة يظهر في قسم الشرطة المدنية ضدMySQLلأن هذا هو التنفيذ المرجعي والجمعة الوحيدة التي يدعمها خط التغليف دعما كاملا، النمط نفسه هو تشخيص اللغة والمحركات - الصوتية: انظر "الجسر بلغات أخرى وقواعد بيانات أخرى" للبوابة في نود وبايتون وجو وروبي ونيت وجافا، الاستفسار عن التفتيشPostgreSQL, SQL(سيرفر)SQLiteو(أوراكل)MongoDBما يعادل ذلك - إلى جانب قيود التغليف التي تقرر كيف يصل جسر غير تابع للبنك الهرميني إلى المشغل.

النموذج الأمني، ولماذا كل قاعدة موجودة

هذا الملف يجلس في مدخل عام خلف مفتاح مشترك، تلك الحقيقة الوحيدة تقود كل قاعدة أسفله لا تسترخي أيّاً منهم لجعل جسرك أبسط.

المتصل لا يزود أبداًSQL

ليس بنداً في (هيري) وليس جهازاً بالتجزئة، ولا مُسعف "فقط هذه المرّة"، يسمي المُتصل طاولة وعمود وقيمة؛ فملفك يبني البيان.SQLالنص، مفتاح واحد مشترك يصبح إعداماً تعسفياً لقاعدة البيانات.

الجدول وأسماء الأعمدة مصدق عليها من المعلومات - شيما

ولا يمكن أن تكون محددات الهوية مُقيدة كبارامترات، بحيث يتعين فحصها بدلا من ذلك، وقراءة الجدول الحقيقي والقائمة العمودية لهذه القاعدة ورفض أي شيء ليس عليها، كما أن تحديد هوية لا يعتبر موضوعا حقيقيا لهذا الكيمياء لا يمكنه التوصل إلى استفسار على الإطلاق - وهو ما يجعله من الآمن كشف كل طاولة.

كل قيمة هي بارامتر مربوط

بدون استثناء، بما في ذلك القيم داخل البحث، المُحدّدات المقيّمة بالإضافة إلى القيم المُلزَمة هي الزوج الذي يجعل الطبق السطحي و نِل سطح الحقن.

القراءة عالمية، الكتابة مسموح بها

انظر إلى المبنى التالي، هذه هي القاعدة التي يريد الناس أن يتخطىوها

الأعمدة السرية تُعاد صياغتها على النحو التالي: ويرفض الكتابة

تطابق على العمود: كلمة السر، تذكروا...

تُحذف من فئة واحدة، حسب المفتاح الرئيسي

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

القراء مُصفّاة

شبك البارامترات الحدية بسقف صلب لا بد أن يكون هناك أي استفسار عن طريق الهروب من قاعدة البيانات عبر رسالة دردشة

فشل مغلق حتى يتم تحديد المفتاح

جسر غير مثقوب يجيب403الجسر الذي يساعده قبل أن يتم تشكيله هو جسر كان مفيداً لشخص غريب

مقارنة رئيسية في الوقت الراهن، مفتاح في رأس

لا شيء، لا أحد سيدخل المفتاحOpsiq(بريدج كي)، ليس خيط الإستفسار، لذا يبقى بعيداً عن سجلات الدخول، وسجلات الاختبار، ومرشدي المرافعات.

ابدأ

طريقة واحدة، شكل واحد، لا شيء لتهريب جثة كل ما يفعله الجسر مُعبر عنه كجي تيOpsIQهو المتصل الوحيد.

قراءة عالمية، كتابات تسمح بالتسجيل في القائمة - ولماذا

وهذه هي القاعدة التي تُحتج بها، وهنا تكمن في المنطق الكامل، وينبغي أن يكون المساعد قادرا على رؤية المنبر بأكمله: وهذا ما يجعله مفيداً، ولا يمكن للقراءة أن تدمر أي شيء، فالطقوس تختلف عن ذلك، ويجلس هذا الملف في مكان عام يُفتح خلف مفتاح مشترك واحد، وإذا كان هذا التسرب الرئيسي، فإن سطح الكتابة غير المقيدة يجعل من التسرب المكافئ للسيطرة الكاملة على قاعدة البيانات - وهو مستعمل جديد لا يسمح بتسريب.

⚠️
TheOpsIQبطاقة الموافقة على المُفتاح، وليس المفتاح، فالاسمين نقر الجائزة في عمل مدمر هو السيطرة على المساعد، ولا يتحكم في من يحمل مفتاح الجسر، بل هما تهديدان مختلفان، والقائمة المسموح بها هي الإجابة على السؤال الثاني.
المقبض الموجه نحو المشغِّل، من الجسر Botble
/* ── WRITE ALLOW-LIST — which tables the assistant may CHANGE here.
 *
 * READS are unrestricted: the assistant can see every table in the platform.
 * WRITES are limited to this list, because this file sits in a PUBLIC webroot
 * behind ONE shared key — an allow-list means that even a leaked key cannot
 * reach a table you never enabled (no new admin users, no emptied bookings).
 *
 * Comma-separated table names. Add tables as you need them — e.g. append
 * ',pages,posts' to let the assistant edit site content. Set it to '*' to
 * allow every table, deliberately. Empty falls back to the hotel defaults. ── */
const OPSIQ_WRITE_TABLES = 'ht_bookings,ht_booking_rooms,ht_booking_addresses,ht_rooms,ht_room_types,ht_customers,customers';

من السهل أن تسوء تفاصيل الشيك التالي، فالاسم الذي يُرسل إلى طاولة الـ (ريدولوفد) يحمل مُسبقاً على الطاولة في إنستل بينما يقوم المشغل بكتابة القائمة المسموح بها غير ثابتة لأن هذا ما قد يطبعونه طبيعياً، ومقارنة بين كلا الطريقين أو التركيب المُثبت بشكل صامت، ولا يسمح الرفض بتوضيح النافذة

التحقق من القائمة المسموح بها، حرفياً من السوق - الوصلات/القلعة/البريدجopsiq-بوتبل بيرج
/** Tables a WRITE may touch. Empty = the built-in defaults. */
$writeAllowed = static function (string $table) use ($prefix): bool {
    $raw = trim((string)(defined('OPSIQ_WRITE_TABLES') ? OPSIQ_WRITE_TABLES : ''));
    if ($raw === '') $raw = 'ht_bookings,ht_booking_rooms,ht_rooms,ht_customers,customers';
    if (trim($raw) === '*') return true;                     // explicit opt-in to everything
    $bare = ($prefix !== '' && stripos($table, $prefix) === 0) ? substr($table, strlen($prefix)) : $table;
    foreach (explode(',', $raw) as $t) {
        $t = trim($t);
        if ($t === '') continue;
        if (strcasecmp($t, $table) === 0) return true;
        if (strcasecmp($t, $bare)  === 0) return true;
        if ($prefix !== '' && strcasecmp($prefix . $t, $table) === 0) return true;
    }
    return false;
};

/** One refusal, one explanation — used by every write op. */
$requireWritable = static function (string $table) use ($writeAllowed): void {
    if ($writeAllowed($table)) return;
    opsiq_bridge_out(['success' => false, 'error' =>
        'write_not_allowed: "' . $table . '" is not in this bridge\'s write allow-list. '
        . 'Reads are unrestricted. To permit writes here, add the table to OPSIQ_WRITE_TABLES '
        . 'in opsiq-botble-bridge.php (or set it to "*" to allow every table).'], 403);
};

البوابة، بالكامل

أربعة شيكات، في هذا الترتيب قبل أن يلمس أي شيء البيانات

البوابة الأربعة تدقق، حسب الترتيب
<?php
declare(strict_types=1);

/* ── EDIT THIS: a long random secret (40+ chars). Empty = bridge OFF. ── */
const OPSIQ_BRIDGE_KEY = '';

header('Content-Type: application/json; charset=utf-8');
header('Cache-Control: no-store');

function opsiq_bridge_out(array $payload, int $code = 200): void
{
    http_response_code($code);
    echo json_encode($payload, JSON_UNESCAPED_SLASHES);
    exit;
}

/* 1. Fail closed. An unconfigured bridge answers nothing to anyone. */
if (OPSIQ_BRIDGE_KEY === '' || strlen(OPSIQ_BRIDGE_KEY) < 24) {
    opsiq_bridge_out(['success' => false, 'error' => 'bridge_not_configured'], 403);
}
/* 2. One method. */
if (strtoupper((string)($_SERVER['REQUEST_METHOD'] ?? '')) !== 'GET') {
    opsiq_bridge_out(['success' => false, 'error' => 'method_not_allowed'], 405);
}
/* 3. Constant-time key comparison, key from a header (never the query string). */
$given = (string)($_SERVER['HTTP_X_OPSIQ_BRIDGE_KEY'] ?? '');
if ($given === '' || !hash_equals(OPSIQ_BRIDGE_KEY, $given)) {
    opsiq_bridge_out(['success' => false, 'error' => 'forbidden'], 403);
}
/* 4. Only now read credentials and connect. */

التحقق من هوية المُحدِّدات ضد المعلومات

هذه القطعة التي تحول "المساعد يمكنه الوصول إلى أي طاولة" من التهور إلى الأمان حل اسم طاولة المتصل على الكيميائي الحقيقي

التحقق من هوية الجهة المرسلة وتحريرها، حرفيا من الجسر Botble
/** Real tables in THIS database — the allow-list, straight from the DB. */
$allTables = static function () use ($pdo, $db): array {
    static $cache = null;
    if ($cache !== null) return $cache;
    $st = $pdo->prepare('SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = ? ORDER BY TABLE_NAME');
    $st->execute([$db]);
    return $cache = array_map('strval', $st->fetchAll(PDO::FETCH_COLUMN));
};

/** Resolve a caller-supplied table name to a REAL one, or null. */
$resolveTable = static function (string $name) use ($allTables, $prefix): ?string {
    $name = trim($name);
    if ($name === '' || !preg_match('/^[A-Za-z0-9_]+$/', $name)) return null;
    $tables = $allTables();
    foreach ($tables as $t) if (strcasecmp($t, $name) === 0) return $t;
    /* Tolerate a missing or extra table prefix. */
    foreach ($tables as $t) {
        if (strcasecmp($t, $prefix . $name) === 0) return $t;
        if ($prefix !== '' && strcasecmp($prefix . $t, $name) === 0) return $t;
    }
    return null;
};

/** Column introspection: table => [column => true]. Cached per request. */
function opsiq_bridge_columns(PDO $pdo, string $db, string $table): array
{
    static $cache = [];
    if (isset($cache[$table])) return $cache[$table];
    $stmt = $pdo->prepare('SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ?');
    $stmt->execute([$db, $table]);
    $cols = [];
    foreach ($stmt->fetchAll(PDO::FETCH_COLUMN) as $c) $cols[strtolower((string)$c)] = true;
    return $cache[$table] = $cols;
}

/** Columns whose VALUES must never leave the platform. */
$secretCol = static function (string $c): bool {
    return (bool)preg_match('/(^|_)(password|remember_token|secret|api_key|private_key|salt|token)($|_)/i', $c);
};
/** Columns a write may never touch — auth material. */
$writeBanned = static function (string $c): bool {
    return (bool)preg_match('/(^|_)(password|remember_token)($|_)/i', $c);
};
/** Strip secret values from a row before it leaves the server. */
$redact = static function (array $row) use ($secretCol): array {
    foreach ($row as $k => $v) if ($secretCol((string)$k)) $row[$k] = '[redacted]';
    return $row;
};

قراءة وكتابة عمل، اكتمل

ملاحظة ما هو مقيد وما يُثبت، ويُفحص عمود التصفية على قائمة الأعمدة الحقيقية ثم يتم قراءته كمحدد؛ وقيمة هذا الرقم مقيّدة، وتُعاد صياغة الحدود في طريق الخروج منها، ويرفض تحديثها المفتاح الرئيسي وأي عمود آخر، ويحدث الطوابع عند الجدول.

اقرأ أي جدول - محددات هوية مصدق عليها، قيم محايدة، صفوف مجهزة
case 'query': {
    $t = $resolveTable((string)($_GET['table'] ?? ''));
    if ($t === null) opsiq_bridge_out(['success' => false, 'error' => 'unknown_table'], 404);
    $cols = opsiq_bridge_columns($pdo, $db, $t);
    if (!$cols) opsiq_bridge_out(['success' => false, 'error' => 'unknown_table'], 404);

    $sql = "SELECT * FROM `$t` WHERE 1=1";
    $args = [];

    /* Equality filter: column must be REAL, value is bound. */
    $wc = strtolower(trim((string)($_GET['where_column'] ?? '')));
    if ($wc !== '') {
        if (!isset($cols[$wc])) opsiq_bridge_out(['success' => false, 'error' => 'unknown_column: ' . $wc], 400);
        $sql .= " AND `$wc` = ?";
        $args[] = (string)($_GET['where_value'] ?? '');
    }
    /* Ordering: column validated, direction from a fixed pair. */
    $ob = strtolower(trim((string)($_GET['order_by'] ?? '')));
    if ($ob !== '' && isset($cols[$ob])) {
        $dir = strtoupper(trim((string)($_GET['order'] ?? 'DESC'))) === 'ASC' ? 'ASC' : 'DESC';
        $sql .= " ORDER BY `$ob` $dir";
    } elseif (isset($cols['id'])) {
        $sql .= " ORDER BY `id` DESC";
    }
    /* Hard row cap. */
    $lim = (int)($_GET['limit'] ?? 25);
    if ($lim < 1)   $lim = 25;
    if ($lim > 200) $lim = 200;
    $off = max(0, (int)($_GET['offset'] ?? 0));
    $sql .= " LIMIT $lim OFFSET $off";

    $st = $pdo->prepare($sql);
    $st->execute($args);
    $rows = array_map($redact, $st->fetchAll());
    opsiq_bridge_out(['success' => true, 'data' => [
        'table' => $t, 'returned' => count($rows), 'rows' => $rows,
    ]]);
}
كتابة صف واحد - جدول مسموع، رفض الأعمدة في الطاولات، الصف الواحد حسب المفتاح الرئيسي
case 'record.update': {
    $t = $resolveTable((string)($_GET['table'] ?? ''));
    if ($t === null) opsiq_bridge_out(['success' => false, 'error' => 'unknown_table'], 404);
    $requireWritable($t);                       // the allow-list, before anything else
    $cols = opsiq_bridge_columns($pdo, $db, $t);
    $pk   = $primaryKey($t);
    $id   = (string)($_GET['id'] ?? '');
    if ($id === '') opsiq_bridge_out(['success' => false, 'error' => 'id_required'], 400);

    $set = json_decode((string)($_GET['set'] ?? ''), true);
    if (!is_array($set) || !$set) opsiq_bridge_out(['success' => false, 'error' => 'set_json_required'], 400);

    $frag = []; $args = [];
    foreach ($set as $col => $val) {
        $col = strtolower(trim((string)$col));
        if (!isset($cols[$col]))  opsiq_bridge_out(['success' => false, 'error' => 'unknown_column: ' . $col], 400);
        if ($writeBanned($col))   opsiq_bridge_out(['success' => false, 'error' => 'refused: "' . $col . '" is auth material - change it through the platform own password flow, never by direct write.'], 400);
        if ($col === $pk)         opsiq_bridge_out(['success' => false, 'error' => 'refused: the primary key cannot be rewritten.'], 400);
        if (is_array($val) || is_object($val)) $val = json_encode($val, JSON_UNESCAPED_SLASHES);
        $frag[] = "`$col` = ?";
        $args[] = ($val === null) ? null : (string)$val;
    }
    if (isset($cols['updated_at']) && !isset($set['updated_at'])) $frag[] = '`updated_at` = NOW()';

    $before = $pdo->prepare("SELECT * FROM `$t` WHERE `$pk` = ? LIMIT 1");
    $before->execute([$id]);
    $prev = $before->fetch();
    if (!$prev) opsiq_bridge_out(['success' => false, 'error' => 'not_found'], 404);

    $args[] = $id;
    $up = $pdo->prepare("UPDATE `$t` SET " . implode(', ', $frag) . " WHERE `$pk` = ? LIMIT 1");
    $up->execute($args);
    opsiq_bridge_out(['success' => true, 'data' => [
        'table' => $t, 'id' => $id, 'changed' => $up->rowCount(),
        'before' => $redact(array_intersect_key($prev, $set)),
    ]]);
}

الفروق الكيماوية الباقية

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

تسامح المخطط، من الجسر Botble
/* Only ever select columns that exist on THIS install. */
$pick = static function (array $cols, array $wanted, string $alias = 'b'): string {
    $out = [];
    foreach ($wanted as $c) if (isset($cols[$c])) $out[] = "`$alias`.`$c`";
    return $out ? implode(', ', $out) : "`$alias`.*";
};

/* References vary: stored with or without a leading "#", with or without an
 * operator-configured alpha prefix, or only as a numeric id. Try every
 * plausible form — the PROOF match is what actually gates disclosure, so
 * tolerant matching here is safe. */
$refCandidates = [$ref, '#' . $ref];
$digitsOnly = preg_replace('/\D+/', '', $ref);
if ($digitsOnly !== '' && $digitsOnly !== $ref) {
    $refCandidates[] = $digitsOnly;
    $refCandidates[] = '#' . $digitsOnly;
}
$refCandidates = array_values(array_unique($refCandidates));
💡
أعطِ جسرَكَ لمحةً عن التقارير التي تُصدر وحدة التفتيش فقط - أيّ جداول حلّت، الذي يعمد الجدول الرئيسي، وجهاز SHAPE من أحدث مرجع مع كل رقم مخفي، هو مُحدّدٌ كشيء آخر، ويحول "البحث لا يجد شيئاً" من تذكرة دعم إلى إجابةٍ 10 ثانية.

أخطاء الزي الرسمي، وفخ العد

شكل واحد لكل شيء

Success is {"success":true,"data":{...}}. Failure is {"success":false,"error":"snake_case_reason"}. Your Client.php and every action then have exactly one response shape to handle.

لا أساس ولا مطابق

وعلى سطح البحث، فإن الإشارة التي لا توجد وإشارة لم يتطابق دليلها يجب أن تنتج رد المنظمة، كما أن إجابات مختلفة تحول جسرك إلى أوراكة تؤكد ما هي الإشارات الحقيقية، وهي تصدير أحراري من قائمة الزبائن لأي مريض.

لا تسرّب أبداً سبب الزيارة

الجسر يمكن أن يكون دقيقا معOpsIQ- ما يصل إلى الزائر يقررهOpsIQفي رفض واحد ثابت

الملف القابل للنسخ في لوحة الاتصال

المشغل لا يفتح مستودعك أبداً إنهم يفتحون لوحة الموصل فيOpsIQونسخة صحافية، تلك النسخة تأتي من الأماكنjsonويجب أن يكون نفس البرنامج مثل جسر/*.

أماكن.json- مدخل اللوحة لموصل الجسر
{
  "settings": [
    { "key": "base_url", "label": "API base URL", "type": "text", "required": true },
    { "key": "api_key",  "label": "Bridge key",   "type": "password", "required": true,
      "autogenerate": true,
      "help": "Auto-generated the moment you enable the connector. It must match OPSIQ_BRIDGE_KEY inside the bridge file; the copyable file below already carries this value once saved." }
  ],
  "webhook_help": {
    "title": "One file, three surfaces",
    "body": "This platform has no public REST API, so this ONE file IS the API. Copy it into the site PUBLIC webroot, keeping the filename.",
    "snippet_filename": "opsiq-yourplatform-bridge.php   (drop next to the site index.php)",
    "snippet_template": "<?php\n/* ... the whole bridge file ... */\nconst OPSIQ_BRIDGE_KEY = \u0027{{setting:api_key}}\u0027;\n..."
  },
  "snippet_bindings": [
    { "assignment": "OPSIQ_BRIDGE_KEY", "setting": "api_key" }
  ]
}
{{setting:key}} carries live values

The connector panel substitutes {{setting:<key>}} in the snippet with that connector's saved value, so the copied file already contains the operator's generated bridge key and needs no hand-edit. An empty or unsaved setting leaves the token visible, so the operator can see exactly what is still missing.

"الدمى" ينجو من التجدد

قم بتفسير كل مهمة سرية مُولّدة بشكل صريح، أداة المزامنة تعيد بناء نسخة اللوحة من الجسر المشحون ثم تستعيد OPSIQ_BRIDGE_KEY = {{setting:api_key}} بدونه، يمكن للارتقاء أن ينسخ بأمانة ملف الطرد الغير مقصود ويزيل صامتة حامل المفتاح الذي يتم نشره

Other placeholders are substituter-side

بشكل مستقل،{webhook_url}, {webhook_path}, {webhook_secret}, {site_key}, {base_url}و{slug}تم ملئها قبل أن يرى الفريق الدمية

موقع على الشبكة قد يكون غرضاً أو قائمة

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

🚫
ولا تحافظ على الدمية بيد، فملف الجسر ونسخة اللوحة هما نسختان من برنامج واحد، وقد تم رفع مستوى جسره ولم يتم الحصول على نسخة منه، لذا قام أي شخص أعاد تركيب الجسر القديم وفقد كل قدرة جديدة بصمت، ولم يكتشف شيئا: تمت الموافقة عليه، وتمت الموافقة، واجتازت التجارب.
أبق النسختين متطابقتين
# Regenerate every package's panel snippet from its bridge file
php tools/sync_connector_bridge_snippets.php --apply

# Show what would change, without writing
php tools/sync_connector_bridge_snippets.php

Drift is now a failing conformance check, not a support ticket: the verifier compares the two line by line (ignoring the {{setting:...}} placeholders, which are supposed to differ) and names the first line that differs. Run the sync tool as the last step before every release, right before signing.

ما يجب أن يكشفه الجسر

عمليات مُتَزَعَة وسطح بيانات عالمي معاً، حيث يُعاد المُشكّلون إلى المستوى الذي يُعدّون فيه أجوبة عن الأسئلة التي يسألونها فعلاً؛ فالأشخاص العالميون يغطيون كل شيء آخر حتى لا يُعلق المساعد أبداً.

قرائات مُشَحَّلة

stats, the main object list with filters, one object with its related rows, The catalogue of what is sold, client search with history.

كتب مُشابهة

فالدولتان أو الثلاث تغيرات في هذا الشأن - وضع حد، إلغاء، والاحتفاظ بالقيم المقبولة المسموح بها.

التجارة المصنّفة

من أجل منصة قابلة للبيع، كشفت المدونات التي تُبنى لأغراض معينة، و اقتباساً، وفحصاً/أو تنبيهاً وعمليات تقديم مدفوعات، ثم رسم خرائط لها في commerce_roles.json مع transport: bridgeلا ترسم أبداً أيّة تجارة تُكتب دور للسجل العالمي.

الاكتشاف العالمي

(بدون عدّات) ووصف (اللجوء، الأنواع، المفتاح الرئيسي، بالإضافة إلى الأعلام القابلة للقراءة والمؤلفة لكل عمود)، وهكذا يتعلم المساعد منصة لم تتوقعها.

القراءة والكتابة على الصعيد العالمي

الاستفسارات، السجل، الرقم القياسي، التسجيل، التحديث، التسجيل.

الهوية، قبل البوابة الرئيسية

"مُراقبة الهوية تُدعى من قبل (إدمين)" "المكتب، نفس المُنشأة، لذا لا يمكنهم إرسال رئيس مُعتاد."

التشخيص

op=diag, structure only, masked.

خريطة دور التجارة في جسر بريدج
{
  "commerce": {
    "roles": {
      "catalog_search": {"operation":"hotel_catalog_search","transport":"bridge"},
      "quote":          {"operation":"hotel_quote","transport":"bridge"},
      "order_create":   {"operation":"hotel_order_create","transport":"bridge",
                           "recovery":"hotel_order_get"},
      "order_get":      {"operation":"hotel_order_get","transport":"bridge"},
      "record_payment": {"operation":"hotel_record_payment","transport":"bridge",
                           "recovery":"hotel_order_get"}
    },
    "customer_ordering": {
      "enabled":true, "version":1, "mode":"direct_order",
      "audience":"guests_and_clients", "account_flow":"guest_checkout",
      "payment_flow":"opsiq_gateway"
    }
  }
}
💡
الدور الخفي يتحكم في التسلسل و السلطة عملية الجسور تحتفظ بحمولة المنصات الخاصةWHMCSقد يتطلب عميلاً قائماً أو موصلاً، ومنصة "سا إس" قد تحتاج إلى دورة فواتير، لأنّه لا يشق تلك الحقول أبداً.
⚠️
record_payment ليس طريقاً مختصراً مدفوعاً بالعلامات، لا تقبل سوى أدلة مقدّم الخدمات المُحدّدة: أوامر دقيقة، تجار، كمية، عملة المنظمة الدولية للتوحيد القياسي، مرجعي للمقدّم، وزمن جديد مُحقّق ومفتاح الإيدياف.APIثم ارجعوا أمراً رسمياً أو فواتيرهم إلى الوراء، ويجب أن تُجرى نتيجة غير معروفة للانتعاش قبل أي إعادة.
💡
لا يحتاج موصل فقط للتسجيل على الإطلاق إذا كان منبرك يجيب على الأسئلة، سيشحن جسراً بدون كتابة و كل فئة من مخاطر الكتابة تختفي

قائمة مرجعية قبل أن تشحن جسراً

الجسر يرفض كل شيء بدون مفتاح

اختبره، اعيد تسمية الثالوث ليفرغ وتأكد من كل إجابات403.

مفتاح خاطئ يُرفض في وقت ثابت

و المفتاح يقرأ من المُدير فقط

رفض اسم طاولة مُعدّة

واسم طاولة حقيقي مع فريسة خاطئة ما زال يُحل

عمود كلمة السر لا يظهر أبداً في قراءة

وكتابة تقول أن الاسماء التي رفضها أحد مع تفسير

يُرفض الكتابة إلى طاولة خارج القائمة المسموح بها

مع الرسالة التي تخبر المشغل كيف يوسعها

قنبلة اللوح تطابق ملف الجسر

أدوات/سيك php - الوصلات... ...الرقائق...

إعادة تركيب الموصل لا يكفي

إذا كانت حزمتك تُرسل ملفاً للجسر، فإن مشغلاً يُرفع الموصل يجب أن يعيد نشر ذلك الملف في وعاءهم.

الموصلات

تُفجر إطار المنصّة الخاص من جسر

الجسر الذي يقرأ فقط يمكنه التحدث SQLالجسر الذي ينشر الأشياء على المنصة (أمر، حجز، فواتير مدفوعة الأجر) يجب أن يمر عبر طبقة تطبيقية منصة المنصه الخاصّة، وينتشر في تلك الطبعة بلا رأس حيث يعيش كل فشل بسيط في هذا النمط وكل شيء تحته كان متعلّماً بالطريقة الصعبة للتكامل الحيّي

الصف في قاعدة البيانات ليس أمراً

"الإنعاشات الراقصة" تخلق سجلاً للظل

يظهر الصف، ويورده (إدمين) ولا يزال غير مسجل أن المنبر يعتقد أنه أنشأ: لا رقم مرجعي أصلي، أو خطاف نموذجية، أو أحداث، أو فواتير، أو بريد إلكتروني للزبون، أو أي وصلة عمل لربط العملاء، ويقتبس من إشارة لم يصدرها أبدا للموظفين الذين لا يستطيعون العثور عليها، ويخلقون عبر خدمة المنصة الخاصة، إذا كان يعرض فقط خدمة ما بعد الدفع،

لا تُعيد أبداً إعادة تشغيل نظام ترقية المنصّة

وعينتان من نموذج مرجعي يجعلان من السهل استنساخها، وتكرارها هو نفس مستوى الظل في أسفله: اليوم الذي يغير فيه المنبر مخططه، وكل واحد من سجلاتكم خاطئ ولا شيء يحذركم.

الأعمدة المنصّة تُبقي معاني المنبر

قبل أن تخزني أي شيء في عمود منصة، ابحثي عن كل قارئ، العمود المسمّى مثل فتحة مجانية يمكن أن يكون محشواً: transaction_id اتضح أن الزبون الذي أرسل بريداً إلكترونياً "استعراض حجزك" يُحلّ من خلال... idempotency_keyهو حارس إعادة اللعب، القيد يرفض التوأم المتزامن، وجهاز البحث عن التعافي يقرأ نفس الطاولة التي كتبها: MySQL DDL commits an open transaction implicitly.

المناسبات والمستمعين وفخ البريد المزدوج

اقرأ مصدر الخدمة قبل إرسال أحداثها

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

يخفي (الناموس) الحقيقة، ويخبرهم (روليس)

Laravel يغلف المستمعين من الفئة في الإغلاقات، لذلك getListeners () تقارير [email protected] getRawListeners () تسمي الفئات الفعلية. لا ترسل أبداً حدثاً لا تستطيع تسمية المستمعين له.

هل يجب أن لا يعني "الهرب لاحقا"

مع كواي سينك (الفشل في الكثير من تركيبات الإنتاج) المستمع المستذئب يدير المعهد الوطني للإحصاء في طلبك للجسر، سياق حذائك هو السياق الذي يجعله: URL عيب في أرض حذائك في صندوق الزبون تحقق من الوصية قبل التفكير في مكان أي شيءfailed_jobs قبل أن نفترض أن عامل كان متورطاً

الحراس يتراجعون مع الولاية الخاصة بالمنصة

الخدمة التي ترسل بدون شروط يجب أن تسمى بالضبط مرة واحدة، العلامة التي لا يمكن ان تنحرف هي حالة المنصات الخاصة (فقط في حين أن السجل ما زال معلقا)، وليس علمك المتوازي "الموافقة" الذي يمكنه أن يخالفها.

الأحذية التي لا تُسمعها الرأس ليست حذاء على الشبكة

سجل ما يسجله الأحذية على الشبكة

Template variables, module settings, filter hooks: platform service providers often register them only on a web request. On the reference integration the email handler substitutes only REGISTERED variables: every value was set correctly and the customer's confirmation still rendered with empty name, phone and link, no error anywhere, because registration lives in a runtime registry the headless boot never filled. Find the platform's registration call (for Botble: EmailHandler::addTemplateSettings with the module's email config) and make it in your boot, exactly as the platform's own provider does.

النحل في كل مكانURLالجذر، ليس فقط الموصل

الطلب المقبوض عليه يشير إلى نص الجسر الخاص بك url(د) وتوليد الأصول site.com/عام/opsiq- بريدج/مراقبة/توكين: صلة عملاء من خلال JSON نقطة نهاية، قوة روت أورل (الرقابة)url"يصلح المولد، قرص (ستارج) لديه جذوره الخاصة، لذا فإنّ الشعار البريدي سيبقى مُحطماً حتى تُفكك الملفات.url تم تحديده أيضاً (يُحلّ بشكل سلس، لذا وضعه في أشغال الأحذية، وفقط عندما يكون فارغاً أو مطابقاً للكتاب: URL ليس لك لتجاوز.

ابدأ قبل أن تسلم

خدمات المنصه تقرأ من خلال اتصالهم الخاص ولا يمكن أن ترى صفقتك المفتوحة، تم استدعاؤها قبل الإرتكاب، و خدمة الدفع بعد الدفع لا تُنجز،

قواعد الشرف

لا تساقط في الظل

وإذا كان الطريق الأصلي غير قابل للتواصل، فرفض بخطأ يمكن إعادة النظر فيه أي تحركات مالية، ولم تخترع مرجعاً أبداً، ولم يسبق لها أن اكتملت حالة لجعل سجل نصف متكامل needs_attention: المال حقيقي، الدولة مدفوعة بصدق، لم يتم تجهيزها بعد

الحقائق التقريرية، وليس إعلانك

"الخدمة ركض" و "الموكلة قيل لها" هي وقائع مختلفة: الإدماج المرجعي شحن رسالة إلكترونية كاملة مع كل حقل فارغ بينما قال المضرب الصحيح platform_notified الذي يُجبر OpsIQ (ب) تأكيد التراجع عندما لا يجهز المنبر، ولا يطالب أبداً بالتوصيل: فالصندوق غير قابل للملاحظة من خادم.

القياس، ثم الكتابة

السفينة: وجود الصف، وتوقيعات الطريقة، وشريحة المصدر من الأساليب التي تنوين الاتصال بها، والمستمعين الخام، والسائق الذي يُطرح على السؤال (عندما يمكن الإجابة عن سؤال بدعوته وظيفة غير مؤذية) المكالمة الحية نفسها.() وقد توفيت خمس نظريات بشأن بريد إلكتروني هولوي واحد مقابل القياسات قبل أن يسوّيها المصدر، ويكلّف المسبار نسخة ملفية؛ ويكتب خطأ عن برنامج حي

الموصلات

الجسر باللغات الأخرى وقواعد البيانات الأخرى

إن نمط الجسر ليس نمطاً للضغط الرئويOpsIQالإتصالات هي نقطة نهاية لـ (هاتف) لذا يمكن أن يكون الملف (نود)، (بيتون)، (جو)، (روبي)، (نيت) أو (جافا)SQLمحرك أو محركMongoDBما هو شكل PHP هو خط التغليف، وهذا القيد يقرر كيف يصل جسرك إلى المشغل، اقرأ قسم التسليم أولا: إنه الجزء الذي يفاجئ الناس.

ما يتطلبه الموصل في الواقع

هذا هو العقد كله لا يوجد فيه اسم لغة

نقل

جهاز تحديد المواقع، طلب واحد من نوع جي تي لكل مكالمة لا يوجد جسم ولا طريقة أخرى

المصادقة

سر مشترك في X-Opsiq-Bridge-Key طلب رئيس، مقارنة بالزمن الثابت ليس مُباراة إستفسار، وليس كوكي، وليس بمثل الفم الأساسي

البارامترات

سلسلة القرود. op اسماء السطح do اسماء العملية، والبقية هي حجج تلك العملية.

الرد

JSON_. {"success":true,"data":{...}} أو {"success":false,"error":"snake_case_reason"}تطبيق المحتوى/الرقابةjsonو لا يوجد مخبأ

رموز المركز

200على النجاح.403مفتاح غير مثق به أو خاطئ404لم يعثروا عليه405طريقة خاطئة400حجة سيئة،501غير مدعمة على هذا الكيماوي

هذا كل شيء

لا إطار، لا وقت للهربOpsIQمكتبة على جانبك، إذا كان يمكن أن تخدم ذلك، فإنه يمكن أن يكون جسرا.

التسليم: ما قد يعيش في الجسر/، وما يجب ألاّ يُذكر

وتشمل المجموعة الموقعة قائمة ثابتة من تمديدات الملفات، وملفا خارج تلك القائمة يُترك خارج نطاق البرنامج، ولذلك فإن جسرا بلغة لا تغطيها القائمة لا يمكن أن يشحن داخل الطرد - ولكنه لم يعد يمكنه أن يختفي أيضا.26آب/أغسطس2026ملف bridge/ أن الرزمة ستسقط فشل تطابقي صعب لذا فإن الطرد يرفض المرور بدلاً من التمثيل بدون جسر

كيفية معالجة الجسر/الملف في وقت البناء
bridge/bridge.php     ->  SHIPPED, and drift-checked against the panel snippet
bridge/server.js      ->  SHIPPED, and drift-checked against the panel snippet
bridge/bridge.py      ->  REFUSED at conformance: "Bridge files are packaged" FAILS
bridge/bridge.rb      ->  REFUSED at conformance
bridge/main.go        ->  REFUSED at conformance
bridge/Bridge.cs      ->  REFUSED at conformance
bridge/Bridge.java    ->  REFUSED at conformance
PHP andJavaScript- دعم كامل

وسفن الملفات في موقع شركة ZIP، وجهاز التحقق من النسيب يحمل نسخة من اللوحة التي تحملها، أياً كان منها، الشيك العائم يقرأ كل ملف في الجسر/وليس فقط الملف الخاص بشركة PHP، لذا فإن جسراً متطوراً مع نسخة من لوحة المبيعات لا يُمكن البناء بأي لغة.

كل شيء آخر - تسليم من خلال اللوحة فقط

إنّ قنبلة اللوحة عبارة واضحة لا تعرف أي لغة تحملها، لذا فهي تعمل لأيّ كومة، و ضع البرنامج بأكمله في موقع (ويك)

إذا كنت بحاجة حقا إلى لغة أخرى في الطرد

Widen PackageSigner::EXTENSIONS deliberately, then re-sign and re-seed. That is a decision about what executable code Nabtech distributes, so make it on purpose — do not discover it from a missing file.

💡
اسم الملف webhook_help.snippet_filename عندما تشحنين أكثر من جسر واحد هكذا يعرف المتحقق أيّ جسر ينتمي إليه أحد أعضاء الفريق، وبدونه يتم الإبلاغ عن خلط غامض كتحذير مطابق
⚠️
النقطة التي يُستدل منها أن ملف الجسر ونسخة الفريق منه هما نسختان من برنامج واحد، ويُلغيان الصلاحية وليس تحريراً يدوياً: php tools/sync_connector_bridge_snippets.php --applyثم إعادة تصميم الطرد

البوابة، بست لغات

نفس الشيكات الأربعة في كل مكان: الفشل مغلق بدون مفتاح، طريقة واحدة، مقارنة رئيسية دائمة من الرأس ثم التواصل والفخ الحقيقي الوحيد هو المقارنة، وهو فخ مختلف في كل لغة.

⚠️
بالمقارنة مع SHA-256هذا صحيح في كل لغة و يبتعد عن حقيقة أن العديد من المتجانسات المتتالية500بدلاً من403.
Node. js - the gate
// Node.js — no dependencies
const http = require("http"), crypto = require("crypto"), url = require("url");

const BRIDGE_KEY = process.env.OPSIQ_BRIDGE_KEY || "";   // empty = bridge OFF

const sameKey = (a, b) => {
  const ha = crypto.createHash("sha256").update(String(a)).digest();
  const hb = crypto.createHash("sha256").update(String(b)).digest();
  return crypto.timingSafeEqual(ha, hb);                 // equal lengths, always
};
const out = (res, payload, code = 200) => {
  res.writeHead(code, { "Content-Type": "application/json; charset=utf-8",
                        "Cache-Control": "no-store" });
  res.end(JSON.stringify(payload));
};

http.createServer(async (req, res) => {
  if (BRIDGE_KEY.length < 24)         return out(res, { success: false, error: "bridge_not_configured" }, 403);
  if (req.method !== "GET")           return out(res, { success: false, error: "method_not_allowed" }, 405);
  const given = req.headers["x-opsiq-bridge-key"] || "";
  if (!given || !sameKey(BRIDGE_KEY, given))
                                      return out(res, { success: false, error: "forbidden" }, 403);

  const q = url.parse(req.url, true).query;
  // ... dispatch on q.op / q.do exactly as the PHP bridge does
}).listen(process.env.PORT || 8787);
(بيثون) - البوابة
# Python — Flask
import hashlib, hmac, os
from flask import Flask, request, jsonify

app = Flask(__name__)
BRIDGE_KEY = os.environ.get("OPSIQ_BRIDGE_KEY", "")      # empty = bridge OFF

def same_key(a: str, b: str) -> bool:
    return hmac.compare_digest(
        hashlib.sha256(a.encode()).digest(),
        hashlib.sha256(b.encode()).digest(),
    )

def out(payload, code=200):
    resp = jsonify(payload)
    resp.status_code = code
    resp.headers["Cache-Control"] = "no-store"
    return resp

@app.before_request
def gate():
    if len(BRIDGE_KEY) < 24:
        return out({"success": False, "error": "bridge_not_configured"}, 403)
    if request.method != "GET":
        return out({"success": False, "error": "method_not_allowed"}, 405)
    given = request.headers.get("X-Opsiq-Bridge-Key", "")
    if not given or not same_key(BRIDGE_KEY, given):
        return out({"success": False, "error": "forbidden"}, 403)
إذهبي يا روبي و نيت و جافا نفس المقارنة
// Go
func sameKey(a, b string) bool {
    ha := sha256.Sum256([]byte(a))
    hb := sha256.Sum256([]byte(b))
    return subtle.ConstantTimeCompare(ha[:], hb[:]) == 1
}

func gate(next http.HandlerFunc) http.HandlerFunc {
    return func(w http.ResponseWriter, r *http.Request) {
        w.Header().Set("Content-Type", "application/json; charset=utf-8")
        w.Header().Set("Cache-Control", "no-store")
        key := os.Getenv("OPSIQ_BRIDGE_KEY")
        if len(key) < 24 { out(w, 403, "bridge_not_configured"); return }
        if r.Method != http.MethodGet { out(w, 405, "method_not_allowed"); return }
        given := r.Header.Get("X-Opsiq-Bridge-Key")
        if given == "" || !sameKey(key, given) { out(w, 403, "forbidden"); return }
        next(w, r)
    }
}

// Ruby
def same_key?(a, b)
  OpenSSL.secure_compare(Digest::SHA256.digest(a.to_s), Digest::SHA256.digest(b.to_s))
end

// C# / .NET
static bool SameKey(string a, string b) =>
    CryptographicOperations.FixedTimeEquals(
        SHA256.HashData(Encoding.UTF8.GetBytes(a)),
        SHA256.HashData(Encoding.UTF8.GetBytes(b)));

// Java
static boolean sameKey(String a, String b) throws Exception {
    MessageDigest d = MessageDigest.getInstance("SHA-256");
    return MessageDigest.isEqual(d.digest(a.getBytes(UTF_8)), d.digest(b.getBytes(UTF_8)));
}

التحقق من تحديد هوية كل محرك قاعدة بيانات

ولا تتغير ممتلكات السلامة: يجب أن يفحص الجدول أو العمود الذي يورده المتصل على أساس الكيميائي الحقيقي قبل استقراءه، ويجب أن تكون كل قيمة بارامتر ملزِم، ولا تختلف سوى الاستفسارات عن التفتيش وطابع الاقتباس وشرط الترسيم.

MySQLوMariaDB

الجداول: SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = ?اللومان: نفس ضد information_schema.COLUMNS مع AND TABLE_NAME = ?اسحبوا العصي وضاعفوا أي عود في الداخل LIMIT n OFFSET m.

PostgreSQL

نفس المعلومات... WHERE table_schema = $1 (عادة) public"الذئبة مع اقتباس مزدوج، مضاعفة أي إقتباس مزدوج في الداخل. LIMIT n OFFSET mراقب قاعدة التطوير: مُعدّل تعريف غير مقتبس يُطوي إلى حالة أدنى، لذا مقارنة الحالة بشكل لا يراعي الاعتبارات عندما تسوّين اسماً.

SQLسيرفر

نفس المعلومات - آراء شايما، مع قوسين معقوفين، مضاعفة أيّة أقواس مُغلقة داخلها ORDER BY [id] DESC OFFSET @o ROWS FETCH NEXT @n ROWS ONLY.

SQLite

الجداول: SELECT name FROM sqlite_master WHERE type = 'table' AND name NOT LIKE 'sqlite_%'-اللووم: SELECT name FROM pragma_table_info(?) - استخدام هذا الشكل المقيّم من الجدول، لأن PRAGMA table_info(x) لا يمكن أن تأخذ التصريح مظلة و تدعو إلى تداخل الخيوط هناك بالضبط الثقب الذي تحاول إغلاقه LIMIT n OFFSET m.

أوراكل

الجداول: SELECT TABLE_NAME FROM ALL_TABLES WHERE OWNER = :owner; الأعمدة من ALL_TAB_COLUMNS- تحديد مع اقتباسات مزدوجة، وتذكّر ملفاً غير مقتبس من المعلومات إلى قضية شركة UPPER، عكس ذلكPostgreSQLالصفحة OFFSET :o ROWS FETCH NEXT :n ROWS ONLY في 12ج وبعد ذلك

MongoDB

لاSQLولا يوجد أي الإنتربول أو معايير محددة - انضباط مختلف لتحقيق نفس الهدف انظر أدناه.

استفسار التفتيش لكل محرك
-- MySQL / MariaDB
SELECT TABLE_NAME  FROM information_schema.TABLES  WHERE TABLE_SCHEMA = ?;
SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ?;

-- PostgreSQL
SELECT table_name  FROM information_schema.tables  WHERE table_schema = $1;
SELECT column_name FROM information_schema.columns WHERE table_schema = $1 AND table_name = $2;

-- SQL Server
SELECT TABLE_NAME  FROM INFORMATION_SCHEMA.TABLES  WHERE TABLE_SCHEMA = @schema;
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = @schema AND TABLE_NAME = @table;

-- SQLite
SELECT name FROM sqlite_master WHERE type = 'table' AND name NOT LIKE 'sqlite_%';
SELECT name FROM pragma_table_info(?);

-- Oracle
SELECT TABLE_NAME  FROM ALL_TABLES      WHERE OWNER = :owner;
SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS WHERE OWNER = :owner AND TABLE_NAME = :tbl;
💡
استحلّ، ثم استخدم اسم (الرايفولد) ولا تعبر أبداً عن طريق المتصل حتى بعد التحقق منه

MongoDB: نفس القواعد، بدونSQL

لا يوجد سلاسل إستفهام للحقن لذا يفترض الناس أنه ليس هناك شيء للحراسةJSONمباشرةً find() دع المُتصل يرسل {"$ne": null} أو {"$gt": ""} حيث كنت تتوقع قيمة و تختار كل وثيقة بشكل هادئ

MongoDB- جمع قائمة بالسماح، ومرشيح مجهزة بالقطارات، والتوقعات بمثابة إعادة
// Node + the official driver
const names = (await db.listCollections({}, { nameOnly: true }).toArray()).map(c => c.name);

function resolveCollection(given) {
  if (!/^[A-Za-z0-9_.-]+$/.test(given || "")) return null;
  return names.find(n => n.toLowerCase() === String(given).toLowerCase()) || null;
}

const coll = resolveCollection(q.collection);
if (!coll) return out(res, { success: false, error: "unknown_collection" }, 404);

// Build the filter from a validated field and a SCALAR value. Never spread
// caller JSON into it: {"$ne":null} would match every document.
const filter = {};
if (q.where_field) {
  if (!/^[A-Za-z0-9_.]+$/.test(q.where_field))
    return out(res, { success: false, error: "unknown_field: " + q.where_field }, 400);
  filter[q.where_field] = String(q.where_value ?? "");   // String() is the guard
}

// Projection is the redaction allow-list: drop secrets, never return them.
const projection = { password: 0, remember_token: 0, api_key: 0, secret: 0, token: 0 };

const limit = Math.min(Math.max(parseInt(q.limit ?? "25", 10) || 25, 1), 200);
const rows  = await db.collection(coll)
                      .find(filter, { projection })
                      .limit(limit)
                      .skip(Math.max(0, parseInt(q.offset ?? "0", 10) || 0))
                      .toArray();
أسماء المجموعات تأتي من قائمة البلدان

هذه معلوماتك، حلّي تهجئة المُتصل ضدها و أستخدمي الاسم المُحلّى

قوة كل تصفية قيمة إلى مقبض

"الدفاع الكامل ضد حقن المشغل" وثيقة تتوقع قيمة لها هي مكافئ رقم SQL لخط ضاغط

الإسقاط هو قاعدة التكرار

لا تستبعد الحقول التي على شكل سري في الإسقاط لذا فهي لا تغادر الخادم أبداً، بدلاً من حذفها من النتيجة بعد ذلك.

تحذف البقايا بوثيقة واحدة

لا تحذف (ماني) ولا تفسد أبداً جهاز التصفية الذي كان يتأثر به المُتصل

المراسلات تبقى مسموحاً بالتسجيل

نفس المنطقSQL: اسم المجموعات الكتابة يمكن أن يلمس، ويرفض الباقي مع شرح.

نقطة النهاية للهوية بلغات أخرى

مستكشف الهوية هو النصف الآخر من الجسر، وهو أيضاً شركة HTTP وقائمة التوقيع متطابقة في كل لغة:HMAC- SHA256 أن الخيط، الانضمام إلى نقطة.

لا تكتب هذا من الصفر، فالمحطة تحمل طريقاً جاهزاً لكل لغة في البوابة (مرة واحدة، دقيقة واحدة)، موقعك، الرموز، C. Recognise logged-inز الزبائن يحملون تلقائياً نسخة الدردشة كل لغة (ساعة واحدة زائداً معالج البرودة)
ماذا سيتغير عندما تعيد استخدامها

تلك الدمى تَرْكبُ a ميدّة PORTAL إلىكين، الذي يَصِدقُ عمداً: هو يَحْملُ jti ويَعْرفُ واحد -120ثواني لأنه يسافر فيURL- لا يحمل جسر أو هوية مزيفة أيا من تلك ويستخدم مساحات أطول، دقائق إلى ساعات.

ما يبقى نفسه

الموقع: (أ) ، (كيلي)، (آيات)، (إس تي) و(أف) من أعلى المستويات موثقة، صحيح، بالإضافة إلى شخص حامد أو زبون له اسم مستعار أو بريد إلكتروني.

التحقق من الشكلين المكسورين

ووقعت طائرة من طراز JWT على HS256 تعمل، وكذلك حمولة القاعدة 64url ذات الجزأين زائدا سداسيHMACأن الـ (بي.إتش بي) المرجعيّ، إستخدم أيّاً كانت مكتبات لغتك طبيعية...

لا تلمعها أبداً في مسبح

صحيح في كل لغة، الإشارة إلى جانب العملاء تعني نقل سر الموقع لكل زائر

الإختيار، بأمانة

المنبر هو PHP

اكتب الجسر في قسم الشرطة، إنه يركب في الطرد، ويُمكنه أن يُخرج إطار المنصّة الخاص لقراءة جلسة حية من أجل مُسَاعِب الهوية.

"المنصة هي (نود)"

"سبورج" سفن وعلامات و يتم فحصها تماماً مثل "بي.إتش بي".

الرصيف هو (بيتون)، (روبي) ، إذهبي، (نيت) أو (جافا)

تسليم الدمية إلى هيئة الفريق وقول ذلك في الهيئة؛ ولا تترك الملف في الجسر/حيث سيرفض المطابقة الطرد، والوصل طبيعي تماماً: فالأفعال ومقدمي السياقات والهوية والضيوف تعمل جميعها على نفس المنوال، لأن أياً منهم لا يهتم بما يجيب على نداء حزب العمال التقدمي.

لا يمكنك أن تدير عملية على مضيف المنصة

إذاً نمط الجسر ليس الأداة الصحيحة، يوجد جسر للوصول إلى منصة من داخل مضيفه الخاصAPIموصل ضد أي سطح يكشفه

⚠️
يجب أن تقرأ جلسة تسجيل الدخول للمنبر، وهذا يعني عادةً الركض داخل عملية المنصّة أو على الأقل في مضيفها مع الوصول إلى متجر الدورة.
الموصلات

أعط المساعدين النصف: الإجراءات والسياق

هذا هو الشيء الوحيد الأكثر شيوعاً الذي يفتقده موصل "العمل ولكن عديم الفائدة" ، فالإجراءات تجعل من "آي" يفعل الأشياء

النصفان

الإجراءات - كيف تقوم منظمة العفو الدولية بالأمور

مُعلن في أفعال.jsonأو يعاد بواسطة نظام تسجيل البيانات، ويختار النموذج واحداً، ويملأ بارامتراته،OpsIQتُنفذها، فالإجراءات هي للأفكار: ألغِ هذا الحجز، إفتحي تلك التذكرة، وغيّري هذه الحالة.

الأقسام المُحتضى كيف تعرف (آي آي) الأشياء

"كم عدد الأوامر هذا الشهر" "من هم أحدث زبائني" "ما الذي نبيعه"

⚠️
رمز المُقدّم المفقود: يجيب المساعد على "لا مُمكّن من توصيل هذا القسم" بينما يتم تركيب الموصل، ومُكّن وإختبار الاتصال به، ولا شيء مُسجل، ولا أخطاء.

المفردات العامة

OpsIQعملك هو أن تقرر ما يعنيه كل شخص على منصة و تجيب عليه حجز الفندق هو أمر الفندق

الأوامر/الطلبات المعلقة

مهما كانت الصفقة على منصةكم: الأوامر، الحجز، التحفظات، الوظائف، الشحنات

العملاء

قائمة العملاء

products

ما يبيعه المنبر: المنتجات، الغرف، الخطط، الخدمات.

الفوترة

الإيرادات ومجموعات الأموال المشابهة بالإضافة إلى العد حسب الولاية

تذاكر، خدمات، مجالات، خواديم، نشاط

استخدم هذه عندما يكون لديك منصة الخاص بك حقاً لا تجبر على رسم الخرائط - جزء غير مجيب أفضل من القسم الخطأ.

أي شيء آخر منصة لديك

حرروا مزودكم الذي يعلن الأقسام (العمليات) قد تم دمجها في قائمة البحث العالمية

الخطأ الذي يكلفه يوم

يقوم مقدم الخدمات في السياق بتنفيذ الواجهة، ويفحصها السجل من النوع، بحيث يتم تخطي طبقة لا تتعدى حق نظام المراقبة - دون خطأ في أي مكان.

ContextProvider. php - the contract, from the Botble reference package
use OpsIQ\Platform\ContextProviderInterface;

/* MUST implement ContextProviderInterface: ContextRegistry::collectAll()
 * type-checks it, so a provider that merely LOOKS right is skipped and every
 * section answers "No enabled connector supplied this context section" — the
 * exact symptom, with no error anywhere. */
final class ContextProvider implements ContextProviderInterface
{
    public function slug(): string  { return 'yourplatform_context'; }
    public function label(): string { return 'Your Platform (orders, customers, products)'; }
    public function priority(): int { return 30; }   // lower renders earlier

    /** ADMIN only. The guest surface has its own provider and its own rules. */
    public function surfaces(): array { return ['admin']; }

    /** The universal section names this connector can answer. */
    public function sections(): array
    {
        return ['orders', 'pending_orders', 'clients', 'products', 'billing'];
    }

    public function isAvailable(): bool
    {
        try {
            $s = \OpsIQ\Connectors\ConnectorRegistry::getSettings('yourplatform') ?: [];
            return trim((string)($s['base_url'] ?? '')) !== '' && trim((string)($s['api_key'] ?? '')) !== '';
        } catch (\Throwable $e) {
            return false;
        }
    }

    public function build(array $ctx): string
    {
        $section = strtolower(trim((string)($ctx['section'] ?? '')));
        $limit   = max(3, min(50, (int)($ctx['limit'] ?? 20)));
        $query   = trim((string)($ctx['query'] ?? ''));
        try {
            switch ($section) {
                case 'orders':
                case 'pending_orders': return $this->orders($limit, $query, $section === 'pending_orders');
                case 'clients':        return $this->customers($limit, $query);
                case 'products':       return $this->products($limit);
                case 'billing':        return $this->billing();
            }
        } catch (\Throwable $e) {
            return '';   // a provider must NEVER break prompt assembly
        }
        return '';
    }
}
سجله من الموصل

تنفيذ ContextConnectorInterface وإعادة مقدمي خدماتك من contextProviders (). يمكن أيضاً أن يقوم فئة الموصل بتنفيذ ContekstProviderInterface مباشرة وأن يتم تسجيلها كنفسها.

عودوا للنص السهول، ليسJSON

يبنيون قفل نصي مُكَرَّف في العجلة، ويكتبونه لقارئ: عنوان ثم خط واحد لكل صف.

العودة بدلا من رمي

إلتقط إستثناءاتك الخاصة، مُقدّم الذي يلقي بالسيارة مُسجل و مُختلِق لكن إعادة العقد.

لا يمكن للبناية أن تكتب أجزاء من أجلك

وأجهزة الشحن المولدة من طراز ContextProvider. php للسفن (): صفيفة {إعادة []؛ } والساحر ليس له مجال لذلك، املأه بيده - وتذكر ذلك التكاثر من الساحر أوفرويتس الملف، ونسخت محرراتك أولا.

⚠️
لا يوجد عدد من الصفوف التي أرسلتها20الحجز عندما يمسك المنصه669واحد رخيص وخط واحد واضح "توتال في الملف"669(هذه القائمة تظهر أحدث20فقط " - هو الحل الكامل، والعد الخطأ بشكل واثق أسوأ من لا يحسب.
"مجمّع قسم لا يمكن أن يُساء حسابه"
$lines = ['YOUR PLATFORM — ORDERS (live, newest first)'];
$lines[] = 'TOTAL orders on file: ' . (int)$total
         . ' (this list shows the newest ' . count($rows) . ' only — never count these rows to answer "how many")'
         . ' | by status: ' . $byStatus;
foreach ($rows as $r) {
    $lines[] = '#' . (int)$r['id'] . ' ' . $r['reference'] . ' | ' . $r['status']
             . ' | amount ' . $r['amount'] . ' | ' . substr((string)$r['created_at'], 0, 16);
}
$lines[] = 'Use yourplatform_get_order (order_id) for the full record.';
return implode("\n", $lines);

سمي أعمالكOpsIQيُمْكِنُ أَنْ تُخبرَ القراءة مِنْ الكتاباتِ

OpsIQيصنف عمل من قبل WORDS في عمله - / خطيا، وهو متحفظ عمدا: أي شيء لا يمكن أن يعترف به يعامل ككتابة ويطالب ببطاقة موافقة.

1
هل هو تحطيم أو يتطلب...

إن تم تحديد الأمرين، فإن الإجراء يحتاج دائماً إلى الموافقة، وقلهم بأمانة هذا ما يُظهر بطاقة موافقة الإصدار

2
مكتوب في أي مكان من الطبقات تجعله كتاباً

إضافة، إنشاء، وفتح، وتحديث، وتحرير، وتغيير، وتعديل، وتحذف، وتلغي، وتُلغى، وتبطل، وتعيد، وتتوقف، وتفعيل، وتقر، وترفض، وترسل، وتسجل، وتغلق، وتفتح، وتعاد فتح باب التسجيل، وتحيل، وتسحب، وترجع، وتضع، وتنشأ، وتصدر، وتبدأ، وتدفع، وتجدد، وترفع، وتتحرك، وتنتقل، وتسرع، وتضيف، وتعود، وتمضية، وتسريع، وتزيد من جديد، وتأتي، وتسير، وترميم، وتثبت، وتس، وتسلم، وتثير، وتدير، وتجنيد، وتنق، وتستمر، وتشغل، وترتفع، وتسهم، وتزداد، وتتحقق، وتر، وتدر، وتطبق، وتتقدم، وتظهر، وتصبح، وتسدد، وتستعد، وتحصل على بعض المعلومات، وتترك، وتشرع، وتستبق، وتمارس، وتدور، وتتابع، وتضغط، وتعطيل، وتطرح، وتجديد، وتفضيل، والانت، وتقتفي، وتقاضي، وتدريج، وتأخذ، وتكملة، ويسارا، وتسلي، وتقود، وتتناول، وتقويض، وترحيل، وتغذية، ثم تثمن، وتجعل، وتجرى، وتبحث، وتضرب، وتستجيب، وتتصرف، وتعترف، وتذهب، وتجميعا، وتقوم، وتحاول، وتبدي، وتحسن، وتساهم، وتيسر، وتقول، وتركيز، وتمتد، وتستأنف، وتميل، وتبدو، وتقف، وتدرج، وتطالب، وتفعل، وتؤثر، وتستفيد، وتلجأ، وتستهدف، وتعجل، وتصحيح، وتعالج، وترف، وتخفف، وته، وتفتيش، وتنسحب، وتتجه، وتباشر، وتثبط، وتتطور، وتلتمس، وتمنح، وتحمي، وتتجاوز، وتفسح، وتك، وتعتمد، وتجلب، وتسهل، وتنظر، وتنجز، وتستكمل، وتمر، وتير، وتتراجع، وتنمو، وتنشر، وتنشط، وتحريك، وتتصدر، وتنطلق، وتعلن، وتبذل، وت

3
ثم كلمة قراءه تجعلها تقرأ

الحصول على قائمة، بحث، نظرة، عرض، جلب، عد، نظرة. وصف، قراءته، تصديره، اختباره، فحصه، وضعه، موجزه، تفاصيله، تاريخه، تدقيقه، سجله، إحصائياته، مختصراته، لمحة عامة، إيراداته، توزيعه، تقاريره، تحليله، توازنه، استخدامه، حصته، صوره، بصيرة، علفه، مشروعه، ثلاثيه، تصنيفه، اقتراحه

4
ثمّ طريقة HTTP تُقرّر

القفز والرأس والخيارات مُقروءة.

5
وإلاّ فهي مكتوبة

غير معترف به يعني الموافقة المطلوبة، هذا التقصير متعمد.

⚠️
تُدقّق الكلمات على (بيفور) وتقرأ الكلمات، لذا فإن اسماً مختلطاً مثل الـ... و(سينك-أوردرز) يُصنَّف كـ(واي جي تي)، إخترْ شفرة واحدة، ضعها أولاً، وابقيها نظيفة:

فقط أعلنوا عن وجود السكان الأصليين إذا كان لدى المنصة واحدة

The native_api capability registers a generic <slug>_api_call passthrough so the model can reach endpoints your typed actions do not cover. On a platform with no API it is worse than useless: the model keeps reaching for a tool that cannot succeed, instead of using the tools that can.

المبني يقرر ذلك من إجابة الوصول إلى البيانات

Say the platform has an API and it declares native_api and emits the passthrough. Say it has none (bridge mode, or the "Platform with no API" profile) and it declares platform_bridge instead and strips native_api, so the two can never both be true. You no longer hand-edit this.

يجب أن تُصلحها

إذا كنت تكتب البيان بنفسك، تعلن بالضبط واحد من السكان الأصليين - أي بي أو منصة - بريدج.APIموصل.

إبقي صادقاً في أيّ من الحالتين

On a connector that declares native_api the admin brain heads that file with a line naming <slug>_api_call. Without native_api it is headed neutrally instead, so a bridge connector no longer advertises a tool it does not have. Describe your real surface — for a bridge, that is your op and do vocabulary, not a REST endpoint table.

علم الدماغ الديمون عن منصة الخاص بك

Declare ai_brain_aware and ship two Markdown files. They are read from the INSTALLED package directory (opsiq/connectors/<slug>/) for ENABLED connectors only, and injected into the admin agent's system prompt.

ai_expertise_admin.md

ما هذا المنصّة، كيف شكلت بياناتها، وما تُسمّى به أجسامها، والقراصين الذين سيخمنون المساعد، وكتبه لزميل مختص لم ير المنبر قط.

ai_api_reference.md

السطح المسمى، من أجل موصل الجسر هذه هي مهمتك و تقوم بالتشغيل مع بارامتراتها وليس طاولة نهاية لـ (أر إس إي تي)

الميزانية

بالكاد6,000شخصيات محتفظ بها لكل موصل وحول24,000شخصيات للمبنى بأكمله عبر كل موصل مُمكن على غطاء الموصلات، ملفك مُتفجر؛ كن مختصراً قبل أن يكون المُنظم.

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

هذه الملفات هي الفرق بين المساعد باستخدام أدوات جدولك العالمي والرد من القسم الخطأ لأنه لم يخبرها أي شيء عن وجود تلك الأدوات

💡
يجب أن يكون كلا الملفين في الحزمة INSTALLED، وليس فقط في شجرة المصدر الخاصة بك. إنهما ملفات حزم عادية، وبالتالي يتم تغطيتهما بالتوقيع ويتم شحنهما في ZIP - مما يعني أيضاً أن تحرير أحدهما بعد التوقيع يكسر الختم.
الموصلات

الهوية من خلال موصل: تنبيه، زبون، بوّابة

عقد توقيع واحد يخدم ثلاثة أسطح عمل الموصل هو تحويل "الذي يسجل على المنصة" إلى موقعOpsIQيمكن التحقق، ثم تقديم الموضوع المتحقق منه فيOpsIQالموصل لا يصادق على أي أحد - المنبر يفعل، والتوقيع يحمل ذلك التأكيد.

الأسطح الثلاثة، إشارة واحدة

ادمين - موظفوك داخل مساندتك

موضوع مسمّى، حمولة النسيج داخل لوحة المنصّة وكل موظف يطابقهاOpsIQأيها العميل، تمشي بشكل كامل على صفحة (إدمين ويدغيت)

زبون - زبون موقع في الدردشة مع العملاء

هذا ما يجعل الزبون يسجل حسابه بالكامل بدلاً من مشاهدته مجهولة الهوية كل أمر وتفاصيل كاملة وأي عمل ذاتي تسمح به

بوابة - وصلة عميقة في بوّابة الدعم

نفس المطالبات بالإضافة إلى (جتي) و(أوز) مع120-الحياة الثانية، لأنّ (توكين) يسافر فيURLولا تُنفق مرة واحدة، لا تُقيد هذا: (ستينغز)، و(بورت الدعم) يحمل قرصاً جاهزاً لكل لغة، والمنبر يصفّه لك عندما تكون منطقة الحساب على هذا الخادم.

عقد الحمولة

هذه هي المطالبات التي تحقق منها المتحققون لا شيء هنا اختياري، مهما كان مثال جزئي قد يوحي به في مكان آخر.

site_key

المستوى الأعلى، يجب أن يكون على قدم المساواة مع مفتاح الموقع أو رفض الطلب

الخبرة الفنية

المستوى الأعلى، ست ثواني يجب أن تكون في المستقبل وبعد أيت، يتم رفض رمز أكثر من دقيقة في المستقبل، والاحتفاظ بالحياة قصيرة - دقائق إلى ساعات.

مصدق عليه:

على المستوى الأعلى، بجانب المشهد، تأكيد منصة عملك أن الإنسان الحقيقي قد تم تسجيله

المنصة

مستوى عال، علامه قصيره تسمى الأصل و هي موصوفه وتدع مزود الهوية يُخبر موصلها الخاص من منصة أخرى

العميد أو الزبون

وهـو يوجـد اسمـه، ويجب أن يحمل بطاقة غير فارغة، واسم مستخدم أو بريد إلكتروني - بوابة الدخول لكل مينتين تتطابق مع تلك البوابة، بما في ذلك عند وجود كل منكما.

صياغة، حرفياً من الجسر Botble
$payload = [
    'site_key'      => $cfgSiteKey,
    'iat'           => time(),
    'exp'           => time() + 6 * 3600,
    'authenticated' => true,
    'platform'      => 'yourplatform',
    /* 'admin' or 'customer' — OpsIQ stamps the matching session identity
     * from whichever key is present. */
    $opsiqSubject   => $subjectPayload,
];
$payload64     = rtrim(strtr(base64_encode(json_encode($payload, JSON_UNESCAPED_SLASHES)), '+/', '-_'), '=');
$identityToken = $payload64 . '.' . hash_hmac('sha256', $payload64, $cfgSecret);

المحقّقان، والفشل الذي تسببه

OpsIQلديه اثنانين من المحقّقين، ولم يكونوا متطابقين مع ذلك، معرفة أن هذا ينقذك بعد ظهر اليوم لأن الأعراض لا تبدو كالقضية

الإسمن (ويدج) لديه التحقق الخاص به

opsiq(أ) يحمل رمزاً محلياً يقبل العلم الموثق في أي من الموقعين، وقائمة التنويع والتاريخ والكشف عن كل شيء يمر عبره، حتى يتأكدوا من صلاحيته.

المتحقق المشترك أكثر صرامة

opsiq/includes/customer_identity_token_verify.php sit behind the conversation stream and the core AJAXAPI- كان يتطلب تاريخيا العلم على مستوى TOP.

الأعراض

كلّ دردشة تجيب على "اسمن" مطلوب، إنه يقرأ تماماً مثل حشرة في الجلسة وليس:

ما يفعله الجوهر الحالي

الآن تقبل العلم على المستوى الأعلى أو داخل الموضوع لذا العقد موحّد، نواة كبار السن تقرأ فقط أعلى مستوى

هذا فحص آلي الآن أي ملف في حزمتك يفحص بشكل ثابت هوية المكسورين على العقد و حمولة منصة الرصيف سترفض التطابق مع الملف والخط بالضبط

زبون موقّع في دردشة العملاء

يجب أن يكون هناك شيئين حقيقيين، لابد من أن يطغى على العميل المتحقق منه و موصلك يجب أن يقدمه

1
جسرك أو نقطة النهاية يميل زبوناً

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

2
التحقق الأساسي والطوابع

على شكل مُحدّد، يُعتبر الموضوع المُحقّق منه في الدورة، قرأ مقدّمكم هويةً مثبتة، ولا يصدّق عليها أبداً.

3
مُقدّم الهوية الخاص بك يُقدِّمُه

يرجع إلى. OpsIQ ويجب أن تنفذ OpsIQ\Platform\IdentityProviderInterface، أو يتخطاه السجل في صمت - نفس الفخ الذي يقع فيه مقدم السياق.

4
تصرفات زبونكِ تقبل الزبون

وOpsIQيغلقه على الهوية المتحققة قبل التنفيذ لا يستطيع النموذج إمداده

مُقدِّم الهوية - يقرأ الهوية المثبتة، ويعرضها فيOpsIQ"شكل"
use OpsIQ\Platform\IdentityProviderInterface;

final class IdentityProvider implements IdentityProviderInterface
{
    public function slug(): string  { return 'yourplatform_identity'; }
    public function label(): string { return 'Your Platform identity (bridge-signed identity_token)'; }
    public function priority(): int { return 25; }   // ahead of the generic session provider

    public function isAvailable(): bool
    {
        try {
            $s = \OpsIQ\Connectors\ConnectorRegistry::getSettings('yourplatform') ?: [];
            return trim((string)($s['base_url'] ?? '')) !== '';
        } catch (\Throwable $e) { return false; }
    }

    public function detectAdmin(): ?array
    {
        $row = $this->sessionRowFor('_opsiq_admin_identity');
        if (!$row || !$this->isOurs($row)) return null;
        return [
            'id'       => (int)($row['id'] ?? 0),
            'name'     => $this->displayName($row, 'Admin'),
            'email'    => (string)($row['email'] ?? ''),
            'username' => (string)($row['username'] ?? ''),
            'role'     => (string)($row['role'] ?? ''),
            'platform' => 'yourplatform',
            'source'   => 'yourplatform_identity_token',
        ];
    }

    public function detectCustomer(): ?array
    {
        $row = $this->sessionRowFor('_opsiq_customer_identity');
        if (!$row || !$this->isOurs($row)) return null;
        return [
            'id'       => (int)($row['id'] ?? 0),
            'name'     => $this->displayName($row, 'Customer'),
            'email'    => (string)($row['email'] ?? ''),
            'phone'    => (string)($row['phone'] ?? ''),
            'platform' => 'yourplatform',
            'source'   => 'yourplatform_identity_token',
        ];
    }

    /* A session identity stamped by ANOTHER platform's token must not be
     * claimed here. An empty platform is accepted because older bridges did
     * not stamp one, and the site key already scoped the token. */
    private function isOurs(array $row): bool
    {
        $p = strtolower(trim((string)($row['platform'] ?? '')));
        return $p === '' || $p === 'yourplatform' || $p === 'remote';
    }

    private function sessionRowFor(string $key): ?array
    {
        if (session_status() !== PHP_SESSION_ACTIVE) return null;
        $row = $_SESSION[$key] ?? null;
        return (is_array($row) && (int)($row['id'] ?? 0) > 0) ? $row : null;
    }
}

إجراءات على نطاق العملاء: قفلان، كلاهما مطلوب

لا يجب أن يختار النموذج بيانات من يقرأهاOpsIQيجب على منصتك أن تُنفذها في الجانب الآخر أيضاً قفل واحد هو حشرة بعيدة عن التسرب

قفل1 — OpsIQيُبالغ في برمجة معايير الهوية

قبل أن يبدأ عمل العملاءOpsIQيستعاض عن كل بارامتر من نوع الهوية بهوية الزائر المكشوفة: العميل - العميل - المستخدم - الد، الاستخدام، العملاء - د، الحساب - هل يأخذ الرقمي المتحقق منه؛ وكلاء - محدد الهوية، وزبون - محدد، ومحدد الهوية، والحساب - هو الذي يعتبره خيطاً؛ البريد الإلكتروني، زبون - بريد إلكتروني، زبائن

قفل 2 — منبرك يُعيد ترتيب كل استفسارات

خذوا الخبر الذي أعطيتموه و أضيفوه إلى شرط كل قراءة وكل كتاب على هذا السطح لا تثقون أبداً في الإشارة التي وردت في الطلب لوحدها

سمي بارامتراتك1يمكن أن تجدهم

نسميه زبوناً ليس راعياً أو رصيفاًOpsIQلا يُعرف أنّه بارامتر لا يمكنه قفله

⚠️
أعطِ الزبونَ الموقّعَ يُسجّلُ عملياتَه OWN، مُنْفصل عن المُعلّمينِ، حتى عندماSQLيبدو متشابهاً، سطحان مع قواعد مختلفة يبقىان صادقين وسطح واحد مع العلم يصبح تسرباً في اليوم الذي يحرر فيه شخص ما الفرع الخطأ

عدد الأسلاك صفر من الصفحات: المُسعّل المُعلَّم عن طريق الاتصال

You can spare the operator all page wiring. Add an admin_identity_probe_url setting (https only) pointing at your identity endpoint. The plain admin-widget loader from Remote Sites, Codes then works with no page attributes at all: the widget discovers the endpoint through the connector, calls it with the site key and widget token, and authenticates each admin individually. A page can still override with a data-identity-endpoint attribute or window.OpsIQAdminIdentityEndpoint.

أماكن.json- وضع المسبار
{
  "key": "admin_identity_probe_url",
  "label": "Admin identity probe URL",
  "type": "text",
  "placeholder": "https://your-site.com/opsiq-yourplatform-bridge.php?op=admin_identity",
  "help": "Set this to your bridge admin_identity endpoint and the plain admin-widget loader works with NO page wiring: the widget probes this URL by itself, the bridge answers with the signed identity of the CURRENTLY logged-in admin, and every admin is matched to their own OpsIQ agent. Leave empty to keep the admin embed off."
}
المسبار يُدعى من قبل المُتصفّح

نفس المُنشأة، لذا لا يمكنها حمل رئيس مُعتاد، إنّ توثيقها هو دورة المنبر، ضعه على بوابة الجسر، و أبعده عن بيانات التسجيل، ولا يعيد أي شيء على الإطلاق لزائر مُستقطع.

يجيب على شكل ثابت

{"success":true,"authenticated":true,"admin":{...},"identity_token":"..."} — and {"success":false,"authenticated":false,"error":"..."} when nobody is signed in.

لا سر طويل الأمد في الصفحة المصدر

فقط الموقع، المُنقّع.

التنفيذات الكاملة لنقاط النهاية Laravel, WordPress, WHMCS, Symfony و PHP البسيطة، بالإضافة إلى صعوبة كسب Laravel وتحديدات وترتيب حل المشكلة، هي على صفحة أداة الإدارية إنها نفس الشفرة لموضوع العميل: تغيير الحارس الذي تقرأه ومفتاح الموضوع الذي توقع عليه.

الموصلات

النشر: تحرير الملف لا ينشر

أكثر الطرق شيوعاً لفقدان عصر اليوم هو تحرير موصل تحت السوق - متصلين/إعادة تركيبه، و لا شيء تغير

لماذا لم يفعل التحرير شيئاً

marketplace_connectors/<slug>/ is the SOURCE

إنه حيث تعملين لا شيء يُثبت منه

الفهرس يحمل علامة "زى بي" موقعة

و تُفرغين من التحميل الذي يُمكن لـ(زي بي) التحقق من التوقيع، وتفريغه حتى تعيدي بناء (زى بى)، كلّ إنشال يستمر في الحصول على الطرد القديم.

"شُرطة المُدير" تنشر في مكان آخر

It writes into /connectors/<slug>/ on this install. That is a local connector, not a marketplace release. The two paths do not overlap.

تسلسل الإطلاق

1
امسح النسخة في ملفات "تو أو"

أماكن.jsonو موصلjsonويقارنها التناغم وتفشل إذا لم يوافق على ذلك الشعار أو الصيغة أو القدرة المحددة، وضِع مدخلاً من طراز CHANGELOG بينما أنت هناك - فهو ملف مطلوب.

2
إعادة تنظيم قنبلة الجسر

php tools/sync_connector_bridge_snippets.php --apply — only relevant if your package ships bridge/*.php, and mandatory if it does. Skipping it means the panel hands operators the previous bridge.

3
إعادة تصميم كل طرد

أدوات/إعادة تصميم جميع أجهزة الاتصال - الإصدار - يغطى التوقيع على الملف عجلات، لذا أي آي يحرره يبطله.

4
تصدير مفتاح التوقيع، ثم البذور

يقوم البذر بتوقيع كل حزمة عند بناء ZIP، ويعمل في سياق لا يمكن فيه قراءة المفتاح من الإعدادات - لذلك يجب أن يأتي من البيئة.

5
اعيد نشر ملف الجسر إذا قمت بشحن واحد

إعادة تركيب الموصل يستكمل الطرد لا يمس النسخة التي تجلس في وعاء المشغّل

الإفراج الكامل،
# 2 — hold the panel copy identical to the shipped bridge
php tools/sync_connector_bridge_snippets.php --apply

# 3 — re-sign (do this last, after every file is final)
php tools/resign_all_connectors.php

# 4 — the seeder reads the signing key from the ENVIRONMENT only
export OPSIQ_CONNECTOR_SIGNING_KEY="$(php -r 'require "bootstrap/init.php"; echo opsiq_setting("connector_signing_key","");')"
php saas/scripts/maint/seed_marketplace_free.php --apply --only=<slug>

# verify before and after
php tools/verify_identity_contracts.php
php vendor/bin/phpunit tests/phpunit/Unit/Connectors
⚠️
لماذا التصدير ليس اختيارياً: فالعلامة تبحث عن المفتاح في موقع التصوير الإفتتاحي (POSSIQ_CONNECTOR) أولاً، والموصل الذي يوقع على الموقع الثاني.OpsIQويمكن أن تجد المفتاح لوحده.

ما الذي تفعله في الواقع؟

فقط ملفات الأغطية

تم بناء الـ " زي بي " من قائمة ملفات المُوقّع لذا ملف مُقزّل يجلس في ملفك لا يتم شحنه، هذا متعمد

التمديدات المغطاة

php, json, js, css, md, txt, html, sh, svg, png, jpg, jpeg, gif, webp, ico, yml, yaml — recursively, including bridge/ and tests/. signature.json itself is excluded from the hashes and then added to the ZIP so installs can verify.

أي شيء آخر يُبلغ عنه بأنه لا يُحزم

المُسدس يسمي كل ملف خلفه، اقرأ تلك القائمة الملف الذي تتوقع أن تظهر فيه هناك يعني تمديداً خاطئاً أو موقعاً غير مناسب - ليس نجاحاً صامتاً.

تحرير أي ملف مغطى يكسر الختم

بما في ذلك ملف Markdown. أعيد توقيع تلك الحزمة

الملفات المطلوبة في حزمة توزيع

connector.php

يجب أن نعيد حالة "كونيكتور إنترفيس"

settings.json

Manifest: slug, name, version, manifest_version, compatibility, capabilities, connector_contract_version., settings.

connector_contract.json

عقد قابل للقراءة، يجب أن يكون مطابقاً للإطارات.json.

README. md, DEVELOPER. med, CHANGELOG. mد

الثلاثة يفحصون للوجود والحد الأدنى من الحجم، يحتاج (ديفيلوبدر) إلى محتوى حقيقي وليس مقبض

ملف لكل قدرة معلنة

وكل قدرة تُسمي الملف الذي تتوقعه - وهو مقدم العرض في سياق، ومقدم الهوية، وصاحبة الهوية، والمشرف على تقديم الطلبات إلى الضيوف - انظر وما إلى ذلك - ما لم ينفذ الموصل القدرة على الإنترنت.

لا شيء يبدو كملكية

يقوم التوافق بمسح الملفات الثلاثة Markdown للقيم السرية والمفاتيح الخاصة، ويفشل في حالة نجاح.

تحقق من ذلك قبل أن تشحنه

ونفس نظام المطابقة الكامل هو نفس نظام الانشاء، وهو يفحص البيان ضد العقد الكانتوني، وهذا الوقت الذي تتوافق فيه القدرات على أساس التسلسل، وأن لكل قدرة معلنة ملفها وأساليبها، وعقد رمز الهوية في كل ملف ملغى، ومباراة الجسور - القنبلة، والنظافة التي تسمح بها الضيوف، والعمل الفريد، وسلامة التأكيد، والتوقيع على مجموعة التدابير.

تشغيل الأربعة قبل كل إطلاق
# conformance for every marketplace package
php tools/test_marketplace_connector_conformance.php

# the identity-token contract, statically, with file:line on failure
php tools/verify_identity_contracts.php

# the connector unit suite
php vendor/bin/phpunit tests/phpunit/Unit/Connectors

# the release gate
php tools/release_gate_connectors.php
💡
الفشل الوحيد متوقع و ليس مشكلة، فالتدقيق في التوقيعات يُبلغ عن تحذير بينما أنت لا تزال تتحرّر، ويوضح اللحظة التي تعيدين فيها التوقيع، وكل فشل آخر هو فشل حقيقي.
الموصلات

مجموعة الموصﻻت والمرجع المتعلق بدورة الحياة

هذا هو العقد على مستوى المصدر لبناء وصلة يمكن أن يقوم OpsIQ باكتشافها وتشكيلها والتحقق منها وتمكينها وتنفيذها واختبارها والتوقيع عليها وتوزيعها.

مرجع المطور
مجموعة موصلاتوتتضمن حزمة وصلات تنفيذاً وقائمة بوصلات لازمين، مع الإجراءات والوصفيات والمعارف والأصول والبيانات الفوقية للتوقيع.مجموعة موصلاتdeveloperMANIFESTv1دورة الحياةمدارةورقة عملمحددعرض الحيز العمليconnector.phpفئة الموصﻻت/المصنعالمطلوبةsettings.jsonمخطط بيان وإعداداتالمطلوبةactions.jsonتعاريف الإجراءاتاختياريsignature.jsonالبيانات الفوقية للتوقيع على الحزمةإصدار1DECLAREبيان المشروع وقدراته2IMPLEMENTدورة الحياة ومقدمو الخدمات3المصادقةاختبار، وسم، طرد
وتتضمن حزمة وصلات تنفيذاً وقائمة بوصلات لازمين، مع الإجراءات والوصفيات والمعارف والأصول والبيانات الفوقية للتوقيع.

حزمة الحد الأدنى

connectors/example_platform/
├── connector.php          # connector implementation / entry point
├── settings.json          # manifest + configuration schema
├── actions.json           # optional action catalogue
├── README.md              # setup, scopes, webhooks and limits
├── workflow_recipes.json  # optional reusable recipes
├── knowledge.json         # optional provider knowledge
├── profile.json           # optional connector profile
├── src/                   # optional client/provider classes
├── assets/                # optional admin assets
└── signature.json         # signed release metadata

عقد الإعلان

settings.json يستخدم النسخة الواضحة 1. يتوقع المصدق على المشروع سلج، الاسم، الإصدار، manifest_version، التوافق، الوصف والقدرات. opsiq_min و opsiq_max1 - حالة الإفراج هي واحدة من الإنتاج, بيتا, استعراض أولي أو النموذجيمكن تطبيع الحزم القديمة مع التحذيرات، ولكن يجب أن تمر حزمة جديدة دون تحذيرات.

وصلة بينية للموصلات الرئيسية

  • الهوية والتنظيم: slug(), name(), description(), capabilities(), settingsSchema(), testConnection().
  • دورة الحياة: onEnable() و onDisable()- يجب أن يكون تعطيل البيانات غير تدميري؛ وتطهير البيانات عملية متعمدة منفصلة.
  • الوارد/المتزامن: handleWebhook(), poll(), backfill(). تتناول استطلاع العمل الإضافي؛ backfill يستورد التاريخ ويجب أن يكون آمناً لتكرار.
  • الدعم: pushReply() (ب) حيث يقبل المنبر الردود.
  • الإجراءات: registerActions() :: توريد عقود الإجراءات القابلة للتنفيذ.
  • الأمن: securityCapabilities(), syncBlockedIp(), removeBlockedIp(), testSecuritySync().

وتوفر قاعدة البيانات المجردة أيضاً إمكانية التعبئة التكميلية الاختيارية، وإدراج العملاء في القوائم، واكتشاف/إنشاء حسابات البريد الإلكتروني، والمشتركين، وكشف المديرين/العملاء، ومقدمي الخدمات المتعلقة بالفواتير/السياق/الهوية، واستخراج الاستجابات، وإعادة محاولة المكالمات عبر بروتوكول الإنترنت (HTTP)،() JSON- إمكانية الوصول إلى المسارات، والترتيب غير الواضح ومساعدات الصفحة.

القدرات والتوثيق

وتشمل أسماء القدرات المدعومة الإجراءات، والمحركات، والسياق، والهوية، والمبيعات، وإعداد الفواتير، والتذكرة_الواردة، والرد_الصادر، ومزامنة_المستخدمين، وموازنة_الإدارات، والأحداث_الأمنية، واستيراد_الزبائن، ومنع_الأمان_الأصلي، وزيادة_عدد_المشاهدين، وتحسين_التغذية، وصندوق_البريد الإلكتروني، وبرنامج البرمجة المتكامل الأصلي، ووعي_الدماغ، وتذاكر_المساعدة. API المفتاح، حامل، الأساسي، HMAC،OAuth 2:: وثائق تفويض العملاء،OAuth 2:: رمز الإذن ونماذج التوثيق المخصصة.

دورة حياة السجل

  1. يقوم اكتشاف بتحميل الحزمة ويصادق على بيانها.
  2. يتم تخزين التشكيل لكل مساحة عمل؛ الأسرار مشفرة.
  3. اختبار الاتصال يثبت هوية دون تمكين الموصل.
  4. تمكين المكالمات onEnable(), synchronises action definitions and can start the initial backfill.
  5. ويحمل تنفيذ الاستطلاع/الويب هوك/المشترك دائما سياق حيز العمل.
  6. تعطيل المكالمات onDisable() وإيقاف النشاط دون حذف البيانات المستوردة.
  7. التطهير هو عملية صريحة منفصلة.

قواعد الدقة

  • استخدام مفتاح حيز العمل/الموقع في كل عملية قراءة، كتابة، مفاتيح التخزين المؤقت، المفتاح المضاعف والبحث عن Webhook.
  • جعل التغذية اللاحقة، و webhook الامتصاص والكتابة أفعال idempotent.تسجيل هوية خارجية/حدث هوية حيثما يوفر المنبر واحدا.
  • بالنسبة للنظم النائية، استخدم. API؛ لا تفترض أبدا جداول قاعدة بياناتها موجودة في OpsIQ اتصال.
  • لا تكشف أبدا عن الأسرار، أو أثر مقدم الخدمة الأولي أو وجود مساحة عمل أخرى.
  • لا تعلن سوى القدرات التي تنفذها الحزمة بالفعل. actions.json لا يجعل فهرس الإجراءات العمل قابلاً للاستخدام إلا بعد تركيب الموصل، وتشغيله، وتشكيله، وصلاحية وصلته.

الاختبار والإطلاق

تشغيل PHP lint، التحقق من صحة الإعلان، اختبارات الاتصال، تقييمات مخطط العمل، تحليل توقيع/إعادة عرض webhook، قياس عزل مساحة العمل، تكرار اختبار الملء الخلفي، مقارنة وصلة معطلة واختبارات الفشل/إعادة المحاولة. يجب بعد ذلك توقيع حزمة سوبرماركت والتحقق منها، وتضمينها توثيق الإعداد/الإذن/webhook، وذكر وضع إصدارها الحقيقي.

الموصلات

وصفة وصل

وصفات خطوة بخطوة لترتيبات الموصولات المشتركة.

الوصفات
وصفة وصلوصفة Shopify للتثبيت كقائمة تحقق: إنشاء التطبيق، منح النطاقات، لصق الرموز والاختبار، تمكين webhooks، وضع طلب اختبار.وصفة وصلShopifyوصفة · Shopify مع وصلات شبكيةإنشاء تطبيق مخصص في Shopify المديرنطاقات المنح: read_orders, read_customers...لصق اسم المجال + الرمز، انقر على اختبارتمكين تزامن Webhook (تسجيل الطلبات تلقائيا)وضع طلب اختبار → يظهر في المبيعات في 30s1STEP BY STEPوصفات النسخ واللصق2REAL PLATFORMSShopify · WHMCS · Stripe · GBP3التحققترتيب الاختبارات يظهر في 30s
كل وصفة هي قائمة مرجعية تتبعها من القمة إلى الأسفل، هنا Shopify مع أوامر في الوقت الحقيقي على الشبكة العالمية، تحقق من ذلك بأمر اختبار.

وصفة: Shopify مع webhook في الوقت الحقيقي

السيناريو:
الهدف: الربطShopifyمتزامنة مع النظام الآليGDPRالامتثال.
ماذا نفعل:

1. Create a custom app in Shopify admin (Settings > Apps > Develop apps). 2. Grant scopes: read_orders, read_customers, read_products, write_customers. 3. Copy the Admin API access token. 4. In OpsIQ Connectors > Shopify, enter store domain and token. 5. Click Test Connection. 6. Enable Webhook sync, OpsIQ registers order/customer webhooks automatically. 7. GDPR webhooks register automatically (data_request, customers/redact, shop/redact). 8. Verify: place a test order, check it appears in OpsIQ Sales within 30 seconds.

وصفة: WHMCS التكامل

السيناريو:
الهدف: ربط WHMCS بحيث يمكن للذكاء الاصطناعي البحث عن العملاء والخدمات والتذاكر والفواتير.
ماذا نفعل:

1. In WHMCS admin, Setup > Staff Management > Manage API Credentials. Create a key. 2. In OpsIQ Connectors > WHMCS, enter URL, API identifier, and secret. 3. Click Test Connection. 4. Install the WHMCS module addon for ticket relay. 5. Verify: ask the admin AI "Find client [email protected]". WHMCS data should appear.

وصفة: مدفوعات Stripe

السيناريو:
الهدف: تتبع مدفوعات Stripe وتسمح للذكاء الاصطناعي بالبحث عن المعاملات.
ماذا نفعل:

1. In Stripe Dashboard > Developers > API keys, create a restricted key (read: Customers, Charges, Invoices, Subscriptions). 2. In OpsIQ Connectors > Stripe, enter the restricted key. 3. Test Connection. 4. Add webhook endpoint in Stripe: copy the webhook URL shown on the connector's own settings page. It carries a per-connector token and looks like https://your-domain.com/api/connectors.php?slug=stripe&token=THE_TOKEN A URL without the token is rejected with "Missing slug or token". 5. Select events: charge.succeeded, invoice.paid, customer.subscription.updated. 6. Copy the webhook signing secret to OpsIQ. 7. Verify: make a test payment, check it in OpsIQ Sales.

وصفة: Google

السيناريو:
الهدف: ربط برنامج GBP بإدارة الاستعراضات والنشرات والمعارف.
ماذا نفعل:

1. Create a Google Cloud project, enable Business Profile API. 2. Create OAuth 2.0 credentials (Web application). 3. Set redirect URI: copy it from the connector's own settings page. Google and Microsoft connectors share one slug-less callback: https://your-domain.com/connectors.php?oauth=callback Everything else uses https://your-domain.com/connectors.php?slug=<slug>&oauth=callback OAuth redirect URIs must match EXACTLY, and a URI missing oauth=callback is read as a webhook and answered with "Missing slug or token". 4. In OpsIQ, enter Client ID and Client Secret. 5. Click Authorize, sign in, grant access. 6. Select your business location. 7. Verify: reviews, posts, and insights should appear.

الموصلات

Extend the CRM

OpsIQ subsystems are open for extension. A connector can plug a new capability into the CRM or Site Intelligence with no changes to OpsIQ core, via the platform capability registry (\OpsIQ\Platform\CapabilityRegistry). Declare the capability, implement its small method set, ship the connector, OpsIQ discovers it and wires it into the UI, the Customer 360 timeline and the install prompts.

Extend CRM
قدرات المنصةموصل في حافلات القدرة على التغذية اليسرىCRM(إستخبارات الموقع، المحللين) اكتشفها سجل القدرةقدرات المنصةمساحة العملوصلتكيعلن عن القدراتCRM:: التقويم · الإثراء · التوقيع الإلكتروني · المدفوعات · صندوق البريدذكاء الموقعبيانات الترتيبتحليلات:: الموقع الشبكي: تحليل؛ تقريرCapabilityRegistryيكتشفها ويسلك واجهة المستخدم + خط الزمن1DECLAREالقدرات، وليس التحرير الأساسي2PLUG INCRM · SI · Analytics buses3AUTO-WIREDواجهة المستخدم، والجدول الزمني، والنداءات
الموصل يُعلن عن القدرات (المرتبات، الإثراء، البيانات المصنفة، التحليل...)OpsIQيقبضون عليهم آلياًCRMوالمخابرات الموقعية، لا تغييرات أساسية.

إعلان القدرات

إعلاني (settings.json)

تضاف نقطة <domain>_capabilities صفيفة، أفضل لربطات لا ترمز إلى مكان السوق crm, site_intelligence.

في الرمز (connector. php)

التنفيذ crmCapabilities() / siCapabilities() إعادة نفس الوصف.

نعلنCRMمُقدِّم تقويمي (تقييدات).json)

السيناريو:
الهدف: جعل الربط التقويمي يظهر فيCRMلوحة جدولة.
ماذا نفعل:

"crm_capabilities": [ { "type": "calendar", "label": "Calendar (Acme)", "actions": ["createEvent","listEvents","freeBusy"], "requires_auth": true } ]

إعلان مقدم خدمات استخبارات الموقع (settings.json)

السيناريو:
الهدف: إدخال بيانات الإدراج المحلي في نظام معلومات المواقع.
ماذا نفعل:

"site_intelligence_capabilities": [ { "type": "local_listing", "actions": ["listLocations","listReviews","getInsights"], "requires_auth": true } ]

Capability buses and their method surface

إدارة علاقات العملاء/الجدول الزمني

createEvent($settings,$params) →{success,event_id,html_link,meet_link}; listEvents; freeBusy. مدفوعة بـ OpsIQ\CRM\CalendarBridge

إدارة علاقات العملاء/الإثراء

enrich($settings,$params) → {success,traits}. يحركه \OpsIQ\CRM\EnrichmentBridge (يجري أيضاً تلقائياً على إنشاء الشركة عندما يكون مقدم الخدمة متصلاً).

إدارة علاقات العملاء/الإرسال الإلكتروني

sendForSignature($settings,$params) →{النجاحات، العجائب / خطّة }OpsIQ\CRM(إستينبريدج)

معلومات عن الموقع/الإدراج المحلي

listLocations, listReviews, getInsights. Ships via the Google Business Profile connector.

بيانات موقع_المعلومات/تصنيف_الموقع

keywordRanks($settings,$params) →{النجاحات، الصراخ}OpsIQ"الإنترنت" "رانكداتا بريدج"، السفن:

تحليل البيانات/التحليل الشبكي

report($settings,$params) (المزامنة/التصدير) + ingest($settings,$events) (الواردة)OpsIQ"البحرية" و"ويبناليتيك بريدج"Google Analytics (GA4موصل بياناتAPIمن أجل التقارير، بروتوكول قياس الاستيراد - التحليلات مفتوحة للوصلات مثلCRM+ مخابرات الموقع (دومان) analytics / analytics_capabilities).

المدفوعات/مقدم_الدفع

listPayments, customerPayments, createPaymentLinkقُدّمَ مِن قِبلOpsIQ(باينجز بريدج) أظهر دفعات الزبون علىCRMالجدول الزمني + إرسال وصلة دفع على صفقة.Stripeموصل للمدفوعات. payments / payments_capabilities.

صندوق البريد / email_sync

listMessages + sendMessageقُدّمَ مِن قِبل OpsIQ"مالبوكس بريدج" بريد إلكتروني للزبون على موقع (كوستومر) 360 الجدول الزمني + إرسال البريد الإلكتروني من صفقة السفن: Gmail + Outlook/Microsoft 365 موصلات mailbox / mailbox_capabilities.

تطبيق مشترك OAuth + إعادة توجيه واحدة

جميع البلدان Google التطبيقات المشتركةOpsIQ\OAuth\SharedGoogleApp.set google_oauth_client_id/_secret مرة واحدة وكاليندر، محللين، موجز الأعمال التجارية +Gmailجميع الأعمال (مجالات الوصل (الاختيارية) متجاوزة، كما أنها تتقاسم إعادة توجيه واحدةURI, <site>/connectors.php?oauth=callback (لا يوجد سلوك لكل موصل)، لأن Google لا يوجد API لإضافة إعادة توجيه URIs إلى تطبيق؛ OpsIQ يسترد الموصل من الموقع. OAuth state تسجيل ذلك الواحد URI مرة وكل مرة Google الموصل (الحالي + المستقبلي) يأذن بدون مزيد من إعدادات الواجهة. SharedGoogleApp::resolve(...)’س redirect_uri منكم oauthParams(); لا تقوم أبدا بإعادة توجيه كل سلوك.OpsIQ\OAuth\SharedMicrosoftApp (البرنامج المشترك لمايكروسوفت)microsoft_oauth_*).

أزرار الاستيراد مقيدة بالقدرات

الـ الواردات (التعبئة التاريخية) زبائن الاستيراد الأزرار تظهر فقط للوصلات التي تنفذها فعلاً، مكتشفة بالتفكير، لذا لا يوجد علم للإعلان backfill() أو backfillChunk() .. لكى تحصل على زر الاستيراد listCustomers() (return {email, first_name,...} pages) لاكتساب عملاء مستوردين. AbstractConnector no-op ويبقى الزر مخفياً، لذا لا تقدم واجهة المستخدم أبداً استيراداً لا يمكن للموصل القيام به.

الذكاء الاصطناعي عبر الحافلات

وكيل إدارة المخاطر المركزية يقترح ويكتب الاجتماعات خارج اشارات الصفقاتOpsIQمُقترحة من طراز CRM→CalendarBridge), and auto-enriches new accounts, the “AI operates the CRM” cycle, executed across connector buses.

البحث عن تذاكر الدردشة مع العملاء (fetchTicket())

مستويان، لا تغييرات أساسية

عندما يشير زائر إلى رقم تذكرة في الدردشة مع العميل ("ما هو وضع T-000123?"), OpsIQ يحلها على مستويين. المستوى 1 يقرأ OpsIQ مخزن التذاكر، كل موصل مع inbound_ticket يعكس تذاكرها هناك، لذا التذاكر المتزامنة تعمل فقط لجميع الموصلات مع صفر لكل رموز الموصل. المستوى 2 هو احتياطي حي للتذاكر القديمة التي لم تكن مرآة أبدا: استدعاءات المعالج اختياري fetchTicket() على كل وصلة مفعّلة التي تنفذها. duck-typed (اكتشفها method_exists(), مثل contextProviders()/audienceCatalog()) ، وبالتالي فإن التوقيع ConnectorInterface لا يزال غير متأثر والموصلات التي لا تحتاج إليه (مصادر البريد الإلكتروني/الدردشة التي تنشئ التذاكر أصلاً) ببساطة تحذفها.

⚠️
الملكية إلزامية وعليكم إنفاذها fetchTicket() يتلقى هوية الزائر المتحقق منها في $ctx (client_id + client_emailنفس الهوية التي تم التحقق منها والتي يستخدمها العميل (إي آي) حلّ زبون المنبر من تلك الهوية والاستفسارات فقط null على أيّة أخطاء أو خطأ، لا توجد بيانات زبون آخر. null يهبط بلطف إلى "لم أستطع العثور على تلك التذكرة".
الموصل/العمل، عقد الإحضار (المرجع: موصلات/موصلات)whmcs والموصلات/المدبرة
<?php
// connector.php — OPTIONAL universal client-chat ticket resolver (Tier 2).
// Only add it if your platform keeps its OWN ticket store that may hold tickets
// not yet mirrored into OpsIQ. Return the normalised array below, or null.
//
// $ref      = ['mode' => 'id'|'tid', 'value' => string]  (from extract_ticket_ref)
// $ctx      = ['client_id' => int, 'client_email' => string]  (VERIFIED visitor)
// $settings = your connector settings
public function fetchTicket(array $ref, array $ctx, array $settings): ?array
{
    try {
        $email = trim((string)($ctx['client_email'] ?? ''));
        $cid   = (int)($ctx['client_id'] ?? 0);
        if ($cid <= 0 && $email === '') return null;            // no verified identity → refuse

        // 1) Resolve THIS visitor on your platform (by verified email/id).
        // 2) List ONLY their tickets and match $ref against the ticket number/id.
        // 3) Re-confirm ownership on the detail record before returning.
        //    On any miss/mismatch/error → return null (never leak).

        return [
            'tid'        => 'T-000123',     // the customer-facing reference
            'id'         => 123,            // your internal id
            'status'     => 'open',
            'subject'    => '…',
            'department' => 'Billing',     // '' if your platform has none
            'priority'   => 'high',
            'opened_at'  => '2026-06-29 10:00:00',
            'last_reply' => '2026-06-29 12:00:00',
            'message'    => 'opening message text',
            'replies'    => [               // oldest → newest; opening message may be first
                ['who' => 'You',   'date' => '…', 'message' => '…'],
                ['who' => 'Staff', 'date' => '…', 'message' => '…'],
            ],
        ];
    } catch (\Throwable $e) {
        error_log('[yourslug][fetchTicket] ' . $e->getMessage());
        return null;                                             // graceful degrade
    }
}

كيف يستخدمها المنبر

اكتشاف

CapabilityRegistry::providers($domain,$type) يعرض قائمة مقدمي الخدمات الذين لديهم حالة مركبة/متاحة/جاهزة (على أساس نظام الملفات؛ قاعدة البيانات فقط للعلامة المتاحة).

الاختيار

CapabilityRegistry::active($domain,$type) يُعيد أول مزود جاهز إلى الموصلات و الأماكن المحشوة، الجسور تنادي هذا بدلاً من اللصقات

إخطار بالتركيب

حيث يحتاج السمة إلى قدرة غير متصله بعد، تظهر وحدة التفتيش المشتركة وجود جهاز اتصال واحد و إنستال بسرعة، لا توجد سيطرة ميتة.

الدليل الكامل

انظر connectors/PLATFORM_CONNECTORS.md (CRM+ Site Intelligence) connectors/CRM_CONNECTORS.md في العبوة

الموصلات

:: عمليات البحث عن الخدمات الذاتية للزبائن وعمليات رد الأموال (بناء وصلتك لدردشة العملاء)

العملاء المُوقّعين يمكنهم أن يطلبوا من العميل دردشة (آي) عن حسابهم الخاص بـ "توازني" و "أوامري"OpsIQ تغيرات أساسية، لا منصة تشدّد، يُطلق على مظهرك كأدوات محلية (لا يمكن أن تخترع واحدة)، والهوية محجوزة بجانب الزبون المتحقق منه، وتُحدَّث النتائج تلقائياً لصالح وكالة الاستخبارات.

إعلان البحث عن زبون

في يدك actions.json, يصبح عمل القراءة فقط قابلا للاستدعاء من قبل العميل مع كل الثلاثة: "scope":"client", "requires_confirmation":false, "is_destructive":falseاستخدام "scope":"both" عندما يكون نفس النظرة أيضاً من قبل فريقك في مكتب أمين الكحول admin, client, both و system (system لا تصل إلى أي من الفينول الخماسيAPIوطرق الشبكة فقط - أي شيء آخر مرفوض بشكل صحيح: تفشل عملية التثبت من الرزمة ولا يستقر العمل. writing النطاق - يقدم مساعد الكتابة خدماته admin تم تحديد العمل

قاعدة الهوية (إلزامية)

سمّي مُسعف الهوية الخاص بك من المجموعة القياسية، مُغلقة على الرقم المُتأكد client_id, clientid, customer_id, user_id, userid, account_idمقفل على هذا الدبدوب كسلسلة: client_identifier, customer_identifier, account_identifier- مقفل على البريد الإلكتروني المتحقق منه: email, client_email, customer_email, user_emailOpsIQ تغلق وتلقائيا ملئها من المنصة التي تم التحقق منها العميل المسجل؛ لا ينظر الذكاء الاصطناعي أبدا أو اختيار الهوية.

ما يجب أن يظل في يد المديرين فقط

أي شيء غير مشمول بهذه الهوية:order_id/ticket_id وقوائم على نطاق المخزن، وأجهزة التفتيش المجانية هذه تسريبات عبر الزمرة على أي منصة "scope":"admin".

تركيب النتائج (مفاتيح التنبيه)

نتائج البحث مُثبّتة هيكلياً قبل أن تصل إلى المُحقق: تم إسقاط المفاتيح ذات الشكل السري، وربط الخيوط الطويلة والقوائم، وتُمَسَّر الحقول الفارغة، وخريطة مسطحة أوسع من غطاء المفتاح مفاتيح الجواب أولاالمالcredit, balance, amount, total, due, paid)هوية(email, *name, phone, company)، الدولة )status, active, expir*, renew*التواريخ، والخطة/المنتج/الخدمة/الاشتراك/الفاتورة/الفواتير/التذكرة، والعملة والعدادات stats/summary/totalsقبل أن تذهب أي مقاعد متبقية إلى مفاتيح أخرى ذات قيمة قصوى، إرشادات عملية100- نفايات منصة المفاتيح؛ حقل مسمّى خارج المفترس يتنافس على المقاعد المتبقية ويمكن أن يتم تقطيعه من حمولات واسعة جداً.

ما الذي يوفره موصلك

عمليتان أوليتان، خالية من السياسات: (1) قراءة للتحقق من المدفوعات قابلة للتصفية حسب الهوية وإحدى المعاملات المرجعية API يجب أن تكون و المرشحات)، مثلا whmcs_get_transactions؛ (2) رد نفقات التنفيذscope:"admin", requires_confirmation:true, is_destructive:trueلا يمكن أبداً أن يُعرض على الزبائن، مثل whmcs_refund_order. تختار الشركة كلا المفتاحين في الإعدادات → محادثة العميل؛ OpsIQ يعيد التحقق من جانب خادم الدفع، ويطبق صندوق سياسات الأعمال (سقف المبلغ، نافذة السن، الحد الشهري)، المسائل داخل الصندوق، وتقدم بطاقة مراجعة لكل شيء آخر.

توجيه القسم حسب المستلم

محرر الإجراءات لبناة الموصل له نفس الضوابط: حدد "من يمكنه استخدامه" لعملاء المسجلين، اترك كلا مربعي التحقق من الكتابة مغلقة، واستخدم اسم معيار هوية.

التنفيذات المرجعية

)أ( مدخلات "خدمة الزبون الذاتية" في connectors/whmcs/actions.json, woocommerce/actions.json, oscommerce/actions.jsonعقد كامل في connectors/README.md §8.1–8.2 و ConnectorInterface::registerActions().

الموصلات

مشاهدات الضيوف - دع الزوار يتتبعون الحجز أو الشحن أو الأمر دون التوقيع (التوقيف)

وتخدم الفنادق ورجال البريد والعديد من المنصات التجارية الزبائن الذين يحملون مرجعاً ولكن لا يوجد لهم سجل: ضيف له تأكيد حجز، ومتلقي له رقم التتبع. guest_lookup القدرة (عقد المرشد، والطريقة: المتولدة) تجعل موصلك يخدم أولئك الزائرين في دردشة العميلOpsIQتغيرات أساسية، لا تلاعب بالمنبر، موصلك يعلن ما يثبت الاستحقاق وميادين مركز الصحة العالمية واضحة؛OpsIQيُنفّذُ المفاتيحَ، الثورتل والزي الرسمي إنكار.

نموذج الثقة

المرجع + الدليل، لا هوية أبدا

يقوم الزائر بتجهيز مرجع السجل (مطابقة من قبل الريجكس الذي تعلنه) بالإضافة إلى الدليل الذي تلتقطه عادةً البريد الإلكتروني في السجلاتOpsIQالمُقدّم المُولّد يقارن الدليل على سجل (فيتشيد)، مُدخل الزائر لا يُثق به أبداً، ولا توجد هوية مُحقّقة.

تنكر الزي الرسمي (لا يوجد أوعية)

لا أساس له ولا دليل على وجود إجابة واحدة متطابقة، وتصدر تعليمات صريحة إلى منظمة العفو الدولية بعدم تأكيد ما إذا كانت هناك إشارة أو عدم اختراع التفاصيل المسجلة.IPقبل أن يتم استشارة موصلك

اختيار مزدوج، كلا من الفشل

لا شيء يخدم الضيوف حتى يُمكّن العمل من التبديل: التحكم على نطاق الفضاء في (ستينغز)→الأمن→"السجلات الأكثر وضوحاً في دردشة العملاء" (مُقرّبة من البعث، ومؤكّدة دائماً بكلمة سرّ، حتى عندما تطفأ الخطوة الاختيارية) و موصلتك الخاصة guest_lookup_enabled تركيب أو تمكين موصل وحيد لا يفتح سطح الضيوف

ضيف مخلص

سجلات المزود المتولدة على guest السياق السطحي - منفصل هيكليا عن admin و customerلم يتم استشارة مقدمي السياق الحاليين من أجل زوار مجهولين ولم يُستشير مُقدّم الضيوف قط للزائرين الموقعين، وخط التاكس الذي يتلقاه يحمل رسالة الدردشة والخردة التي تم تأكيدها والبريد الإلكتروني (غير المصدق) كأحد المرشحين لإثبات الهوية

تعلنه في المبنى

1
حددي عمل الجلبة

في خطوة الإجراءات، أضف إجراء قراءة فقط يعيد سجلا واحدا حسب إشارته (مثلا. GET /bookings/{booking_number}ورسم خرائط حقول الاستجابة مع أسماء مستعارة: الحالة، الوصول، المغادرة، الغرفة...

2
"تُكّر "مشاهدات الضيوف

على خطوة القدرات، guest_lookupويبدو أن فريقا مخصصا: اختيار عمل الجلبة، واسم البارامتر المرجعي، وأعط النمط المرجعي (هيئة من قبيل هيئة التوحيد القياسي مثل \bBK-[0-9]{4,10}\b)أ( اسم السجل )الكتابة(، واختار الدليل - البريد الإلكتروني على المحضر )التوصية به( أو لا شيء )الإشارة وحدها، لتتبع حاملي البريد فقط(.

3
السماح بالميادين الظاهرة

علق الحقول التي قد يراها الضيف تماماً، وكل شيء آخر مُدمر - لم يُعاد صياغته أبداً، إنّ البُنيّر يرفض حقول من نوع (الالبريد، الهاتف، العنوان، الدفع) في القائمة المسموح بها، ونسخة مطابقة لبوابة الإطلاق تُعيد التحقق من نفس القاعدة قبل النشر، لذا لا يمكن للمواصفات اليدوية أن تتسلل إلى مكان واحد.

4
النشر والتمكين

المقاولة GuestLookupProvider.php - التنفيذ المكثف الكانتوني، مطابق لكل مجموعة من الطرود المتولدة - ويضيف guest_lookup_enabled العمل يُسلّح المفاتيح و الدردشة التي تبدأ في تقديم المشاهدة عندما يسأل زائر عن نوعك القياسي

قواعد العقود

الحقول التي تُشكّل الوضع فقط

فكري في ما الذي سيطبعه ساعي البريد على صفحة التتبع العام: الحالة، التواريخ، الغرفة أو فئة الخدمة، الأرقام الاسماء، تفاصيل الاتصال، عناوين الشوارع، بيانات الدفع ومذكرات مجانية ليس لها مكان في محادثة مجهولة المصدر - المبنى والتطابق كلاهما يرفضانها.

"الآى" يجيبون فقط من الحي

المزود المولد ينهي ناتجه بتعليمات للرد فقط من الحقول المدرجة في القائمة و يقدم تذكرة لأي شيء آخر

المتابعة تستمر في العمل

المُقدّم يعيد استدلال الإشارة من رسائل الزائر الأخيرة في نفس المحادثة، لذا "و متى سيخرج؟" يعمل بدون إعادة صياغة المرجع، وتذكر الرسالة المرجعية والدليل المتطابقين على قراءتها كـ"كلاديداتس"، لذا فإن المتابعة لا تعاود الظهور، بل هي مرشحة فقط:

رزم مصممة يدويا

مجموعة من الأسواق قد تشحنها بنفسها GuestLookupProvider.php implementing ContextProviderInterface مع surfaces(): ['guest']اتبع عقد النموذج المولد بالضبط... أحضر بالمراجع، و تطابق الأدلة، و رفض الزي الرسمي، و الإنتاج المسموح به فقط guest_lookup in capabilitiesالتوحيد يتحقق من سطح الضيوف ويمسح القائمة المسموح بها للـ (بي.ب.إ)

💡
أما النظراء الضيوف فهما يقرأان فقط في سياق الثرثرة AI. ولا يقومون بأي عمل، ولا ينشئون هويات أبدا، ولا يفتحون أبدا مسار العمل الخاص بالخدمة الذاتية للزبائن فوق - الذي لا يزال يتطلب زبونا موقعا على منصة.
الموصلات

استهداف الجمهور الترويجي (promo_audience)

دعْ حملةَ إستوديوِ الترقيةِ تُستهدفُ مِن قِبل الزبون الحيّ ودولة الفواتير من من منصةِكَ: "لديه فاتورة غير مدفوعة الأجر، "معلق"OpsIQ التغييرات الأساسية، لا منصة للربط: يبدو موصلك كمنبر في شريط استهداف الاستوديو مع هبوطه الخاص بالوقائع، والعديد من الموصلات يمكن أن تُمكّن جنبا إلى جنب.

الجمهور الترويجي
استهداف الجمهورهوية متحقق منها تُنقل إلى نداء علامة المتلقي المتصل الذي ينتج حقائق تقود قاعدة استهداف، مع ملاحظة إغلاق الفشل.استهداف الجمهورمساحة العملمسجل الدخولهوية متحقق منهاaudienceFlags ()وصلتكالحقائقunpaid_invoices = 2قاعدةالفواتير غير المسددة ≥ 1عروض الحملةفشلت في الإغلاق: عميل غير معروف أو أي خطأ → الحملة تظل مخفية.1TWO METHODSقائمة + رموز2LIVE STATEغير مدفوعة، معلقة، الحالة3FAIL-SAFEلا تظهر أبداً للشخص الخطأ
إجابات موصلك على حقائق مباشرة لزائرة الدخول، الأستوديو يستهدفهم ويفشل في إغلاقه

كيف يعمل

1
ذكر حقائقك

تنفيذ audienceCatalog () على فئة وصلتك. إنها تعيد وسماً وقائمة المفاتيح التي يمكن أن تستجيب لها منصةك. يظهر كل مفتاح في القائمة المنبثقة للاستديو تحت اسم منصتك.

2
رد لعميل واحد

Implement audienceFlags(array $identity). OpsIQ calls it at delivery time with the VERIFIED logged-in visitor identity (from the widget identity token, the same identity the client chat AI uses). Return a flat key => value map.

3
تم

تفعيل الموصل. علامة التبويب استهداف Promotion Studio تنمو قسم "العميل والفواتير" يعرض منصة؛ المديرين بناء القواعد مثل "الفواتير غير المدفوعة >= 1"؛ كل حقيقة تصبح أيضا متغيرا للتخصيص مثل {unpaid_invoices}.

موصل، عقد النطق الكامل
public function audienceCatalog(): array
{
    return ['label' => 'My Billing Platform', 'keys' => [
        ['key' => 'unpaid_invoices', 'label' => 'Unpaid invoices (count)', 'type' => 'number'],
        ['key' => 'pending_orders',  'label' => 'Pending orders (count)',  'type' => 'number'],
        ['key' => 'client_status',   'label' => 'Client status',           'type' => 'text'],
    ]];
}

public function audienceFlags(array $identity): array
{
    // $identity = verified token payload: ['email' => ..., 'id' => ..., 'name' => ...]
    $email = strtolower(trim((string)($identity['email'] ?? '')));
    if ($email === '') return [];
    $client = $this->api('GetClient', ['email' => $email]); // your platform call
    if (!$client) return []; // unknown client -> return [] (fails CLOSED)
    return [
        'unpaid_invoices' => (int)$client['unpaid_count'],
        'pending_orders'  => (int)$client['pending_orders'],
        'client_status'   => (string)$client['status'],
    ];
}

قواعد العقود

الإعلان عن القدرة

إضافة 'promo_audience' إلى وصلتك capabilities() المصفوفة بحيث المنصة والسوق قائمة بأنها قادرة على الجمهور (الاكتشاف يعمل أيضا من وجود الطريقة، ولكن الإعلان عنها هو الإشارة النظيفة). connectors/whmcs هو التنفيذ المرجعي الكامل.

تسمية المفاتيح

الحرف الصغير 2-60 chars, matching ^[a-z0-9_]+$. types: number, text, bool. المفاتيح غير المعلنة التي تعود من audienceFlags () لا تزال قابلة للاستخدام في القواعد، ولكن أعلن كل شيء تدعمه حتى يمكن للمديرين رؤيته.

التحقق من الهوية

The $identity array comes from the signed widget identity token issued by the customer site at login, never from client-supplied fields. If your platform cannot resolve the identity, return an empty array.

الفشل مغلق دائماً

على أي خطأ (API down, client not found, timeout) return []. القاعدة التي تفتقر إلى الحقيقة تجعل الحملة لا تظهر. يجب ألا يصل أبدا أي منبثق يستهدف الفواتير إلى الشخص الخطأ؛ OpsIQ يفرض هذا في القاعدة المطابقة أيضاً.

باء - الأداء

يتم استدعاء audienceFlags () مرة واحدة على الأكثر لكل وصلة لكل زيارة صفحة، و فقط عندما تستخدم حملة منشورة قواعد المنصة الخاصة بك. الزوار المجهولي الهوية يكلفك صفر مكالمات. 1-2 API (أ) المكالمات؛ OpsIQ مذكرات داخل الطلب.

مشغلون مقدمون مجانا

الادمان يجمع مفاتيحك مع "الـ "و" و "مـن

رموز الشخصية

كل حقيقة تضاعف كمتغير في نسخة الحملة: {unpaid_invoices}, {client_status} بالإضافة إلى العناصر المدمجة. {first_name} و {client_email}- يتم تطهير القيم قبل معالجتها.

وصلات سوقية غير مشفرة

الوقائع التلقائية

الإعلان (JSON-only) marketplace connectors get promo_audience for FREE: إذا كان وصلك يعلن عن الزبائن/المستخدمين، أو الفواتير، أو الطلبات أو موارد الاشتراكات، OpsIQ يستخرج حالة_الزبائن، الفواتير_غير المدفوعة، المبلغ_المستحق، الطلبات_المعلقة، الاشتراكات_النشطة وحالة_الاشتراك من إجراءات البحث الموجودة لديك.

فهرس مخصص (settings.json)

"منصّبي" "مُنبري"، "مفتاح": "مفاتيح" "أصوات، "أصفاد" ، "العلامة" : "سجادة" ،"نوع" ، نوع"

اختبار مقدم الخدمة

1
تشغيل الموصل

"إتصلوا بـ "موصلكم و إينب ثم افتحوا أيّة دفّة للحملة الانتخابية يجب أن تظهر منصة تحت "العملاء

2
إنشاء قاعدة

أضف: منصتك · مفتاح · >= · 1 وحدد "العملاء المسجلين فقط". حفظ ونشر.

3
التحقق من الاتجاهين

تسجيل الدخول إلى منصة كعميل الذي يتطابق مع القاعدة (النافذة المنبثقة يجب أن تظهر) وكواحد لا يفعل ذلك (الباب ينبغي أن تظل مخفية).

إطلاق حملة من شفرة الخاصة بك (المحرك الشخصية)

لماذا

بعد المحركات التي تم بناؤها (القتل، اللف، الخروج، النقر، الصفحات، العرض، الدردشة/النشاط التذاكر)، يمكنك إطلاق حملة من أي مكان في موقعك أو موصل للخلف، بعد خطوة ناجحة للخروج، عندما يتم التخلي عن العربة، عندما يغير جيش السلام الخاص طريقك، وما إلى ذلك.

كيف

حدد محرك الحملة على مخصص مع اسم حدث (مثلاً checkout_failed) ثم استدعاء الوصلة العالمية من صفحتك:

موقعك/الموصل
// Any campaign whose Custom trigger event matches will be evaluated
// (it still respects targeting, frequency caps and audience rules).
window.OpsIQPromo && window.OpsIQPromo.fire('checkout_failed');
💡
ولا يتعدى أي حدث على الاستهداف أو التواتر، بل إنه لا يطلق إلا " متى " المتحدة "
ويوجد دليل كامل لطريقة الاستخدام (التصميم، والكتل، والتحليلات، واختبار الاختلافات بين النسختين، والنشر) في مركز المساعدة الموجود داخل التطبيق تحت عنوان المهنة→استديو الترقية- يتم اكتشاف القدرة هنا تلقائيا من أي موصل للشبكة في الموصلات/أو السوق - الوصلات - لا يوجد ما يسجل، وشحن المنهجين، والاستوديو يفعل الباقي.
الموصلات

قدرة وصلات المسح (العقد 2.2)

الـ survey وتسمح قدرة البرنامج على تحليل البيانات لأي منصة بتزويد استوديو الاستقصاء ببيانات هوية الزبائن المتحقق منها، والوقائع المتعلقة بالجمهور، والمتغيرات الآمنة، ومرشحي المستفيدين. promo_audience ولا يعطي الموصل ملكية الاستقصاءات أو الردود أو التحليلات أو تسليم البريد الإلكتروني.

💡
حالة التنفيذ - اكتملت صياغة عقد الربط وصار جاهزا للاستخدام اليوم 2.2, SurveyConnectorInterface, the dedicated Builder panel, generated SurveyProvider.phpبيانات الوصف والتوافق مع عزل جميع السفن. الاستهلاك لم يتم بعد: SurveyConnectorRegistry تنفيذ واختبار، ولكن لا يوجد أي وقت التشغيل الاستقصاء يستدعي بعد، لذلك مقدم صحة لم تظهر في واجهة المستخدم الإداري ولا يعلن عن القدرة أي حزمة وصلات منشورة. إصدار الرموز المميزة الموقعة بوابة هوية استقصاء، والاستهداف والتكامل المتغير، وتجسيد CRM الاتصال وأول شحنة مقدم رسم الخرائط تظل مراحل منفصلة. بناء على هذا العقد الآن؛ توقع وقت التنفيذ لبدء استهلاكه في إصدار لاحق.

مسؤوليات مقدمي الخدمات

فهرس الجمهور وحقائقه

تشمل الحقائق النموذجية order_count, last_order_status, cancelled_order-count, customer_created_at, active_subscription_count، past_due_invoice_count و open_ticket_count.

فهرس المتغيرات وقيمها

إعلان متغيرات العميل والحساب والطلبية والاشتراك والدعم مع تحديد النوع والحساسية والسياق المسموح به.

اتصالات المتلقين

تعداد المرشحين الاختياريينCRM:: التواصل مع الهويات الخارجية المستقرة، والصفحات المقيدة، والسماسرة المحددة، والبيانات الوصفية ذات الصلة بالرضا، وتجمّد الدراسة الجمهور المختار قبل أي إرسال.

الهوية

لا تقبل الهوية إلا من بوابة هوية الاستقصاء بعد التحقق من توقيع الرموز، وانتهاء الصلاحية، والغرض، والموصل، ومنطقة العمل.

صحة وقت التشغيل

صُمم SurveyConnectorRegistry للإبلاغ عن مقدمي الخدمات المتوافقين والمعطلين وغير المتاحين دون الكشف عن الإعدادات أو المسارات أو الهويات الخام أو رسائل الاستثناء، ولا يمكن استدعاء مقدم خدمة معطل أبداً.

قواعد الإغلاق الطارئ

ويتم رفض المفاتيح غير المعلنة، والأنواع الخاطئة، والقيم الكبيرة جدا، وعدم مطابقة الموضوع، وانقضاء وقت الاتصال، والهوية المجهولة. ولا تتطابق قاعدة الاستهداف التي تحتاج إلى واقعة غير متاحة. وتحد صفحات المستلم ومراجعتها. لا تظهر القيم الحساسة أبدا في التبصير العام أو السجلات.

بوابة إطلاق البناء

العقد 2.2 ينقل قيد سجل القدرات، والوصلة البينية، ولوح رسم خرائط المسح، والمولد SurveyProvider.phpوتشملها نماذج التجارة، ومكتب المساعدة، وجسر برامج الحاسوب كخدمة (SaaS)، ونماذج برمجة البرمجيات المحلية؛ API ترفض البوابة الثابتة مقدم الاستقصاء الذي يستدعي فضاء أسماء الترويج أو الجدول أو القدرة.

💡
النسخة من الترويج هي للاستيراد فقط: يمكن للبناة ترجمة رسم الخرائط المتوافقة للتشجيع مرة واحدة، وحفظ نسخة كاملة مملوكة للمسح وسجل المنشأ. يجب ألا يغير حذف أو تغيير رسم الخريطة الترويجية سلوك المسح.
الموصلات

القدرة على الرد والتغذية المرتدة (العقد 2.2)

الـ reply_feedback وتعكس قدرة المنبر تقييماته الخاصة لكل استجابة في OpsIQ نجم الزبون يعطي موظف الرد داخل WHMCS منطقة العميل تقع على نفس الرد في.OpsIQ الموضوع الإداري، مع نفس الرقاقة، وكيل الائتمان، مدخل صفحة التعليقات والفريق والأداء الحساب كتقييم مقدم على.OpsIQ تخزين واحد، رقاقة واحدة، خط أنابيب واحد؛ الموصل يترجم فقط.

مسار الكتابة الوحيد

هناك مسارين للدخول بالضبط وحقيقة واحدة. تذاكر البوابة OpsIQ تكتب بشكل أصلي. وتذاكر المنصة تتدفق عبر الموصل، ويحط كل حدث في النواة عن طريق ReplyFeedback::recordMirrored(): نفس الأعمدة، قاعدة الموظفين فقط، أحدث توائم على مستوى واحد في كل مرة، وطابع العمل وصوت العملاء الذين يفهرسون البوّابة يستخدموا الكتابة ولا يقوم موصل بكتابة صفات التغذية المرتدة نفسها

مطابقة (أربعة ملفات، ثم إعادة التوقيع)

1
connector_contract.json

إضافة القدرات. رد_التغذية المرتدة مدخل: الإصدار 1.0، الرد على ردود التغذية المرتجعة ConnectorInterface، طرائق replyFeedbackCatalog و pullReplyResponse، تعني ضمنا inbound_ticket.

2
settings.json

هذا ما يقرأه الوصل

3
spec.json

ردّكِ على الرّد، ودرجة تقدير المنصّة، هذا ما تقرأه بوابة التّزام.

4
فئة وقت التنفيذ

تنفيذ الواجهة، وقائمة reply_feedback في capabilities ()، ثم إعادة توقيع الحزمة.

مسؤوليات مقدمي الخدمات

فهرس

الإعلان عن أنماط، مقياس التقييم الخاص بالمنصة (تطبيعات النواة إلى ) 1-5ويجب أن يتفق الفهرس مع المواصفات.json.

ترجمة السحب

pullReplyFeedback يعيد أحداثا معيارية: رمز تذكرة المنصة، ورمز رد المنصة ، والتصنيف ، وردود الفعل/التعليقات الاختيارية ، ووقت التقديم و event_id مستقر.

عدم التكرار

event_id مستقر حسب حالة التغذية المرتدة، لذا فإن الحدث المعاد تشغيله هو لا-عمل وتغيير التقييم يكتب فوق (آخر الفوز، مثل البوابة).

انضباط المؤشر

إن صفحات الويب محدودة وحتمية؛ فالمؤشر الذي لا يتحرك إلى الأمام ينهي السير. ويستنفد الملء التاريخي المتأخر كنافذة متحركة، وليس بسحب عملاق واحد أبدا.

سلامة المسبار

بدون تشكيلة، ارجع صفحة كاملة فارغة بدلاً من رميها، المبارزة التطابقية مع حجج فارغة

القرار المغلقة

يقوم النواة بحل كل حدث إلى رد محلي من قبل المرآة المؤشر أن البطاقة مرآة الختم بالفعل (<slug>:<ticket>:reply:<reply>حدث لا يمكن حله تم إسقاطه، ولم يخمن أبداً، التعليقات فقط تُعلق على ردود الموظفين و إئتمان العميل يأتي دائماً من كاتب الرد الحالي inbound_ticket أو ticket_mirror.

مثال عملي: WHMCS

WHMCS تخزن تقديرات النجوم لكل رد في منطقة العملاء tblticketreplies.rating. الـ WHMCS الموصل يعلن وضع الاستفتاء مع. 1-5 الحجم، السفن)أ( ticket_reply_ratings يربط أمر الترحيل في ملف الجسر الخاص به، ويترجم كل صف إلى حدث تتطابق هوياته مع whmcs:<ticket>:reply:<reply> بعد تحديث الموصل، أعد نسخ ملف الجسر إلى الخادم WHMCS حتى يوجد الأمر الجديد هناك.

💡
عقد كامل للمطور مع الواجهة، وأشكال الأحداث، وقواعد التوحيد والقائمة المرجعية للامتثال: doc/contracts/TICKET_REPLY_FEEDBACK_CAPABILITY.md في الحزمة OpsIQ. القبول: تقييم رد داخل المنصة، الانتظار للاستطلاع كل ساعة، ونفس الرد في _OpsIQ يظهر الرقاقة، صفحة التغذية المرتدة تذكرها، والحدث المعاد تشغيله لا يغير شيئًا.
الموصلات

القدرة على دمج التذاكر (العقد 2.4)

الـ ticket_merge القدرة تجعل التذكرة تدمج في OpsIQ تذكرة المنصه المحتفظ بها تستلم رسائل التذاكر المدمجة بدءاً برسالة فتح كل تذكرة مدمجة

لماذا هو موجود

مدمجة OpsIQ ينتقل كل رسالة من التذاكر المدمجة إلى تذكرة الحفظ ويزيل التذاكير المدمجه قبل العقد 2.4 موصل سمع فقط ticket.deleted لكل تذكرة مدمجة WHMCS أغلقت تلك التذكرة وبقيت WHMCS تذكرة لم تستلم أبداً ما كتبه الزبون أولاً: لقد أظهر هذا الموضوع (ميرغيد) وكان المحتوى مفقودا

ما الذي يرسله اللب

تذكرة مزورة (مجرد كل رقيب)

ticket_id, ticket_numberالموضوع external_ref (أ) تذكرة KEPT؛ native_table (opsiq_tickets); site_keyالمصادر، التذاكر المدمجة القديمة أولاً، مع كل واحدة منها ticket_id, ticket_numberموضوع external_ref, client_name, client_email, created_at والرسائل ] {reply_id, author_type, author_name, created_at(ج) merged_by; merged_atالرسائل هي المحادثة التي يمكن أن يطلع عليها الزبائن، والتي تم أسرها قبل الحركة، ولا تُدرج الملاحظات الداخلية أبداً.

تذكرة محررة (لكل تذكرة رُفعت)

لا تزال النيران، الآن merged_into {ticket_id, ticket_number, external_refلا يوصلها (كور) إلى موصل يعلن ticket_mergeيمكن للمستهلكين الآخرين أن يخبروا بدمج من حذف.

وصلات شبكية خروجية

التذكرة المزخرفة هي مناسبة يمكن إنجازها، ونقطة نهاية من موقع سايس على الشبكة العالمية مشتركة في التذاكر 2.4 يَسْمعُ الدمجَ.

ما يفعله موصلك

أعلن

List ticket_merge in capabilities() and settings.json, and implement TicketMergeConnectorInterface::mergeTickets(array $merge, array $settings). Required on Contract 2.4 for any package that declares ticket_mirror or handles ticket.deleted; conformance fails it otherwise.

تَرْكُمْ

When the kept ticket and a merged ticket both have a copy on your platform (TicketMergeContract::twins() resolves them from external_ref), call the platform's own merge.

وإلا تضاف مذكرة خاصة

A merged ticket with no copy on your platform: add TicketMergeContract::transcript() to the kept platform ticket as a PRIVATE note. Never a public reply, which would email the customer their own old messages.

تقرير ما لم يدمج

(أ) إعادة {حسناً، وطريقة، ودمج، ملاحظاً، خطأ غير مُزدحم، كل نسخة مدمجة لا يمكنك دمجها تُظهر في غير مزدحمة، ويطبق الجوهر على مناولتك العادية للحذف (أي حذف بـ mirror_deletes) بالضبط لتلك التي تم فيها عدم دعمه إلا عندما يكون المنبر ليس له أي مذكرة خاصة أو نقل أو فشل كبير

تكريماً لضحكاتك

نفس المرآة التي تُدخل بوابة تذكرتك الأخرى تعكس سيرجات البوابة

"الزئبق التي تبدأ من خلال مركبك"

Resolve the platform ids and call TicketMergeContract::applyInbound(['<prefix>'], $keptId, $mergedIds). OpsIQ merges its copies with _origin=mirror, so nothing is pushed back to you.

عمليات التنفيذ المُعدَّلة

WHMCS

تذكرة رقيب (تذكرة محتفظ بها، وتذكرة رخوية = تذاكر مدمجة) عندما يكون كلاهما في WHMCSالتذكرة مع السيناريو غير ذلك، خطاف التذاكر يدمج OpsIQ نسخ عندما يدمج الموظفون WHMCS.

Zendesk

POST /api/v2/tickets/{id}/merge.json مع تعليقات خاصة (حتى خمس تذاكر لكل مكالمة)، بالإضافة إلى النص كتعليق خاص على التذكرة المحتفظ بها، لأن Zendesk يغلق التذاكر المدمجة دون نقل تعليقاتهم

OpsIQ جسر ساسا

POST /v1/tickets/{id}/merge مع source_ids(ب) التي تنقل ردود وملحقات البوّابة؛ ويحمل الرد الداخلي محضر التذاكر التي لم تكن موجودة على البوابة /manage يُدمجُ رِجالاً OpsIQ نسخ.

باني الموصلات

ticket_merge مستمدة، لم تدغدغ قط: يعلن الطرد المولد عن ذلك عندما يربط تذكرة المنصة التي ينشئها (مشترك مرخص له بتذكرة وصل على)، أو يتعامل مع التذكرة ticket_mirror- على خطوة التذاكر، تحت عمليات الدمجإختر عمل المنصّة الجزئي (الفصل الدمجي)target_remote_idو يُدمجsource_remote_ids أو يدمج.source_remote_id() ومذكرة خاصة (ملاحظة ختامية.remote_id وملاحظة، الجميع، المُنتجين يستعملون كلا الأمرين مع عدم وجود أي منهما، يحذر البناء أن رسائل التذاكر المدمجة لن تصل إلى المنصة

💡
العقد الكامل: doc/contracts/CONNECTOR_CONTRACT.mdتذكرتين في قسم التذاكر OpsIQ وكلاهما موجودان على الرصيف، ثمّ افتح التذكرة المحتفظ بها على المنصة الرسالة الأولى للتذكرة المشرقة هناك.
الموصلات

سوق الموصلات

يسمح لك السوق باكتشاف وتثبيت ونشر موصلات بنيت من قبل المجتمع.

سوق
سوق الموصلاتشبكة قابلة للبحث من بطاقات وصلات المجتمع مع الفئات، وأزرار التثبيت وتصنيف النجوم.سوق الموصلاتمساحة العملالبحث عن وصلات...Calendlyالجدول الزمنيتثبيت★ 4.8HubSpotCRMتثبيت★ 4.6Mailchimpالبريد الإلكترونيتثبيت★ 4.7QuickBooksالمحاسبةتثبيت★ 4.5Twilioالرسائل النصية القصيرةتثبيت★ 4.9المفهومالمستنداتتثبيت★ 4.41DISCOVERوصلات مجتمعية2في نهاية المطافنقرة واحدة3PUBLISHتوقّع وتقديم
موصلات مجتمعية للحشد، تركيبة في نقر واحد، أو التوقيع ونشر الخاص بك، قبل المقطع وسوق اليدين كل من يمكن البحث.

إيجاد وتركيب موصلات

1
تصفح

اذهب إلى موصلات > السوق. البحث عن الاسم، أو الفئة، أو المنصة.

2
ألف - الاستعراض

تحقق من الوصف، والإجراءات المدعومة، والتقديرات.

3
تثبيت

يتم تنزيل حزمة الموصل وتثبيتها في المكان marketplace_connectors/.

4
تكوين

فعّله في Connectors، وأدخل API credentials، واختر.

نشر وصلة

1
البناء والاختبار

استخدم بنّاء الوصلة، وتحقق من أن جميع الأعمال تعمل.

2
حزمة

إنشاء ملف.json)أ( اﻷعمال.json المعارف.json ملفات PHP.

3
توقيع

Run php tools/sign_connector.php <slug> to sign ONE package (it also accepts a path). It does not boot OpsIQ, so give it the key: either --key=<secret> or the OPSIQ_CONNECTOR_SIGNING_KEY environment variable, otherwise it stops with "No signing key available". tools/resign_all_connectors.php re-signs EVERY package on the install and reads the key from settings by itself, but it can also mint a NEW install-wide signing key, so reach for it only when that is what you want.

4
تقديم

تحميلها من خلال تدفق الطلبات في سوق الاستعراض.

فئتان من الموصﻻت

موصلات/ - ما الذي يجري فعلا

الجذر الاكتشافي، كل شيء هنا على الهواء:OpsIQأي شيء تم تركيبه من السوق وأي شيء ينشره بنّاء المُدير على هذا التركيب

السوق - الوصلات/الأماكن التي تُصدر فيها حزم

المصدر الذي ينشر حزم السوق من الطرف الأول. إنه ليس جذر اكتشاف: لا شيء هنا حي حتى يتم تعبئته، والتوقيع عليه، وزرعه في الفهرس، وتركيبه، وعند هذه النقطة تصل نسخة إلى connectors/.

💡
انظر في كل من المكانين. الحزمة التي قمت بتأليفها تحت marketplace_connectors/ ليست النسخة التي تعمل ـ فالتثبيت ينسخها إلى connectors/، وهذه النسخه فقط هي التي يتم اكتشافها عند التشغيل. Stripe, BigCommerce, Magento 2, PrestaShop, OpenCart, Amazon SES، Postmark وإعادة الإرسال هي جميع حزم السوق: تثبيت واحد قبل توقع العثور عليه في موصلات.
المطور

API وبنية الوصلات الشبكية

The API and Webhook Builder lets you create custom API endpoints and webhook listeners inside OpsIQ without writing raw PHP.

API الجهة القائمة بالبناء
API وبنية الوصلات الشبكيةإنشاء اختيار نوع من المحرك (الويب هوك الوارد، الجدول الزمني، الحدث، الدليل) الذي يغذّي في عمل قابل للتعديل.API & بنّاء الوصلات الشبكيةمساحة العملمحفزوصلة شبكية قادمةالجدول (بالكرونات التشيكية)OpsIQ الحدثيدويإجراءخرائط الحقول القادمة→إنشاء تذكرة / إخطار / مكالمة APIحفظ نقطة النهاية1مسودات البريد الإلكترونياتصال شبكي · جدول زمني · حدث · دليل2NO RAW PHPبني في واجهة المستخدم3إجراءرسم الحقول، ثم التنفيذ
بناء نقاط نهاية بدون ضغط خام: اختيار محفز (في موقع الإنترنت، الجدول الزمني، الحدث أو الدليل)، ثم رسم خرائط للمجالات إلى العمل.

المشغلات

حدث

أهرب عندما يحدث شيء في OpsIQ, أو عندما يقوم نظام خارجي بنشر حدث مطابق لـ webhook الخاص بك. URL. اكتب اسم الحدث، مثل ticket.created.

الجدول الزمني

استخدم أحد الأحداث الفاصلة المدمجة كأسم للحدث: cron. minutely، cron. hourly أو cron. daily. تحتوي شاشة العمل والمحركات على أزرار لهذه الأحداث، لذا فليس عليك أن تتذكرها.

العبارة

تشغيل عندما يطلب مدير من الذكاء الاصطناعي له بلغة واضحة. أضف العبارة التي ينبغي أن تتطابق، على سبيل المثال إيجاد عميل.

وصلة شبكية قادمة

نظام خارجي يرسل HTTP POST إلى جهازك OpsIQ شبكة URL مع اسم حدث أي محرك يستمع لهذا الحدث يطلق

تشغيله فقط في بعض الأحيان: الشروط

يمكن أن يحمل مثير الحدث شروطاً، وبالتالي فهو لا يعمل إلا عندما تتطابق البيانات الواردة. وبدون شروط فإنه يعمل في كل مرة يتم فيها إطلاق الحدث.

حقل

مسار إلى بيانات الحدث. استخدم نقطة للقيم المتداخلة، على سبيل المثال customer. email.

تطابق كل أو أي

اختار ما إذا كان يجب أن تتطابق كل قاعدة، أو واحدة فقط منهما.

اختبارات النصوص

تساوي، لا تساوي ، تحتوي، لا تتضمن، يبدأ ب، هو واحد من، ليس أحد.

اختبارات العدد

أكبر من، على الأقل، أقل من، كحد أقصى. الأرقام المكتوبة كنص لا تزال تقارن بشكل صحيح.

اختبارات الوجود

)أ( هو موجود، أو غير موجود،

فقط اطلب من المهندس المتواجد تحت الطلب للحصول على تذاكر عاجلة

السيناريو:
حدث تذكرة. أنشئت، مع قاعدة واحدة: الأولوية تساوي عاجلة.
ماذا نفعل:

يجري العمل للتذاكر العاجلة ويتم التغاضي عن كل شيء آخر. لا ترشيح مطلوب في الطرف الخاص بك.

💡
إذا تركت القواعد فارغة، فإن المحرك سيعمل على كل حدث مطابق، وهو نفس السلوك كما كان قبل وجود الشروط.

الإجراءات

إرسال webhook

إرسال HTTP POST إلى URL خارجي مع حمولة مخصصة.

العملاء المسجلين

إنشاء تذكرة الدعم مع إدارة محددة، والموضوع والرسالة.

إرسال البريد الإلكتروني

أرسل بريداً إلكترونياً مع نموذج مخصص.

تحديث السجل

تحديث زبون، أو وثيقة، أو سجل CRM.

تشغيل إجراء وصل

تنفيذ عمل مسجل من وصلة تمكين مع إجازة وصلته وقواعد التأكيد.

الركض OpsIQ الجنرالات API الإجراء

البحث في الكتالوج الكامل المسمّى General API. الحقول، والأحجام، والتصاريح، والتأكيد، ودعم التشغيل التجريبي تأتي من عقد العمل الحي؛ ويُنفّذ تدفق العمل داخل مساحة عمله المحفوظة وسياق المدير.

إرسال طلب API الأصلي لمقدم الخدمة

استخدام وصلة Native API Read or confirmed Native _API Write action when the provider endpoint has no curated action. تظل بيانات الاعتماد داخل الموصل ولا تُقبل سوى المسارات النسبية للمقدمين.

يستخدم بنّاء الإجراءات والمثيرات، /api/v1.php, OpenAPI وPostman نفس ActionContractRegistry، بحيث لا يمكن أن ينحرف عمل قابل للاختيار من توثيق وقت التنفيذ.
المطور

كتاب الطبخ

وصفات جاهزة للاستخدام لإجراءات التحريك من أجل التشغيل الآلي الشائع.

كيف يعمل
كتاب الطبختدفّق وصفة: إنّه وقت تصاعدي، ويب هوك يمرر مرشح إنتاج، ثمّ يُشجّعُ لخلق تذكرة عاجلة وإشعارSlack.uptime.downرصد webhookإذا اقترحfilterإنشاء تذكرة عاجلةالإخطارSlack# النوبات
كتاب الطبخ

إنشاء تذكرة آليا من الرصد

السيناريو:
يرسل نظام الرصد رسالة POST عند تعطل الحاسوب المركزي.
ماذا نفعل:

Trigger: Inbound webhook Condition: payload.status = "down" Action: Create ticket · Dept: Technical, Subject: "Server {{payload.hostname}} down", Priority: Urgent

Slack إخطار بالأوامر الكبيرة

السيناريو:
Slackرسالة في كل مرة يضع فيها الزبون أمراً$100.
ماذا نفعل:

Trigger: Event (order.completed) Condition: order.amount > 100 Action: Send webhook to Slack incoming webhook URL with order details

موجز أسبوعي بالبريد الإلكتروني

السيناريو:
موجز بالبريد الإلكتروني إلى الإدارة كل يوم اثنين في الساعة 9 صباحا.
ماذا نفعل:

Trigger: Schedule (Monday 09:00) Action: Send email with last week's stats pulled from the REST API

رفع درجة الطلبات المتقادمة

السيناريو:
إذا لم يكن هناك رد على التذكرة 24 ساعات، تعين على قائد الفريق.
ماذا نفعل:

Trigger: Schedule (every hour) Condition: ticket.status = "Open" AND ticket.last_reply_age > 86400 Action: Assign to team-lead, add internal note

المطور

بناء أول عمل لك

هذا المسار يخلق عمل وصلة بسيطة من الصفر.

إجراءات البناء
بناء إجراءنموذج لتعريف العمل: name lookup_order، طلب GET إلى /orders/{id}, وبارامترات id مطبوعة، ومرور 200 الاختبار.إجراء جديدمساحة العملإجراء جديدالاسمlookup_orderالطلبGET/orders/{id}باء - الدعمسلسلة200 · لم يوجد طلب1DEFINEالاسم، الطريقة، النقطة النهائية2PARAMSالمدخلات المطبوعة3اختبارحياة 200 النتيجة
بناء عمل واحد من الخدش، سمّه، حدد الطريقة ونقطة النهاية، وإعلان الطوابع الكاتبة، واختبارها على الهواء مباشرة 200.

نوعان من الإجراءات

قبل أن تبدأ، قرر أيهما تريد. كلاهما يتم تشكيله في نفس الشاشة.

اتصل بـ API خارجي

يرسل الإجراء طلب HTTP إلى منصة عملك. اختر هذا عندما تحتاج OpsIQ إلى الاتصال بك والقيام بشيء ما لصالحك.

تشغيل عمل وصلة

يقوم الإجراء بتشغيل شيء يوفره موصل مركب مسبقاً. اختر هذا عندما يكون العمل متاحاً بالفعل وتريد فقط إطلاقه. يمكنك اختيار إجراء الموصول من قائمة، لذلك لا يوجد شيء لتوصيله.

الخيار الثاني هو كيف يمكنك إعادة استخدام كل شيء يمكن أن تفعله وصلاتك بالفعل دون بناء أي منها مرة أخرى: قراءة موضوع التذكرة، والبحث عن عميل، واستيراد جهات الاتصال، وهلمجرا. اختار عمل الموصل من القائمة المنبثقة وانتهيت.
1
تخطيط العمل

"انظروا إلى المنتج" ابحثوا عن منتج بالاسم، سعر العائد، الأسهم و الوصف

2
حدد في الإجراءات.json

يضاف تعريف الإجراء:

أفعالjson- الشكل الحقيقي للبيان
{
  "actions": [
    {
      "action_id": "lookup_product",
      "label": "Look up a product",
      "category": "Catalogue",
      "description": "Find a product by name and return price, stock and description.",
      "scope": "admin",
      "requires_confirmation": false,
      "is_destructive": false,
      "delivery_type": "http",
      "http_method": "GET",
      "http_url": "/api/products/search",
      "parameters": [
        { "name": "name", "type": "string", "required": true, "in": "query",
          "description": "Product name to search for" }
      ],
      "returns": [
        { "alias": "id",          "path": "data.id",             "type": "string" },
        { "alias": "name",        "path": "data.name",           "type": "string" },
        { "alias": "price",       "path": "data.price",          "type": "number" },
        { "alias": "stock",       "path": "data.stock_quantity", "type": "number" }
      ]
    }
  ]
}
⚠️
وهناك ثلاثة أشياء لا تُسجل على الإطلاق.2إلى100ورسم الخرائط هو "العائدات" مع مسارات (داتا) وليس (جوناثان)
3
اختبار التشغيل الجاف

في خطوة إعادة بناء المُدير، إضغط على الجري، إنها تدير قائمة التطابق الكامل مع حزمتك، وعندما تزوّد بوثائق التفويض، تقوم بإجراء اختبار اتصال حقيقي

4
التحقق من استخدام الذكاء الاصطناعي

أسأل مدير الذكاء الاصطناعي: "ابحث عن المنتج Widget Pro." يجب على الذكاء الإصطناعي العثور وتنفيذ العمل.

⚠️
أضف عملاً للإجراءات.jsonلا يخلق مساراً لـ (أجاكس)، لذا ليس هناك ما يُعاد تجديده، إجراءات الموصلات متزامنةOpsIQوعندما يُمكن الموصل أو تُنقذ أماكنه: إعادة تأمين الموصل، ويبدو أن العمل الجديد. وتشمل الأدوات/الأجهزة العامة - الترددية (Groute_registry.php) الإصدار AJAX وليس لها أي تأثير على إجراءات الاتصال.
المطور

نقاط نهاية الأحداث الواردة

وتقبل النقاط النهائية الواردة JSON الموقع من نظام آخر وتحوله إلى نشاط اتصال غير متكرر يمكن أن يغذّي الجداول الزمنية، والتقدير، وتدفق العمل.

فرز المنتجات
نقاط النهاية الواردةولكل مصدر وارد URL خاص به، وسر، ورسم خريطة، ونتيجة نشاط حديث.نقاط النهاية الواردةمساحة العملالموارد5ACCEPTED12.4kREJECTED18عرض الحيز العمليمنصة إعداد الفواتيرأنشطة الاشتراكصحيةتطبيق المنتج:: أحداث التسجيل والاستخدامصحيةرقم الحدثprovider_event_idإزالة الازدواجيةالتوقيعX-OpsIQ-Inbound-SignatureHMAC1CREATE SOURCEURL وسرية2MAP PAYLOADالبريد الإلكتروني، والحدث وتحديد الهوية3التحققثم يمتص HMAC
ولكل مصدر وارد URL خاص به، وسر، ورسم خريطة، ونتيجة نشاط حديث.

إنشاء مصدر واحد لكل نظام إرسال. OpsIQ يولد. URL/رمز وسرية. JSON مع Content-Type: application/json وتوقيع الجسم الخام بالضبط باستخدام HMAC-SHA256:

X-OpsIQ-Inbound-Signature: sha256=<hex hmac>

خريطة JSON يدخل النشاط المقبول في الجدول الزمني للاتصال ويمكن أن يؤثر على تقييم المنافسين المحتملين، والشرائح، وقواعد دورة الحياة وتدفقات العمل.

رفض التوقيعات غير الصحيحة قبل تحليل البيانات التجارية. تبديل سر من خلال تحديث الجانبين داخل نافذة خاضعة للرقابة؛ لا تسجل السري.

المطور

عمليات الوصلات الشبكية الصادرة

وتقوم إدارة الوصلات الشبكية الصادرة بإنشاء اشتراكات موقعة، واختبار النقاط النهائية، ورصد التسليم غير المتزامن وسﻻمة المحاولة من جديد.

فرز المنتجات
وصلات شبكية خروجيةوتتضمن صفحة الوصلات الشبكية الصادرة قائمة بالنقاط النهائية لبروتوكول HTTPS، والاشتراكات في الأحداث، وسلامة التسليم، واختبار موقع بنقرة واحدة.وصلات شبكية خروجيةمساحة العملENDPOINTS7SUCCESS99.2%العودة4عرض الحيز العمليCRMالمرآةالاتصال* والتفاوض*صحيةحافلة دعمتسجيل الدخول* والدردشة*صحيةمستودع البيانات*إعادة المحاولةاختبار التسليمالحمولة النافعة للعينة الموقعةجاهز1SUBSCRIBEHTTPS URL والأحداث2AUTHENTICATEتوقيع HMAC3OBSERVEخط الإطلاق وإعادة المحاولات
وتتضمن صفحة الوصلات الشبكية الصادرة قائمة بالنقاط النهائية لبروتوكول HTTPS، والاشتراكات في الأحداث، وسلامة التسليم، واختبار موقع بنقرة واحدة.

يقوم المديرون الكاملون بإنشاء نقطة نهاية HTTPS، واختيار أحداث محددة أو الرمز الشامل، وتخزين السري بأمان وإرسال اختبار. OpsIQ يوقع على الحمولة الخام باستخدام HMAC-SHA256:

X-OpsIQ-Signature: sha256=<hex hmac>

التحقق من التوقيع قبل إلغاء الترتيب أو العمل. 1دقيقة 5 دقائق، 30 دقائق،2الساعات و 12 الساعات. استخدم خط التسليم الأخير للتحقق من الحالة، ورمز الاستجابة وعد المحاولات

يجب أن يكون مستقبلك ذا قدرة متساوية لأن أي نظام غير متزامن يمكنه إعادة التسليم.

المطور

خطافات الويب (Webhooks)

Webhooks تسمح النظم الخارجية للإخطار.OpsIQ عندما يحدث شيء ما (الداخل)، ودع.OpsIQ:: إخطار النظم الخارجية عندما يحدث شيء ما داخلياً (خارجاً).

خطافات الويب (Webhooks)
وصلات شبكية خروجيةشاشة الوصلات الشبكية الصادرة: جدول نقاط نهاية مع الاسم، الأحداث المشتركة، النقاط الأخيرة لحالة التسليم، وزر اختبار الإرسال.وصلات شبكية خروجيةمساحة العملالنقاط النهائية+ حفظ نقطة النهايةالاسمالأحداثعمليات التسليمSlack#sales-alertshttps://hooks.slack.com/…crmاتفقنا.الاختبارCRMالمرآةhttps://api.acme.com/hookاتصال*، تذكرة.أنشئتالاختبارZapierhttps://hooks.zapier.com/…chat.startedالاختبار1ENDPOINTSالاسم، الأحداث URL2SIGNEDHMAC + إعادة محاولة آلية3SEND TESTالتحقق من عمليات التسليم
الشاشة الحقيقية للويب هوكس الصادرة: كل نقطة نهاية مع أحداثها، وسلامة التسليم الأخيرة، واختبار إرسال بزر واحد، موقع ومحاولة جديدة.

وصلات شبكية خروجية

التوقيع

اذهب إلى الإعدادات > Webhooks. أضف نقطة نهاية URL وانتخب الأحداث التي تريد استلامها.

الأحداث

تصوّر أحداث محددة أو إلى ["*"] للكل قائمة كاملة لتركيبتك هي أدناه webhooks.events.list يُعيدها كماJSON.

أعيد محاولة

إعادة محاولة التسليم الفاشل مع تراجع أسي. 15 بعد حدوث فشل متعاقب، يتم تعطيل النقطة النهائية تلقائياً.

التوقيع

كل توصيلة موقّعة X-OpsIQ-Signature carries v2=<hex>و السلاسل الموقعة version.timestamp.delivery_id.body لا يُمكن أن نتأكد من ذلك، و نعيد بناء الخيط تماماً.

حماية SSRF

OpsIQ لن يرسل إلى جهات خاصة/داخلية IPs (127.x، 10.x، 172.16.x، 192.168.x، 169.254.169.254).

التسليم غير المتزامن

يتم تسليم Webhook من خلال صف العمل، دون منع عمليات OpsIQ.

هوية الحدث المستقر

لكل حدث event_id فريد يظل كما هو عبر المحاولات المتكررة لإزالة الازدواجية.

ما يصل مع كل توصيلة

X-OpsIQ-Event

اسم الحدث، على سبيل المثال ticket.created.

X-OpsIQ-Delivery

وهى تُبقي على نفس المنوال عبر المقابض، وتستخدمها لتجاهل تكرار.

X-OpsIQ-Timestamp

ست ثواني في وقت التوقيع، ارفض أي شيء أكبر من خمس دقائق

X-OpsIQ-Signature

التوقيع v2=<hex>- انفصل عن =الجانب الأيسر هو النسخة، الجانب الأيمن هو القيمة التي تقارنها

X-OpsIQ-Signature-Version

الخطة المستخدمة حاليا v2اقرأه من الرأس بدلاً من أن تُشدّده ورمزك يستمر بالعمل إذا أضيفت قنبلة ضد 3

⚠️
الخيط الموقع version.timestamp.delivery_id.bodyوليس الجسم الخام وحده، ولا يشكل هش الجسد إلا السبب الوحيد الأكثر شيوعاً لفشل عملية التحقق - أي أن كل عملية تسليم حقيقية تُرفض وتبدو نقطة النهاية محطمة.

التحقق من التسليم

PHP · verify anOpsIQwebhook
<?php
// Read the raw body BEFORE any framework parses it — the signature covers
// the exact bytes we sent, so a re-encoded array will not match.
$raw      = file_get_contents("php://input");
$sigHeader= $_SERVER["HTTP_X_OPSIQ_SIGNATURE"] ?? "";   // "v2=<hex>"
$ts       = (string)($_SERVER["HTTP_X_OPSIQ_TIMESTAMP"] ?? "");
$delivery = (string)($_SERVER["HTTP_X_OPSIQ_DELIVERY"] ?? "");
$secret   = "your endpoint signing secret";   // shown once when you add the endpoint

// 1. Refuse a stale delivery. This is what stops a captured request being replayed.
if ($ts === "" || abs(time() - (int)$ts) > 300) {
    http_response_code(401);
    exit(json_encode(["error" => "Stale delivery"]));
}

// 2. The header names its own version: "v2=<hex>".
[$version, $received] = array_pad(explode("=", $sigHeader, 2), 2, "");

// 3. Rebuild exactly what OpsIQ signed.
$canonical = $version . "." . $ts . "." . $delivery . "." . $raw;
$expected  = hash_hmac("sha256", $canonical, $secret);

// 4. Constant-time compare, so a timing attack cannot reveal the secret.
if ($received === "" || !hash_equals($expected, $received)) {
    http_response_code(401);
    exit(json_encode(["error" => "Invalid signature"]));
}

// 5. Accept. Deliveries retry, so treat a delivery id you have already
//    processed as a success and do the work only once.
$event = json_decode($raw, true);
// ... your handling ...

http_response_code(200);
echo json_encode(["received" => true]);
Node.js · verify anOpsIQwebhook
const crypto = require("crypto");

// express.raw gives you the exact bytes OpsIQ signed. express.json() does not.
app.post("/opsiq-webhook", express.raw({ type: "application/json" }), (req, res) => {
  const raw      = req.body;                                  // Buffer
  const sig      = req.headers["x-opsiq-signature"]  || "";   // "v2=<hex>"
  const ts       = req.headers["x-opsiq-timestamp"]  || "";
  const delivery = req.headers["x-opsiq-delivery"]   || "";
  const secret   = process.env.OPSIQ_WEBHOOK_SECRET;

  // 1. Reject stale deliveries (replay protection).
  if (!ts || Math.abs(Date.now() / 1000 - Number(ts)) > 300) {
    return res.status(401).json({ error: "Stale delivery" });
  }

  // 2. Split "v2=<hex>" into its version and its value.
  const [version, received] = sig.split("=", 2);

  // 3. Rebuild what OpsIQ signed: version.timestamp.delivery_id.body
  const canonical = Buffer.concat([
    Buffer.from(`${version}.${ts}.${delivery}.`),
    raw,
  ]);
  const expected = crypto.createHmac("sha256", secret).update(canonical).digest("hex");

  // 4. Constant-time compare. Lengths must match first or timingSafeEqual throws.
  const a = Buffer.from(expected), b = Buffer.from(received || "");
  if (a.length !== b.length || !crypto.timingSafeEqual(a, b)) {
    return res.status(401).json({ error: "Invalid signature" });
  }

  // 5. Accept, and make the work idempotent on the delivery id.
  const event = JSON.parse(raw.toString("utf8"));
  res.json({ received: true });
});

كلّ حدثٍ يمكن أن يرسله هذا الإنشقاق

تولد من بناء تشغيل، لذلك هو دائما تطابق النسخ التي كنت على.

52 events can be delivered to a webhook endpoint on this install. Subscribe with ["*"] for all of them, or name the ones you want. The General API action webhooks.events.list تُعيد هذه القائمة نفسهاJSONإذاً فرمزك لا يجب أن يُشفّره

محلل (1)

analytics.anomaly

Fired by PHASE_ANOMALY_ALERTS when a daily KPI (sessions, pageviews, conversions, revenue) deviates from its same-weekday 4-week baseline beyond the configured threshold. Payload: day (required), title, site_key, anomalies.

التجارة (2)

commerce.order.created

Fired the moment a chat-confirmed order lands on the merchant platform (connector or custom-actions integration) - before payment. Subscribe to sync carts, reserve stock, or notify fulfilment systems. Payload: reference (required), connector, amount_minor, currency, customer_email, thread_id, occurred_at.

commerce.payment.confirmed

Fired exactly once per order when the gateway actively verifies the payment (amount and currency exact). This is the settlement signal - it rides the same claim that prevents duplicate receipts, so it can never double-fire. Payload: reference (required), connector, occurred_at.

اتصل (6)

contact.conversion

Fired by OpsIQ.

contact.erased

Fired by OpsIQ.

contact.lifecycle_changed

Fired by OpsIQ.

contact.status_changed

Fired by OpsIQ.

contact.tag_added

Fired by OpsIQ.

opsiq.contact.upsert

Fired by OpsIQ.

conversation (5)

conversation.assigned

Fired when a conversation is assigned to an agent or unassigned. Payload: thread_id (required), site_key, assigned_admin_id, by_admin_id, occurred_at.

conversation.created

Fired when a new Client Chat conversation (thread) is opened. Payload: thread_id (required), site_key, channel, client_email, client_name, visitor_id, created_at.

conversation.message.created

Fired when a visible message is written to a conversation by the visitor, an agent, the AI or the system. Internal notes do not fire. Payload: thread_id (required), message_id (required), site_key, sender_type, admin_id, message, has_attachment, created_at.

conversation.rated

Fired when the visitor rates a conversation (1-5 stars). Payload: thread_id (required), site_key, stars, comment, trigger, admin_id, occurred_at.

conversation.resolved

Fired when an agent resolves a conversation and hands it back to the AI. Payload: thread_id (required), site_key, by_admin_id, occurred_at.

نظام إدارة علاقات العملاء (6)

crm.company.created

Fired when a CRM company/account is created. Payload: company_id (required), name.

crm.deal.created

Fired when a CRM deal/opportunity is created (by an order, the capture agent, or a human). Payload: deal_id (required), title, amount, currency, scope.

crm.deal.lost

Fired when a deal is moved to a Lost stage (closed-lost). Payload: deal_id (required), stage, amount.

crm.deal.stage_changed

Fired when a deal moves to a different pipeline stage. Payload: deal_id (required), stage, amount.

crm.deal.won

Fired when a deal is moved to a Won stage (closed-won). Payload: deal_id (required), stage, amount.

crm.task.created

Fired when a CRM task is created (incl. AI-suggested next-step / renewal tasks). Payload: task_id (required), title.

البريد الإلكتروني (2)

email.bounced

Fired by OpsIQ.

email.replied

Fired by OpsIQ.

feedback (13)

feedback.analysis.completed

Fired when a Voice-of-Customer analysis run completes. Payload: analysis_run_id (required), workspace_key, sample_count, model_version.

feedback.detractor.detected

Fired when a newly indexed response meets its metric-specific detractor rule. Payload: feedback_item_id (required), workspace_key, source_kind, metric_kind, classification.

feedback.follow_up.completed

Fired when a Feedback follow-up is completed. Payload: feedback_item_id (required), workspace_key, actor_admin_id, outcome_code.

feedback.item.assigned

Fired when Feedback ownership changes. Payload: feedback_item_id (required), workspace_key, assignee_admin_id, team_id, actor_admin_id.

feedback.item.indexed

Fired when a source record is added to or refreshed in the canonical Feedback index. Payload: feedback_item_id (required), source_kind, source_id, workspace_key, metric_kind, classification.

feedback.item.redacted

Fired when source deletion or redaction removes Feedback content from the index. Payload: feedback_item_id (required), workspace_key, source_kind.

feedback.item.status_changed

Fired when the Feedback workflow state changes. Payload: feedback_item_id (required), workspace_key, state, actor_admin_id.

feedback.item.tagged

Fired when a tag is added to or removed from Feedback. Payload: feedback_item_id (required), workspace_key, tag, operation.

feedback.item.updated

Fired when a canonical Feedback item changes. Payload: feedback_item_id (required), workspace_key, change.

feedback.source.failed

Fired when a Feedback source replay or incremental index operation fails. Payload: workspace_key, source_kind (required), error_code, checkpoint.

feedback.source.lagging

Fired when a Feedback source checkpoint is behind its expected freshness window. Payload: workspace_key, source_kind (required), lag_seconds, last_success_at.

feedback.theme.detected

Fired when a canonical topic or theme signal is attached to Feedback. Payload: feedback_item_id (required), workspace_key, theme_key, confidence.

feedback.urgent.detected

Fired when an urgent Feedback signal is detected. Payload: feedback_item_id (required), workspace_key, source_kind, signal_key.

invoice (3)

invoice.created

Fired when an invoice is generated. Payload: invoice_id (required), customer_id, customer_email, amount, currency, due_date, items.

invoice.overdue

Fired when an invoice passes its due date unpaid. Payload: invoice_id (required), customer_id, customer_email, amount, currency, days_overdue.

invoice.paid

Fired when an invoice is paid in full. Payload: invoice_id (required), customer_id, customer_email, amount, currency, paid_at.

order (1)

order.created

Fired when a new order is placed. Payload: order_id (required), customer_id, customer_email, amount, currency, items, status, source.

دفع (3)

payment.completed

Fired when a payment succeeds. Payload: order_id (required), payment_id, provider_ref, customer_id, customer_email, amount, amount_minor, currency, gateway, invoice_id, items, paid_at.

payment.failed

Fired when a payment attempt fails. Payload: order_id, customer_id, customer_email, amount, currency, gateway, reason.

payment.refunded

Fired when a refund is issued. Payload: order_id, refund_id, customer_id, customer_email, amount, currency, reason.

الأمان (1)

security.alert

Fired by PHASE_SECURITY_ALERTS when a security rule trips: failed-login wave, new automatic IP blocks, or a tamper-evidence (audit/consent hash chain) verification failure. Payload: rule (required), title, site_key, count, blocks, errors.

subscription (3)

subscription.cancelled

Fired when a subscription is cancelled. Payload: subscription_id (required), plan_name, customer_id, customer_email, cancel_reason, cancelled_at, ends_at.

subscription.created

Fired when a subscription is started. Payload: subscription_id (required), plan_id, plan_name, customer_id, customer_email, amount, currency, interval, trial_ends_at, next_billing_at.

subscription.renewed

Fired when a subscription renews successfully. Payload: subscription_id (required), plan_name, customer_id, customer_email, amount, currency, next_billing_at.

تذكرة (5)

ticket.closed

Fired when a ticket is closed or resolved. Payload: ticket_id (required), resolution, closed_by_type, closed_by_id.

ticket.created

Fired when a new support ticket is opened. Payload: ticket_id (required), ticket_number, subject, department_id, department_name, customer_id, customer_email, priority, message, author_type, author_id, author_name.

ticket.merged

Fired when one or more tickets are merged into another ticket. Payload: ticket_id (required), ticket_number, subject, external_ref, native_table, site_key, sources, merged_by, merged_at.

ticket.renumbered

Fired when a connector mirror adopts the remote platform's ticket number for an OpsIQ ticket. Payload: ticket_id (required), old_number (required), ticket_number (required), connector, external_ref.

ticket.replied

Fired when a reply is posted to a ticket. Payload: ticket_id (required), reply_id, author_type, author_id, author_name, message.

user (1)

user.registered

Fired when a new user/customer account is created. Payload: user_id (required), email, firstname, lastname, company, country, source.

كيف أختبر اتصالات الويب محلياً؟+

استخدم ngrok لعرض خادمك المحلي. حدد النقطة النهائية للويب هووك على ngrok الخاص بك URL.

ماذا لو كانت نقطة النهاية الخاصة بي منخفضة مؤقتا؟+

OpsIQ تحاول مجدداً مع التراجع الأسي. إذا استعادت نقطة النهاية داخل نافذة المحاولة مجددًا، فلن تُفقد أي أحداث.

المطور

مفاتيح واجهة برمجة التطبيقات (API)

API الطلبات المقدمة إلى المكتب OpsIQ الباقي API. لكل مفتاح أذونات محددة النطاق

مفاتيح واجهة برمجة التطبيقات (API)
مفاتيح واجهة برمجة التطبيقات (API)شاشة المفاتيح API: لوحة إصدار مع مستوى الوصول والرقائق النطاق، إلى جانب قائمة من المفاتاح المقنعة الموجودة مع أزرار إلغاء.مفاتيح واجهة برمجة التطبيقات (API)مساحة العملإصدار مفتاحإمكانية الوصولللقراءة فقطمقيدنطاقاتcontacts.readtickets.readevents.writeرمز المسألةمفاتيحكZapier التكاملopq_••••4f2aإلغاءالتطبيق المحمولopq_••••91c7إلغاءتصدير التحليلاتopq_••••2db0إلغاء1SCOPEDقراءة فقط أو مقيدة2PER-ACTIONاختيار النطاقات الدقيقة3REVOCABLEالتناوب في أي وقت
The real API key screen: issue a scoped, read-only or restricted key by pick exact scopes, and revoke any key any time.

إنشاء API المفتاح

1
اذهب إلى الإعدادات > المفاتيح API

تصفح إلى API key management.

2
انقر على إنشاء مفتاح

أعطيه اسماً وصفياً.

3
نطاقات مختارة

لا تعطي المفتاح إلا ما يحتاجه. تتوفر النطاقات في أزواج قراءة وكتابة لكل منطقة، وبالتالي يمكن منح التكامل الإبلاغي القراءة ولا شيء آخر.

النطاقات المتاحة

إختار أضيق مجموعة التي تقوم بالعمل. admin يفي بكل النطاقات أدناه، لذلك لا تستخدمه إلا عندما تحتاج حقاً إلى الوصول الواسع.

قراءة/كتابة بيانات الإدارة المركزية

الاتصالات والشركات والصفقات والأنشطة والقطاعات والتوعية والتحويلات ودورة الحياةCRMعلى الشبكة.

تذاكر.قراءة/تذاكر

قائمة وقراءة التذاكر ورسائلها؛ الرد، وتحديث، وفتح وتشغيل عمليات الصفوف بالجملة.

المحادثات. القراءة/المحادثات

قراءة محادثات الدردشة الحية وتاريخ الرسائل؛ إرسال رسائل، تعيين وتغيير الحالة.

كيلو بايت للقراءة/كيلو بایت للكتابة

مدخلات قاعدة المعارف.

chat.read / chat.write

حفظ نماذج الردود.

connectors.read

انظر أي موصلات مركبة، وما يمكن أن تفعله، واختبار وثائق تفويضها.

automations.read

انظر إلى أفعالك، وعوامل التحريك وتاريخ تشغيلها.

departments.read

الإدارات المتاحة للتوجيه.

notifications.read

إخطارات لمشغل معين.

analytics.read

أقسام التقارير، CSV الصادرات وتعاريف التقرير المقرر.

site_intelligence.read

المواقع المُراقبةSEOتقارير.

files.read

وصلات تنزيل موقعة للمرفقات.

status.write

مكونات صفحة الحالة والحوادث.

كتابة

مساعدون في الكتابة بالذكاء الاصطناعي: صياغة، تلخيص، ترجمة، إعادة كتابة، تأليف، تحليل.

مسؤول

كل شيء، بما في ذلك عدد قليل من الإجراءات الحساسة التي لا يمكن الوصول إليها عن عمد بأي نطاق ضيق: حذف الاتصال، وتغيير إعدادات الخصوصية، وقراءة سجل الدخول.

💡
استدعاء meta. actions مع مفتاحك لمعرفة بالضبط أي الإجراءات يمكن أن تجري على تركيبك، وهذا دائماً أكثر موثوقية من العمل من قائمة.

مستويات الوصول

الجميع

المفتاح يمكن أن يستدعي أي شيء تسمح به نطاقاته.

للقراءة فقط

كل كتابة مرفوضة، مهما قالت النطاقات. الخيار الأكثر أماناً للإبلاغ، لوحات الأدوات وأي شيء لا ينبغي أبداً تغيير البيانات.

مقيد

تقوم بذكر الإجراءات التي يمكن أن يستدعيها المفتاح، وأي شيء آخر مرفوض حتى في حدود نطاق مسموح به.

4
نسخ المفتاح

يظهر مرة واحدة، ويبدأ بـ "opq_" اخزنها بأمان

🚫
لا تشارك أبداًAPIمفاتيح في الشفرة العامة، جانب العملاءJavaScriptأو التحكم بالنسخة، استخدم متغيرات البيئة
المطور

ربط موقعك الشبكي

The OpsIQ widget is a JavaScript snippet you add to your website for tracking, AI chat, ticket creation, and customer identification.

كيف يعمل
ربط موقعك الشبكيعلامة نصية من سطر واحد على اليسار، وعلى اليمين صفحة شبكية تظهر فقاعة المحادثة OpsIQ في الزاوية.<!-- paste before </body> --><script src="https://cdn.opsiq.io/w.js" data-site="ws_8a2f" async></script>
ربط موقعك الشبكي

التركيب الأساسي

مقتطف أداة أساسية
<script src="https://your-opsiq-domain.com/widget.php"
  data-site-key="site_abc123"
  async></script>

Paste before the closing </body> tag. The script loads asynchronously and does not block page rendering.

خصائص التشكيل

data-site-key

مفتاح موقعك من المواقع المتصلة.

data-mode

اختياري. "الدردشة" (افتراضي)، أو "التذاكر"، أو "كلتاهما".

data-position

اختياري. "أسفل اليمين" (افتراضي) أو "أسفـل اليسار".

data-color

اختياري - رمز سداسي الألوان الأولي.

data-greeting

اختياري - رسالة تحية أولية.

data-language

اختياري. لغة واجهة المستخدم: "en"، "es"، "fr"، "de"، "pt"، "ar" إلخ

data-identity-token

اختياري - رمز هوية موقع مولده حاسوب الخدمة.

دعم خدمات الدعم الإقليمي

تتبع يدويّ لطرق النقل
// Manually notify OpsIQ of a route change (for custom routers)
window.OpsIQ = window.OpsIQ || [];
window.OpsIQ.push(["pageview", {
  url: window.location.href,
  title: document.title,
}]);

قواعد اللجنة

قواعد CSP للوحدة
script-src 'self' https://your-opsiq-domain.com;
connect-src 'self' https://your-opsiq-domain.com;
frame-src https://your-opsiq-domain.com;
هل هذا البرنامج يبطئ موقعي؟+

لا. تحت 15 KB gzipped، تحميل غير متزامن بعد محتوى الصفحة.

هل يمكنني أن أغير المظهر؟+

استخدم data-color لللون الأولي. اتصل بالدعم لاختيارات التجاوز CSS.

المطور

وصفات تثبيت العناصر

أدلة تركيب خاصة بمنصة معينة.

كيف يعمل
وصفات تثبيت العناصربطاقات تثبيت المنصات WordPress, Shopify و Google Tag Manager, كل واحد منها يخبرك أين تضيف الوحدة.WPWordPressتثبيت الملحق، انقر فوقمفتاح موقعك، اخزنهمحلShopifyلصق المقطع فيقبل : /body.النقل العاممدير العلاماتالوسم المخصص HTML ، جميع الصفحات.
تثبيت الوصفات

WordPress

السيناريو:
أضف إلى جميع صفحات موقع WordPress.
ماذا نفعل:

Option 1: Edit theme footer.php, paste snippet before </body>. Option 2: Use "Insert Headers and Footers" plugin > Scripts in Footer. Option 3: Use a child theme footer.php to survive theme updates.

Shopify

السيناريو:
أضف إلى القائمة Shopify كبير.
ماذا نفعل:

Online Store > Themes > Edit Code > Layout > theme.liquid. Paste before </body>. Save.

رد الفعل Next.js

السيناريو:
أضف إلى تطبيق React أو Next. js.
ماذا نفعل:

In Next.js, use next/script in app/layout.tsx: import Script from "next/script"; <Script src="https://your-opsiq.com/widget.php" data-site-key="site_abc" strategy="lazyOnload" />

WHMCS

السيناريو:
أضف إلى منطقة عملائك WHMCS.
ماذا نفعل:

تثبيت > الإعدادات العامة > أخرى > محتوى القاعدة العالمية. صبغ المقطع. أو تحرير النموذج footer. tpl.

Google Tag Manager

السيناريو:
إضافة عن طريق GTM.
ماذا نفعل:

أنشئ وسم HTML مخصصا، وألصق المقتطف. السبب: جميع الصفحات. نشر

المطور

(إدمين ويدغي) في مساندتك (عقد واحد، أي منصة)

1 - اللجنة الفرعية OpsIQ مساعد إداري - الدردشة الإدارية، صندوق التذاكر الواردة والكتابة بالذكاء الاصطناعي - داخل لوحة إدارة منصة YOUR OWN الخاصة بك، حتى لا يترك فريقك أبدا أدواته. SSOهذا عقد عام واحد نفذ في ~15 سطور من شفرة الخادم الخاص بك المنصة - نفس النمط Zendesk, Intercom استخدام اللغة في التعليم SSO. لا يوجد ملحق لكل منصة ينبغي الانتظار له: أي كومة تستطيع حساب HMAC يمكن أن تفعل ذلك اليوم.

الخطوة1- الخط المختلط

من المواقع النائية→موقعك→مدوناتانسخ خط التحميل واضافه الى صفحات لوحة الاعلامات الخاصة بك (يتضمن ذلك، نموذج تخطيط أو صندوق مخصص فقط)

الخط الواحد مُضمّن
<script async src="https://YOUR-OPSIQ/opsiq/embed/admin_widget.php?site_key=SITE_KEY&identity_token=TOKEN_FROM_STEP_2"></script>

الخطوة2- قلOpsIQالذي يسجل في (موقعة على الخادم)

فقط طلبك يعرف أيّ علام موقع في هذا ليس اختصاراً، إنه نموذج الأمن، خادمك يولد تمثالاً قصير الأجل موقّعاً من دورتك الخاصة، تماماً مثل هوية الزائرين المُوقعة مع نفس الموقع على الإنترنت:

PHP ; sign the admin identity from your session
<?php
$secret  = "opsiq_whsec_your_site_secret";   // Remote Sites → Codes
$payload = json_encode([
    "site_key"      => "SITE_KEY",
    "iat"           => time(),
    "exp"           => time() + 6 * 3600,
    "authenticated" => true,          // REQUIRED, top level — see note below
    "platform"      => "your-platform",
    "admin"    => [
        "id"            => (string)$admin->id,      // from YOUR session
        "name"          => $admin->name,
        "username"      => $admin->username,
        "email"         => $admin->email,
        "role"          => $admin->role,
        "authenticated" => true,
    ],
]);
$payload64 = rtrim(strtr(base64_encode($payload), "+/", "-_"), "=");
$identityToken = $payload64 . "." . hash_hmac("sha256", $payload64, $secret);
// Put $identityToken into the embed line (identity_token=…), or expose it as
// window.OpsIQAdminIdentityToken before the loader script.
الوصول إلى المترمين، تلقائيا

كلّ مُعلّم يسجل في منصتكِ يُضاهى بشكل فردي:OpsIQبوابة الدخول لكل مين تُحلّ لقب مستخدم (توكن) والبريد الإلكتروني ضدّ واحدةOpsIQالعميل (صفحه كاميرا الهاتف) استخدم قائمة الوكيل عندما تتفاوت رسائل البريد الإلكتروني للمنصه وطبق مكان عمل ذلك العميلOpsIQ; no embed changes.

دوران على طول

مهما كان الدور الذي يرسله برنامجك يظهر علىOpsIQإلى جانب الإسناد؛ والإذن يأتي دائماً منOpsIQسجل العميل، ليس من الدور المُؤكد.

لماذا لا نقرأ كعكة الشعار؟

لم يرسل (بروزرز) كعكتك إلى مصدر آخر لا يمكن للبائع أن يكتشف فقط سجلك

لا يوجد نمط مشترك في موقعك الخاص

خارج OpsIQ المضيف ليس هناك طريقة غير موقّعة أو مشتركة في الشعارات: فالحمّل يبقى مخبأً إلى أن يصل رمز موقعه، القيمة الرمزية في حمولة الرموز هي مفتاح نباتي يحدد الموقع فقط؛ ولا يمكنه أبداً توقيع أي شخص فيه.

الـ authenticated العلم - وضعه على مستوى دبلوم التكتيكية

هذا العلم هو تأكيد خادمك أن الإنسان قد تم تسجيله حقاًOpsIQلن أرفض أي شيء من دونه "authenticated" => true beside site_key/iat/expليس فقط داخل admin الهدف الحاليOpsIQتقبله في أي من الموقعين، ولكن الإطلاقات القديمة لا تقرأ إلا على المستوى الأعلى - والفشل مخادع: قائمة المحادثة، والتاريخ، وتفكك جميع الغرامة الحقيقية بينما كل دردشة تجيب "الاسم المطلوب"و الذي يبدو كحشرة في الجلسة و لا إذا رأيت ذلك الإنقسام بالضبط تحقق من العلم أولاً

النظافة الصحية المكشوفة

الإشارة على الخادم فقط، أبداً في بروزرJavaScript- الاستمرار في التمهل (دقائق إلى ساعات)؛OpsIQالرفض المنقضي والمستقبليّة، والتوقيع يُربط مفتاح موقعك.

التنفيذات المرجعية

The WHMCS module does this automatically from the WHMCS admin session; the Botble Hotel connector's bridge file does it from the Laravel session (op=admin_identity). Both are just this contract in their platform's dialect — copy whichever reads closest to your stack.

لا توجد صفحة واحدة (مسبار مُعلّق)

عندما تكونOpsIQالموصل يخزن هويتك في نقطة النهاية admin_identity_probe_url خط تحميل "بلاين" هو كل ما تحتاجه صفحاتك الإسمحة: يكتشف فريق "الناموس" المسبار من الموصل، ويسميه بمفتاح موقعك data-identity-endpoint الميزة أو window.OpsIQAdminIdentityEndpoint.

💡
سر التوقيع ملئ لك في المواقع البعيدة، موقعك، الرموز، الخيار 3كل مثال على ذلك يحتوي على سر هذا الموقع لذا الرمز يعمل كما هو معبأ لا يوجد شيء للنسخ أو المصادرة opsiq_whsec_YOUR_SITE_SECRET في مكانه، كل مثال يبحث عنه OPSIQ_SITE_SECRET (أو وضع إطارك الخاص، مسمّى في ملاحظاته) على الخادم أولاً ويستخدم أنه عندما يتم تحديده، حتى يمكنك نقل السر من الملف متى أردت، مثلاً لتناوبه بدون شفرة تحرير JavaScriptو لا تُلزمه أبداً إلى مستودع عام لأن أي شخص يحمل السر يمكن أن يوقع عليه كأحد زبائنك أو موظفيك WHMCS و Botble لا حاجة إلى أي من هذا: WHMCS الخطاف يصل مع السر المملوء في، Botble اللوحة تملأه إلى الجسر

الرمز الكامل، منصة حسب المنبر

كل مثال يطبع بطاقة ادمين تشات فقط للموظف الموقع مع مضيف موقع?opsiq_identity_refresh=1&role=adminمع {"success":true,"identity_token":"…"} أو 401مواقع عن بُعد، موقعك، الرموز، الخيار 3وقع في طباعة طاقمك نفس الرمز مع مفتاح موقعك و سر ملئ به

⚠️
The admin token is the two-part form: base64url(payload), a dot, then the hex HMAC-SHA256 of that base64url text. It is not a JWT, and a JWT is refused. The admin object needs id and email, and exp must be within 24 hours.

WHMCS

Nothing to add: the WHMCS hook in Option 1 already signs your logged-in staff into Admin Chat and refreshes the token. Do not paste the Option 3 loader as well.
1

Install the Option 1 hook as includes/hooks/opsiq_tracker.php.

2

Each staff member needs an OpsIQ agent account with the same email (or username): that is how their own permissions apply.

includes/hooks/opsiq_tracker.php
/* WHMCS: no extra code. Option 1 (the All-in-One WHMCS Hook) signs the logged-in
 * admin into Admin Chat on every admin page and answers ?opsiq_identity_refresh=1&role=admin. */

Botble (connector bridge)

Nothing to add: the Botble bridge signs your logged-in admins. Copy the bridge from the Botble connector panel (it arrives with OPSIQ_HOST, OPSIQ_SITE_KEY and OPSIQ_SITE_SECRET filled in), then put its one admin_embed line in Botble's admin Custom JS.
1

In Botble admin → Custom JS, add: <script async src="https://YOUR-BOTBLE-SITE/opsiq-botble-bridge.php?op=admin_embed"></script>

2

Each staff member needs an OpsIQ agent account with the same email (or username): that is how their own permissions apply.

public/opsiq-botble-bridge.php
<!-- Botble admin → Custom JS. The bridge signs the logged-in admin; nothing secret is in the page. -->
<script async src="https://YOUR-BOTBLE-SITE/opsiq-botble-bridge.php?op=admin_embed"></script>

PHP (no dependencies)

1

Save as opsiq-admin-chat.php. This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in the environment on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

At the very top of every ADMIN page, before any output: require 'opsiq-admin-chat.php'; opsiq_admin_chat_refresh(); and before </body>: <?= opsiq_admin_chat_tag() ?> (it replaces the Option 3 loader).

3

Replace opsiq_admin_chat_user() with your signed-in staff member. Each staff member needs an OpsIQ agent account with the same email (or username): that is how their own permissions apply.

opsiq-admin-chat.php
<?php
/* opsiq-admin-chat.php — sign your logged-in staff into OpsIQ Admin Chat. */

// WHO IS SIGNED IN AS STAFF — replace the body. Return null for anyone who is not staff.
function opsiq_admin_chat_user(): ?array
{
    $u = $_SESSION['admin'] ?? null;    // e.g. ['id' => 3, 'email' => '…', 'username' => '…', 'name' => '…', 'role' => 'Owner']
    return is_array($u) && !empty($u['id']) && !empty($u['email']) ? $u : null;
}

// The admin token is base64url(payload) . '.' . hex HMAC — NOT a JWT.
function opsiq_admin_chat_token(array $u): string
{
    $secret = (string) (getenv('OPSIQ_SITE_SECRET') ?: 'opsiq_whsec_YOUR_SITE_SECRET');   // this site's secret; the environment wins when set
    if ($secret === '') return '';                           // fail closed: no Admin Chat
    $now = time();
    $payload = rtrim(strtr(base64_encode(json_encode([
        'site_key'      => 'YOUR_SITE_KEY',
        'iat'           => $now,
        'exp'           => $now + 3600,                      // at most 24 hours
        'authenticated' => true,
        'platform'      => 'php',
        'admin'         => [
            'id'       => (string) $u['id'],                 // REQUIRED
            'email'    => (string) $u['email'],              // REQUIRED
            'username' => (string) ($u['username'] ?? ''),
            'name'     => (string) ($u['name'] ?? ''),
            'role'     => (string) ($u['role'] ?? ''),
        ],
    ], JSON_UNESCAPED_SLASHES)), '+/', '-_'), '=');
    return $payload . '.' . hash_hmac('sha256', $payload, $secret);
}

// Call at the top of every admin page, before any output.
function opsiq_admin_chat_refresh(): void
{
    if (empty($_GET['opsiq_identity_refresh'])) return;
    header('Content-Type: application/json; charset=utf-8');
    header('Cache-Control: no-store');
    $u = opsiq_admin_chat_user();
    $t = $u ? opsiq_admin_chat_token($u) : '';
    if ($t === '') { http_response_code(401); echo json_encode(['success' => false, 'login_required' => true]); exit; }
    echo json_encode(['success' => true, 'role' => 'admin', 'identity_token' => $t]);
    exit;
}

// Print before </body> on admin pages. Prints nothing for anyone who is not staff.
function opsiq_admin_chat_tag(): string
{
    $u = opsiq_admin_chat_user();
    $t = $u ? opsiq_admin_chat_token($u) : '';
    if ($t === '') return '';
    $src = 'https://YOUR-OPSIQ/opsiq/embed/admin_widget.php?site_key=YOUR_SITE_KEY&identity_token=' . rawurlencode($t);
    return '<script async src="' . htmlspecialchars($src, ENT_QUOTES) . '" data-opsiq-widget="admin-chat"></script>';
}

Laravel

1

This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET=… in .env with 'opsiq' => ['site_secret' => env('OPSIQ_SITE_SECRET')] in config/services.php on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

Save the class as app/Support/OpsiqAdminChat.php; adjust isStaff() to your admin guard or role. Add the refresh middleware from the bottom of the code to your admin routes.

3

In your admin Blade layout before </body>: {!! \App\Support\OpsiqAdminChat::tag() !!}. Each staff member needs an OpsIQ agent account with the same email (or username): that is how their own permissions apply.

app/Support/OpsiqAdminChat.php
<?php
// app/Support/OpsiqAdminChat.php — no packages needed.
namespace App\Support;

final class OpsiqAdminChat
{
    /** WHO IS STAFF — adjust to your admin guard, role or gate. */
    private static function staff()
    {
        $user = auth('web')->user();                    // or auth('admin')->user()
        return ($user && $user->can('access-admin')) ? $user : null;
    }

    /** The admin token is base64url(payload) . '.' . hex HMAC — NOT a JWT. */
    public static function token(): string
    {
        $user = self::staff();
        $secret = (string) (config('services.opsiq.site_secret') ?: 'opsiq_whsec_YOUR_SITE_SECRET');   // this site's secret; config wins when set
        if (!$user || $secret === '') return '';
        $now = time();
        $payload = rtrim(strtr(base64_encode(json_encode([
            'site_key'      => 'YOUR_SITE_KEY',
            'iat'           => $now,
            'exp'           => $now + 3600,
            'authenticated' => true,
            'platform'      => 'laravel',
            'admin'         => [
                'id'       => (string) $user->id,           // REQUIRED
                'email'    => (string) $user->email,        // REQUIRED
                'username' => (string) ($user->username ?? $user->email),
                'name'     => (string) $user->name,
                'role'     => 'Admin',
            ],
        ], JSON_UNESCAPED_SLASHES)), '+/', '-_'), '=');
        return $payload . '.' . hash_hmac('sha256', $payload, $secret);
    }

    /** For the admin Blade layout, before </body>. Prints nothing for non-staff. */
    public static function tag(): string
    {
        $t = self::token();
        if ($t === '') return '';
        return '<script async src="' . e('https://YOUR-OPSIQ/opsiq/embed/admin_widget.php?site_key=YOUR_SITE_KEY&identity_token=' . rawurlencode($t)) . '" data-opsiq-widget="admin-chat"></script>';
    }
}

/* Refresh — Admin Chat asks ?opsiq_identity_refresh=1&role=admin on the admin page it is on.
 * app/Http/Middleware/OpsiqAdminChatRefresh.php, added to your admin route group:
 *
 *   public function handle($request, \Closure $next) {
 *       if (!$request->query('opsiq_identity_refresh')) return $next($request);
 *       $t = \App\Support\OpsiqAdminChat::token();
 *       return $t === ''
 *           ? response()->json(['success' => false, 'login_required' => true], 401)->header('Cache-Control', 'no-store')
 *           : response()->json(['success' => true, 'role' => 'admin', 'identity_token' => $t])->header('Cache-Control', 'no-store');
 *   }
 */

WordPress / WooCommerce

1

This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, add define('OPSIQ_SITE_SECRET', '…'); to wp-config.php instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

Paste into your theme's functions.php or a small plugin. It shows Admin Chat inside wp-admin to users who can manage_options; change the capability to suit your team.

3

Each staff member needs an OpsIQ agent account with the same email (or username): that is how their own permissions apply.

functions.php
/* functions.php or a small plugin — OpsIQ Admin Chat inside wp-admin. */

if (!defined('OPSIQ_SITE_SECRET')) define('OPSIQ_SITE_SECRET', 'opsiq_whsec_YOUR_SITE_SECRET');   // this site's secret; wp-config.php wins when set

function opsiq_admin_chat_token(): string {
    if (!is_user_logged_in() || !current_user_can('manage_options')) return '';     // who counts as staff
    if (!defined('OPSIQ_SITE_SECRET') || OPSIQ_SITE_SECRET === '') return '';
    $u   = wp_get_current_user();
    $now = time();
    // The admin token is base64url(payload) . '.' . hex HMAC — NOT a JWT.
    $payload = rtrim(strtr(base64_encode(wp_json_encode([
        'site_key'      => 'YOUR_SITE_KEY',
        'iat'           => $now,
        'exp'           => $now + 3600,
        'authenticated' => true,
        'platform'      => 'wordpress',
        'admin'         => [
            'id'       => (string) $u->ID,                   // REQUIRED
            'email'    => (string) $u->user_email,           // REQUIRED
            'username' => (string) $u->user_login,
            'name'     => (string) $u->display_name,
            'role'     => (string) (reset($u->roles) ?: 'administrator'),
        ],
    ])), '+/', '-_'), '=');
    return $payload . '.' . hash_hmac('sha256', $payload, OPSIQ_SITE_SECRET);
}

// Refresh: Admin Chat asks ?opsiq_identity_refresh=1&role=admin on the admin page it is on.
add_action('admin_init', function () {
    if (empty($_GET['opsiq_identity_refresh'])) return;
    nocache_headers();
    $t = opsiq_admin_chat_token();
    if ($t === '') wp_send_json(['success' => false, 'login_required' => true], 401);
    wp_send_json(['success' => true, 'role' => 'admin', 'identity_token' => $t]);
});

// The loader, on every wp-admin page, for staff only.
add_action('admin_footer', function () {
    $t = opsiq_admin_chat_token();
    if ($t === '') return;
    echo '<script async src="' . esc_url('https://YOUR-OPSIQ/opsiq/embed/admin_widget.php?site_key=YOUR_SITE_KEY&identity_token=' . rawurlencode($t)) . '" data-opsiq-widget="admin-chat"></script>';
});

Node.js / Express

1

No packages needed. This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in the environment on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

adminRouter.use(opsiqAdminChat) on your ADMIN routes, after your session middleware; adjust isStaff(). It answers the refresh and sets res.locals.opsiqAdminChatTag.

3

Print res.locals.opsiqAdminChatTag (unescaped) before </body> in your admin layout. Each staff member needs an OpsIQ agent account with the same email (or username): that is how their own permissions apply.

opsiq-admin-chat.js
// opsiq-admin-chat.js — no packages needed.
const crypto = require("crypto");

const isStaff = (user) => !!(user && user.isAdmin);        // WHO IS STAFF — adjust

// The admin token is base64url(payload) + "." + hex HMAC — NOT a JWT.
function opsiqAdminChatToken(user) {
  const secret = process.env.OPSIQ_SITE_SECRET || "opsiq_whsec_YOUR_SITE_SECRET";   // this site's secret; the environment wins when set
  if (!isStaff(user) || !secret) return "";
  const now = Math.floor(Date.now() / 1000);
  const payload = Buffer.from(JSON.stringify({
    site_key: "YOUR_SITE_KEY",
    iat: now,
    exp: now + 3600,                                        // at most 24 hours
    authenticated: true,
    platform: "node",
    admin: { id: String(user.id), email: user.email, username: user.username || user.email, name: user.name || "", role: user.role || "Admin" },  // id + email REQUIRED
  })).toString("base64url");
  return payload + "." + crypto.createHmac("sha256", secret).update(payload).digest("hex");
}

// adminRouter.use(opsiqAdminChat)
function opsiqAdminChat(req, res, next) {
  const token = opsiqAdminChatToken(req.user);
  if (req.query.opsiq_identity_refresh) {
    res.set("Cache-Control", "no-store");
    return token
      ? res.json({ success: true, role: "admin", identity_token: token })
      : res.status(401).json({ success: false, login_required: true });
  }
  res.locals.opsiqAdminChatTag = token
    ? '<script async src="' + ("https://YOUR-OPSIQ/opsiq/embed/admin_widget.php?site_key=YOUR_SITE_KEY&identity_token=" + encodeURIComponent(token)).replace(/"/g, """) + '" data-opsiq-widget="admin-chat"></script>'
    : "";
  next();
}

module.exports = { opsiqAdminChat };

Python (Flask)

1

No packages beyond Flask and flask-login. This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in the environment on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

Call init_opsiq_admin_chat(app) where you create the app, and adjust is_staff().

3

In your admin base template before </body>: {{ opsiq_admin_chat_tag }}. Each staff member needs an OpsIQ agent account with the same email (or username): that is how their own permissions apply.

opsiq_admin_chat.py
# opsiq_admin_chat.py — Flask + flask-login, no other packages.
import base64, hashlib, hmac, json, os, time, urllib.parse
from flask import request, jsonify
from flask_login import current_user
from markupsafe import Markup, escape

def is_staff(user):                                           # WHO IS STAFF — adjust
    return user.is_authenticated and getattr(user, "is_admin", False)

def opsiq_admin_chat_token():
    secret = os.environ.get("OPSIQ_SITE_SECRET") or "opsiq_whsec_YOUR_SITE_SECRET"   # this site's secret; the environment wins when set
    if not secret or not is_staff(current_user):
        return ""
    now = int(time.time())
    # The admin token is base64url(payload) + "." + hex HMAC — NOT a JWT.
    payload = base64.urlsafe_b64encode(json.dumps({
        "site_key": "YOUR_SITE_KEY", "iat": now, "exp": now + 3600,
        "authenticated": True, "platform": "python",
        "admin": {"id": str(current_user.id), "email": current_user.email,           # REQUIRED
                  "username": getattr(current_user, "username", current_user.email),
                  "name": getattr(current_user, "name", ""), "role": "Admin"},
    }, separators=(",", ":")).encode()).decode().rstrip("=")
    return payload + "." + hmac.new(secret.encode(), payload.encode(), hashlib.sha256).hexdigest()

def init_opsiq_admin_chat(app):
    @app.before_request
    def _opsiq_admin_refresh():
        if request.args.get("opsiq_identity_refresh"):
            t = opsiq_admin_chat_token()
            if t:
                resp = jsonify({"success": True, "role": "admin", "identity_token": t})
            else:
                resp = jsonify({"success": False, "login_required": True})
                resp.status_code = 401
            resp.headers["Cache-Control"] = "no-store"
            return resp

    @app.context_processor
    def _opsiq_admin_tag():
        t = opsiq_admin_chat_token()
        if not t:
            return {"opsiq_admin_chat_tag": ""}
        src = "https://YOUR-OPSIQ/opsiq/embed/admin_widget.php?site_key=YOUR_SITE_KEY&identity_token=" + urllib.parse.quote(t, safe="")
        return {"opsiq_admin_chat_tag": Markup('<script async src="%s" data-opsiq-widget="admin-chat"></script>' % escape(src))}

Django

1

No packages needed. This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in settings.py (for example os.environ["OPSIQ_SITE_SECRET"]) on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

Add "yourapp.opsiq_admin_chat.OpsiqAdminChatMiddleware" to MIDDLEWARE (after AuthenticationMiddleware) and "yourapp.opsiq_admin_chat.opsiq_admin_chat" to TEMPLATES context_processors. Staff = user.is_staff.

3

In your admin base template before </body>: {{ opsiq_admin_chat_tag }}. Each staff member needs an OpsIQ agent account with the same email (or username): that is how their own permissions apply.

opsiq_admin_chat.py
# yourapp/opsiq_admin_chat.py — no packages needed.
import base64, hashlib, hmac, json, time, urllib.parse
from django.conf import settings
from django.http import JsonResponse
from django.utils.html import format_html

def opsiq_admin_chat_token(user):
    secret = getattr(settings, "OPSIQ_SITE_SECRET", "") or "opsiq_whsec_YOUR_SITE_SECRET"   # this site's secret; settings win when set
    if not secret or not user.is_authenticated or not user.is_staff:
        return ""
    now = int(time.time())
    # The admin token is base64url(payload) + "." + hex HMAC — NOT a JWT.
    payload = base64.urlsafe_b64encode(json.dumps({
        "site_key": "YOUR_SITE_KEY", "iat": now, "exp": now + 3600,
        "authenticated": True, "platform": "django",
        "admin": {"id": str(user.pk), "email": user.email, "username": user.get_username(),   # id + email REQUIRED
                  "name": user.get_full_name(), "role": "Superuser" if user.is_superuser else "Staff"},
    }, separators=(",", ":")).encode()).decode().rstrip("=")
    return payload + "." + hmac.new(secret.encode(), payload.encode(), hashlib.sha256).hexdigest()

class OpsiqAdminChatMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response
    def __call__(self, request):
        if request.GET.get("opsiq_identity_refresh"):
            t = opsiq_admin_chat_token(request.user)
            resp = (JsonResponse({"success": True, "role": "admin", "identity_token": t}) if t
                    else JsonResponse({"success": False, "login_required": True}, status=401))
            resp["Cache-Control"] = "no-store"
            return resp
        return self.get_response(request)

def opsiq_admin_chat(request):
    t = opsiq_admin_chat_token(request.user)
    if not t:
        return {"opsiq_admin_chat_tag": ""}
    src = "https://YOUR-OPSIQ/opsiq/embed/admin_widget.php?site_key=YOUR_SITE_KEY&identity_token=" + urllib.parse.quote(t, safe="")
    return {"opsiq_admin_chat_tag": format_html('<script async src="{}" data-opsiq-widget="admin-chat"></script>', src)}

.NET / C#

1

No packages needed. This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OpsIQ:SiteSecret (user-secrets, the OpsIQ__SiteSecret environment variable or Key Vault) on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

In Program.cs after app.UseAuthentication(): app.Use(OpsiqAdminChat.Refresh); staff = users in the "Admin" role (adjust).

3

In your admin layout before </body>: @Html.Raw(OpsiqAdminChat.Tag(Context)). Each staff member needs an OpsIQ agent account with the same email (or username): that is how their own permissions apply.

OpsiqAdminChat.cs
// OpsiqAdminChat.cs — no packages needed.
using System.Net;
using System.Security.Claims;
using System.Security.Cryptography;
using System.Text;
using System.Text.Json;

public static class OpsiqAdminChat
{
    // The admin token is base64url(payload) + "." + hex HMAC — NOT a JWT.
    public static string Token(HttpContext ctx)
    {
        var secret = ctx.RequestServices.GetRequiredService<IConfiguration>()["OpsIQ:SiteSecret"];
        if (string.IsNullOrEmpty(secret)) secret = "opsiq_whsec_YOUR_SITE_SECRET";   // this site's secret; configuration wins when set
        if (string.IsNullOrEmpty(secret) || !ctx.User.IsInRole("Admin")) return "";      // WHO IS STAFF — adjust
        var now = DateTimeOffset.UtcNow.ToUnixTimeSeconds();
        var json = JsonSerializer.Serialize(new Dictionary<string, object> {
            ["site_key"] = "YOUR_SITE_KEY", ["iat"] = now, ["exp"] = now + 3600,
            ["authenticated"] = true, ["platform"] = "dotnet",
            ["admin"] = new Dictionary<string, string> {
                ["id"] = ctx.User.FindFirstValue(ClaimTypes.NameIdentifier) ?? "",      // REQUIRED
                ["email"] = ctx.User.FindFirstValue(ClaimTypes.Email) ?? "",            // REQUIRED
                ["username"] = ctx.User.Identity?.Name ?? "", ["name"] = ctx.User.Identity?.Name ?? "", ["role"] = "Admin" },
        });
        var payload = Convert.ToBase64String(Encoding.UTF8.GetBytes(json)).TrimEnd('=').Replace('+', '-').Replace('/', '_');
        using var h = new HMACSHA256(Encoding.UTF8.GetBytes(secret));
        return payload + "." + Convert.ToHexString(h.ComputeHash(Encoding.UTF8.GetBytes(payload))).ToLowerInvariant();
    }

    // app.Use(OpsiqAdminChat.Refresh)
    public static async Task Refresh(HttpContext ctx, Func<Task> next)
    {
        if (string.IsNullOrEmpty(ctx.Request.Query["opsiq_identity_refresh"])) { await next(); return; }
        ctx.Response.Headers["Cache-Control"] = "no-store";
        var t = Token(ctx);
        if (t == "") { ctx.Response.StatusCode = 401; await ctx.Response.WriteAsJsonAsync(new { success = false, login_required = true }); return; }
        await ctx.Response.WriteAsJsonAsync(new { success = true, role = "admin", identity_token = t });
    }

    public static string Tag(HttpContext ctx)
    {
        var t = Token(ctx);
        if (t == "") return "";
        return "<script async src=\"" + WebUtility.HtmlEncode("https://YOUR-OPSIQ/opsiq/embed/admin_widget.php?site_key=YOUR_SITE_KEY&identity_token=" + Uri.EscapeDataString(t)) + "\" data-opsiq-widget=\"admin-chat\"></script>";
    }
}

Ruby on Rails

1

No gems needed. This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in the environment on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

include OpsiqAdminChat in your admin base controller; adjust opsiq_staff.

3

In your admin layout before </body>: <%= opsiq_admin_chat_tag %>. Each staff member needs an OpsIQ agent account with the same email (or username): that is how their own permissions apply.

app/controllers/concerns/opsiq_admin_chat.rb
# app/controllers/concerns/opsiq_admin_chat.rb — no gems needed.
require "base64"
require "cgi"
require "json"
require "openssl"

module OpsiqAdminChat
  extend ActiveSupport::Concern

  included do
    before_action :opsiq_admin_identity_refresh
    helper_method :opsiq_admin_chat_tag
  end

  private

  def opsiq_staff                                        # WHO IS STAFF — adjust
    current_user if respond_to?(:current_user, true) && current_user&.try(:admin?)
  end

  # The admin token is base64url(payload) + "." + hex HMAC — NOT a JWT.
  def opsiq_admin_chat_token
    secret = ENV["OPSIQ_SITE_SECRET"].presence || "opsiq_whsec_YOUR_SITE_SECRET"   # this site's secret; the environment wins when set
    staff = opsiq_staff
    return "" if secret.blank? || staff.nil?
    now = Time.now.to_i
    payload = Base64.urlsafe_encode64({
      site_key: "YOUR_SITE_KEY", iat: now, exp: now + 3600,
      authenticated: true, platform: "rails",
      admin: { id: staff.id.to_s, email: staff.email,              # REQUIRED
               username: staff.try(:username).to_s, name: staff.try(:name).to_s, role: "Admin" }
    }.to_json, padding: false)
    payload + "." + OpenSSL::HMAC.hexdigest("SHA256", secret, payload)
  end

  def opsiq_admin_identity_refresh
    return unless params[:opsiq_identity_refresh].present?
    response.headers["Cache-Control"] = "no-store"
    t = opsiq_admin_chat_token
    return render(json: { success: false, login_required: true }, status: :unauthorized) if t.blank?
    render json: { success: true, role: "admin", identity_token: t }
  end

  def opsiq_admin_chat_tag
    t = opsiq_admin_chat_token
    return "" if t.blank?
    helpers.tag.script(nil, async: true, src: "https://YOUR-OPSIQ/opsiq/embed/admin_widget.php?site_key=YOUR_SITE_KEY&identity_token=#{CGI.escape(t)}", data: { opsiq_widget: "admin-chat" })
  end
end

Java (Spring Boot)

1

No libraries needed. This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set opsiq.site.secret (for example from OPSIQ_SITE_SECRET) on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

Replace staff() with your admin lookup. The filter answers the refresh; @ControllerAdvice exposes opsiqAdminChatTag to views.

3

Admin Thymeleaf layout before </body>: <th:block th:utext="${opsiqAdminChatTag}"/>. Each staff member needs an OpsIQ agent account with the same email (or username): that is how their own permissions apply.

OpsiqAdminChat.java
// OpsiqAdminChat.java — no libraries needed.
import jakarta.servlet.*;
import jakarta.servlet.http.*;
import java.io.IOException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.*;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.util.HtmlUtils;

@Component
@ControllerAdvice
public class OpsiqAdminChat implements Filter {
    @Value("${opsiq.site.secret:opsiq_whsec_YOUR_SITE_SECRET}")   // this site's secret; opsiq.site.secret wins when set
    private String secret;

    /** WHO IS STAFF — replace: id, email, username, name, role. Null for anyone else. */
    private Map<String, String> staff(HttpServletRequest req) {
        if (req.getUserPrincipal() == null || !req.isUserInRole("ADMIN")) return null;
        String n = req.getUserPrincipal().getName();
        return Map.of("id", n, "email", n, "username", n, "name", n, "role", "Admin");
    }

    // The admin token is base64url(payload) + "." + hex HMAC — NOT a JWT.
    String token(HttpServletRequest req) {
        Map<String, String> u = staff(req);
        if (u == null || secret.isEmpty()) return "";
        try {
            long now = System.currentTimeMillis() / 1000;
            Map<String, Object> claims = new LinkedHashMap<>();
            claims.put("site_key", "YOUR_SITE_KEY"); claims.put("iat", now); claims.put("exp", now + 3600);
            claims.put("authenticated", true); claims.put("platform", "java"); claims.put("admin", u);   // id + email REQUIRED
            String payload = Base64.getUrlEncoder().withoutPadding().encodeToString(new ObjectMapper().writeValueAsBytes(claims));
            Mac mac = Mac.getInstance("HmacSHA256");
            mac.init(new SecretKeySpec(secret.getBytes(StandardCharsets.UTF_8), "HmacSHA256"));
            return payload + "." + HexFormat.of().formatHex(mac.doFinal(payload.getBytes(StandardCharsets.UTF_8)));
        } catch (Exception e) { return ""; }
    }

    @Override // Admin Chat refreshing on the admin page it is on
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) request;
        if (req.getParameter("opsiq_identity_refresh") == null) { chain.doFilter(request, response); return; }
        HttpServletResponse res = (HttpServletResponse) response;
        res.setHeader("Cache-Control", "no-store");
        res.setContentType("application/json");
        String t = token(req);
        if (t.isEmpty()) { res.setStatus(401); res.getWriter().write("{\"success\":false,\"login_required\":true}"); return; }
        res.getWriter().write("{\"success\":true,\"role\":\"admin\",\"identity_token\":\"" + t + "\"}");
    }

    @ModelAttribute("opsiqAdminChatTag")
    public String tag(HttpServletRequest req) {
        String t = token(req);
        if (t.isEmpty()) return "";
        String src = "https://YOUR-OPSIQ/opsiq/embed/admin_widget.php?site_key=YOUR_SITE_KEY&identity_token=" + URLEncoder.encode(t, StandardCharsets.UTF_8);
        return "<script async src=\"" + HtmlUtils.htmlEscape(src) + "\" data-opsiq-widget=\"admin-chat\"></script>";
    }
}

Go

1

No modules needed. This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in the environment on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

Replace staff() with your session lookup and wrap your admin router: OpsiqAdminChatRefresh(adminMux).

3

Pass OpsiqAdminChatTag(r) to your admin layout and print it before </body>. Each staff member needs an OpsIQ agent account with the same email (or username): that is how their own permissions apply.

opsiq_admin_chat.go
// opsiq_admin_chat.go — standard library only.
package main

import (
    "crypto/hmac"
    "crypto/sha256"
    "encoding/base64"
    "encoding/hex"
    "encoding/json"
    "html"
    "html/template"
    "net/http"
    "net/url"
    "os"
    "time"
)

type OpsiqStaff struct{ ID, Email, Username, Name, Role string }

// WHO IS STAFF — replace with your session lookup. Return nil for anyone who is not staff.
func staff(r *http.Request) *OpsiqStaff { return nil }

// The admin token is base64url(payload) + "." + hex HMAC — NOT a JWT.
func opsiqAdminChatToken(r *http.Request) string {
    u, secret := staff(r), os.Getenv("OPSIQ_SITE_SECRET")
    if secret == "" {
        secret = "opsiq_whsec_YOUR_SITE_SECRET" // this site's secret; the environment wins when set
    }
    if u == nil || secret == "" {
        return ""
    }
    now := time.Now().Unix()
    body, _ := json.Marshal(map[string]any{
        "site_key": "YOUR_SITE_KEY", "iat": now, "exp": now + 3600,
        "authenticated": true, "platform": "go",
        "admin": map[string]string{"id": u.ID, "email": u.Email, "username": u.Username, "name": u.Name, "role": u.Role}, // id + email REQUIRED
    })
    payload := base64.RawURLEncoding.EncodeToString(body)
    mac := hmac.New(sha256.New, []byte(secret))
    mac.Write([]byte(payload))
    return payload + "." + hex.EncodeToString(mac.Sum(nil))
}

// OpsiqAdminChatRefresh answers Admin Chat's ?opsiq_identity_refresh=1&role=admin.
func OpsiqAdminChatRefresh(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        if r.URL.Query().Get("opsiq_identity_refresh") == "" {
            next.ServeHTTP(w, r)
            return
        }
        w.Header().Set("Cache-Control", "no-store")
        w.Header().Set("Content-Type", "application/json")
        if t := opsiqAdminChatToken(r); t != "" {
            json.NewEncoder(w).Encode(map[string]any{"success": true, "role": "admin", "identity_token": t})
            return
        }
        w.WriteHeader(http.StatusUnauthorized)
        json.NewEncoder(w).Encode(map[string]any{"success": false, "login_required": true})
    })
}

// OpsiqAdminChatTag prints the loader for staff only.
func OpsiqAdminChatTag(r *http.Request) template.HTML {
    t := opsiqAdminChatToken(r)
    if t == "" {
        return ""
    }
    src := "https://YOUR-OPSIQ/opsiq/embed/admin_widget.php?site_key=YOUR_SITE_KEY&identity_token=" + url.QueryEscape(t)
    return template.HTML(`<script async src="` + html.EscapeString(src) + `" data-opsiq-widget="admin-chat"></script>`)
}

تنفيذ النقطة النهائية للهوية على Laravel (ملاحظات مكتسبة بشق الأنفس)

إذا كانت منصة عملك هي Laravel (Botble, Bagisto, custom apps) ونقطة النهاية الخاصة بك هو ملف قائم بذاته الذي يبدأ الإطار لقراءة إدارية المسجل في، ثلاث خصائص سوف توفير لك ساعات - كل واحد أنتج فشل الإنتاج الحقيقي قبل أنه تم تعلم:

تم ربط الطلب قبل أن يُضرب

مقدّمي خدماتك قد يُحلوا request من الحاوية أثناء الإقلاع. Laravel دورة الحياة الخاصة بها تربط الطلب المسجل أول شيء داخل Kernel::handle() - مرآة لهذا الأمر: $app->instance('request', Request::capture()) قبل $kernel->bootstrap()أو تحصل على "الفصل الهادي لا وجود له".

"مُبتدئ للدورة"HMAC-ممتاز

Laravel الحديثة تضع مقدمة لقيم ملفات تعريف الارتباط مع HMAC المحسوبة باستخدام مفتاح التطبيق (CookieValuePrefix)أ( sha1(name."v2") لا يمكن أن يطابقها أبداً CookieValuePrefix::validate($name, $decrypted, $keys)مع تراجع هيكلي40Hex chars + | في الموقع40() تُخبر: دورة أطول من مدة الدورة40)الفوضى(81= ما زال يُرفق بها مسبقاً) وجلسة لا تحمل إلا _token في ذلك

حيث يقطن الشعار

الختم الشهير login_<guard>_<sha1(guard class)> - بالنسبة لحرس الشبكة العاجز: 'login_web_' . sha1(Illuminate\Auth\SessionGuard::class)مسح أي login_* مفتاح رقمي كتراجع للحراس العادين

(ديبج) كما يفعل الجسر

السفينة(أ) debug=1 وهناك طريقة أخرى تسمي الخطوة الفاشلة والاستثناء - اصطدام أعمى كل شيء جعل النشر الحي غير قابل للتشخيص. Botble جسر (من النموذج 1).0.7) هو المرجع: مؤشرات الخطوات في kernel/bind/bootstrap/decrypt/session/auth/db.

Laravel · إكمال النقطة النهائية للهوية (نسخ، تحديد الثابتين، الانتهاء)
<?php
/* identity endpoint · LARAVEL (Botble, Bagisto, any Laravel admin)
 * Drop this in your PUBLIC web root, e.g. /opsiq-identity.php
 * Answers: {"success":true,"authenticated":true,"admin":{...},"identity_token":"..."} */
define("OPSIQ_SITE_KEY", "SITE_KEY");
define("OPSIQ_SITE_SECRET", "opsiq_whsec_your_site_secret");   // Remote Sites → Codes

header("Content-Type: application/json");
$step = "boot";
try {
    require __DIR__ . "/../vendor/autoload.php";
    $app = require_once __DIR__ . "/../bootstrap/app.php";

    $step = "bind";
    // ORDER MATTERS: bind the request BEFORE bootstrapping, or providers that
    // resolve "request" during boot throw "Target class [request] does not exist".
    $request = Illuminate\Http\Request::capture();
    $app->instance("request", $request);

    $step = "bootstrap";
    $kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
    $kernel->bootstrap();

    $step = "session";
    $app["session"]->driver()->setId($request->cookie(config("session.cookie")));
    $app["session"]->driver()->start();

    $step = "auth";
    $user = auth()->guard("web")->user();   // use YOUR admin guard name
    if (!$user) {
        echo json_encode(["success" => false, "authenticated" => false, "error" => "no admin session"]);
        exit;
    }

    $step = "sign";
    $admin = [
        "id"            => (string)$user->id,
        "name"          => (string)($user->name ?? $user->username),
        "username"      => (string)($user->username ?? $user->email),
        "email"         => (string)$user->email,
        "role"          => (string)optional($user->roles->first())->name,
        "authenticated" => true,
    ];
    $payload = json_encode([
        "site_key"      => OPSIQ_SITE_KEY,
        "iat"           => time(),
        "exp"           => time() + 6 * 3600,
        "authenticated" => true,          // TOP LEVEL — required
        "platform"      => "laravel",
        "admin"         => $admin,
    ], JSON_UNESCAPED_SLASHES);
    $p64   = rtrim(strtr(base64_encode($payload), "+/", "-_"), "=");
    $token = $p64 . "." . hash_hmac("sha256", $p64, OPSIQ_SITE_SECRET);

    echo json_encode(["success" => true, "authenticated" => true,
                      "admin" => $admin, "identity_token" => $token]);
} catch (\Throwable $e) {
    // debug=1 names the failing STEP — never ship a blind catch-all
    $err = ($_GET["debug"] ?? "") === "1"
        ? get_class($e) . " at [" . $step . "]: " . $e->getMessage()
        : "identity unavailable";
    echo json_encode(["success" => false, "authenticated" => false, "error" => $err]);
}

نفس نقطة النهاية على أكوام أخرى

فقط "الذي يسجل في؟" تغيير الخط، كتلة التوقيع متطابقة في كل مكان، وقع على الخادم،JavaScript.

WordPress · WHMCS · Symfony · بي إتش بي عادي - تبادل البحث، والاحتفاظ بالموقّع
<?php
/* The ONE helper every platform shares. Keep it verbatim. */
function opsiq_identity_token(array $admin, string $siteKey, string $secret, string $platform): string {
    $payload = json_encode([
        "site_key"      => $siteKey,
        "iat"           => time(),
        "exp"           => time() + 6 * 3600,
        "authenticated" => true,          // TOP LEVEL — OpsIQ refuses the token without it
        "platform"      => $platform,
        "admin"         => $admin + ["authenticated" => true],
    ], JSON_UNESCAPED_SLASHES);
    $p64 = rtrim(strtr(base64_encode($payload), "+/", "-_"), "=");
    return $p64 . "." . hash_hmac("sha256", $p64, $secret);
}

/* ── WORDPRESS ─────────────────────────────────────────────────────────── */
require_once ABSPATH . "wp-load.php";
if (!current_user_can("manage_options")) { /* not an admin → refuse */ }
$u = wp_get_current_user();
$admin = ["id" => (string)$u->ID, "name" => $u->display_name,
          "username" => $u->user_login, "email" => $u->user_email,
          "role" => implode(",", $u->roles)];

/* ── WHMCS (inside an addon/hook, admin area) ──────────────────────────── */
$aid = (int)($_SESSION["adminid"] ?? 0);
if ($aid <= 0) { /* not an admin → refuse */ }
$row = Capsule::table("tbladmins")->where("id", $aid)->first();
$admin = ["id" => (string)$row->id, "name" => trim($row->firstname . " " . $row->lastname),
          "username" => $row->username, "email" => $row->email, "role" => "administrator"];

/* ── SYMFONY ───────────────────────────────────────────────────────────── */
$u = $security->getUser();                    // Symfony\Bundle\SecurityBundle\Security
if (!$u) { /* not an admin → refuse */ }
$admin = ["id" => (string)$u->getId(), "name" => $u->getName(),
          "username" => $u->getUserIdentifier(), "email" => $u->getEmail(),
          "role" => implode(",", $u->getRoles())];

/* ── PLAIN PHP / your own app ──────────────────────────────────────────── */
session_start();
if (empty($_SESSION["admin_id"])) { /* not an admin → refuse */ }
$admin = ["id" => (string)$_SESSION["admin_id"], "name" => $_SESSION["admin_name"] ?? "",
          "username" => $_SESSION["admin_username"] ?? "", "email" => $_SESSION["admin_email"] ?? "",
          "role" => $_SESSION["admin_role"] ?? ""];

/* ── then, on EVERY stack ──────────────────────────────────────────────── */
$token = opsiq_identity_token($admin, "SITE_KEY", "opsiq_whsec_your_site_secret", "wordpress");
echo json_encode(["success" => true, "authenticated" => true,
                  "admin" => $admin, "identity_token" => $token]);

عندما لا يعمل - تشخيص في هذا الترتيب

لا يظهر (وايدج) أبداً، يقول (كونيل) "موقعة الهوية رمزية مطلوبة"

نقطة النهاية لم تعد identity_token- فتح نقطة النهايةURLمباشرةً في مخزنِ الأدمانِ المُتَوَجَّلِ &debug=1 — سترى الخطوة الفاشلة. على Laravel هذا هو دائما تقريبا البند المتعلق بالطلب أو مقدمة الكعكة أعلاه.

التاريخ والمحادثات تعمل، لكن كلّ دردشة تقول "الاسم المطلوب"

الإنقسام الكلاسيكي، إنّ مركبتكَ تفتقدُ "توب-فل" authenticated العلم، نقطة نهاية البارودية الخاصة تقبل المُتَركّب، الشّخصيّ الذي خلف مجرى الدردشة يرفضه. "authenticated" => true beside exp.

"لم يُنصّ على ذلك"OpsIQ" (HTTP)401)

تم التحقق من (توكن) لكن إسمه المستخدم + البريد الإلكتروني لا يتطابقOpsIQعميل، أضف العميلOpsIQ →فريق، أو إضافة البريد الإلكتروني إلى قائمة رسائل العميلة عندما تختلف عنOpsIQالبريد الإلكتروني.

كل شيء403sمن المصفح ولكن يعمل مع العنبر

إنّ ضوء "دي آر إس" يرفض أحد رؤسائكَ الطلبين، يجب أن تجيب نقطة النهاية OPTIONS وتذكر الأصل الذي يطلبه، أو تتجنب فقط المرشدين التقليديين - لا يحتاج المستعار إلا إلى الكعكة.

عمل بالأمس، فشل اليوم

تحقق exp: الرموز قصيرة العمر بحكم تصميمها. تقوم الوحدة بإعادة المسح تلقائيًا، لذلك يعني هذا عادة أن نقطة النهاية توقفت عن رؤية الجلسة - دورة مفتاح التطبيق، أو تغيير محرك جلسة، أو تغير مجال الكعك.

💡
الإسمن (ويدج) يُخفي إلى أن تُحلّ هويته، وكل نداء للدردشة/الصندوق/البيانات مُنفَّذ بجانب الخادم المطابقOpsIQالعميل بغض النظر عن أي شيء تؤكده الصفحة، الـ(توكين) يُطلق سراح (يو آي)...OpsIQ.
المطور

هوية الزائر

الهوية تربط الزوار المجهولي الهوية بالعملاء المعروفين. وعندما يتم تحديد هويتهم، يقوم OpsIQ بربط تاريخ التصفح والمحادثات والتذاكر ببيانات العميل الشخصية.

كيف يعمل
هوية الزائرتدفق: يدخل المستخدم إلى موقعك، وتصدر علامة هوية موقّعة، و OpsIQ توحد جلساتهم والمحادثات والتذاكر في ملف واحد.عدد المستخدمين الذين دخلواعلى موقعكرمز موقعرمز الهوية (HMAC)صورة واحدةsessions+ محادثات+ التذاكر
هوية الزائر

مستوىان من الهوية، وعندما يكون كل منهما كافياً

الرتبة1- تلميح غير موقع

أخبر (وادج) من يكون الزائر برفقةJavaScriptهذا يملأ البريد الإلكتروني و العميل الذي كان على سجل الزوار لذا لوحة التحكم الخاصة بك تظهر حركة المرور و الجلسات تلتحقOpsIQلا تنشر أبدا بيانات عن قوة ذلك.

الرتبة 2 — هوية موقعة

خادمك يُوقع على سرٍّ قصير الأمد في الموقعOpsIQتحقق من التوقيع، ثم تعامل الشخص كزبون مثبت هذا هو المستوى الذي يكشف عن الإجابات في دردشة الزبائن ومراقبة الموصل

⚠️
الرتبة1هو ملاءمة العرض.2إن كان يمكن الإجابة على سؤال فقط عن صاحب الحساب الحقيقي، فأنت بحاجة إلى المستوى2.
💡
You do not have to write Level 2 by hand: Remote Sites → your site → Codes → C. Signed-in customers generates the signing code and the refresh handler for PHP, WordPress, Laravel, Node.js, Python, Django, .NET, Rails, Java and Go. The WHMCS hook and the Botble connector bridge already sign customers. Identity says who the customer is; their orders or bookings reach the chat through a connector (with a bridge file only when the platform has no API).

الرتبة1- التلميح غير الموقّع

ضعي الهدف قبل النص المُستعار أو اتصلي بـ (لوك) لاحقاً عندما يعرف تطبيقك من هو الموقع

JavaScript · الاستمارتين المدعومة
<!-- Form A: set the global before the loader -->
<script>
  window.OpsIQClient = {
    id:    "cust_1001",
    email: "[email protected]",
    name:  "Jane Smith",
    plan:  "pro"
  };
</script>
<script async src="https://YOUR-OPSIQ/widget.php?site_key=YOUR_SITE_KEY"></script>

<!-- Form B: identify later, e.g. after a client-side login -->
<script>
  window.opsiq.identify({
    id:    "cust_1001",
    email: "[email protected]",
    name:  "Jane Smith",
    plan:  "pro"
  });
</script>
⚠️
Only these forms are read: the window.OpsIQClient global, window.opsiqConfig.user, and window.opsiq.identify(). There is no OpsIQ.push(['identify', ...]) queue and no OpsIQClientSignature global — if you find either in an old note, it does nothing.

الرتبة 2 — الهوية المُوقعة على الخادم

بالضبط نفس العقد المكسور مثل الإسمن وادجيت مع customer موضوع بدلا من admin واحد، وقع على خادمك وسلمه إلى الممسحة

The HMAC"يغطي سلسلة الـ "بي سي ستيرل وليس الخيطJSON

توقيع $payload64لا $payloadالتوقيع على الخامJSONينتج رمزاً يبدو صحيحاً ويُرفض كل مرة بخطأ في التوقيع

القاعدة 64، غير مجهزة

Translated By +/ إلى -_ و اخلع = الرشوة، القاعدة 64 تصادف أن ننجو اليوم.OpsIQالتحقق و الإمتحان المرجعي

"تتمّ التصديق على مستوى "تو ب

بجانبك site_key, iat و expإنه تأكيدك أن الإنسان الحقيقي يسجل فيOpsIQيَرْفضُ الضريحَ بدونه.

الزبون.

(توكن) يحمل رسالة إلكترونية فقط يُصدّق كتوقيع ثم يتمّ غلقه بصمت، دائماً يرسل نسخة منه.

استمر

دقائق إلى ساعات، إنّ "التوكن" هو تأكيدٌ في الجلسة وليس إبداعاً لتخزينه

PHP - sign a client identity token ( This exact code validifies)
<?php
/* Server-signed customer identity. Runnable as-is: set the two constants. */
$siteKey = "YOUR_SITE_KEY";                        // Remote Sites -> Codes
$secret  = "opsiq_whsec_your_site_secret";         // Remote Sites -> Codes

$payload = json_encode([
    "site_key"      => $siteKey,
    "iat"           => time(),
    "exp"           => time() + 3600,
    "authenticated" => true,                       // TOP LEVEL - required
    "platform"      => "your-platform",
    "customer"      => [
        "id"            => (string)$user->id,      // REQUIRED
        "email"         => (string)$user->email,   // REQUIRED
        "name"          => (string)$user->name,
        "plan"          => (string)($user->plan ?? ""),
        "authenticated" => true,
    ],
], JSON_UNESCAPED_SLASHES);

/* base64url(payload) . "." . hex HMAC-SHA256 OF THAT STRING. */
$payload64 = rtrim(strtr(base64_encode($payload), "+/", "-_"), "=");
$token     = $payload64 . "." . hash_hmac("sha256", $payload64, $secret);

/* Hand it to the widget either way: */
printf(
    '<script async src="https://YOUR-OPSIQ/widget.php?site_key=%s&identity_token=%s"></script>',
    rawurlencode($siteKey),
    rawurlencode($token)
);
// or, if the loader is already on the page:
// echo '<script>window.opsiqConfig = window.opsiqConfig || {}; '
//    . 'window.opsiqConfig.identityToken = ' . json_encode($token) . ';</script>';
🚫
وقع على الخادم فقط مطحن في بروزرJavaScriptيعني أن نقل الموقع سرّ إلى كل زائر، الذي يسلّم أي شخص القدرة على إنكار شخصية أي زبون.

نفس العقد، ثلاثة أسطح

دردشة العملاء على موقعك

موضوع الزبائن، مر كما identity_token (أ) اختيرت: مع اللحن ألف والربط بين الدردشة تحقق بالفعل من العملاء أنفسهم (رقم حجز أو أمر بإثبات، أو رمز بريد إلكتروني قبل صدور الأمر).

دردشة ادمين داخل ظهرك

مسمّى، مرّ علىopsiqنفس اللافتة، مفتاح الموضوع مختلف انظر "أدمين وايت" في ظهرك

وصلات قاعدية

متغير أكثر صرامة: نفس المطالبات بالإضافة إلى الـ (جتي) و(أوز)120-الحياة الثانية، لأنّ (توكين) يسافر فيURLو يجب أن ننفق مرة واحدة لا تسحبها، (ستينغز)، (بورتال) لديه قنبلة جاهزة للغتك.

ماذا لو قام زائر بإزالة ملفات تعريف الارتباط؟+

يصبحون مجهولين حتى يتم التعرف عليهم مرة أخرىOpsIQيربط الرقم القياسي الجديد المجهول إلى صورة العملاء لحظة وصول تلميح أو رمز.

لماذا تتأكد من سجل الزوار لكن ليس لأسئلة الحساب؟+

هذا هو المستوى1/ المستوى2يملأ تلميح غير موقع سجل الزوار ولا شيء آخر، فالإجابات على الحساب تحتاج إلى توقيع مُحقّق.

المطور

لوحة رقمية: رمز لكل منصة

أرسل زبوناً وقع بالفعل على طلبك مباشرة إلى بوابة دعمك، ووقعت به دون كلمة مرور ثانية، وتوضح هذه الصفحة كيف يعمل التسليم، وكل مطالبة في الضواحي، والتجهيزات، ومسار كامل لكل منصة.

كيف يعمل

1
العميل يضغط على الدعم في تطبيقك

نقطة الرابط في طريق صغير على خادمك، على سبيل المثال /support-portal. لا يوجد في أي صلة تحتوي على مركب: تسرّب في صفحة من خلال مصدر الصفحات، وتاريخ بروزر ورأس المُحيل.

2
تم التحقق من الطريق الذي وقع

يقرأ هذا العميل من دورتك الخاصة الزائر الذي لم يتم التوقيع عليه يرسل إلى لوحك أولاً ويعود إلى الطريق بعد ذلك

3
الطريق يُوقع على مقطع غير مُحدّد

(إتش إس 256 جي دبليو تي) وُقع مع سرّ التوقيع في مكان العمل، والذي هو فقط خادمك الذي يحتجزه 120 ثواني ويمكن استخدامها مرة واحدة.

4
يُعاد توجيه الطريق إلى البوابة

إلى صفحة البوّابة جاء الزبون من عندما طلبت البوابة واحدة (opsiq_portal_return"قبلت فقط في عنوان بوّابة الخاص بك" "وإلاّ، فإنّ الردّ يحمل "المُحيل - الشرطة: لا يوجد مُراجع و"كاش-المراقبة

5
البوّابة تحقق من العميل وتوقعه

ويتم التحقق من التوقيع، ومفتاح العمل، والانتهاء، وثبوت الوثبة مرة واحدة، ويعثر على العميل أو يُنشأ بالبريد الإلكتروني، وتتطابق طلباته القائمة مع تلك الطلبات.

المطالبة المقدمة من شركة توكين

site_key

مفتاح العمل الخاص بك، تم رفض "التوكن" لأماكن عمل أخرى حتى عندما يتم التوقيع بشكل صحيح

iat/ exp

تم إصدارها و الإنهاء في ثواني البوابة تتحول إلى حياة 120 الثواني: يجب أن ننجو فقط من إعادة توجيه واحدة.

مصدق عليه:

بيان تطبيقك أنه وقع على هذا الشخص طلب من أعلى المستويات

Jti + single_use: صحيح

"العلم العشبى" و العلم لمرة واحدة لا يمكن استخدام نفس الرابط مرتين

المنصة

بطاقة مجانية لمن جاء الزبون (إف بي) wordpress, whmcsتظهر في ملف الزبون

زبون، وزبون

كلاهما مطلوبان، الطبيب الشرعي هو عميل تطبيقك الخاص بك، البريد الإلكتروني هو كيف تجد البوابة العميل وتطابق طلباتهم.

اسم الزبون/ external_id

الاسم الاختياري للعرض، و id OpsIQ متاجر ضد منصتك.

الخطوات

1
عُلم الطريق

(ب) المُنشأات، وبورت الدعم، واللافتات البحرية من تطبيقك، اختر ما يُنفذ عليه تطبيقك؛ الرمز تحت القائمة يحتوي على عنوان بوابة الخاص بك ومفتاح العمل المُملوء به، مع ملاحظات مرقمة لذلك المنبر.

2
السر موجود بالفعل في الشفرة

الطريق المُنسخ يحتوي على سرّ توقيع هذا الفضاء، لذا يعمل كما هو مُعجّل، لإبقائه خارج الملف، OPSIQ_SITE_SECRET هذه القيمة تُستخدم أولاً، لا تضع الطريق في صفحة JavaScriptأي شخص يحمل السر يمكنه أن يوقع كزبون

3
ربط زر دعمك إلى الطريق

على سبيل المثال https://your-app.com/support-portal.

4
اجعل البوابة علامة على الزر استخدم تطبيقك

استديو بورتال، صفحة الإشارة، استخدم سجل موقعي على الإنترنت، صفحتك URL: ضعه على نفس الطريق البوابة تضيف opsiq_portal_return لوحده والطريق يُعيد الزبون إلى تلك الصفحة، موقّع فيها.

5
اختياري: التوقيع في كل مكان

"موقعة، بوابة الدعم" "وقّعوا في كل مكان" URLإذاً التوقيع من البوابة يوقع أيضاً على العميل خارج تطبيقك

6
الاختبار

تُولد حلقة اختبار موقعة على نفس الموقع لتفقد الجانب المُدخل وحده، ثمّ فتح طريقك بينما تم التوقيع على تطبيقك.

WHMCS لا تحتاج إلى رمز: WHMCS الخطاف من مواقع الرميت يوقع العملاء على البوابة ويعيدهم إلى الصفحة التي كانوا عليها
💡
سر التوقيع ملئ لك في "ستينغز"، قسم الدعم، إشارة لا تُسمّى من تطبيقك، كل مثال يحتوي على سر هذا الموقع الخاص، لذا فإن الشفرة تعمل كما تمّت: opsiq_whsec_YOUR_SITE_SECRET في مكانه، كل مثال يبحث عنه OPSIQ_SITE_SECRET (أو وضع إطارك الخاص، مسمّى في ملاحظاته) على الخادم أولاً ويستخدم أنه عندما يتم تحديده، حتى يمكنك نقل السر من الملف متى أردت، مثلاً لتناوبه بدون شفرة تحرير JavaScriptو لا تُلزمه أبداً إلى مستودع عام لأن أي شخص يحمل السر يمكن أن يوقع عليه كأحد زبائنك أو موظفيك WHMCS و Botble لا حاجة إلى أي من هذا: WHMCS الخطاف يصل مع السر المملوء في، Botble اللوحة تملأه إلى الجسر

الطرق الكاملة، منصة حسب المنهاج

OpsIQ server (self-hosted)

1

For a self-hosted OpsIQ: the route runs on your own OpsIQ server, so there is no secret to copy. OpsIQ reads this workspace's signing secret itself.

2

Save it as a page on that server, e.g. support-portal.php, and point your "Support" link at it.

3

Replace the body of $currentUser so it returns your signed-in customer (id, email, name), or null for a guest, and /login with your login page.

OpsIQ server (self-hosted)
/* OpsIQ server (self-hosted) — save as e.g. support-portal.php on your OpsIQ
 * server and link your "Support" button to it. OpsIQ reads the workspace's
 * signing secret itself, so there is nothing secret to copy. */

if (!function_exists('opsiq_portal_signed_url_for_site')) {
    require_once '/path/to/opsiq/opsiq/opsiq.portal_identity.php';
}

// 1. WHO IS SIGNED IN — replace the body. Return null for a guest.
$currentUser = static function (): ?array {
    $u = $_SESSION['user'] ?? null;
    return is_array($u) && !empty($u['id']) && !empty($u['email']) ? $u : null;
};
$user = $currentUser();
if (!$user) {
    header('Location: /login?return=' . urlencode($_SERVER['REQUEST_URI'] ?? '/'), true, 302);
    exit;
}

// 2. WHERE TO LAND — the portal page they came from, only if it is on the portal.
$portal = 'https://YOUR-OPSIQ/portal/your-workspace';
$back   = preg_replace('/#.*$/', '', (string)($_GET['opsiq_portal_return'] ?? ''));
$target = ($back === $portal || strpos($back, $portal . '/') === 0 || strpos($back, $portal . '?') === 0)
    ? $back : $portal;

// 3. MINT a one-time link (120 s) for this workspace.
$url = opsiq_portal_signed_url_for_site($target, 'YOUR_SITE_KEY', [
    'id'    => $user['id'],        // REQUIRED
    'email' => $user['email'],     // REQUIRED
    'name'  => $user['name'] ?? '',
], 120);
if (!$url) {
    http_response_code(503);       // fail closed: never send a customer to a guessed address
    exit('Support portal is not configured yet.');
}

header('Referrer-Policy: no-referrer');   // the token is in the URL
header('Cache-Control: no-store');
header('Location: ' . $url, true, 302);
exit;

PHP (no dependencies)

1

Save the snippet as a page in your app, e.g. support-portal.php.

2

This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in the environment (hosting panel, .env or SetEnv) on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

3

Replace the body of $currentUser with your app's signed-in customer, and /login with your login page.

PHP (no dependencies)
/* support-portal.php — a redirect route in your own app.
 * Mint at CLICK time: a token baked into an href leaks through page source,
 * browser history and the Referer header. */

// 1. WHO IS SIGNED IN — replace the body with your app's own session. Return null for a guest.
$currentUser = static function (): ?array {
    $u = $_SESSION['user'] ?? null;            // e.g. ['id' => 7, 'email' => '…', 'name' => '…']
    return is_array($u) && !empty($u['id']) && !empty($u['email']) ? $u : null;
};
$user = $currentUser();
if (!$user) {                                  // a guest: sign in first, then come back here
    header('Location: /login?return=' . urlencode($_SERVER['REQUEST_URI'] ?? '/'), true, 302);
    exit;
}

// 2. THE SECRET — server-side only. Fail closed without it.
$secret = (string) (getenv('OPSIQ_SITE_SECRET') ?: 'opsiq_whsec_YOUR_SITE_SECRET');   // this site's secret; the environment wins when set
if ($secret === '') { http_response_code(503); exit('Support portal is not configured.'); }

// 3. WHERE TO LAND — the portal page they came from, only if it is on the portal.
$portal = 'https://YOUR-OPSIQ/portal/your-workspace';
$back   = preg_replace('/#.*$/', '', (string)($_GET['opsiq_portal_return'] ?? ''));
$target = ($back === $portal || strpos($back, $portal . '/') === 0 || strpos($back, $portal . '?') === 0)
    ? $back : $portal;

// 4. MINT the token (standard HS256 JWT).
$b64 = static function ($v) {
    return rtrim(strtr(base64_encode(json_encode($v, JSON_UNESCAPED_SLASHES)), '+/', '-_'), '=');
};
$now = time();
$signing = $b64(['alg' => 'HS256', 'typ' => 'JWT']) . '.' . $b64([
    'site_key'      => 'YOUR_SITE_KEY',
    'iat'           => $now,
    'exp'           => $now + 120,                // URL-borne tokens live ~2 minutes
    'authenticated' => true,
    'jti'           => bin2hex(random_bytes(16)),
    'single_use'    => true,                      // one-time link; replay is refused
    'platform'      => 'php',
    'customer'      => [
        'id'          => $user['id'],             // REQUIRED
        'email'       => $user['email'],          // REQUIRED
        'name'        => $user['name'] ?? '',
        'external_id' => (string) $user['id'],
    ],
]);
$token = $signing . '.' . rtrim(strtr(base64_encode(hash_hmac('sha256', $signing, $secret, true)), '+/', '-_'), '=');

// 5. GO. The default is https://YOUR-OPSIQ/portal/your-workspace?site_key=YOUR_SITE_KEY&identity_token=…
$url = $target . (strpos($target, '?') === false ? '?' : '&')
     . 'site_key=' . rawurlencode('YOUR_SITE_KEY') . '&identity_token=' . rawurlencode($token);
header('Referrer-Policy: no-referrer');       // the token is in the URL
header('Cache-Control: no-store');
header('Location: ' . $url, true, 302);
exit;

Laravel

1

Run: composer require firebase/php-jwt

2

This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET=… in .env with 'opsiq' => ['site_secret' => env('OPSIQ_SITE_SECRET')] in config/services.php on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

3

Paste the route into routes/web.php. The auth middleware sends guests to your login and back.

Laravel
/* routes/web.php — composer require firebase/php-jwt
 * Link customers to  route('support.portal') */

Route::get('/support-portal', function (\Illuminate\Http\Request $request) {
    $user   = $request->user();                                   // guaranteed by ->middleware('auth')
    $secret = (string) (config('services.opsiq.site_secret') ?: 'opsiq_whsec_YOUR_SITE_SECRET');   // this site's secret; config wins when set
    abort_if($secret === '', 503, 'Support portal is not configured.');   // fail closed

    // Where to land: the portal page they came from, only if it is on the portal.
    $portal = 'https://YOUR-OPSIQ/portal/your-workspace';
    $back   = preg_replace('/#.*$/', '', (string) $request->query('opsiq_portal_return', ''));
    $target = ($back === $portal || str_starts_with($back, $portal . '/') || str_starts_with($back, $portal . '?'))
        ? $back : $portal;

    $now   = time();
    $token = \Firebase\JWT\JWT::encode([
        'site_key'      => 'YOUR_SITE_KEY',
        'iat'           => $now,
        'exp'           => $now + 120,
        'authenticated' => true,
        'jti'           => bin2hex(random_bytes(16)),
        'single_use'    => true,
        'platform'      => 'laravel',
        'customer'      => [
            'id'          => $user->id,          // REQUIRED
            'email'       => $user->email,       // REQUIRED
            'name'        => $user->name,
            'external_id' => (string) $user->id,
        ],
    ], $secret, 'HS256');

    // Default target: https://YOUR-OPSIQ/portal/your-workspace?site_key=YOUR_SITE_KEY&identity_token=…
    $url = $target . (str_contains($target, '?') ? '&' : '?')
         . 'site_key=' . rawurlencode('YOUR_SITE_KEY') . '&identity_token=' . rawurlencode($token);

    return redirect()->away($url)
        ->header('Referrer-Policy', 'no-referrer')
        ->header('Cache-Control', 'no-store');
})->middleware('auth')->name('support.portal');

WordPress

1

This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, add define('OPSIQ_SITE_SECRET', '…'); to wp-config.php, above "That's all, stop editing", instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

Paste the snippet into your theme's functions.php, or a small plugin (Code Snippets works).

3

Create an empty page with the slug support-portal and link your "Support" menu item to it. Guests are sent to wp-login and back.

WordPress
/* functions.php, or a small plugin. Create an empty page with the slug
 * "support-portal" and link customers to it. */

add_action('template_redirect', function () {
    if (!is_page('support-portal')) return;
    if (!is_user_logged_in()) { auth_redirect(); }                 // login, then back here

    $secret = defined('OPSIQ_SITE_SECRET') ? OPSIQ_SITE_SECRET : 'opsiq_whsec_YOUR_SITE_SECRET';   // this site's secret; wp-config.php wins when set
    if ($secret === '') wp_die('Support portal is not configured.', '', ['response' => 503]);   // fail closed

    // Where to land: the portal page they came from, only if it is on the portal.
    $portal = 'https://YOUR-OPSIQ/portal/your-workspace';
    $back   = preg_replace('/#.*$/', '', isset($_GET['opsiq_portal_return']) ? wp_unslash((string) $_GET['opsiq_portal_return']) : '');
    $target = ($back === $portal || strpos($back, $portal . '/') === 0 || strpos($back, $portal . '?') === 0)
        ? $back : $portal;

    $user = wp_get_current_user();
    $b64  = static function ($v) {
        return rtrim(strtr(base64_encode(wp_json_encode($v)), '+/', '-_'), '=');
    };
    $now     = time();
    $signing = $b64(['alg' => 'HS256', 'typ' => 'JWT']) . '.' . $b64([
        'site_key'      => 'YOUR_SITE_KEY',
        'iat'           => $now,
        'exp'           => $now + 120,
        'authenticated' => true,
        'jti'           => bin2hex(random_bytes(16)),
        'single_use'    => true,
        'platform'      => 'wordpress',
        'customer'      => [
            'id'          => $user->ID,              // REQUIRED
            'email'       => $user->user_email,      // REQUIRED
            'name'        => $user->display_name,
            'external_id' => (string) $user->ID,
        ],
    ]);
    $token = $signing . '.' . rtrim(strtr(base64_encode(hash_hmac('sha256', $signing, $secret, true)), '+/', '-_'), '=');

    // Default target: https://YOUR-OPSIQ/portal/your-workspace?site_key=YOUR_SITE_KEY&identity_token=…
    $url = $target . (strpos($target, '?') === false ? '?' : '&')
         . 'site_key=' . rawurlencode('YOUR_SITE_KEY') . '&identity_token=' . rawurlencode($token);
    nocache_headers();
    header('Cache-Control: no-store');
    header('Referrer-Policy: no-referrer');
    wp_redirect($url, 302);                                       // wp_redirect, not wp_safe_redirect: the portal is another host
    exit;
});

WHMCS

Already using the OpsIQ WHMCS hook from Sites (includes/hooks/opsiq_tracker.php)? It already signs your customers into the portal and brings them back to the page they were on, so you do not need this snippet. Just set Portal Studio → Sign-in page → Your login page URL to your WHMCS client area login. Use the code below only if you are not installing that hook.
1

Save part 1 as opsiq_support.php in your WHMCS root (next to clientarea.php).

2

This site's signing secret is already filled in, so the code works as pasted. To keep it out of the hook, set $opsiq_site_secret = '…'; in configuration.php instead: that value is used first. Keep this file on the server and never commit it to a public repository.

3

Save part 2 as includes/hooks/opsiq_support_link.php to add Support to the client-area menu.

WHMCS
/* Two files you own — no OpsIQ module, nothing to keep updated.
 *
 * 1) Save this part as  opsiq_support.php  in your WHMCS root. */

require __DIR__ . '/init.php';

$ca = new WHMCS\ClientArea();
$ca->initPage();
$ca->requireLogin();                                         // login, then back here

$secret = '';
if (is_file(__DIR__ . '/configuration.php')) {
    include __DIR__ . '/configuration.php';                  // defines $opsiq_site_secret
    $secret = isset($opsiq_site_secret) ? (string) $opsiq_site_secret : 'opsiq_whsec_YOUR_SITE_SECRET';   // this site's secret; configuration.php wins when set
}
if ($secret === '') { http_response_code(503); exit('Support portal is not configured.'); }   // fail closed

// Where to land: the portal page they came from, only if it is on the portal.
$portal = 'https://YOUR-OPSIQ/portal/your-workspace';
$back   = preg_replace('/#.*$/', '', (string)($_GET['opsiq_portal_return'] ?? ''));
$target = ($back === $portal || strpos($back, $portal . '/') === 0 || strpos($back, $portal . '?') === 0)
    ? $back : $portal;

$uid    = (int) $ca->getUserID();
$client = localAPI('GetClientsDetails', ['clientid' => $uid]);

$b64 = static function ($v) {
    return rtrim(strtr(base64_encode(json_encode($v, JSON_UNESCAPED_SLASHES)), '+/', '-_'), '=');
};
$now     = time();
$signing = $b64(['alg' => 'HS256', 'typ' => 'JWT']) . '.' . $b64([
    'site_key'      => 'YOUR_SITE_KEY',
    'iat'           => $now,
    'exp'           => $now + 120,
    'authenticated' => true,
    'jti'           => bin2hex(random_bytes(16)),
    'single_use'    => true,
    'platform'      => 'whmcs',
    'customer'      => [
        'id'          => $uid,                       // REQUIRED
        'email'       => $client['email'] ?? '',     // REQUIRED
        'name'        => trim(($client['firstname'] ?? '') . ' ' . ($client['lastname'] ?? '')),
        'external_id' => (string) $uid,
    ],
]);
$token = $signing . '.' . rtrim(strtr(base64_encode(hash_hmac('sha256', $signing, $secret, true)), '+/', '-_'), '=');

// Default target: https://YOUR-OPSIQ/portal/your-workspace?site_key=YOUR_SITE_KEY&identity_token=…
$url = $target . (strpos($target, '?') === false ? '?' : '&')
     . 'site_key=' . rawurlencode('YOUR_SITE_KEY') . '&identity_token=' . rawurlencode($token);
header('Referrer-Policy: no-referrer');
header('Cache-Control: no-store');
header('Location: ' . $url, true, 302);
exit;

/* 2) And this part as  includes/hooks/opsiq_support_link.php  to put a
 *    Support entry in the client-area navbar:
 *
 *    add_hook('ClientAreaPrimaryNavbar', 1, function ($navbar) {
 *        $navbar->addChild('opsiqSupport', [
 *            'label' => 'Support',
 *            'uri'   => 'opsiq_support.php',
 *            'order' => 60,
 *        ]);
 *    });
 */

Node.js / Express

1

Run: npm i jsonwebtoken

2

This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in the environment (.env with dotenv, or your host's settings) on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

3

Paste the route after your session / passport setup. Change /login if your login page lives elsewhere.

Node.js / Express
// npm i jsonwebtoken
const jwt = require("jsonwebtoken");
const crypto = require("crypto");

const PORTAL = "https://YOUR-OPSIQ/portal/your-workspace";
const onPortal = (u) => u === PORTAL || u.startsWith(PORTAL + "/") || u.startsWith(PORTAL + "?");

app.get("/support-portal", (req, res) => {
  const user = req.user;                                  // set by your session / passport
  if (!user) return res.redirect("/login?next=" + encodeURIComponent(req.originalUrl));

  const secret = process.env.OPSIQ_SITE_SECRET || "opsiq_whsec_YOUR_SITE_SECRET";   // this site's secret; the environment wins when set
  if (!secret) return res.status(503).send("Support portal is not configured.");   // fail closed

  // Where to land: the portal page they came from, only if it is on the portal.
  const back = String(req.query.opsiq_portal_return || "").replace(/#.*$/, "");
  const target = onPortal(back) ? back : PORTAL;

  const token = jwt.sign({
    site_key: "YOUR_SITE_KEY",
    authenticated: true,
    jti: crypto.randomBytes(16).toString("hex"),
    single_use: true,                                     // one-time link
    platform: "node",
    customer: {
      id: user.id,                                        // REQUIRED
      email: user.email,                                  // REQUIRED
      name: user.name,
      external_id: String(user.id),
    },
  }, secret, { algorithm: "HS256", expiresIn: 120 });     // sets iat + exp

  // Default target: https://YOUR-OPSIQ/portal/your-workspace?site_key=YOUR_SITE_KEY&identity_token=…
  const url = target + (target.includes("?") ? "&" : "?")
    + "site_key=" + encodeURIComponent("YOUR_SITE_KEY") + "&identity_token=" + encodeURIComponent(token);
  res.set("Referrer-Policy", "no-referrer").set("Cache-Control", "no-store").redirect(302, url);
});

Node.js (no dependencies)

1

No packages needed. This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in the environment on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

Replace currentUser() with your app's signed-in customer, then call supportPortal(req, res) for GET /support-portal in your server.

Node.js (no dependencies)
// No packages needed — Node's own crypto is enough.
const crypto = require("crypto");

const PORTAL = "https://YOUR-OPSIQ/portal/your-workspace";
const b64 = (obj) => Buffer.from(JSON.stringify(obj)).toString("base64url");

// 1. WHO IS SIGNED IN — replace with your app's session lookup. Return null for a guest.
function currentUser(req) {
  return req.user || null;                                // { id, email, name }
}

// GET /support-portal
function supportPortal(req, res) {
  const here = new URL(req.url, "http://local");
  const user = currentUser(req);
  if (!user) {                                            // a guest: sign in first, then come back
    res.writeHead(302, { Location: "/login?next=" + encodeURIComponent(req.url) });
    return res.end();
  }
  const secret = process.env.OPSIQ_SITE_SECRET || "opsiq_whsec_YOUR_SITE_SECRET";   // this site's secret; the environment wins when set
  if (!secret) { res.writeHead(503); return res.end("Support portal is not configured."); }

  // Where to land: the portal page they came from, only if it is on the portal.
  const back = (here.searchParams.get("opsiq_portal_return") || "").replace(/#.*$/, "");
  const target = (back === PORTAL || back.startsWith(PORTAL + "/") || back.startsWith(PORTAL + "?")) ? back : PORTAL;

  const now = Math.floor(Date.now() / 1000);
  const signing = b64({ alg: "HS256", typ: "JWT" }) + "." + b64({
    site_key: "YOUR_SITE_KEY",
    iat: now,
    exp: now + 120,
    authenticated: true,
    jti: crypto.randomBytes(16).toString("hex"),
    single_use: true,
    platform: "node",
    customer: { id: user.id, email: user.email, name: user.name, external_id: String(user.id) },
  });
  const token = signing + "." + crypto.createHmac("sha256", secret).update(signing).digest("base64url");

  // Default target: https://YOUR-OPSIQ/portal/your-workspace?site_key=YOUR_SITE_KEY&identity_token=…
  const url = target + (target.includes("?") ? "&" : "?")
    + "site_key=" + encodeURIComponent("YOUR_SITE_KEY") + "&identity_token=" + encodeURIComponent(token);
  res.writeHead(302, { Location: url, "Referrer-Policy": "no-referrer", "Cache-Control": "no-store" });
  res.end();
}

Python (Flask / FastAPI)

1

Run: pip install pyjwt (the Flask example also uses flask-login).

2

This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in the environment on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

3

Paste into the module that creates your app. @login_required sends guests to your login view and back.

Python (Flask / FastAPI)
# pip install pyjwt flask-login
import os, secrets, time, urllib.parse
import jwt
from flask import request, redirect, abort
from flask_login import login_required, current_user

PORTAL = "https://YOUR-OPSIQ/portal/your-workspace"

def portal_link(user, back=""):
    secret = os.environ.get("OPSIQ_SITE_SECRET") or "opsiq_whsec_YOUR_SITE_SECRET"   # this site's secret; the environment wins when set
    if not secret:
        abort(503, "Support portal is not configured.")     # fail closed
    back = back.split("#", 1)[0]
    target = back if (back == PORTAL or back.startswith(PORTAL + "/") or back.startswith(PORTAL + "?")) else PORTAL
    now = int(time.time())
    token = jwt.encode({
        "site_key": "YOUR_SITE_KEY",
        "iat": now,
        "exp": now + 120,                                   # URL-borne: ~2 minutes
        "authenticated": True,
        "jti": secrets.token_hex(16),
        "single_use": True,                                 # one-time link
        "platform": "python",
        "customer": {
            "id": user.id,                                  # REQUIRED
            "email": user.email,                            # REQUIRED
            "name": getattr(user, "name", ""),
            "external_id": str(user.id),
        },
    }, secret, algorithm="HS256")
    # Default target: https://YOUR-OPSIQ/portal/your-workspace?site_key=YOUR_SITE_KEY&identity_token=…
    return (target + ("&" if "?" in target else "?")
            + "site_key=" + urllib.parse.quote("YOUR_SITE_KEY", safe="")
            + "&identity_token=" + urllib.parse.quote(token, safe=""))

@app.route("/support-portal")
@login_required
def support_portal():
    resp = redirect(portal_link(current_user, request.args.get("opsiq_portal_return", "")), code=302)
    resp.headers["Referrer-Policy"] = "no-referrer"
    resp.headers["Cache-Control"] = "no-store"
    return resp

Django

1

Run: pip install pyjwt

2

This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in settings.py (for example os.environ["OPSIQ_SITE_SECRET"]) on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

3

Paste the view into views.py and add path("support-portal/", views.support_portal) to urls.py. @login_required sends guests to LOGIN_URL and back.

Django
# pip install pyjwt   —   urls.py: path("support-portal/", views.support_portal)
import secrets, time, urllib.parse
import jwt
from django.conf import settings
from django.contrib.auth.decorators import login_required
from django.http import HttpResponse, HttpResponseRedirect

PORTAL = "https://YOUR-OPSIQ/portal/your-workspace"

@login_required
def support_portal(request):
    secret = getattr(settings, "OPSIQ_SITE_SECRET", "") or "opsiq_whsec_YOUR_SITE_SECRET"   # this site's secret; settings win when set
    if not secret:                                       # fail closed
        return HttpResponse("Support portal is not configured.", status=503)

    # Where to land: the portal page they came from, only if it is on the portal.
    back = request.GET.get("opsiq_portal_return", "").split("#", 1)[0]
    target = back if (back == PORTAL or back.startswith(PORTAL + "/") or back.startswith(PORTAL + "?")) else PORTAL

    now = int(time.time())
    token = jwt.encode({
        "site_key": "YOUR_SITE_KEY",
        "iat": now,
        "exp": now + 120,
        "authenticated": True,
        "jti": secrets.token_hex(16),
        "single_use": True,
        "platform": "django",
        "customer": {
            "id": request.user.pk,                        # REQUIRED
            "email": request.user.email,                  # REQUIRED
            "name": request.user.get_full_name(),
            "external_id": str(request.user.pk),
        },
    }, secret, algorithm="HS256")

    # Default target: https://YOUR-OPSIQ/portal/your-workspace?site_key=YOUR_SITE_KEY&identity_token=…
    url = (target + ("&" if "?" in target else "?")
           + "site_key=" + urllib.parse.quote("YOUR_SITE_KEY", safe="")
           + "&identity_token=" + urllib.parse.quote(token, safe=""))
    resp = HttpResponseRedirect(url)
    resp["Referrer-Policy"] = "no-referrer"
    resp["Cache-Control"] = "no-store"
    return resp

.NET / C#

1

Run: dotnet add package System.IdentityModel.Tokens.Jwt

2

This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OpsIQ:SiteSecret (user-secrets, the OpsIQ__SiteSecret environment variable or Key Vault) on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

3

Paste into Program.cs after app.UseAuthentication(). RequireAuthorization() sends guests to your login and back.

.NET / C#
// dotnet add package System.IdentityModel.Tokens.Jwt   —   Program.cs
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using System.Text;
using Microsoft.IdentityModel.Tokens;

const string Portal = "https://YOUR-OPSIQ/portal/your-workspace";

app.MapGet("/support-portal", (HttpContext ctx, IConfiguration cfg) =>
{
    var secret = cfg["OpsIQ:SiteSecret"];
    if (string.IsNullOrEmpty(secret)) secret = "opsiq_whsec_YOUR_SITE_SECRET";   // this site's secret; configuration wins when set
    if (string.IsNullOrEmpty(secret))                     // fail closed
        return Results.StatusCode(503);

    var id    = ctx.User.FindFirstValue(ClaimTypes.NameIdentifier) ?? "";   // REQUIRED
    var email = ctx.User.FindFirstValue(ClaimTypes.Email) ?? "";            // REQUIRED
    var name  = ctx.User.Identity?.Name ?? "";

    // Where to land: the portal page they came from, only if it is on the portal.
    var back = (ctx.Request.Query["opsiq_portal_return"].ToString()).Split('#')[0];
    var target = (back == Portal || back.StartsWith(Portal + "/") || back.StartsWith(Portal + "?")) ? back : Portal;

    var key   = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secret));
    var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
    var now   = DateTimeOffset.UtcNow;
    var payload = new JwtPayload
    {
        { "site_key",      "YOUR_SITE_KEY" },
        { "iat",           now.ToUnixTimeSeconds() },
        { "exp",           now.AddSeconds(120).ToUnixTimeSeconds() },
        { "authenticated", true },
        { "jti",           Guid.NewGuid().ToString("N") },
        { "single_use",    true },
        { "platform",      "dotnet" },
        { "customer", new Dictionary<string, object>
            { { "id", id }, { "email", email }, { "name", name }, { "external_id", id } } },
    };
    var token = new JwtSecurityTokenHandler().WriteToken(new JwtSecurityToken(new JwtHeader(creds), payload));

    // Default target: https://YOUR-OPSIQ/portal/your-workspace?site_key=YOUR_SITE_KEY&identity_token=…
    var url = target + (target.Contains('?') ? "&" : "?")
        + "site_key=" + Uri.EscapeDataString("YOUR_SITE_KEY") + "&identity_token=" + Uri.EscapeDataString(token);
    ctx.Response.Headers["Referrer-Policy"] = "no-referrer";
    ctx.Response.Headers["Cache-Control"] = "no-store";
    return Results.Redirect(url);
}).RequireAuthorization();

Ruby on Rails

1

Add gem "jwt" to the Gemfile and run bundle install.

2

This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in the environment (or Rails credentials) on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

3

Save as app/controllers/support_controller.rb and add get "/support-portal", to: "support#portal" to routes.rb. Devise's authenticate_user! sends guests to login and back.

Ruby on Rails
# Gemfile: gem "jwt"   —   routes.rb: get "/support-portal", to: "support#portal"
require "jwt"
require "securerandom"
require "cgi"

class SupportController < ApplicationController
  before_action :authenticate_user!                      # login, then back here

  PORTAL = "https://YOUR-OPSIQ/portal/your-workspace"

  def portal
    secret = ENV["OPSIQ_SITE_SECRET"].presence || "opsiq_whsec_YOUR_SITE_SECRET"   # this site's secret; the environment wins when set
    return head :service_unavailable if secret.blank?    # fail closed

    # Where to land: the portal page they came from, only if it is on the portal.
    back = params[:opsiq_portal_return].to_s.split("#").first.to_s
    target = (back == PORTAL || back.start_with?(PORTAL + "/", PORTAL + "?")) ? back : PORTAL

    now = Time.now.to_i
    token = JWT.encode({
      site_key:      "YOUR_SITE_KEY",
      iat:           now,
      exp:           now + 120,
      authenticated: true,
      jti:           SecureRandom.hex(16),
      single_use:    true,
      platform:      "rails",
      customer: {
        id:          current_user.id,                    # REQUIRED
        email:       current_user.email,                 # REQUIRED
        name:        current_user.try(:name).to_s,
        external_id: current_user.id.to_s
      }
    }, secret, "HS256")

    # Default target: https://YOUR-OPSIQ/portal/your-workspace?site_key=YOUR_SITE_KEY&identity_token=…
    url = target + (target.include?("?") ? "&" : "?") +
          "site_key=#{CGI.escape("YOUR_SITE_KEY")}&identity_token=#{CGI.escape(token)}"
    response.headers["Referrer-Policy"] = "no-referrer"
    response.headers["Cache-Control"] = "no-store"
    redirect_to url, allow_other_host: true
  end
end

Java (Spring Boot)

1

Add io.jsonwebtoken:jjwt-api, jjwt-impl and jjwt-jackson (0.12+).

2

This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set opsiq.site.secret in application.properties (for example from OPSIQ_SITE_SECRET) on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

3

Replace currentUser() with your user lookup. With Spring Security the route must be authenticated so guests go to login and back.

Java (Spring Boot)
// io.jsonwebtoken:jjwt-api / jjwt-impl / jjwt-jackson (0.12+)
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.security.Keys;
import jakarta.servlet.http.HttpServletResponse;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.security.Principal;
import java.time.Instant;
import java.util.*;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.server.ResponseStatusException;
import org.springframework.web.servlet.view.RedirectView;

@Controller
public class SupportPortalController {
    private static final String PORTAL = "https://YOUR-OPSIQ/portal/your-workspace";

    @Value("${opsiq.site.secret:opsiq_whsec_YOUR_SITE_SECRET}")   // this site's secret; opsiq.site.secret wins when set
    private String secret;

    /** WHO IS SIGNED IN — replace with your own lookup: id, email, name. */
    private Map<String, Object> currentUser(Principal principal) {
        return Map.of("id", principal.getName(), "email", principal.getName(), "name", principal.getName());
    }

    @GetMapping("/support-portal")
    public RedirectView supportPortal(Principal principal, HttpServletResponse response,
                                      @RequestParam(name = "opsiq_portal_return", defaultValue = "") String back) {
        if (principal == null) return new RedirectView("/login");               // login, then back here
        if (secret.isEmpty()) throw new ResponseStatusException(HttpStatus.SERVICE_UNAVAILABLE);   // fail closed

        // Where to land: the portal page they came from, only if it is on the portal.
        back = back.split("#", 2)[0];
        String target = (back.equals(PORTAL) || back.startsWith(PORTAL + "/") || back.startsWith(PORTAL + "?")) ? back : PORTAL;

        Map<String, Object> user = currentUser(principal);
        Map<String, Object> customer = Map.of(
            "id",          user.get("id"),                 // REQUIRED
            "email",       user.get("email"),              // REQUIRED
            "name",        user.get("name"),
            "external_id", String.valueOf(user.get("id")));

        Instant now = Instant.now();
        String token = Jwts.builder()
            .claim("site_key", "YOUR_SITE_KEY")
            .claim("authenticated", true)
            .claim("single_use", true)                     // one-time link
            .claim("platform", "java")
            .claim("customer", customer)
            .id(UUID.randomUUID().toString())              // jti
            .issuedAt(Date.from(now))
            .expiration(Date.from(now.plusSeconds(120)))
            .signWith(Keys.hmacShaKeyFor(secret.getBytes(StandardCharsets.UTF_8)), Jwts.SIG.HS256)
            .compact();

        // Default target: https://YOUR-OPSIQ/portal/your-workspace?site_key=YOUR_SITE_KEY&identity_token=…
        String url = target + (target.contains("?") ? "&" : "?")
            + "site_key=" + URLEncoder.encode("YOUR_SITE_KEY", StandardCharsets.UTF_8)
            + "&identity_token=" + URLEncoder.encode(token, StandardCharsets.UTF_8);
        response.setHeader("Referrer-Policy", "no-referrer");
        response.setHeader("Cache-Control", "no-store");
        return new RedirectView(url);
    }
}

Go

1

Run: go get github.com/golang-jwt/jwt/v5

2

This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in the environment on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

3

Replace currentUser() with your session lookup and register http.HandleFunc("/support-portal", supportPortal).

Go
// go get github.com/golang-jwt/jwt/v5
package main

import (
    "crypto/rand"
    "encoding/hex"
    "fmt"
    "net/http"
    "net/url"
    "os"
    "strings"
    "time"

    "github.com/golang-jwt/jwt/v5"
)

const portal = "https://YOUR-OPSIQ/portal/your-workspace"

type User struct{ ID, Email, Name string }

// WHO IS SIGNED IN — replace with your session lookup. Return nil for a guest.
func currentUser(r *http.Request) *User { return nil }

func supportPortal(w http.ResponseWriter, r *http.Request) {
    user := currentUser(r)
    if user == nil { // login, then back here
        http.Redirect(w, r, "/login?next="+url.QueryEscape(r.URL.RequestURI()), http.StatusFound)
        return
    }
    secret := os.Getenv("OPSIQ_SITE_SECRET")
    if secret == "" {
        secret = "opsiq_whsec_YOUR_SITE_SECRET" // this site's secret; the environment wins when set
    }
    if secret == "" { // fail closed
        http.Error(w, "Support portal is not configured.", http.StatusServiceUnavailable)
        return
    }

    // Where to land: the portal page they came from, only if it is on the portal.
    back := strings.SplitN(r.URL.Query().Get("opsiq_portal_return"), "#", 2)[0]
    target := portal
    if back == portal || strings.HasPrefix(back, portal+"/") || strings.HasPrefix(back, portal+"?") {
        target = back
    }

    jti := make([]byte, 16)
    rand.Read(jti)
    now := time.Now().Unix()
    token, err := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{
        "site_key":      "YOUR_SITE_KEY",
        "iat":           now,
        "exp":           now + 120,
        "authenticated": true,
        "jti":           hex.EncodeToString(jti),
        "single_use":    true,
        "platform":      "go",
        "customer": map[string]any{
            "id":          user.ID,    // REQUIRED
            "email":       user.Email, // REQUIRED
            "name":        user.Name,
            "external_id": fmt.Sprint(user.ID),
        },
    }).SignedString([]byte(secret))
    if err != nil {
        http.Error(w, "sign failed", http.StatusInternalServerError)
        return
    }

    // Default target: https://YOUR-OPSIQ/portal/your-workspace?site_key=YOUR_SITE_KEY&identity_token=…
    sep := "?"
    if strings.Contains(target, "?") {
        sep = "&"
    }
    w.Header().Set("Referrer-Policy", "no-referrer")
    w.Header().Set("Cache-Control", "no-store")
    http.Redirect(w, r, target+sep+"site_key="+url.QueryEscape("YOUR_SITE_KEY")+"&identity_token="+url.QueryEscape(token), http.StatusFound)
}

عندما يكون هناك شيء خاطئ

البوابة مفتوحة، ولكن موقعة

مفتاح السر أو مكان العمل لا يطابق هذا الحيز العملي، إنّ (توكن) أكبر من 120 ثواني (أفحص ساعة الخادم) أو نفس الرابط تم فتحه مرتين

دائماً ما تهبط على البوابة

عنوان العودة لم يكن داخل عنوان بوابة الخاص بك، لذلك تم تجاهله عن قصد URL موضحة في ستينغز

الضيوف يصابون بخطأ بدلاً من دخولك

استبدل /login في المسار بصفحة الدخول الحقيقية الخاصة بك، وتأكد من أن دخولك يعود إلى العنوان الذي تم إعطاؤه.

إنه يعمل لبعض الزبائن فقط

الزبون، البريد أو العملاء، وهى فارغة بالنسبة لهم، كلاهما مطلوبان.

المطور

دردشة العملاء: التعرف على الزبائن المزودين بالسجلات

اختيارياً، معظم المواقع لا تحتاج إلى هذا: مع قنبلة الدردشة المبسطة وموصل للشبكة، يدقق الثرثرة مع الزبائن أنفسهم، برقم حجز أو أمر بالإضافة إلى دليل على البحث ورمز بريد إلكتروني قبل صدور الأمر. WHMCS قم بذلك بالفعل من خلال خطافه، مواقع البقايا المُتعدّة وموقعكِ ورمز (سي) يطبع نفس الشفرة بمفتاح موقعك

كيف يعمل

1
صفحتك تطبع علامة الدردشة

من أجل زبون موقّع URL &identity_tokenموقّع على خادمكِ، بالنسبة للضيف هو العلامة السهولة لا شيء سري في الصفحة

2
الدردشة تحقق من المُخنث

التوقيع، مفتاح العمل و الإنهاء، ثمّ الزبون معروف في كل طلب دردشة، وموصلك يستطيع الإجابة عن أوامره أو حجزه أو فواتره.

3
الدردشة ترتعش قبل الساعة

يَدْعو الصفحةَ هو على مَع؟opsiq_identity_refresh=1"الزجاجة" شفرتك تجيب على "النجاحات"، صحيحidentity_tokenبينما يوقع الزبون 401 مع {النجاحات}:login_required"صحيح عندما لا يكونون كذلك، لهذا يجب أن يركض المعالج الجديد قبل أن تطبع صفحتك أي شيء"

كيف يختلف عن البوابة

مدى الحياة

ساعة واحدة (مقابل = iat ++) 3600بدلاً من 120 ثواني، لأنه يركب كل طلب دردشة بدلا من إعادة توجيه واحدة.

لا شيء single_use

نفس المركب يستخدم لكل رسالة حتى يحل محله

نفس كل شيء

site_keyصحيح، منصة، وزبون محتاج إلى بريد إلكتروني، نفس السرية، نفس التوقيع.

💡
الهوية تقول أن العميل هو أوامرهم أو حجزهم أو فواتيرهم تصل إلى الدردشة عبر موصل APIأو، عندما لا يكون منصك APIموصل زائد ملف جسره (مبني الموصل يصنع واحداً)
💡
سر التوقيع ملئ لك في مواقع التطهير، موقعك، الرموز، (جيم)، كل مثال يحتوي على سر هذا الموقع الخاص لذا يعمل الرمز كما تم تقليده opsiq_whsec_YOUR_SITE_SECRET في مكانه، كل مثال يبحث عنه OPSIQ_SITE_SECRET (أو وضع إطارك الخاص، مسمّى في ملاحظاته) على الخادم أولاً ويستخدم أنه عندما يتم تحديده، حتى يمكنك نقل السر من الملف متى أردت، مثلاً لتناوبه بدون شفرة تحرير JavaScriptو لا تُلزمه أبداً إلى مستودع عام لأن أي شخص يحمل السر يمكن أن يوقع عليه كأحد زبائنك أو موظفيك WHMCS و Botble لا حاجة إلى أي من هذا: WHMCS الخطاف يصل مع السر المملوء في، Botble اللوحة تملأه إلى الجسر

الرمز الكامل، منصة حسب المنبر

WHMCS

Nothing to add: the WHMCS hook in Option 1 already signs your signed-in clients into the chat, refreshes the token on long visits, and signs staff into Admin Chat. No connector is needed for this.
1

Install the Option 1 hook as includes/hooks/opsiq_tracker.php. Do not also paste the plain chat tag.

2

Optional: add the WHMCS connector under Connectors if you also want the chat to answer about invoices, services and tickets. Identity works without it.

includes/hooks/opsiq_tracker.php
/* WHMCS: no extra code. Option 1 (the All-in-One WHMCS Hook) signs the signed-in
 * client into Client Chat, answers ?opsiq_identity_refresh=1 and signs staff into
 * Admin Chat. No connector is needed for identity. */

Botble (connector bridge)

Nothing to add for bookings: the Botble connector takes bookings as a guest checkout and finds existing bookings by booking number and proof, so guests do not need to sign in. Admins are signed in through the bridge (op=admin_embed).
1

Install the Botble connector under Connectors, copy its bridge file from the connector panel and upload it to public/. The panel fills in OPSIQ_HOST, OPSIQ_SITE_KEY and OPSIQ_SITE_SECRET for you.

2

Botble has no API, so the bridge file is how the chat reads rooms and takes bookings. To also recognise a guest who is already signed in on the hotel site, use the Laravel option with your customer guard.

public/opsiq-botble-bridge.php
/* Botble: no extra code for bookings.
 * The connector books as a guest checkout and finds bookings by booking number + proof.
 * In public/opsiq-botble-bridge.php fill OPSIQ_HOST, OPSIQ_SITE_KEY and OPSIQ_SITE_SECRET.
 * Admins: op=admin_embed */

PHP (no dependencies)

1

Save as opsiq-chat.php. This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in the environment on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

At the very top of every page (or your front controller), before any output: require 'opsiq-chat.php'; opsiq_chat_refresh();

3

Just before </body> on every page: <?= opsiq_chat_tag() ?> — it replaces the plain chat tag. Replace opsiq_chat_user() with your signed-in customer.

opsiq-chat.php
<?php
/* opsiq-chat.php — signed-in customers for OpsIQ Client Chat. */

// WHO IS SIGNED IN — replace the body with your app's session. Return null for a guest.
function opsiq_chat_user(): ?array
{
    $u = $_SESSION['user'] ?? null;               // e.g. ['id' => 7, 'email' => '…', 'name' => '…']
    return is_array($u) && !empty($u['id']) && !empty($u['email']) ? $u : null;
}

function opsiq_chat_token(array $u): string
{
    $secret = (string) (getenv('OPSIQ_SITE_SECRET') ?: 'opsiq_whsec_YOUR_SITE_SECRET');   // this site's secret; the environment wins when set
    if ($secret === '') return '';                           // fail closed: plain chat, no identity
    $b64 = static fn($v) => rtrim(strtr(base64_encode(json_encode($v, JSON_UNESCAPED_SLASHES)), '+/', '-_'), '=');
    $now = time();
    $signing = $b64(['alg' => 'HS256', 'typ' => 'JWT']) . '.' . $b64([
        'site_key'      => 'YOUR_SITE_KEY',
        'iat'           => $now,
        'exp'           => $now + 3600,                      // the widget refreshes before this
        'authenticated' => true,
        'platform'      => 'php',
        'customer'      => [
            'id'          => $u['id'],                       // REQUIRED
            'email'       => $u['email'],                    // REQUIRED
            'name'        => $u['name'] ?? '',
            'external_id' => (string) $u['id'],
        ],
    ]);
    return $signing . '.' . rtrim(strtr(base64_encode(hash_hmac('sha256', $signing, $secret, true)), '+/', '-_'), '=');
}

// Call at the top of every page, before any output.
function opsiq_chat_refresh(): void
{
    if (empty($_GET['opsiq_identity_refresh'])) return;
    header('Content-Type: application/json; charset=utf-8');
    header('Cache-Control: no-store');
    $u = opsiq_chat_user();
    $t = $u ? opsiq_chat_token($u) : '';
    if ($t === '') { http_response_code(401); echo json_encode(['success' => false, 'login_required' => true]); exit; }
    echo json_encode(['success' => true, 'role' => 'customer', 'identity_token' => $t]);
    exit;
}

// Print before </body> on every page, instead of the plain chat tag.
function opsiq_chat_tag(): string
{
    $src = 'https://YOUR-OPSIQ/widget.php?site_key=YOUR_SITE_KEY';
    $u = opsiq_chat_user();
    $t = $u ? opsiq_chat_token($u) : '';
    if ($t !== '') $src .= '&identity_token=' . rawurlencode($t);
    return '<script async src="' . htmlspecialchars($src, ENT_QUOTES) . '" data-opsiq-widget="client-chat"></script>';
}

Laravel

1

Run: composer require firebase/php-jwt. This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET=… in .env with 'opsiq' => ['site_secret' => env('OPSIQ_SITE_SECRET')] in config/services.php on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

Save the class as app/Support/OpsiqChat.php, and add the small OpsiqChatRefresh middleware from the bottom of the code to the web group, so the widget can refresh its token on any page.

3

In your main Blade layout, just before </body>: {!! \App\Support\OpsiqChat::tag() !!}

app/Support/OpsiqChat.php
<?php
// app/Support/OpsiqChat.php — composer require firebase/php-jwt
namespace App\Support;

use Firebase\JWT\JWT;

final class OpsiqChat
{
    public static function token(): string
    {
        $user = auth()->user();
        $secret = (string) (config('services.opsiq.site_secret') ?: 'opsiq_whsec_YOUR_SITE_SECRET');   // this site's secret; config wins when set
        if (!$user || $secret === '') return '';                 // guest, or not configured
        $now = time();
        return JWT::encode([
            'site_key'      => 'YOUR_SITE_KEY',
            'iat'           => $now,
            'exp'           => $now + 3600,
            'authenticated' => true,
            'platform'      => 'laravel',
            'customer'      => [
                'id'          => $user->id,                      // REQUIRED
                'email'       => $user->email,                   // REQUIRED
                'name'        => $user->name,
                'external_id' => (string) $user->id,
            ],
        ], $secret, 'HS256');
    }

    /** For Blade: {!! \App\Support\OpsiqChat::tag() !!} before </body>. */
    public static function tag(): string
    {
        $src = 'https://YOUR-OPSIQ/widget.php?site_key=YOUR_SITE_KEY';
        $t = self::token();
        if ($t !== '') $src .= '&identity_token=' . rawurlencode($t);
        return '<script async src="' . e($src) . '" data-opsiq-widget="client-chat"></script>';
    }
}

/* Refresh: the widget asks ?opsiq_identity_refresh=1 on the page it is on.
 * Laravel 11+ — bootstrap/app.php:
 *
 *   ->withMiddleware(function ($middleware) {
 *       $middleware->web(append: \App\Http\Middleware\OpsiqChatRefresh::class);
 *   })
 *
 * app/Http/Middleware/OpsiqChatRefresh.php:
 *
 *   public function handle($request, \Closure $next) {
 *       if (!$request->query('opsiq_identity_refresh')) return $next($request);
 *       $t = \App\Support\OpsiqChat::token();
 *       return $t === ''
 *           ? response()->json(['success' => false, 'login_required' => true], 401)->header('Cache-Control', 'no-store')
 *           : response()->json(['success' => true, 'role' => 'customer', 'identity_token' => $t])->header('Cache-Control', 'no-store');
 *   }
 */

WordPress / WooCommerce

1

This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, add define('OPSIQ_SITE_SECRET', '…'); to wp-config.php instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

Paste into your theme's functions.php or a small plugin. It prints the chat itself, so remove the plain chat tag if you added one.

3

For WooCommerce orders in the chat, add the WooCommerce connector under Connectors.

functions.php
/* functions.php or a small plugin — OpsIQ Client Chat with signed-in customers. */

if (!defined('OPSIQ_SITE_SECRET')) define('OPSIQ_SITE_SECRET', 'opsiq_whsec_YOUR_SITE_SECRET');   // this site's secret; wp-config.php wins when set

function opsiq_chat_token(): string {
    if (!is_user_logged_in() || !defined('OPSIQ_SITE_SECRET') || OPSIQ_SITE_SECRET === '') return '';
    $u   = wp_get_current_user();
    $b64 = static fn($v) => rtrim(strtr(base64_encode(wp_json_encode($v)), '+/', '-_'), '=');
    $now = time();
    $signing = $b64(['alg' => 'HS256', 'typ' => 'JWT']) . '.' . $b64([
        'site_key'      => 'YOUR_SITE_KEY',
        'iat'           => $now,
        'exp'           => $now + 3600,
        'authenticated' => true,
        'platform'      => 'wordpress',
        'customer'      => [
            'id'          => $u->ID,                     // REQUIRED
            'email'       => $u->user_email,             // REQUIRED
            'name'        => $u->display_name,
            'external_id' => (string) $u->ID,
        ],
    ]);
    return $signing . '.' . rtrim(strtr(base64_encode(hash_hmac('sha256', $signing, OPSIQ_SITE_SECRET, true)), '+/', '-_'), '=');
}

// Refresh: the widget asks ?opsiq_identity_refresh=1 on the page it is on.
add_action('init', function () {
    if (empty($_GET['opsiq_identity_refresh'])) return;
    nocache_headers();
    $t = opsiq_chat_token();
    if ($t === '') wp_send_json(['success' => false, 'login_required' => true], 401);
    wp_send_json(['success' => true, 'role' => 'customer', 'identity_token' => $t]);
});

// The chat tag, on every front-end page.
add_action('wp_footer', function () {
    $src = 'https://YOUR-OPSIQ/widget.php?site_key=YOUR_SITE_KEY';
    $t = opsiq_chat_token();
    if ($t !== '') $src .= '&identity_token=' . rawurlencode($t);
    echo '<script async src="' . esc_url($src) . '" data-opsiq-widget="client-chat"></script>';
});

Node.js / Express

1

Run: npm i jsonwebtoken. This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in the environment on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

app.use(opsiqChat) after your session / passport middleware. It answers the refresh and sets res.locals.opsiqChatTag.

3

Print res.locals.opsiqChatTag (unescaped) just before </body> in your layout, instead of the plain chat tag.

opsiq-chat.js
// opsiq-chat.js — npm i jsonwebtoken
const jwt = require("jsonwebtoken");

function opsiqChatToken(user) {
  const secret = process.env.OPSIQ_SITE_SECRET || "opsiq_whsec_YOUR_SITE_SECRET";   // this site's secret; the environment wins when set
  if (!user || !secret) return "";
  return jwt.sign({
    site_key: "YOUR_SITE_KEY",
    authenticated: true,
    platform: "node",
    customer: { id: user.id, email: user.email, name: user.name, external_id: String(user.id) },  // id + email REQUIRED
  }, secret, { algorithm: "HS256", expiresIn: 3600 });     // sets iat + exp
}

// app.use(opsiqChat) — after your session / passport middleware.
function opsiqChat(req, res, next) {
  const token = opsiqChatToken(req.user);
  if (req.query.opsiq_identity_refresh) {                  // the widget refreshing on this page
    res.set("Cache-Control", "no-store");
    return token
      ? res.json({ success: true, role: "customer", identity_token: token })
      : res.status(401).json({ success: false, login_required: true });
  }
  const src = "https://YOUR-OPSIQ/widget.php?site_key=YOUR_SITE_KEY" + (token ? "&identity_token=" + encodeURIComponent(token) : "");
  res.locals.opsiqChatTag = '<script async src="' + src.replace(/"/g, """) + '" data-opsiq-widget="client-chat"></script>';
  next();
}

module.exports = { opsiqChat };

Python (Flask)

1

Run: pip install pyjwt flask-login. This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in the environment on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

Call init_opsiq_chat(app) where you create the app. It answers the refresh and gives templates opsiq_chat_tag.

3

In your base template, just before </body>: {{ opsiq_chat_tag }}

opsiq_chat.py
# opsiq_chat.py — pip install pyjwt flask-login
import os, time, urllib.parse
import jwt
from flask import request, jsonify
from flask_login import current_user
from markupsafe import Markup, escape

def opsiq_chat_token():
    secret = os.environ.get("OPSIQ_SITE_SECRET") or "opsiq_whsec_YOUR_SITE_SECRET"   # this site's secret; the environment wins when set
    if not secret or not current_user.is_authenticated:
        return ""
    now = int(time.time())
    return jwt.encode({
        "site_key": "YOUR_SITE_KEY", "iat": now, "exp": now + 3600,
        "authenticated": True, "platform": "python",
        "customer": {"id": current_user.id, "email": current_user.email,       # REQUIRED
                     "name": getattr(current_user, "name", ""), "external_id": str(current_user.id)},
    }, secret, algorithm="HS256")

def init_opsiq_chat(app):
    @app.before_request
    def _opsiq_refresh():
        if request.args.get("opsiq_identity_refresh"):
            t = opsiq_chat_token()
            resp = jsonify({"success": True, "role": "customer", "identity_token": t}) if t \
                else (jsonify({"success": False, "login_required": True}), 401)
            if isinstance(resp, tuple):
                resp[0].headers["Cache-Control"] = "no-store"
            else:
                resp.headers["Cache-Control"] = "no-store"
            return resp

    @app.context_processor
    def _opsiq_tag():
        t = opsiq_chat_token()
        src = "https://YOUR-OPSIQ/widget.php?site_key=YOUR_SITE_KEY" + ("&identity_token=" + urllib.parse.quote(t, safe="") if t else "")
        return {"opsiq_chat_tag": Markup('<script async src="%s" data-opsiq-widget="client-chat"></script>' % escape(src))}

Django

1

Run: pip install pyjwt. This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in settings.py (for example os.environ["OPSIQ_SITE_SECRET"]) on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

Add "yourapp.opsiq_chat.OpsiqChatMiddleware" to MIDDLEWARE (after AuthenticationMiddleware) and "yourapp.opsiq_chat.opsiq_chat" to TEMPLATES context_processors.

3

In your base template, just before </body>: {{ opsiq_chat_tag }}

opsiq_chat.py
# yourapp/opsiq_chat.py — pip install pyjwt
import time, urllib.parse
import jwt
from django.conf import settings
from django.http import JsonResponse
from django.utils.html import format_html

def opsiq_chat_token(user):
    secret = getattr(settings, "OPSIQ_SITE_SECRET", "") or "opsiq_whsec_YOUR_SITE_SECRET"   # this site's secret; settings win when set
    if not secret or not user.is_authenticated:
        return ""
    now = int(time.time())
    return jwt.encode({
        "site_key": "YOUR_SITE_KEY", "iat": now, "exp": now + 3600,
        "authenticated": True, "platform": "django",
        "customer": {"id": user.pk, "email": user.email,             # REQUIRED
                     "name": user.get_full_name(), "external_id": str(user.pk)},
    }, secret, algorithm="HS256")

class OpsiqChatMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response
    def __call__(self, request):
        if request.GET.get("opsiq_identity_refresh"):
            t = opsiq_chat_token(request.user)
            resp = (JsonResponse({"success": True, "role": "customer", "identity_token": t}) if t
                    else JsonResponse({"success": False, "login_required": True}, status=401))
            resp["Cache-Control"] = "no-store"
            return resp
        return self.get_response(request)

def opsiq_chat(request):
    t = opsiq_chat_token(request.user)
    src = "https://YOUR-OPSIQ/widget.php?site_key=YOUR_SITE_KEY" + ("&identity_token=" + urllib.parse.quote(t, safe="") if t else "")
    return {"opsiq_chat_tag": format_html('<script async src="{}" data-opsiq-widget="client-chat"></script>', src)}

.NET / C#

1

Run: dotnet add package System.IdentityModel.Tokens.Jwt. This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OpsIQ:SiteSecret (user-secrets, the OpsIQ__SiteSecret environment variable or Key Vault) on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

In Program.cs, after app.UseAuthentication(): app.Use(OpsiqChat.Refresh);

3

In _Layout.cshtml before </body>: @Html.Raw(OpsiqChat.Tag(Context))

OpsiqChat.cs
// OpsiqChat.cs — dotnet add package System.IdentityModel.Tokens.Jwt
using System.IdentityModel.Tokens.Jwt;
using System.Net;
using System.Security.Claims;
using System.Text;
using Microsoft.IdentityModel.Tokens;

public static class OpsiqChat
{
    public static string Token(HttpContext ctx)
    {
        var secret = ctx.RequestServices.GetRequiredService<IConfiguration>()["OpsIQ:SiteSecret"];
        if (string.IsNullOrEmpty(secret)) secret = "opsiq_whsec_YOUR_SITE_SECRET";   // this site's secret; configuration wins when set
        if (string.IsNullOrEmpty(secret) || ctx.User.Identity?.IsAuthenticated != true) return "";
        var id = ctx.User.FindFirstValue(ClaimTypes.NameIdentifier) ?? "";      // REQUIRED
        var email = ctx.User.FindFirstValue(ClaimTypes.Email) ?? "";            // REQUIRED
        var creds = new SigningCredentials(new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secret)), SecurityAlgorithms.HmacSha256);
        var now = DateTimeOffset.UtcNow;
        var payload = new JwtPayload {
            { "site_key", "YOUR_SITE_KEY" }, { "iat", now.ToUnixTimeSeconds() }, { "exp", now.AddSeconds(3600).ToUnixTimeSeconds() },
            { "authenticated", true }, { "platform", "dotnet" },
            { "customer", new Dictionary<string, object> { { "id", id }, { "email", email }, { "name", ctx.User.Identity?.Name ?? "" }, { "external_id", id } } },
        };
        return new JwtSecurityTokenHandler().WriteToken(new JwtSecurityToken(new JwtHeader(creds), payload));
    }

    // app.Use(OpsiqChat.Refresh) — the widget refreshing on the page it is on.
    public static async Task Refresh(HttpContext ctx, Func<Task> next)
    {
        if (string.IsNullOrEmpty(ctx.Request.Query["opsiq_identity_refresh"])) { await next(); return; }
        ctx.Response.Headers["Cache-Control"] = "no-store";
        var t = Token(ctx);
        if (t == "") { ctx.Response.StatusCode = 401; await ctx.Response.WriteAsJsonAsync(new { success = false, login_required = true }); return; }
        await ctx.Response.WriteAsJsonAsync(new { success = true, role = "customer", identity_token = t });
    }

    public static string Tag(HttpContext ctx)
    {
        var t = Token(ctx);
        var src = "https://YOUR-OPSIQ/widget.php?site_key=YOUR_SITE_KEY" + (t != "" ? "&identity_token=" + Uri.EscapeDataString(t) : "");
        return "<script async src=\"" + WebUtility.HtmlEncode(src) + "\" data-opsiq-widget=\"client-chat\"></script>";
    }
}

Ruby on Rails

1

Add gem "jwt" and run bundle install. This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in the environment on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

include OpsiqChat in ApplicationController.

3

In app/views/layouts/application.html.erb before </body>: <%= opsiq_chat_tag %>

app/controllers/concerns/opsiq_chat.rb
# app/controllers/concerns/opsiq_chat.rb — Gemfile: gem "jwt"
require "jwt"
require "cgi"

module OpsiqChat
  extend ActiveSupport::Concern

  included do
    before_action :opsiq_identity_refresh
    helper_method :opsiq_chat_tag
  end

  private

  def opsiq_chat_token
    secret = ENV["OPSIQ_SITE_SECRET"].presence || "opsiq_whsec_YOUR_SITE_SECRET"   # this site's secret; the environment wins when set
    return "" if secret.blank? || !respond_to?(:current_user, true) || current_user.nil?
    now = Time.now.to_i
    JWT.encode({
      site_key: "YOUR_SITE_KEY", iat: now, exp: now + 3600,
      authenticated: true, platform: "rails",
      customer: { id: current_user.id, email: current_user.email,          # REQUIRED
                  name: current_user.try(:name).to_s, external_id: current_user.id.to_s }
    }, secret, "HS256")
  end

  def opsiq_identity_refresh
    return unless params[:opsiq_identity_refresh].present?
    response.headers["Cache-Control"] = "no-store"
    t = opsiq_chat_token
    return render(json: { success: false, login_required: true }, status: :unauthorized) if t.blank?
    render json: { success: true, role: "customer", identity_token: t }
  end

  def opsiq_chat_tag
    t = opsiq_chat_token
    src = "https://YOUR-OPSIQ/widget.php?site_key=YOUR_SITE_KEY" + (t.present? ? "&identity_token=#{CGI.escape(t)}" : "")
    helpers.tag.script(nil, async: true, src: src, data: { opsiq_widget: "client-chat" })
  end
end

Java (Spring Boot)

1

Add io.jsonwebtoken:jjwt-api, jjwt-impl and jjwt-jackson (0.12+). This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set opsiq.site.secret (for example from OPSIQ_SITE_SECRET) on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

Replace currentUser() with your user lookup. The filter answers the refresh on every page; @ControllerAdvice exposes opsiqChatTag to views.

3

Thymeleaf layout before </body>: <th:block th:utext="${opsiqChatTag}"/>

OpsiqChat.java
// OpsiqChat.java — io.jsonwebtoken:jjwt-api / jjwt-impl / jjwt-jackson (0.12+)
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.security.Keys;
import jakarta.servlet.*;
import jakarta.servlet.http.*;
import java.io.IOException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.security.Principal;
import java.time.Instant;
import java.util.*;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.util.HtmlUtils;

@Component
@ControllerAdvice
public class OpsiqChat implements Filter {
    @Value("${opsiq.site.secret:opsiq_whsec_YOUR_SITE_SECRET}")   // this site's secret; opsiq.site.secret wins when set
    private String secret;

    /** WHO IS SIGNED IN — replace with your lookup: id, email, name. Null for a guest. */
    private Map<String, Object> currentUser(Principal p) {
        return p == null ? null : Map.of("id", p.getName(), "email", p.getName(), "name", p.getName());
    }

    String token(HttpServletRequest req) {
        Map<String, Object> u = currentUser(req.getUserPrincipal());
        if (u == null || secret.isEmpty()) return "";
        Instant now = Instant.now();
        return Jwts.builder()
            .claim("site_key", "YOUR_SITE_KEY").claim("authenticated", true).claim("platform", "java")
            .claim("customer", Map.of("id", u.get("id"), "email", u.get("email"), "name", u.get("name"),
                                      "external_id", String.valueOf(u.get("id"))))          // id + email REQUIRED
            .issuedAt(Date.from(now)).expiration(Date.from(now.plusSeconds(3600)))
            .signWith(Keys.hmacShaKeyFor(secret.getBytes(StandardCharsets.UTF_8)), Jwts.SIG.HS256)
            .compact();
    }

    @Override // the widget refreshing on the page it is on
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) request;
        if (req.getParameter("opsiq_identity_refresh") == null) { chain.doFilter(request, response); return; }
        HttpServletResponse res = (HttpServletResponse) response;
        res.setHeader("Cache-Control", "no-store");
        res.setContentType("application/json");
        String t = token(req);
        if (t.isEmpty()) { res.setStatus(401); res.getWriter().write("{\"success\":false,\"login_required\":true}"); return; }
        res.getWriter().write("{\"success\":true,\"role\":\"customer\",\"identity_token\":\"" + t + "\"}");
    }

    @ModelAttribute("opsiqChatTag")
    public String tag(HttpServletRequest req) {
        String t = token(req);
        String src = "https://YOUR-OPSIQ/widget.php?site_key=YOUR_SITE_KEY" + (t.isEmpty() ? "" : "&identity_token=" + URLEncoder.encode(t, StandardCharsets.UTF_8));
        return "<script async src=\"" + HtmlUtils.htmlEscape(src) + "\" data-opsiq-widget=\"client-chat\"></script>";
    }
}

Go

1

Run: go get github.com/golang-jwt/jwt/v5. This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in the environment on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

Replace currentUser() with your session lookup, and wrap your router: http.ListenAndServe(addr, OpsiqChatRefresh(mux)).

3

Pass OpsiqChatTag(r) to your layout template and print it before </body>.

opsiq_chat.go
// opsiq_chat.go — go get github.com/golang-jwt/jwt/v5
package main

import (
    "encoding/json"
    "fmt"
    "html"
    "html/template"
    "net/http"
    "net/url"
    "os"
    "time"

    "github.com/golang-jwt/jwt/v5"
)

type OpsiqUser struct{ ID, Email, Name string }

// WHO IS SIGNED IN — replace with your session lookup. Return nil for a guest.
func currentUser(r *http.Request) *OpsiqUser { return nil }

func opsiqChatToken(r *http.Request) string {
    u, secret := currentUser(r), os.Getenv("OPSIQ_SITE_SECRET")
    if secret == "" {
        secret = "opsiq_whsec_YOUR_SITE_SECRET" // this site's secret; the environment wins when set
    }
    if u == nil || secret == "" {
        return ""
    }
    now := time.Now().Unix()
    t, err := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{
        "site_key": "YOUR_SITE_KEY", "iat": now, "exp": now + 3600,
        "authenticated": true, "platform": "go",
        "customer": map[string]any{"id": u.ID, "email": u.Email, "name": u.Name, "external_id": fmt.Sprint(u.ID)}, // id + email REQUIRED
    }).SignedString([]byte(secret))
    if err != nil {
        return ""
    }
    return t
}

// OpsiqChatRefresh answers the widget's ?opsiq_identity_refresh=1 on any page.
func OpsiqChatRefresh(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        if r.URL.Query().Get("opsiq_identity_refresh") == "" {
            next.ServeHTTP(w, r)
            return
        }
        w.Header().Set("Cache-Control", "no-store")
        w.Header().Set("Content-Type", "application/json")
        if t := opsiqChatToken(r); t != "" {
            json.NewEncoder(w).Encode(map[string]any{"success": true, "role": "customer", "identity_token": t})
            return
        }
        w.WriteHeader(http.StatusUnauthorized)
        json.NewEncoder(w).Encode(map[string]any{"success": false, "login_required": true})
    })
}

// OpsiqChatTag is printed before </body> in your layout.
func OpsiqChatTag(r *http.Request) template.HTML {
    src := "https://YOUR-OPSIQ/widget.php?site_key=YOUR_SITE_KEY"
    if t := opsiqChatToken(r); t != "" {
        src += "&identity_token=" + url.QueryEscape(t)
    }
    return template.HTML(`<script async src="` + html.EscapeString(src) + `" data-opsiq-widget="client-chat"></script>`)
}

عندما يكون هناك شيء خاطئ

الدردشة تعامل زبوناً مُسجلاً كضيف

تمت طباعة العلامة بدون identity_token السر مفقود على الخادم، لذلك الرمز يفشل مغلقاً، أو مفتاح (توكن) لأماكن العمل أو السر لا يتطابق.

تم الاعتراف به في البداية ثم ضيف بعد ساعة

ولا يتم الوصول إلى المعالج الجديد: يجب أن يدار قبل أي ناتج، في كل صفحة يظهر الدردشة.

الدردشة الواضحة تظهر مرتين

ازيل بطاقة الدردشة من نموذجك هذا الرمز يطبع الدردش نفسه

المطور

البرامج الإضافية ومجموعات برامجيات التطوير الحاسوبي

OpsIQ يوفر SDK:: حزم وبرامج إضافية للمنصات المشتركة.

كيف يعمل
البرامج الإضافية ومجموعات برامجيات التطوير الحاسوبيأربع حزم: PHP SDK, نود.جي إس SDK, WordPress و. WHMCS وحدة نموذجية، كل منها مع أمره الخاص بالتركيب.PHPبي إتش بي SDKيحتاج الملحن opsiq/sdkجيم -نود.جي إس SDKopsiq/sdkWPWordPress ملحقتثبيت ونقرة واحدةباء حاءWHMCS الوحدة النموذجيةإضافة لنظام الفواتير + نقل التذاكر
البرامج الإضافية ومجموعات برامج التطوير
بي إتش بي SDK

حزمة المكون: توليد رموز الهوية، ومساعدات الإجراء API ، والتحقق من توقيع الويب هووك.

JavaScript SDK

جانب المتصفح: التتبع، الهوية، الأحداث المخصصة، مراقبة الدردشة.

WordPress ملحق

حقن الوحدة، الهوية من جلسات مستخدمي WP، WooCommerce sync.

WHMCS الوحدة النموذجية

التكامل الكامل: الوسائط، ونقل التذاكر، والهوية، والذكاء الاصطناعي الإداري.

Shopify تمديد الموضوع

إدراج التطبيق مع هوية العميل التلقائية.

PHP SDK البداية السريعة

مثال PHP SDK
composer require opsiq/sdk

use OpsIQ\SDK\Identity;
$token = Identity::createToken(
    siteKey: "site_abc123",
    secret:  "opsiq_whsec_your_secret",
    customer: ["id" => "cust_1001", "email" => "[email protected]", "name" => "Jane"]
);

// Call any catalog action over the action API
$ch = curl_init("https://your-opsiq.com/api/v1.php");
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        "Authorization: Bearer opq_your_key",
        "Content-Type: application/json",
    ],
    CURLOPT_POSTFIELDS => json_encode([
        "action" => "crm.contacts.list",
        "status" => "lead",
        "limit"  => 25,
    ]),
]);
$contacts = json_decode(curl_exec($ch), true);
المطور

المسح API الأحداث والتشغيل الآلي بدون موصلات

وقد صُمِّم استوديو المسح لاستخدام نفس النوع العام. API, المنفذ الداخلي, الحافلة الأحداث وعمليات webhook كما بقية OpsIQ وهذا يسمح للمطورين بالتكامل من النهاية إلى النهاية دون بناء وصلة مجمعة.

⚠️
حالة التنفيذ: لا يعرض الفهرس الحي حاليا سوى platform.get.survey.config و platform.save.survey.config. The surveys.* و feedback.* families below are the approved target contract and must return unknown_action حتى يتم تسجيلها.

الأسر المستهدفة بالعمل

الأنواع والنماذج والإطلاق السريع

surveys.types.*, surveys.templates.* و surveys.quick_launch.* قائمة، وعرض مسبق، وتطبيق والتحقق من البدايات الكاملة.

الدراسات الاستقصائية والنسخ

surveys.create|get|list|update|archive|duplicate إضافة إلى إصدار غير قابل للتغيير، والتحقق وإجراءات النشر.

عمليات النشر والاستهداف

surveys.deployments.*, surveys.links.*, surveys.audiences.*, surveys.triggers.* و surveys.variables.*.

التوعية والاستجابات

surveys.invitations.*, surveys.campaigns.*, surveys.recipients.*, surveys.responses.*, exports, redaction and analytics.

اتصالات شبكية، استيراد وتغذية مرتدة

surveys.webhooks.*, surveys.imports.*, feedback.items.*, feedback.analytics.*, feedback.sources.* و feedback.analysis.*.

تدفق بدون موصل

1
إنشاء ونشر من خلال General API

استخدام المسوح المطبوعة.* الأفعال مع مفتاح محصور في مساحة العمل. الكتابات إعلان الإذن، المخاطر، التأكيد، القابلية المتساوية وسلوك التشغيل الجاف.

2
استقبل حدثك التجاري

إرسال حدث موقع على webhook الواردة، مثل إلغاء طلب أو خطوة استكمال التوظيف.

3
رسمها في الإجراءات والمحركات

اختار دولة OpsIQ الجنرالات API:: اتخاذ إجراء من قبيل إصدار دعوة للمشاركة في الدراسة الاستقصائية أو التحضير لحملة، ثم رسم خرائط الحقول استناداً إلى الحمولة المحركة المتحقق منها.

4
الاشتراك في أحداث الدراسة الاستقصائية

تسليم المجموعة الفرعية الموثقة من دورة حياة الدراسة الاستقصائية المأمونة للأعمال* إلى النقطة النهائية مع توقيعها ومرشحها وإعادة محاولة إجرائها وسجلها وإمكانية إعادة عرضها.

هدف الحدث القياسي

وسيغطي الكتالوج المشترك حالة نشر الاستقصاء/النشر، والجمهور والقرارات المتعلقة بالبدء، والدعوات، وعرض البيانات/بدء العمل/جزئيا/استئناف العمل/إتمام العمل/التخلي عن العمل، وحذف الردود، وحالة الحملة وأوجه الفشل في التسليم.

يضاف اكتشاف المنصة القابلة لإعادة الاستخدام، الهوية المتحقق منها، الحقائق، المتغيرات وتعداد المستلم. عام API بالإضافة إلى الأفعال والمثيرات/العقبات الشبكية تظل مسار التكامل الكامل للمطورين الذين لا يحتاجون إلى وصلة متصلة.
المطور

واجهة برمجة التطبيقات REST

TheOpsIQRESTAPIيسمح لكِ بالبرمجة للوصول إلى جميع الملامح

كيف يعمل
واجهة برمجة التطبيقات RESTمحطة طرفية تظهر POST إلى. OpsIQ API مع Bearer قائمة التذاكر المفتوحة، والصفحات المرتبة JSON الاستجابة.$ curl -X POST https://your-domain.com/api/v1.php \-H "Authorization: Bearer opq_..."200 حسنًا{ "data": [{ "id": 4192, "ticket_number": "T-4192","subject": "Card declined", "status": "open" },... more tickets ...], "page": 1, "per_page": 50, "has_more": true }
واجهة برمجة التطبيقات REST

شكل الطلب

إرسال المفتاح ك Authorization: Bearer opq_... أو X-OpsIQ-Key: opq_.... استخدم عنوان توثيق واحد، لا كلاهما

API شكل الطلب
POST https://your-opsiq-domain.com/api/v1.php
Authorization: Bearer opq_your_api_key
# Alternative header: X-OpsIQ-Key: opq_your_api_key
Content-Type: application/json

{
  "action": "endpoint.name",
  "site_key": "site_abc123"
}

الإجراءات المشتركة

API هو إجراء قائم على العمل: إرسال action اسم في الجسم. كل عملية مسجلة من الإدارة JSON لديها عمل مستقر باسمه. {"action":"meta.actions"} (لا يلزم مفتاح) للقائمة الرسمية لكل منشأة، وعقد الطلب، والبيانات الفوقية للمخاطر، والنطاق. platform.routes.* الجسر يبقى فقط لعمليات التكامل القديمة.

crm.contacts.list

قائمة الاتصالات CRM (نطاق crm. read). البارامترات: q، الحالة، المصدر، الوسم، النتيجة الرئيسية، الحد.

crm.contacts.upsert

حل أو إنشاء اتصال (نطاق crm. write). البارامترات: البريد الإلكتروني بالإضافة إلى الحقول، الوسم، الملاحظات.

crm.deals.list

List CRM deals (scope crm.read). Params: status, stage_id, company_id, owner_admin_id, pipeline_id, limit.

crm.activities.record

تسجيل دورة الحياة/نشاط الأعمال التجارية لاتصال (نطاق crm. write). البارامترات: البريد الإلكتروني أو contact_id، وحدث، والقيمة، والعملة.

crm.conversions.record

تسجيل تحويل (نطاق crm. write). البارامترات: contact_id أو email, conversion_type, value, currency.

crm.events.list

استفتاء تدفق حدث CRM (نطاق crm. read). البارامترات: الحد.

tickets.list

قائمة التذاكر (نطاق tickets. read). البارامترات: page, per_page, sort, order, status, priority, department_id, assigned_admin_id، client_email، search.

tickets.get

تذكرة واحدة ورسائلها (نطاق tickets. read). البارامترات: ticket_id أو ticket_number، include_messages، messages_limit.

tickets.reply

Post a reply to a ticket (scope tickets.write). Params: ticket_id or ticket_number, body, author_type, author_name, internal.

tickets.update

تحديث وثيقة (نطاق tickets. write). البارامترات: ticket_id أو ticket_number، الوضع، الأولوية، الموضوع، department_id، assigned_admin_id.

tickets.open

فتح تذكرة دعم (نطاق tickets. write). البارامترات: customer_email, customer_name, subject, body, priority.

tickets.bulk

تشغيل عملية صف ضخم (نطاق tickets. write). البارامترات: العمليات، هويات.

conversations.list

قائمة محادثات الدردشة الحية (نطاق conversations. read). البارامترات: page, per_page, status, assigned_admin_id, client_email, search.

conversations.get

محادثة واحدة ورسائلها (نطاق conversations. read). البارامترات: conversation_id أو thread_key، include_messages.

conversations.messages

تاريخ الرسائل المصفحة (نطاق conversations. read). البارامترات: conversation_id, page, per_page, include_internal.

conversations.send

إرسال رسالة إلى محادثة (نطاق conversations. write). البارامترات: conversation_id, message, sender_type, internal.

conversations.update

تعيين، أو إعادة وضع أو تغير عنوان محادثة (نطاق conversations. write). البارامترات: conversation_id, status, assigned_admin_id، subject.

قائمة الوصلات/الحصول على/اختبار

انظر أي موصلات مركبة، وما يمكن أن يفعله كل منها، وهل تعمل بيانات اعتمادها (نطاق connectors. read).

automations.actions.list

الإجراءات التي سيقوم بنائك للأعمال بتنفيذها (نطاق automations. read).

automations.triggers.list

ما الذي سيطلق ويخضع لأي ظروف (نطاق التشغيل الآلي).

automations.runs.list

تاريخ التنفيذ لتصحيح خطأ التكامل (scope automations. read). البارامترات: status, action_key.

departments.list

الإدارات التي يمكن توجيه تذكرة إليها (نطاق departments. read).

notifications.list

إشعارات لمشغل واحد (نطاق notifications. read). البارامترات: admin_id (مطلوب)، unread_only.

analytics.export

قسم التقرير على النحو التالي: CSV (نطاق analytics.read). البارامترات: section, preset, from, to. استدعاء analytics.sections.list للقيم الصحيحة.

قائمة المواقع/التقارير

المواقع المُراقبةSEOتقارير (الموقع المجاور - المعلومات، القراء).

التجارة - المنتجات. قائمة

فهرسك المخزني، مُصفّح (التجارة المجدولة - الخيوط) .get يعود منتجاً واحداً مع متغيراته

التجارة.أو مقدمي الطلبات

:: أوامر تخزين (التجارة على نطاق واسع) - ملفات: الحالة، الدفع - الميثود، القناة، الزبون - البريد الإلكتروني. order_id أو إشارة الـ (أو دي) مع بنود الخط، لم يعد أبداً مقبض البوابة الحية

commerce.refunds.list

Refund requests and their state (scope commerce. read).

commerce.quotes.create

سعر بند للزبون (التجارة عبر النطاقات). store أو موصل لا يخلق شيئاً، لا أمر ولا دفعة

تذاكر.csatالقائمة/النباتات/المقاييس

(ج) الردود على ردود العملاء بشأن الرضا عن طريق البيانات (التذاكر، القراء)، التصوير حسب التصنيف أو التذاكر أو الوكيل أو الفترة؛ .metrics يعيد نفس الأرقام التي يظهرها لوحة التحكم

conversations.ratings.list

تسلسل المحادثات التي قام بها زوارك مع التعليق الذي دفع إلى التقييم والوكيلة التي تم إئتمانها (محادثات مُنظارية، خبأ)

knowledge.articles.list

اضغط على مقالات مركز المساعدة الخاص بك (الشاشة الكشكية).

knowledge.articles.get

مقال مركز مساعدة واحد (خيط الكبريت) - العواطف: المادة /

webhooks.events.list

كل حدث يمكنك أن تتشارك به نقطة نهاية على الشبكة مع حمولة لها، متاح في كل خطة، حتى تتمكن من البناء عليها قبل شرائها.

files.get

رابط تنزيل موقع قصير العمر لمرفق (نطاق files. read). البارامترات: reference, ttl.

security.check

السؤال عما إذا كان IP أو البريد الإلكتروني محظور أو مشبوه هنا (نطاق security.read).IP جدار الحماية، قائمة حظر التذاكر غير المرغوب فيها وحكم الذكاء الاصطناعي الأمني المخزن. ip البريد الإلكتروني

security.report

تقرير إساءة استخدام نظامك الملاحظ (نطاق security. write). مسجل كحدث أمني، مصنف من قبل الذكاء الاصطناعي الأمني فورا، والمديرين يتم تنبيههم على الأحكام عالية الخطورة. البارامترات: ip، البريد الإلكتروني، نوع، سبب، مصدر.

قائمة المحظورات الأمنية

إدارة قواعد التراسل غير المرغوب فيه التي تفرضها أنابيب التذاكر (نطاق security. write / security. read). نفس التخزين مثل صفحة التذاكير "حظر المرسل" التحكم. البارامترات: نوع (البريد الإلكتروني، النطاق، ip)، القيمة، سبب، expires_hours.

💡
meta. actions دائماً موثوق به، فهو يعيد كل عمل متاح على تركيبك مع النطاق الذي يحتاجه كل واحد، لذلك لا تحتاج أبداً إلى تخمين أو برمجة هذه القائمة.

ألف - البحث والترشيح والفرز

كل قائمة تفعيل تستخدم نفس البارامترات، لذلك تتعلمها مرة واحدة.

صفحة/صفحة لكل صفحة

رقم الصفحة الذي يبدأ بـ 1, وحجم الصفحة. 50 الحد الأقصى 200. الحد والمعاوضة مقبولان أيضا إذا كنت تفضلهما.

الترتيب

الحقل الذي يتم ترتيبه، و أس س أو تنزلي (الافتراضي هو تنزيلي). كل عمل يقبل مجموعة ثابتة من حقول الترتيب؛ أي شيء آخر يتم تجاهله بدلا من إحداث خطأ.

filters

إرسال المرشحات كأحد الأشياء، أو مرر مرشحاً كبارامترات من المستوى الأعلى. يتم تجاهل المرشّحات غير المعروفة.

ماذا يعود

items, page, per_page, count, total and has_more. يستمر طلب الصفحات حتى تكون has_ more قيمة false.

طلبات القائمة المصفحة والمرشحة والمرتبة
POST /api/v1.php
Authorization: Bearer opq_your_api_key

{
  "action": "tickets.list",
  "status": "open",
  "priority": "urgent",
  "sort": "created_at",
  "order": "desc",
  "page": 1,
  "per_page": 50
}

الأخطاء

كل فشل يعود بنفس الشكل، مع استقرار code لا تتطابق على الشكل الذي يقرأه الإنسان error text, which may be reworded.

رد الفعل على الخطأ
{
  "success": false,
  "code": "missing_scope",
  "error": "API key missing required scope. Needed one of: tickets.read, admin",
  "request_id": "req_8f2c1a9d4b7e"
}
مفاتيح المفتاح الافتراضي غير موجودة/غير صحيحة

لم يتم إرسال مفتاح، أو المفتاح خاطئ أو انتهت صلاحيته. HTTP 401.

missing_scope

المفتاح صحيح ولكنه يفتقر إلى النطاق الذي يحتاجه هذا العمل. HTTP 403.

قراءة فقط / قيد التنفيذ

المفتاح قراءة فقط، أو هذا العمل ليس في قائمة السماح. HTTP 403.

unknown_action

لا يوجد مثل هذا العمل. استدعاء meta. actions للقائمة الحالية. HTTP 400.

البارامترات المفقودة/الباطلة

لا يوجد معيار مطلوب، أو لم يتم قبول القيمة. HTTP 400.

not_found

السجل غير موجود، أو ليس في مساحة العمل التي يمكن لهذا المفتاح رؤيتها. HTTP 404.

plan_feature_locked

خطتك لا تتضمن السمة التي ينتمي إليها هذا العمل feature, the plan_name نافذة المفعول وقائمة upgrade_url- لن تساعد عملية إعادة التأهيل؛ بل يجب أن تتغير الخطة.402.

license_required

رخصة التركيب ليست نشطة لذا لن يُجرى أي عمل حتى يتم إستعادتها402.

selling_paused

التجارة الخاصة: المتجر قد انطفأ، لذا لا يمكن اقتباس أو أمر أي شيء.400.

rate_limited

الحد الساعاتي لهذا المفتاح قد استُهلك. HTTP 429.

server_error

شيء ما فشل من جانبنا. request_id يحدد المحاولة إذا كنت بحاجة إلى الإبلاغ عنها. HTTP 500.

إعادة محاولات آمنة

إذا انتهى وقت الكتابة لا يمكنك معرفة ما إذا كان قد هبط. idempotency_key وتكرار نفس النداء يعيد النتيجة الأصلية بدلاً من تنفيذ العمل مرتين.

أنا عاجز عن الكتابة
{
  "action": "tickets.reply",
  "ticket_id": 4192,
  "body": "Thanks, that is now fixed.",
  "idempotency_key": "your-unique-id-for-this-attempt"
}
كم من الوقت يستغرق

مفتاح يتم تذكره لمدة 24 الساعات المخصصة لنفس الإجراء API المفتاح

ماذا تحصل في المقابل

الاستجابة الأصلية، بالإضافة إلى idempotent_replay: true لكي تتمكن من القول إنها كانت إعادة تشغيل.

تظل حالات الفشل قابلة للمحاولة من جديد

يتم تذكر عمليات الكتابة الناجحة فقط. إذا فشل أحد المكالمات، فإن إرساله مرة أخرى بنفس المفتاح سيقوم بتشغيله مرة ثانية، وهو ما تريده.

Reads

القراءة تتجاهل المفتاح، وتكرار القراءه غير ضار.

اختبار دون تغيير أي شيء

إضافة dry_run: true . يقوم بفحص المفتاح و النطاقات والبارامترات كما هو الحال عادة ثم يتوقف الاستدعاء قبل أن يتم إنشاء أو تغيير أي شيء

الاختبار التجريبي: التحقق من وثائق التفويض والحمولة بأمان
{
  "action": "tickets.update",
  "ticket_id": 4192,
  "status": "closed",
  "dry_run": true
}

{
  "success": true,
  "dry_run": true,
  "would_execute": true,
  "message": "Authorised and validated. No write was performed because dry_run was set."
}
استخدم dry_run أثناء بناءك. إنها أسرع طريقة للتأكد من أن المفتاح لديه النطاقات الصحيحة وأن حمولة بياناتك تشكلت بشكل صحيح، دون خلق بيانات اختبار يجب تنظيفها بعد ذلك.

حدود المعدلات

الحد الأقصى لكل مفتاح

حد ساعة قابل للتعديل لكل API الافتراضية 1000 حدد هذه القيمة لكل مفتاح في إطار الإعدادات،API المفاتيح

عند تجاوزها

HTTP 429 مع الرمز rate_limited، بالإضافة إلى عنوان Retry-After يخبرك بعدد الثواني التي يجب الانتظار فيها. ويعاد تحديد الحد في بداية الساعة التالية.

معرفة مكانك

كل رد يحمل X-RateLimit-Limit، وX-RatLimit -Remaining وX RateLimi-Reset (علامة زمنية من نظام Unix). راقبي Remaining وابطئ قبل أن تنفد بدلاً من الانتظار للرفض.

الحساب 429 من 401

ألف429يعني الانتظار ومحاولة مرة أخرى.401يعني أن المفتاح نفسه خاطئ أو منتهية لذا إعادة البحث لن تساعد حتى تصلح المفتاح

حارس القوة الغاشمة قبل التصديق

محاولات فاشلة متكررة من واحدة IP المفاتيح المتحركة لا تفسد هذا أبدا

أفضل الممارسات

تراجع عندما ينخفض الباقي، واحترام Retry-After بعد 429 بدلاً من المحاولة مرة أخرى فورًا.

الإصدارات والاستقرار

النسخة الحالية

v1 - يحمل كل رد نسخة X-OpsIQ-_API ووضعا X-__OpsIQ-___API لكي تتمكن من تأكيد الشخص الذي تتحدث إليه.

« ما ينفعك أن تنذر ».

إذا تم سحب نسخة من أي وقت مضى، تحصل الردود على عناوين Deprecation و Sunset القياسية، وتبلغ meta. actions deprecated و sunset_at. انظر إلى هذه في مراقبتك ولن تفاجأ أبداً.

ما الذي لن يتغير

أسماء الإجراءات الموجودة، وبارامتراتها ورموز أخطائها. يمكن إضافة إجراءات جديدة وحقول اختيارية جديدة في أي وقت، لذلك تجنب الحقول التي لا تعرفها بدلاً من إخفاءها.

التكامل الكامل من البداية إلى النهاية

هذه هي الحلقة الكاملة: العثور على العمل، وقراءته، والعمل عليه، والتأكيد على ما فعلت.

تدفق العمل الكامل فيما يتعلق بالطلبات على امتداد السنة API
# 1. Discover what this install offers and what each action needs.
POST /api/v1.php
{"action":"meta.actions"}

# 2. Find the urgent open tickets.
POST /api/v1.php
Authorization: Bearer opq_your_api_key
{"action":"tickets.list","status":"open","priority":"urgent","per_page":25}

# 3. Read one, including its conversation history.
{"action":"tickets.get","ticket_id":4192}

# 4. Reply, safely enough to retry if the network drops.
{"action":"tickets.reply","ticket_id":4192,
 "body":"We have issued the refund.","idempotency_key":"reply-4192-attempt-1"}

# 5. Close it.
{"action":"tickets.update","ticket_id":4192,"status":"closed"}

# 6. Page through anything larger: keep going until has_more is false.
{"action":"tickets.list","page":2,"per_page":50}
💡
كل ما سبق يعمل بنفس الطريقة للمحادثات: conversations. list, conversations. get, conversation. send and conversations,update تتبع نفس النمط، البارامترات وشكل الاستجابة.

المزيد من الأمثلة على العمل

كل واحد من هذه هي قطعة كاملة قابلة للاستمرار من التكامل الحقيقي بدلاً من أن تكون شظية

يرجى الرجوع إلى كل سجل، بثلاث لغات

القاعدة هي نفسها في كل مكان: الاستمرار في طلب الصفحة التالية حتى has_more لا تخمنوا أبداً

(بيتون) صفحة من كل تذكرة مفتوحة
import requests

API  = "https://your-opsiq-domain.com/api/v1.php"
HEAD = {"Authorization": "Bearer opq_your_api_key"}

def every(action, **params):
    """Yield every record for a list action, one page at a time."""
    page = 1
    while True:
        r = requests.post(API, headers=HEAD,
                          json={"action": action, "page": page, "per_page": 200, **params},
                          timeout=30)
        r.raise_for_status()
        body = r.json()
        if not body.get("success"):
            raise RuntimeError(f"{body.get('code')}: {body.get('error')}")
        yield from body.get("items", [])
        if not body.get("has_more"):
            return
        page += 1

for ticket in every("tickets.list", status="open"):
    print(ticket["ticket_number"], ticket["subject"])
Node. js ; page through every lead
const API = "https://your-opsiq-domain.com/api/v1.php";
const HEAD = { Authorization: "Bearer opq_your_api_key", "Content-Type": "application/json" };

async function* every(action, params = {}) {
  for (let page = 1; ; page++) {
    const res  = await fetch(API, {
      method: "POST",
      headers: HEAD,
      body: JSON.stringify({ action, page, per_page: 200, ...params }),
    });
    const body = await res.json();
    if (!body.success) throw new Error(`${body.code}: ${body.error}`);
    yield* body.items ?? [];
    if (!body.has_more) return;
  }
}

for await (const contact of every("crm.contacts.list", { status: "lead" })) {
  console.log(contact.email);
}
PHP ; page through every open remember
<?php
$api = "https://your-opsiq-domain.com/api/v1.php";

function opsiq(string $action, array $params = []): array {
    global $api;
    $ch = curl_init($api);
    curl_setopt_array($ch, [
        CURLOPT_POST           => true,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HTTPHEADER     => [
            "Authorization: Bearer opq_your_api_key",
            "Content-Type: application/json",
        ],
        CURLOPT_POSTFIELDS => json_encode(["action" => $action] + $params),
        CURLOPT_TIMEOUT    => 30,
    ]);
    $body = json_decode((string)curl_exec($ch), true) ?: [];
    curl_close($ch);
    if (empty($body["success"])) {
        throw new RuntimeException(($body["code"] ?? "error") . ": " . ($body["error"] ?? "unknown"));
    }
    return $body;
}

$page = 1;
do {
    $res = opsiq("tickets.list", ["status" => "open", "page" => $page, "per_page" => 200]);
    foreach ($res["items"] as $t) {
        echo $t["ticket_number"], " ", $t["subject"], PHP_EOL;
    }
    $page++;
} while (!empty($res["has_more"]));

نتعامل مع كل فشلAPIيمكن أن تعود

الفرع المعني codeلا على ابداً errorهذه الغلافة هي العقد بأكمله في وظيفة واحدة

(بيتون) عميل يتعامل مع كلّ شفرة خطأ بشكل صحيح
import time, requests

RETRYABLE = {"server_error", "handler_unavailable"}

def call(action, **params):
    for attempt in range(4):
        r = requests.post(API, headers=HEAD, json={"action": action, **params}, timeout=30)
        body = r.json()
        if body.get("success"):
            return body

        code = body.get("code")

        if code == "rate_limited":
            # Honour Retry-After rather than guessing.
            time.sleep(int(r.headers.get("Retry-After", 60)))
            continue

        if code in RETRYABLE:
            time.sleep(2 ** attempt)
            continue

        # Everything below is permanent: retrying cannot fix it.
        if code == "plan_feature_locked":
            raise RuntimeError(f"Plan {body['plan_name']} lacks {body['feature']}: {body['upgrade_url']}")
        if code in ("missing_scope", "read_only_key", "action_restricted"):
            raise RuntimeError(f"This API key cannot do that: {body['error']}")
        if code in ("invalid_api_key", "missing_api_key"):
            raise RuntimeError("The key is wrong or expired; retrying will not help.")
        raise RuntimeError(f"{code}: {body.get('error')} (request_id {body.get('request_id')})")

    raise RuntimeError("Gave up after repeated retries")

أجيب على نتيجة مرضية خلال ساعة

اقرأ الدرجات المنخفضة، وفتح تذكرة لكل واحد، ولا تتصرف على نفس الرقم مرتين.

أغلقوا الحلقة عن الزبائن غير سعداء
# 1. Yesterday's detractors.
POST /api/v1.php
{"action":"tickets.csat.list","filters":{"max_rating":2},"days":1,"per_page":100}

# 2. For each one, open a follow-up ticket. The idempotency key is derived
#    from the response id, so re-running the job creates nothing twice.
POST /api/v1.php
{"action":"tickets.open",
 "customer_email":"[email protected]",
 "subject":"Following up on your feedback",
 "body":"We saw your rating and want to put it right.",
 "priority":"high",
 "idempotency_key":"csat-followup-8821"}

# 3. The same shape works for chat: conversations.ratings.list with
#    {"filters":{"max_stars":2},"days":1} returns the comment, what
#    prompted the rating and which agent it is credited to.

قم بطرح بند وتصرف على جواب التاجر

رفض يخبرك بما تجمع
POST /api/v1.php
{"action":"commerce.quotes.create","source":"whmcs","item_id":"47","quantity":1}

# The merchant needs more from the customer before it can price this:
{
  "success": false,
  "code": "quote_refused",
  "error": "We need the domain this hosting plan is for.",
  "actionable": true,
  "missing": ["domain"]
}

# Ask the customer for exactly what "missing" names, then quote again.
POST /api/v1.php
{"action":"commerce.quotes.create","source":"whmcs","item_id":"47",
 "fields":{"domain":"example.ng"}}

{
  "success": true,
  "source": "whmcs",
  "quote": {
    "quote_id": "…",
    "totals": { "total": { "amount_minor": 306027, "currency": "NGN" }, "currency": "NGN" },
    "expires_at": "2026-09-05T12:34:56+00:00"
  },
  "ordering": { "creates_order": false, "confirm_via_api": false }
}
⚠️
أظهري العميل totals.total كما عادت بالضبط، لا تضاعف الكمية دائماً سعر الوحدة - فندق يقتبس غرفة واحدة لثلاث ليال - لذا الرقم الذي تحسب نفسك يمكن أن يختلف عما سيتحمله التاجر فعلاً.

جهاز استقبال على الشبكة العالمية آمن لتشغيل في الإنتاج

تحققوا من ازدواجية العمل و تجيبوا بسرعة ثم تقومون بالعمل

جهاز استقبال على شبكة الإنترنت مصمم على شكل إنتاج
<?php
// (verification exactly as in the Webhooks section, omitted here for brevity)

$event    = json_decode($raw, true);
$name     = $_SERVER["HTTP_X_OPSIQ_EVENT"] ?? ($event["event"] ?? "");
$delivery = $_SERVER["HTTP_X_OPSIQ_DELIVERY"] ?? "";

// 1. Already seen this delivery? Say OK and stop — do not redo the work.
if ($db->alreadyProcessed($delivery)) {
    http_response_code(200);
    exit(json_encode(["ok" => true, "duplicate" => true]));
}

// 2. Answer FAST. Anything slow belongs on your own queue: OpsIQ treats a
//    timeout as a failure and will retry the whole delivery.
$db->markProcessed($delivery);
$queue->push($name, $event);

http_response_code(200);
echo json_encode(["ok" => true]);

// 3. Your worker then routes on the event name.
//    conversation.rated        -> alert the team on a 1 or 2 star rating
//    ticket.created            -> mirror into your own helpdesk
//    crm.deal.won              -> post to #sales-alerts
//    commerce.payment.confirmed-> release the order in your fulfilment system

الخطط والاستحقاقات

كل عمل يعود لميمة المنتج وخطتك تقرر ما هي المميزات التي لديك إذا لم تتضمن خطتك سمة 402 - بعد فحص مفتاحك، لذلك المتصل غير المُستشف لا يتعلم شيئاً عن خطتك، وقبل أن يتم خلق أي شيء،

عمل غير مكتمل
{
  "success": false,
  "code": "plan_feature_locked",
  "feature": "commerce",
  "plan_locked": true,
  "plan_name": "Growth",
  "upgrade_url": "https://…",
  "request_id": "req_8f2c1a9d4b7e"
}
كيف نُخبرها بمشكلة الأذن

ألف403يعني أن كيو ضيق جداً - يعيد إصداره بالنطاق الصحيح وهو يعمل.402ويعني ذلك أن سلطة الحساب لا تملك السمة - ولا يمكن لأي مفتاح فتحها، بل يجب أن تتغير الخطة.

لا تُعيدْ النظر402

ليس مُتعَرّباً، واجهوا upgrade_url لمن يملك الحساب بدلاً من التراجع و المحاولة مرة أخرى

النطاق الإصداري لا يتعدى عليه

وتعبر النطاقات عن ما فوضه المصدر الرئيسي؛ وتعبر الخطة عما اشتراه الحساب.402بالنسبة لميمة تفتقر الخطة.

إكتشفْ قبل أنت سفينة

الـ feature وينشر كل من احتياجات العمل في دليل العمل الوارد أدناه وفي meta.actionحتى تتأكد من وقت البناء بدلاً من اكتشافه في الإنتاج

أسرع طريقة لمعرفة بالضبط أين يقف المفتاح meta.me- يُبلغ عن الخطة النافذة، وكل سمة تحملها، وكل عمل لا يمكن أن يدعوه هذا المفتاح إلى سبب كل واحد.

ما هذا المفتاح يمكنه فعله
POST /api/v1.php
Authorization: Bearer opq_your_api_key

{"action":"meta.me"}

{
  "success": true,
  "key": { "name": "Reporting", "scopes": ["tickets.read"], "permissions_mode": "read_only" },
  "plan": { "name": "Growth", "features": { "ticket_system": true, "commerce": false } },
  "capabilities": {
    "available_action_count": 812,
    "blocked_actions": {
      "commerce.orders.list": "plan_locked:commerce",
      "tickets.reply":        "read_only"
    }
  }
}
اتصلي بي أولاً عندما يتصرف الإدماج بشكل مختلف بين شقين، يجيب على "لم لا يفعل هذا المفتاح" في طلب واحد، بدون أن يفتح أحد الإسمان.

تحديد السعر

commerce.quotes.create ويُعد سعراً واحداً لأحد الزبائن، ولا يخلق شيئاً - لا أمر، ولا جلسة للدفع، ولا يوجد رصيد محتفظ به - لذا فمن الآمن الاتصال بينما لا يزال الزبون يقرر.

يُرجى إدراج بند
POST /api/v1.php
Authorization: Bearer opq_your_api_key

# Your own Store
{"action":"commerce.quotes.create","source":"store","item_id":"12","quantity":2}

# A connected merchant platform, priced for a known customer
{"action":"commerce.quotes.create","source":"whmcs","item_id":"47",
 "fields":{"domain":"example.ng"},
 "customer":{"connector_customer_id":"1042"}}
مجموع التاجر يفوز

وبالنسبة لمنصة متصلة، يأتي المجموع من ذلك التاجر ولا يعاد حسابه هنا، حيث لا تضاعف الكمية دائماً سعر الوحدة - أي فندق يقتبس غرفة واحدة لثلاث ليال - لذا أظهر ما أعطيتموه من مجموع، وليس واحداً منهم.

"الرفضات تقول لك ما هو مفقود"

إذا كان التاجر يحتاج أكثر من الزبائن، تحصل على quote_refused مع missing قائمة تسمية الحقول لجمعها وكتابة التاجر الخاصة لتظهر

الأمر ليسAPIاتصلي

الاقتباس ارشادي ، الايمان يحدث عندما يكون الزبون هو البطاقة الموقّعة في الدردشة او مخرج التاجرAPIالرد يقول ذلك في ordering.

عندما يتم إيقاف البيع

إذا كان المتجر قد تم تحويله، اقتباس الإجابات selling_paused بدلاً من تسعير شيء لا أحد يستطيع شرائه

النقاط الأخرى

كل ما تحتاجه هو واحد من الـ "بي أو تي" /api/v1.phpهذه هي الاستثناءات، وما هو كل منها.

/api/v1/openapi.php · /api/v1/postman.php · /api/docs/

عقد الآلة و مرجع الإنسان لا حاجة للمفتاح حتى يمكنك أن تستكشف قبل أن يكون لديك واحد

/api/ai_stream.php

تظاهرات متوافقة مع سيرفر من أجل ردود الدردشة الحيّة كما تولد.JSONعمل.

/api/writing.php

نقطة النهاية القديمة لكتابة الـ "آي آي" كل ما تفعله متاح أيضاً writing.* الإجراءات المتخذة بشأن /api/v1.php, حيث يجب أن يذهب عمل جديد

/api/inbox_copilot.php

مشروع، إعادة كتابة ومحاولة لتذكرة في صندوق مدمج في الخاص بك.

/api/v1/si/…

Site Intelligence as a small RESTAPI- المواقع، الزحف، القضايا، الكلمات الرئيسية، الإيرادات - لخطوط الأنابيب التي تريد أن تبدأ زحف بعد نشرها وتقرأ النتيجة.

/api/connectors.php?slug=&token=

حيث يربط المنصّة الوصلة بكِ، تُطغى عليها (التوكن) عندما تمكّن من الاتصال.

/api/integrations/*.php

محرك التكامل: تشغيل وتأكيد الإجراءات، ومناسبات المبيعات والهوية والرحل، وهو يستخدم نوعه الرئيسي الخاص، الذي صدر في إطارهAPI(ويهوك)

💡
هذه كلها تطيع نفس قواعد الخطة كالأفعال402هنا أيضا، في نفس الشكل.

كل عمل، بالنطاق الذي يحتاجه

هذه القائمة يتم توليدها من الفهرس الجاري، لذلك فهي دائماً تتطابق مع النسخة التي أنت عليها. meta.actions يعيد نفس المعلومات مثل JSON.

2420 named actions: 804 reads, 1616 writes and 69 scopes. Every registered administrator JSON operation has a stable named action. OpenAPI: /api/v1/openapi.php. Postman: /api/v1/postman.php. Contract quality: declared_dynamic: 606; explicit: 63; route_inferred: 1633; source_inferred: 118.

administration (25)

administration.2fa.disable

Write. Scope: administration.write, admin. Contract: route_inferred. Admin 2fa Disable

administration.2fa.enable

Write. Scope: administration.write, admin. Contract: route_inferred. Admin 2fa Enable

administration.2fa.recovery.regenerate

Write. Scope: administration.write, admin. Contract: route_inferred. Admin 2fa Recovery Regenerate

administration.2fa.setup

Read. Scope: administration.read, admin. Contract: route_inferred. Admin 2fa Setup

administration.2fa.status

Read. Scope: administration.read, admin. Contract: declared_dynamic. Admin 2fa Status

administration.ai.train.from.reply

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Ai Train From Reply

administration.brain.cancel

Write. Scope: administration.write, admin. Contract: declared_dynamic. Admin Brain Cancel

administration.brain.view

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Brain View

administration.chat.access.check

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Chat Access Check

administration.chat.create.ticket.on.behalf

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Chat Create Ticket On Behalf

administration.chat.draft.ticket.from.thread

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Chat Draft Ticket From Thread

administration.conv.delete

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Conv Delete

administration.conv.get

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Conv Get

administration.conv.list

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Conv List

administration.conv.new

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Conv New

administration.conv.save

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Conv Save

administration.notification.prefs.get

Read. Scope: administration.read, admin. Contract: declared_dynamic. Admin Notification Prefs Get

administration.notification.prefs.save

Write. Scope: administration.write, admin. Contract: declared_dynamic. Admin Notification Prefs Save

administration.notifications.list

Read. Scope: administration.read, admin. Contract: route_inferred. Admin Notifications List

administration.notifications.mark.all.read

Write. Scope: administration.write, admin. Contract: declared_dynamic. Admin Notifications Mark All Read

administration.notifications.mark.read

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Notifications Mark Read

administration.notifications.pulse

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Notifications Pulse

administration.online.list

Read. Scope: administration.read, admin. Contract: declared_dynamic. Admin Online List

administration.presence.ping

Write. Scope: administration.write, admin. Contract: declared_dynamic. Admin Presence Ping

administration.realtime.token

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Realtime Token

محلل (43)

analytics.add.widget

Write. Scope: analytics.write, admin. Contract: route_inferred. Dashboard Add Widget

analytics.analytics.connectors.catalog

Read. Scope: analytics.read, admin. Contract: declared_dynamic. Analytics Connectors Catalog

analytics.analytics.data

Read. Scope: analytics.read, admin. Contract: route_inferred. Analytics Data

analytics.analytics.export

Read. Scope: analytics.read, admin. Contract: route_inferred. Analytics Export

analytics.analytics.export.csv

Read. Scope: analytics.read, admin. Contract: route_inferred. Analytics Export Csv

analytics.analytics.import

Write. Scope: analytics.write, admin. Contract: route_inferred. Analytics Import

analytics.analytics.report

Write. Scope: analytics.write, admin. Contract: route_inferred. Analytics Report

analytics.analytics.segments.delete

Write. Scope: analytics.write, admin. Contract: route_inferred. Analytics Segments Delete

analytics.analytics.segments.list

Read. Scope: analytics.read, admin. Contract: declared_dynamic. Analytics Segments List

analytics.analytics.segments.save

Write. Scope: analytics.write, admin. Contract: route_inferred. Analytics Segments Save

analytics.analytics.status

Read. Scope: analytics.read, admin. Contract: declared_dynamic. Analytics Status

analytics.clear.all

Write. Scope: analytics.write, admin. Contract: declared_dynamic. Replay Clear All

analytics.compute

Read. Scope: analytics.read, admin. Contract: route_inferred. Funnels Compute

analytics.create

Write. Scope: analytics.write, admin. Contract: route_inferred. Ab Test Create

analytics.create.route.dashboard.create

Write. Scope: analytics.write, admin. Contract: route_inferred. Dashboard Create

analytics.create.route.report.create

Write. Scope: analytics.write, admin. Contract: route_inferred. Report Create

analytics.delete

Write. Scope: analytics.write, admin. Contract: route_inferred. Ab Test Delete

analytics.delete.route.dashboard.delete

Write. Scope: analytics.write, admin. Contract: route_inferred. Dashboard Delete

analytics.delete.route.funnels.delete

Write. Scope: analytics.write, admin. Contract: route_inferred. Funnels Delete

analytics.delete.route.report.delete

Write. Scope: analytics.write, admin. Contract: route_inferred. Report Delete

analytics.events

Read. Scope: analytics.read, admin. Contract: route_inferred. Replay Events

analytics.export

Read. Scope: analytics.read, admin. Contract: source_inferred. Analytics Export

analytics.get

Read. Scope: analytics.read, admin. Contract: route_inferred. Dashboard Get

analytics.layout.save

Write. Scope: analytics.write, admin. Contract: route_inferred. Dashboard Layout Save

analytics.list

Read. Scope: analytics.read, admin. Contract: declared_dynamic. Ab Test List

analytics.list.route.dashboard.list

Read. Scope: analytics.read, admin. Contract: declared_dynamic. Dashboard List

analytics.list.route.funnels.list

Read. Scope: analytics.read, admin. Contract: declared_dynamic. Funnels List

analytics.list.route.report.list

Read. Scope: analytics.read, admin. Contract: declared_dynamic. Report List

analytics.remove.widget

Write. Scope: analytics.write, admin. Contract: route_inferred. Dashboard Remove Widget

analytics.rename

Write. Scope: analytics.write, admin. Contract: route_inferred. Dashboard Rename

analytics.results

Read. Scope: analytics.read, admin. Contract: route_inferred. Ab Test Results

analytics.save

Write. Scope: analytics.write, admin. Contract: route_inferred. Funnels Save

analytics.save.widgets

Write. Scope: analytics.write, admin. Contract: route_inferred. Dashboard Save Widgets

analytics.scheduled.list

Read. Scope: analytics.read, admin. Contract: explicit. List scheduled analytics reports for an operator Required fields: admin_id.

analytics.sections.list

Read. Scope: analytics.read, admin. Contract: explicit. List analytics report sections and date presets

analytics.send.now

Write. Scope: analytics.write, admin. Contract: route_inferred. Report Send Now

analytics.sessions

Read. Scope: analytics.read, admin. Contract: route_inferred. Replay Sessions

analytics.step.visitors

Read. Scope: analytics.read, admin. Contract: route_inferred. Funnels Step Visitors

analytics.timeline

Read. Scope: analytics.read, admin. Contract: route_inferred. Replay Timeline

analytics.toggle.shared

Write. Scope: analytics.write, admin. Contract: route_inferred. Dashboard Toggle Shared

analytics.update

Write. Scope: analytics.write, admin. Contract: route_inferred. Ab Test Update

analytics.update.route.report.update

Write. Scope: analytics.write, admin. Contract: route_inferred. Report Update

analytics.widget.data

Read. Scope: analytics.read, admin. Contract: route_inferred. Dashboard Widget Data

automations (6)

automations.actions.list

Read. Scope: automations.read, admin. Contract: explicit. List integration actions

automations.delete

Write. Scope: automations.write, admin. Contract: route_inferred. Workflow Delete

automations.list

Read. Scope: automations.read, admin. Contract: route_inferred. Workflow List

automations.runs.list

Read. Scope: automations.read, admin. Contract: explicit. List automation execution history

automations.save

Write. Scope: automations.write, admin. Contract: route_inferred. Workflow Save

automations.triggers.list

Read. Scope: automations.read, admin. Contract: explicit. List integration triggers

دردشة (40)

chat.call.start

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Call Start

chat.cobrowse.send

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Cobrowse Send

chat.feedback

Read. Scope: chat.read, admin. Contract: route_inferred. Chat Feedback

chat.feedback.digest

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Feedback Digest

chat.form.delete

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Form Delete

chat.form.get

Read. Scope: chat.read, admin. Contract: route_inferred. Chat Form Get

chat.form.list

Read. Scope: chat.read, admin. Contract: declared_dynamic. Chat Form List

chat.form.save

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Form Save

chat.form.set.default

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Form Set Default

chat.meeting.decide

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Meeting Decide

chat.meeting.outcome.set

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Meeting Outcome Set

chat.meeting.type.delete

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Meeting Type Delete

chat.meeting.type.save

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Meeting Type Save

chat.meeting.types.list

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Meeting Types List

chat.meetings.list

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Meetings List

chat.online.admins

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Online Admins

chat.permissions.list

Write. Scope: admin. Contract: route_inferred. Chat Permissions List

chat.permissions.revoke

Write. Scope: admin. Contract: route_inferred. Chat Permissions Revoke

chat.permissions.save

Write. Scope: admin. Contract: route_inferred. Chat Permissions Save

chat.permissions.upload.avatar

Write. Scope: admin. Contract: route_inferred. Chat Permissions Upload Avatar

chat.reaction.toggle

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Reaction Toggle

chat.saved_replies.add

Write. Scope: chat.write, admin. Contract: source_inferred. Chat Saved Replies Add Retry-safe with idempotency_key.

chat.saved_replies.list

Read. Scope: chat.read, admin. Contract: explicit. List workspace and personal saved replies

chat.saved_replies.save

Write. Scope: chat.write, admin. Contract: source_inferred. Chat Saved Replies Save Retry-safe with idempotency_key.

chat.set.persona

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Set Persona

chat.snooze.clear

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Snooze Clear

chat.snooze.set

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Snooze Set

chat.transfer.thread

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Transfer Thread

chat.transfer.unread

Write. Scope: chat.write, admin. Contract: declared_dynamic. Chat Transfer Unread

chat.typing.preview

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Typing Preview

chat.whisper.ai.summary

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Whisper Ai Summary

chat.whisper.controls

Write. Scope: chat.write, admin. Contract: declared_dynamic. Chat Whisper Controls

chat.whisper.delete.room

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Whisper Delete Room

chat.whisper.list

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Whisper List

chat.whisper.mentions

Write. Scope: chat.write, admin. Contract: declared_dynamic. Chat Whisper Mentions

chat.whisper.rooms

Write. Scope: chat.write, admin. Contract: declared_dynamic. Chat Whisper Rooms

chat.whisper.save.controls

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Whisper Save Controls

chat.whisper.send

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Whisper Send

chat.whisper.targets

Write. Scope: chat.write, admin. Contract: declared_dynamic. Chat Whisper Targets

chat.whisper.unread

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Whisper Unread

التجارة (11)

commerce.analytics.snapshot

Read. Scope: commerce.read, analytics.read, admin. Contract: explicit. Read privacy-safe storefront analytics

commerce.orders.get

Read. Scope: commerce.read, admin. Contract: explicit. Get one Store order with its line items

commerce.orders.list

Read. Scope: commerce.read, admin. Contract: explicit. List Store orders in the bound workspace

commerce.pages.list

Read. Scope: commerce.read, admin. Contract: explicit. List storefront pages and promotional modals

commerce.products.get

Read. Scope: commerce.read, admin. Contract: explicit. Get one Store product with its variants Required fields: product_id.

commerce.products.list

Read. Scope: commerce.read, admin. Contract: explicit. List Store products in the bound workspace

commerce.quotes.create

Write. Scope: commerce.write, admin. Contract: explicit. Quote an item for a customer (creates nothing) Required fields: source, item_id. Retry-safe with idempotency_key.

commerce.readiness.get

Read. Scope: commerce.read, admin. Contract: explicit. Check demo readiness and merchant go-live readiness

commerce.refunds.list

Read. Scope: commerce.read, admin. Contract: explicit. List Store refund requests in the bound workspace

commerce.storefront.catalog.get

Read. Scope: commerce.read, admin. Contract: explicit. Discover Store themes, designs, blocks and promotional shells

commerce.storefront.get

Read. Scope: commerce.read, admin. Contract: explicit. Get the bound workspace storefront configuration

communications (21)

communications.auth.check

Read. Scope: admin. Contract: route_inferred. Email Auth Check

communications.campaign.delete

Write. Scope: communications.write, admin. Contract: route_inferred. Push Campaign Delete

communications.campaign.save

Write. Scope: communications.write, admin. Contract: route_inferred. Push Campaign Save

communications.campaign.send

Write. Scope: communications.write, admin. Contract: route_inferred. Push Campaign Send

communications.campaigns.list

Read. Scope: communications.read, admin. Contract: declared_dynamic. Push Campaigns List

communications.drafts.delete

Write. Scope: communications.write, admin. Contract: route_inferred. Email Drafts Delete

communications.drafts.list

Read. Scope: communications.read, admin. Contract: declared_dynamic. Email Drafts List

communications.drafts.save

Write. Scope: communications.write, admin. Contract: route_inferred. Email Drafts Save

communications.drafts.send

Write. Scope: communications.write, admin. Contract: route_inferred. Email Drafts Send

communications.mailboxes.delete

Write. Scope: communications.write, admin. Contract: route_inferred. Email Mailboxes Delete

communications.mailboxes.list

Read. Scope: communications.read, admin. Contract: route_inferred. Email Mailboxes List

communications.mailboxes.poll

Read. Scope: communications.read, admin. Contract: declared_dynamic. Email Mailboxes Poll

communications.mailboxes.save

Write. Scope: communications.write, admin. Contract: route_inferred. Email Mailboxes Save

communications.mailboxes.test

Read. Scope: communications.read, admin. Contract: declared_dynamic. Email Mailboxes Test

communications.pipe.regen.token

Write. Scope: communications.write, admin. Contract: declared_dynamic. Email Pipe Regen Token

communications.platform.list

Read. Scope: communications.read, admin. Contract: declared_dynamic. Email Platform List

communications.platform.send

Write. Scope: communications.write, admin. Contract: route_inferred. Email Platform Send

communications.settings.get

Read. Scope: communications.read, admin. Contract: declared_dynamic. Email Settings Get

communications.settings.save

Write. Scope: communications.write, admin. Contract: route_inferred. Email Settings Save

communications.settings.test

Read. Scope: communications.read, admin. Contract: route_inferred. Email Settings Test

communications.vapid.generate

Write. Scope: communications.write, admin. Contract: declared_dynamic. Push Vapid Generate

connector_builder (11)

connector_builder.export

Read. Scope: connector_builder.read, admin. Contract: explicit. Export a generated connector Required fields: slug.

connector_builder.generate

Write. Scope: connector_builder.write, admin. Contract: route_inferred. Generate a connector package Required fields: spec.

connector_builder.get

Read. Scope: connector_builder.read, admin. Contract: route_inferred. Load a Builder specification Required fields: slug.

connector_builder.import.curl

Write. Scope: connector_builder.write, admin. Contract: route_inferred. Import cURL into Connector Builder

connector_builder.import.openapi

Write. Scope: connector_builder.write, admin. Contract: route_inferred. Import OpenAPI into Connector Builder

connector_builder.import.postman

Write. Scope: connector_builder.write, admin. Contract: route_inferred. Import Postman into Connector Builder

connector_builder.list

Read. Scope: connector_builder.read, admin. Contract: declared_dynamic. List Builder connectors

connector_builder.profiles

Read. Scope: connector_builder.read, connectors.read, admin. Contract: source_inferred. List Connector Builder profiles and capability contracts

connector_builder.test

Write. Scope: connector_builder.write, admin. Contract: route_inferred. Run Builder conformance tests Required fields: slug.

connector_builder.update

Write. Scope: connector_builder.write, admin. Contract: route_inferred. Update a generated connector Required fields: slug, spec.

connector_builder.validate

Read. Scope: connector_builder.read, admin. Contract: route_inferred. Validate a Builder specification Required fields: spec.

connectors (51)

connectors.action

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Action

connectors.backfill

Write. Scope: connectors.write, admin. Contract: route_inferred. Start connector backfill Required fields: slug.

connectors.backfill.route.connectors.backfill

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Backfill

connectors.backfill.status

Read. Scope: connectors.read, admin. Contract: route_inferred. Read connector backfill status Required fields: slug.

connectors.backfill.status.route.connectors.backfill.status

Read. Scope: connectors.read, admin. Contract: route_inferred. Connectors Backfill Status

connectors.builder.ai.actions

Read. Scope: connectors.read, admin. Contract: route_inferred. Connectors Builder Ai Actions

connectors.builder.ai.draft

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Builder Ai Draft

connectors.builder.ai.handler

Read. Scope: connectors.read, admin. Contract: route_inferred. Connectors Builder Ai Handler

connectors.builder.ai.map

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Builder Ai Map

connectors.builder.delete

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Builder Delete

connectors.builder.dry.run

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Builder Dry Run

connectors.builder.generate

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Builder Generate

connectors.builder.import.curl

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Builder Import Curl

connectors.builder.import.openapi

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Builder Import Openapi

connectors.builder.import.postman

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Builder Import Postman

connectors.builder.list

Read. Scope: connectors.read, admin. Contract: declared_dynamic. Connectors Builder List

connectors.builder.load

Read. Scope: connectors.read, admin. Contract: route_inferred. Connectors Builder Load

connectors.builder.marketplace.apply

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Builder Marketplace Apply

connectors.builder.marketplace.link

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Builder Marketplace Link

connectors.builder.marketplace.status

Read. Scope: connectors.read, admin. Contract: declared_dynamic. Connectors Builder Marketplace Status

connectors.builder.marketplace.submit

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Builder Marketplace Submit

connectors.builder.schema

Read. Scope: connectors.read, admin. Contract: declared_dynamic. Connectors Builder Schema

connectors.builder.test

Read. Scope: connectors.read, admin. Contract: route_inferred. Connectors Builder Test

connectors.builder.test.action

Read. Scope: connectors.read, admin. Contract: route_inferred. Connectors Builder Test Action

connectors.builder.update

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Builder Update

connectors.builder.validate

Read. Scope: connectors.read, admin. Contract: route_inferred. Connectors Builder Validate

connectors.contacts.import

Write. Scope: connectors.write, admin. Contract: route_inferred. Connector Contacts Import

connectors.contract

Read. Scope: connectors.read, connector_builder.read, admin. Contract: source_inferred. Read the canonical connector capability contract

connectors.customers.sync

Write. Scope: connectors.write, admin. Contract: route_inferred. Synchronize connector customers Required fields: slug.

connectors.disable

Write. Scope: connectors.write, admin. Contract: route_inferred. Disable a connector Required fields: slug.

connectors.disable.route.connectors.disable

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Disable

connectors.email.account.department

Read. Scope: connectors.read, admin. Contract: route_inferred. Connector Email Account Department

connectors.email.account.remove

Write. Scope: connectors.write, admin. Contract: route_inferred. Connector Email Account Remove

connectors.email.account.routing

Read. Scope: connectors.read, admin. Contract: route_inferred. Connector Email Account Routing

connectors.enable

Write. Scope: connectors.write, admin. Contract: route_inferred. Enable a connector Required fields: slug.

connectors.enable.route.connectors.enable

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Enable

connectors.get

Read. Scope: connectors.read, admin. Contract: source_inferred. Connectors Get

connectors.get.route.connectors.get

Read. Scope: connectors.read, admin. Contract: route_inferred. Connectors Get

connectors.install

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Install

connectors.integrity.scan

Read. Scope: connectors.read, admin. Contract: declared_dynamic. Connector Integrity Scan

connectors.list

Read. Scope: connectors.read, admin. Contract: explicit. List installed connectors and capabilities

connectors.list.route.connectors.list

Read. Scope: connectors.read, admin. Contract: declared_dynamic. Connectors List

connectors.oauth.start

Write. Scope: connectors.write, admin. Contract: route_inferred. Connector Oauth Start

connectors.settings.get

Read. Scope: connectors.read, admin. Contract: route_inferred. Read connector settings Required fields: slug.

connectors.settings.save

Write. Scope: connectors.write, admin. Contract: route_inferred. Save connector settings Required fields: slug, settings.

connectors.shared.oauth.delete

Write. Scope: connectors.write, admin. Contract: route_inferred. Connector Shared Oauth Delete

connectors.sync.customers

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Sync Customers

connectors.test

Read. Scope: connectors.read, admin. Contract: source_inferred. Connectors Test

connectors.test.route.connectors.test

Read. Scope: connectors.read, admin. Contract: route_inferred. Connectors Test

connectors.uninstall

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Uninstall

connectors.workflow.recipes

Read. Scope: connectors.read, admin. Contract: route_inferred. Connectors Workflow Recipes

conversations (38)

conversations.ai.draft

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Ai Draft

conversations.ai.rewrite

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Ai Rewrite

conversations.archive

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Archive

conversations.assign

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Assign

conversations.assignees

Write. Scope: conversations.write, admin. Contract: declared_dynamic. Admin Client Chat Assignees

conversations.bulk

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Bulk

conversations.clear

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Clear

conversations.clear.all

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Clear All

conversations.customer.tickets

Write. Scope: conversations.write, admin. Contract: declared_dynamic. Admin Client Chat Customer Tickets

conversations.decline

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Decline

conversations.delete

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Delete

conversations.delete.last

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Delete Last

conversations.edit.last

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Edit Last

conversations.export

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Export

conversations.forget.visitor

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Forget Visitor

conversations.get

Read. Scope: conversations.read, admin. Contract: source_inferred. Conversations Get

conversations.history

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat History

conversations.list

Read. Scope: conversations.read, admin. Contract: source_inferred. Conversations List

conversations.messages

Read. Scope: conversations.read, admin. Contract: source_inferred. Conversations Messages

conversations.ratings.list

Read. Scope: conversations.read, admin. Contract: explicit. List rated Client Chat conversations

conversations.resolve

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Resolve

conversations.saved.replies

Write. Scope: conversations.write, admin. Contract: declared_dynamic. Admin Client Chat Saved Replies

conversations.saved.reply.add

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Saved Reply Add

conversations.saved.reply.ai.generate

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Saved Reply Ai Generate

conversations.saved.reply.delete

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Saved Reply Delete

conversations.saved.reply.save

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Saved Reply Save

conversations.send

Write. Scope: conversations.write, admin. Contract: source_inferred. Conversations Send Retry-safe with idempotency_key.

conversations.send.route.admin.client.chat.send

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Send

conversations.tags.set

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Tags Set

conversations.thread

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Thread

conversations.threads

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Threads

conversations.toggle

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Toggle

conversations.toggle.attachments

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Toggle Attachments

conversations.toggle.call.button

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Toggle Call Button

conversations.typing

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Typing

conversations.unarchive

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Unarchive

conversations.update

Write. Scope: conversations.write, admin. Contract: explicit. Update a conversation status, assignment or subject Retry-safe with idempotency_key.

conversations.upload

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Upload

نظام إدارة علاقات العملاء (260)

crm.ab.results

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Ab Results

crm.access.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Access Set

crm.access_log.list

Read. Scope: admin. Contract: source_inferred. Crm Access Log List

crm.account.health

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Account Health

crm.account.health.board

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Account Health Board

crm.account.health.refresh

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Account Health Refresh

crm.account.plan.get

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Account Plan Get

crm.account.plan.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Account Plan Save

crm.account.plans.due

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Account Plans Due

crm.account.timeline

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Account Timeline

crm.activities.list

Read. Scope: crm.read. Contract: explicit. List CRM contact activities

crm.activities.record

Write. Scope: crm.write. Contract: explicit. Record a CRM contact activity Required fields: contact_id, activity_type. Retry-safe with idempotency_key.

crm.activity.feed

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Activity Feed

crm.agent.toggle

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Agent Toggle

crm.ai.policy.get

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Ai Policy Get

crm.ai.policy.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Ai Policy Save

crm.ai.policy.simulate

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Ai Policy Simulate

crm.ai.trace

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Ai Trace

crm.approval.decide

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Approval Decide

crm.approval.delegate.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Approval Delegate Set

crm.approval.list

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Approval List

crm.approval.policy.get

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Approval Policy Get

crm.approval.policy.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Approval Policy Save

crm.approval.settings

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Approval Settings

crm.approve.apply

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Approve Apply

crm.approve.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Approve List

crm.approve.reject

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Approve Reject

crm.approve.update

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Approve Update

crm.ask

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Ask

crm.assign.owner

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Assign Owner

crm.assignment.get

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Assignment Get

crm.assignment.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Assignment Save

crm.attachment.delete

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Attachment Delete

crm.attachment.list

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Attachment List

crm.attachment.upload

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Attachment Upload

crm.autobook.meeting

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Autobook Meeting

crm.autodeal.mode

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Autodeal Mode

crm.book.meeting

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Book Meeting

crm.booking.link.save

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Booking Link Save

crm.booking.links.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Booking Links List

crm.build.apply

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Build Apply

crm.build.get

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Build Get

crm.build.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Build List

crm.build.plan

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Build Plan

crm.build.rollback

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Build Rollback

crm.bulk

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Bulk

crm.bundle.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Bundle Set

crm.calendar.status

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Calendar Status

crm.capture.status

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Capture Status

crm.comm.policy.get

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Comm Policy Get

crm.comm.policy.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Comm Policy Save

crm.command.snapshot

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Command Snapshot

crm.companies.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Companies List

crm.company.hierarchy

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Company Hierarchy

crm.company.save

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Company Save

crm.company.set.parent

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Company Set Parent

crm.company.suggest.related

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Company Suggest Related

crm.connectors.catalog

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Connectors Catalog

crm.consent_log.list

Read. Scope: crm.read. Contract: source_inferred. Crm Consent Log List

crm.contact.churn

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Contact Churn

crm.contact.draft.email

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Contact Draft Email

crm.contact.enrich

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Contact Enrich

crm.contact.propose.email

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Contact Propose Email

crm.contacts.detail

Read. Scope: crm.read. Contract: source_inferred. Crm Contacts Detail

crm.contacts.erase

Write. Scope: admin. Contract: source_inferred. Crm Contacts Erase Retry-safe with idempotency_key.

crm.contacts.export

Read. Scope: crm.read. Contract: source_inferred. Crm Contacts Export

crm.contacts.import.list

Read. Scope: crm.read. Contract: source_inferred. Crm Contacts Import List

crm.contacts.import.run

Write. Scope: crm.write. Contract: source_inferred. Crm Contacts Import Run Retry-safe with idempotency_key.

crm.contacts.list

Read. Scope: crm.read. Contract: source_inferred. Crm Contacts List

crm.contacts.next_action

Read. Scope: crm.read. Contract: source_inferred. Crm Contacts Next Action

crm.contacts.open_chat

Write. Scope: crm.write. Contract: source_inferred. Crm Contacts Open Chat Retry-safe with idempotency_key.

crm.contacts.open_ticket

Write. Scope: crm.write. Contract: source_inferred. Crm Contacts Open Ticket Retry-safe with idempotency_key.

crm.contacts.resync

Write. Scope: crm.write. Contract: source_inferred. Crm Contacts Resync Retry-safe with idempotency_key.

crm.contacts.save

Write. Scope: crm.write. Contract: source_inferred. Crm Contacts Save Retry-safe with idempotency_key.

crm.contacts.send_email

Write. Scope: crm.write. Contract: source_inferred. Crm Contacts Send Email Retry-safe with idempotency_key.

crm.contacts.upsert

Write. Scope: crm.write. Contract: explicit. Crm Contacts Upsert Required fields: email. Retry-safe with idempotency_key.

crm.contract.amend

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Contract Amend

crm.contract.price.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Contract Price Set

crm.contract.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Contract Save

crm.contract.usage

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Contract Usage

crm.contracts.list

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Contracts List

crm.conversation.intel

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Conversation Intel

crm.conversions.goals.delete

Write. Scope: crm.write. Contract: source_inferred. Crm Conversions Goals Delete Retry-safe with idempotency_key.

crm.conversions.goals.list

Read. Scope: crm.read. Contract: source_inferred. Crm Conversions Goals List

crm.conversions.goals.save

Write. Scope: crm.write. Contract: source_inferred. Crm Conversions Goals Save Retry-safe with idempotency_key.

crm.conversions.list

Read. Scope: crm.read. Contract: source_inferred. Crm Conversions List

crm.conversions.record

Write. Scope: crm.write. Contract: source_inferred. Crm Conversions Record Retry-safe with idempotency_key.

crm.create.video.meeting

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Create Video Meeting

crm.customer.auto.sync

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Customer Auto Sync

crm.customer.auto.sync.status

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Customer Auto Sync Status

crm.customer.emails

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Customer Emails

crm.customer.payments

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Customer Payments

crm.data.steward.bulk.propose

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Data Steward Bulk Propose

crm.data.steward.inbox

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Data Steward Inbox

crm.data.steward.propose

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Data Steward Propose

crm.deal.advance

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Deal Advance

crm.deal.coach

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Deal Coach

crm.deal.coach.action

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Deal Coach Action

crm.deal.get

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Deal Get

crm.deal.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Deal Save

crm.deal.splits.get

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Deal Splits Get

crm.deal.splits.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Deal Splits Set

crm.deals.advance

Write. Scope: crm.write. Contract: explicit. Advance a CRM deal to another stage Required fields: deal_id, stage_id. Retry-safe with idempotency_key.

crm.deals.create

Write. Scope: crm.write. Contract: explicit. Create a CRM deal Required fields: title. Retry-safe with idempotency_key.

crm.deals.detail

Read. Scope: crm.read. Contract: explicit. Get one CRM deal Required fields: deal_id.

crm.deals.list

Read. Scope: crm.read. Contract: explicit. List CRM deals

crm.deals.list.route.crm.deals.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Deals List

crm.deals.update

Write. Scope: crm.write. Contract: explicit. Update a CRM deal Required fields: deal_id. Retry-safe with idempotency_key.

crm.detail

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Detail

crm.draft.outreach

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Draft Outreach

crm.enrich.account

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Enrich Account

crm.erase

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Erase

crm.events.catalog

Read. Scope: crm.read. Contract: explicit. List subscribable CRM domain events

crm.events.list

Read. Scope: crm.read. Contract: explicit. List durable CRM domain events

crm.export

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Export

crm.export.all

Read. Scope: crm.read, admin. Contract: route_inferred. Contact Export All

crm.field.add

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Field Add

crm.field.policy.get

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Field Policy Get

crm.field.policy.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Field Policy Save

crm.field.remove

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Field Remove

crm.fields.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Fields List

crm.forecast.board

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Forecast Board

crm.forecast.snapshot

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Forecast Snapshot

crm.form.save

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Form Save

crm.forms.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Forms List

crm.health.repair.catalog

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Health Repair Catalog

crm.health.smoke

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Health Smoke

crm.health.snapshot

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Health Snapshot

crm.home.persona.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Home Persona Set

crm.identity.rules.get

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Identity Rules Get

crm.identity.rules.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Identity Rules Save

crm.import.list

Read. Scope: crm.read, admin. Contract: route_inferred. Contact Import List

crm.import.run

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Import Run

crm.inbound.activity

Read. Scope: crm.read. Contract: source_inferred. Crm Inbound Activity

crm.inbound.endpoints.delete

Write. Scope: crm.write. Contract: source_inferred. Crm Inbound Endpoints Delete Retry-safe with idempotency_key.

crm.inbound.endpoints.list

Read. Scope: crm.read. Contract: source_inferred. Crm Inbound Endpoints List

crm.inbound.endpoints.save

Write. Scope: crm.write. Contract: source_inferred. Crm Inbound Endpoints Save Retry-safe with idempotency_key.

crm.inbound.endpoints.test

Write. Scope: crm.write. Contract: source_inferred. Crm Inbound Endpoints Test Retry-safe with idempotency_key.

crm.leaderboard

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Leaderboard

crm.lifecycle.evaluate

Write. Scope: crm.write. Contract: source_inferred. Crm Lifecycle Evaluate Retry-safe with idempotency_key.

crm.lifecycle.rules.delete

Write. Scope: crm.write. Contract: source_inferred. Crm Lifecycle Rules Delete Retry-safe with idempotency_key.

crm.lifecycle.rules.list

Read. Scope: crm.read. Contract: source_inferred. Crm Lifecycle Rules List

crm.lifecycle.rules.save

Write. Scope: crm.write. Contract: source_inferred. Crm Lifecycle Rules Save Retry-safe with idempotency_key.

crm.list

Read. Scope: crm.read, admin. Contract: route_inferred. Contacts List

crm.mailbox.status

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Mailbox Status

crm.meeting.book

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Meeting Book

crm.meeting.cancel

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Meeting Cancel

crm.meeting.list

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Meeting List

crm.meeting.reschedule.accept

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Meeting Reschedule Accept

crm.meeting.reschedule.reject

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Meeting Reschedule Reject

crm.merge

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Merge

crm.message.send

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Message Send

crm.messaging.provider.delete

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Messaging Provider Delete

crm.messaging.provider.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Messaging Provider Save

crm.messaging.provider.test

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Messaging Provider Test

crm.messaging.status

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Messaging Status

crm.next.action

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Next Action

crm.object.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Object Save

crm.objects.list

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Objects List

crm.offline.pull

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Offline Pull

crm.offline.push

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Offline Push

crm.open.chat

Read. Scope: crm.read, admin. Contract: route_inferred. Contact Open Chat

crm.open.ticket

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Open Ticket

crm.outreach.campaigns.delete

Write. Scope: crm.write. Contract: source_inferred. Crm Outreach Campaigns Delete Retry-safe with idempotency_key.

crm.outreach.campaigns.list

Read. Scope: crm.read. Contract: source_inferred. Crm Outreach Campaigns List

crm.outreach.campaigns.save

Write. Scope: crm.write. Contract: source_inferred. Crm Outreach Campaigns Save Retry-safe with idempotency_key.

crm.outreach.campaigns.send

Write. Scope: crm.write. Contract: source_inferred. Crm Outreach Campaigns Send Retry-safe with idempotency_key.

crm.outreach.send

Write. Scope: crm.write. Contract: source_inferred. Crm Outreach Send Retry-safe with idempotency_key.

crm.outreach.templates.delete

Write. Scope: crm.write. Contract: source_inferred. Crm Outreach Templates Delete Retry-safe with idempotency_key.

crm.outreach.templates.list

Read. Scope: crm.read. Contract: source_inferred. Crm Outreach Templates List

crm.outreach.templates.preview

Read. Scope: crm.read. Contract: source_inferred. Crm Outreach Templates Preview

crm.outreach.templates.save

Write. Scope: crm.write. Contract: source_inferred. Crm Outreach Templates Save Retry-safe with idempotency_key.

crm.payments.status

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Payments Status

crm.pipeline.data

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Pipeline Data

crm.price.resolve

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Price Resolve

crm.pricebook.entry.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Pricebook Entry Set

crm.pricebook.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Pricebook Save

crm.pricebooks.list

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Pricebooks List

crm.privacy_settings.get

Read. Scope: crm.read. Contract: source_inferred. Crm Privacy Settings Get

crm.privacy_settings.save

Write. Scope: admin. Contract: source_inferred. Crm Privacy Settings Save Retry-safe with idempotency_key.

crm.product.archive

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Product Archive

crm.product.revenue

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Product Revenue

crm.product.save

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Product Save

crm.products.list

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Products List

crm.propose.meeting

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Propose Meeting

crm.propose.outreach

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Propose Outreach

crm.prospecting.dashboard

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Prospecting Dashboard

crm.prospecting.icp.save

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Prospecting Icp Save

crm.prospecting.import

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Prospecting Import

crm.prospecting.research

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Prospecting Research

crm.prospecting.score

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Prospecting Score

crm.prospecting.sequence

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Prospecting Sequence

crm.qualification.checklist.get

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Qualification Checklist Get

crm.qualification.checklist.save

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Qualification Checklist Save

crm.quota.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Quota Save

crm.quote.get

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Quote Get

crm.quote.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Quote Save

crm.quotes.list

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Quotes List

crm.record.delete

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Record Delete

crm.record.fields.get

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Record Fields Get

crm.record.fields.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Record Fields Save

crm.record.get

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Record Get

crm.record.history

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Record History

crm.record.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Record Save

crm.record.share.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Record Share Set

crm.record.share.unset

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Record Share Unset

crm.record.shares

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Record Shares

crm.records.list

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Records List

crm.restore.email.consent

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Restore Email Consent

crm.resync.from.platform

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Resync From Platform

crm.retention.catalog

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Retention Catalog

crm.revert

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Revert

crm.runtime.policy.get

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Runtime Policy Get

crm.runtime.policy.remote.wipe

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Runtime Policy Remote Wipe

crm.runtime.policy.save

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Runtime Policy Save

crm.save

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Save

crm.scoring.rule.ai

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Scoring Rule Ai

crm.scoring.rule.delete

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Scoring Rule Delete

crm.scoring.rule.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Scoring Rule List

crm.scoring.rule.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Scoring Rule Save

crm.segments.delete

Write. Scope: crm.write. Contract: source_inferred. Crm Segments Delete Retry-safe with idempotency_key.

crm.segments.list

Read. Scope: crm.read. Contract: source_inferred. Crm Segments List

crm.segments.members

Read. Scope: crm.read. Contract: source_inferred. Crm Segments Members

crm.segments.preview

Read. Scope: crm.read. Contract: source_inferred. Crm Segments Preview

crm.segments.save

Write. Scope: crm.write. Contract: source_inferred. Crm Segments Save Retry-safe with idempotency_key.

crm.segments.suggestions.accept

Write. Scope: crm.write. Contract: source_inferred. Crm Segments Suggestions Accept Retry-safe with idempotency_key.

crm.segments.suggestions.dismiss

Write. Scope: crm.write. Contract: source_inferred. Crm Segments Suggestions Dismiss Retry-safe with idempotency_key.

crm.segments.suggestions.list

Read. Scope: crm.read. Contract: source_inferred. Crm Segments Suggestions List

crm.semantic.search

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Semantic Search

crm.send.email

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Send Email

crm.send.email.route.crm.send.email

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Send Email

crm.send.for.signature

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Send For Signature

crm.send.payment.link

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Send Payment Link

crm.sequence.action

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Sequence Action

crm.sequence.runs

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Sequence Runs

crm.setup.status

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Setup Status

crm.sharing.rules.get

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Sharing Rules Get

crm.sharing.rules.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Sharing Rules Save

crm.subject.registry

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Subject Registry

crm.subscriptions.list

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Subscriptions List

crm.subscriptions.rollup

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Subscriptions Rollup

crm.subscriptions.sync

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Subscriptions Sync

crm.task.create

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Task Create

crm.tasks.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Tasks List

crm.team.parent.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Team Parent Set

crm.team.rules.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Team Rules Set

crm.team.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Team Save

crm.teams.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Teams List

crm.territory.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Territory Set

crm.video.status

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Video Status

crm.views.delete

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Views Delete

crm.views.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Views List

crm.views.save

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Views Save

crm.webhooks.delete

Write. Scope: crm.write. Contract: source_inferred. Crm Webhooks Delete Retry-safe with idempotency_key.

crm.webhooks.list

Read. Scope: crm.read. Contract: explicit. List CRM outbound webhook endpoints and recent deliveries

crm.webhooks.save

Write. Scope: crm.write. Contract: source_inferred. Crm Webhooks Save Retry-safe with idempotency_key.

crm.webhooks.test

Write. Scope: crm.write. Contract: source_inferred. Crm Webhooks Test Retry-safe with idempotency_key.

crm.workflows.delete

Write. Scope: crm.write. Contract: source_inferred. Crm Workflows Delete Retry-safe with idempotency_key.

crm.workflows.list

Read. Scope: crm.read. Contract: source_inferred. Crm Workflows List

crm.workflows.save

Write. Scope: crm.write. Contract: source_inferred. Crm Workflows Save Retry-safe with idempotency_key.

العملاء (44)

customers.analyze

Write. Scope: customers.write, journey.write, admin. Contract: route_inferred. Analyze a customer journey with AI Required fields: client_id.

customers.behaviour

Read. Scope: admin. Contract: route_inferred. Cdp Behaviour

customers.behaviour.analyze

Write. Scope: admin. Contract: route_inferred. Cdp Behaviour Analyze

customers.chat.embed.backfill

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Embed Backfill

customers.chat.embed.status

Read. Scope: customers.read, admin. Contract: declared_dynamic. Client Chat Embed Status

customers.chat.faq.ai.generate

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Faq Ai Generate

customers.chat.faq.approve.all

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Faq Approve All

customers.chat.faq.delete

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Faq Delete

customers.chat.faq.delete.all

Write. Scope: customers.write, admin. Contract: declared_dynamic. Client Chat Faq Delete All

customers.chat.faq.export

Write. Scope: customers.write, admin. Contract: declared_dynamic. Client Chat Faq Export

customers.chat.faq.generate

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Faq Generate

customers.chat.faq.import

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Faq Import

customers.chat.faq.list

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Faq List

customers.chat.faq.save

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Faq Save

customers.chat.faq.set.help

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Faq Set Help

customers.chat.faq.set.help.all

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Faq Set Help All

customers.chat.faq.status

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Faq Status

customers.chat.grant.upload

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Grant Upload

customers.chat.help.set.slug

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Help Set Slug

customers.chat.knowledge.crawl.step

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Knowledge Crawl Step

customers.chat.knowledge.delete

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Knowledge Delete

customers.chat.knowledge.delete.all

Write. Scope: customers.write, admin. Contract: declared_dynamic. Client Chat Knowledge Delete All

customers.chat.knowledge.delete.duplicates

Write. Scope: customers.write, admin. Contract: declared_dynamic. Client Chat Knowledge Delete Duplicates

customers.chat.knowledge.duplicates

Write. Scope: customers.write, admin. Contract: declared_dynamic. Client Chat Knowledge Duplicates

customers.chat.knowledge.export.json

Write. Scope: customers.write, admin. Contract: declared_dynamic. Client Chat Knowledge Export Json

customers.chat.knowledge.import.json

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Knowledge Import Json

customers.chat.knowledge.preview

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Knowledge Preview

customers.chat.knowledge.recrawl

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Knowledge Recrawl

customers.chat.knowledge.test.url

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Knowledge Test Url

customers.chat.revoke.upload

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Revoke Upload

customers.chat.upload.agent.avatar

Write. Scope: customers.write, admin. Contract: declared_dynamic. Client Chat Upload Agent Avatar

customers.chat.upload.ai.avatar

Write. Scope: customers.write, admin. Contract: declared_dynamic. Client Chat Upload Ai Avatar

customers.chat.upload.icon

Write. Scope: customers.write, admin. Contract: declared_dynamic. Client Chat Upload Icon

customers.client.analyze

Write. Scope: admin. Contract: route_inferred. Cdp Client Analyze

customers.client.delete

Write. Scope: admin. Contract: route_inferred. Cdp Client Delete

customers.client.export

Write. Scope: admin. Contract: route_inferred. Cdp Client Export

customers.client.journey

Read. Scope: admin. Contract: route_inferred. Cdp Client Journey

customers.client.prepare.outreach

Write. Scope: customers.write, admin. Contract: route_inferred. Cdp Client Prepare Outreach

customers.clients.list

Read. Scope: admin. Contract: route_inferred. Cdp Clients List

customers.detail

Read. Scope: customers.read, admin. Contract: route_inferred. Client Detail

customers.get

Read. Scope: customers.read, crm.read, admin. Contract: route_inferred. Get a customer profile Required fields: client_id.

customers.journey

Read. Scope: customers.read, journey.read, admin. Contract: route_inferred. Get a complete customer journey Required fields: client_id.

customers.list

Read. Scope: customers.read, crm.read, admin. Contract: route_inferred. List known customers

customers.outreach.prepare

Write. Scope: customers.write, crm.write, admin. Contract: route_inferred. Prepare CRM outreach for a customer Required fields: client_id.

departments (1)

departments.list

Read. Scope: departments.read, admin. Contract: source_inferred. Departments List

البريد الإلكتروني (2)

email.template.send

Write. Scope: email.write, admin. Contract: source_inferred. Send one governed workspace email template Required fields: template, to. Retry-safe with idempotency_key.

email.templates.list

Read. Scope: email.read, admin. Contract: source_inferred. List email templates available to this workspace

engagement (163)

engagement.ab.autowinner

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Ab Autowinner

engagement.ab.bandit

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Ab Bandit

engagement.address.get

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Survey Address Get

engagement.address.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Address Save

engagement.ai.agent

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Ai Agent

engagement.ai.analyze

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Ai Analyze

engagement.ai.compile.profile

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Ai Compile Profile

engagement.ai.copy

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Ai Copy

engagement.ai.critique

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Promo Ai Critique

engagement.ai.decide

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Ai Decide

engagement.ai.design

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Ai Design

engagement.ai.edit

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Ai Edit

engagement.ai.generate

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Ai Generate

engagement.ai.ideas

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Promo Ai Ideas

engagement.ai.image

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Ai Image

engagement.ai.image.edit

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Ai Image Edit

engagement.ai.localize

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Ai Localize

engagement.ai.logo

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Ai Logo

engagement.ai.media.jobs

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Promo Ai Media Jobs

engagement.ai.narrative

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Promo Ai Narrative

engagement.ai.responsive

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Promo Ai Responsive

engagement.ai.variants

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Ai Variants

engagement.ai.video.start

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Ai Video Start

engagement.ai.video.status

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Ai Video Status

engagement.approval.decide

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Approval Decide

engagement.approval.request

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Approval Request

engagement.approvals.list

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Approvals List

engagement.asset.delete

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Asset Delete

engagement.asset.upload

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Asset Upload

engagement.assets.list

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Promo Assets List

engagement.audience.materialize

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Audience Materialize

engagement.audience.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Audience Save

engagement.audience.test

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Audience Test

engagement.audit.export

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Promo Audit Export

engagement.autoresponder.get

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Autoresponder Get

engagement.autoresponder.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Autoresponder Save

engagement.bank.delete

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Bank Delete

engagement.bank.list

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Survey Bank List

engagement.bank.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Bank Save

engagement.bank.used

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Bank Used

engagement.blackouts.get

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Promo Blackouts Get

engagement.blackouts.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Blackouts Save

engagement.brand.kit.bootstrap

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Brand Kit Bootstrap

engagement.brand.kit.font.upload

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Brand Kit Font Upload

engagement.brand.kit.get

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Promo Brand Kit Get

engagement.brand.kit.get.route.survey.brand.kit.get

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Survey Brand Kit Get

engagement.brand.kit.save

Write. Scope: engagement.write, admin. Contract: declared_dynamic. Promo Brand Kit Save

engagement.brand.kit.save.route.survey.brand.kit.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Brand Kit Save

engagement.campaign.archive

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Campaign Archive

engagement.campaign.delete

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Campaign Delete

engagement.campaign.duplicate

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Campaign Duplicate

engagement.campaign.get

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Campaign Get

engagement.campaign.launch

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Campaign Launch

engagement.campaign.list

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Campaign List

engagement.campaign.pause

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Campaign Pause

engagement.campaign.preview

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Campaign Preview

engagement.campaign.publish

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Campaign Publish

engagement.campaign.rollback

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Campaign Rollback

engagement.campaign.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Campaign Save

engagement.campaign.save.route.survey.campaign.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Campaign Save

engagement.campaign.toggle

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Campaign Toggle

engagement.campaign.versions

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Campaign Versions

engagement.comment.add

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Comment Add

engagement.comments.add

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Comments Add

engagement.comments.delete

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Comments Delete

engagement.comments.list

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Comments List

engagement.comments.list.route.survey.comments.list

Read. Scope: engagement.read, admin. Contract: route_inferred. Survey Comments List

engagement.comments.resolve

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Comments Resolve

engagement.connectors.catalog

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Promo Connectors Catalog

engagement.coupon.providers

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Promo Coupon Providers

engagement.coupons.clear

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Coupons Clear

engagement.coupons.stats

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Coupons Stats

engagement.coupons.upload

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Coupons Upload

engagement.delete

Write. Scope: engagement.write, admin. Contract: route_inferred. Announcement Delete

engagement.delete.route.tour.delete

Write. Scope: engagement.write, admin. Contract: route_inferred. Tour Delete

engagement.delivery.analytics

Read. Scope: engagement.read, admin. Contract: route_inferred. Survey Delivery Analytics

engagement.delivery.dashboard

Read. Scope: engagement.read, admin. Contract: route_inferred. Survey Delivery Dashboard

engagement.deployment.ab.promote

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Deployment Ab Promote

engagement.deployment.ab.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Deployment Ab Save

engagement.deployment.publish

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Deployment Publish

engagement.deployment.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Deployment Save

engagement.deployment.status

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Deployment Status

engagement.detail

Read. Scope: engagement.read, admin. Contract: route_inferred. Campaign Detail

engagement.digest.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Digest Save

engagement.feed.catalog

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Promo Feed Catalog

engagement.feed.items

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Feed Items

engagement.geo.preview

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Geo Preview

engagement.idle.cron.set

Write. Scope: engagement.write, admin. Contract: route_inferred. Proactive Idle Cron Set

engagement.import.create

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Import Create

engagement.import.replay

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Import Replay

engagement.leads.export

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Leads Export

engagement.leads.list

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Leads List

engagement.list

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Announcements List

engagement.list.route.tours.list

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Tours List

engagement.module.set.ai.live

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Module Set Ai Live

engagement.module.set.custom.html

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Module Set Custom Html

engagement.module.set.enabled

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Module Set Enabled

engagement.module.status

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Promo Module Status

engagement.onsite.preview

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Onsite Preview

engagement.pause.all

Write. Scope: engagement.write, admin. Contract: declared_dynamic. Promo Pause All

engagement.presence

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Presence

engagement.preview.share

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Preview Share

engagement.push.draft

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Push Draft

engagement.recipients.issue

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Recipients Issue

engagement.recipients.list

Read. Scope: engagement.read, admin. Contract: route_inferred. Survey Recipients List

engagement.recipients.revoke

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Recipients Revoke

engagement.response.detail

Read. Scope: engagement.read, admin. Contract: route_inferred. Survey Response Detail

engagement.responses.browse

Read. Scope: engagement.read, admin. Contract: route_inferred. Survey Responses Browse

engagement.rule.delete

Write. Scope: engagement.write, admin. Contract: route_inferred. Proactive Rule Delete

engagement.rule.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Proactive Rule Save

engagement.rule.stats

Read. Scope: engagement.read, admin. Contract: route_inferred. Proactive Rule Stats

engagement.rule.test

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Rule Test

engagement.rule.toggle

Write. Scope: engagement.write, admin. Contract: route_inferred. Proactive Rule Toggle

engagement.rules.list

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Proactive Rules List

engagement.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Announcement Save

engagement.save.route.tour.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Tour Save

engagement.stats

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Stats

engagement.stats.route.tour.stats

Read. Scope: engagement.read, admin. Contract: route_inferred. Tour Stats

engagement.studio.a11y

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio A11y

engagement.studio.ai.generate

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Ai Generate

engagement.studio.ai.insights

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Ai Insights

engagement.studio.ai.target

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Ai Target

engagement.studio.archive

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Archive

engagement.studio.assets

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Survey Studio Assets

engagement.studio.create

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Create

engagement.studio.delete

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Delete

engagement.studio.duplicate

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Duplicate

engagement.studio.event

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Studio Event

engagement.studio.get

Read. Scope: engagement.read, admin. Contract: route_inferred. Survey Studio Get

engagement.studio.governance

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Governance

engagement.studio.list

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Survey Studio List

engagement.studio.preview

Read. Scope: engagement.read, admin. Contract: route_inferred. Survey Studio Preview

engagement.studio.preview.link

Read. Scope: engagement.read, admin. Contract: route_inferred. Survey Studio Preview Link

engagement.studio.publish

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Publish

engagement.studio.rename

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Rename

engagement.studio.revert

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Revert

engagement.studio.save.draft

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Save Draft

engagement.studio.save.targeting

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Save Targeting

engagement.studio.set.active

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Set Active

engagement.studio.set.status

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Set Status

engagement.studio.template.delete

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Template Delete

engagement.studio.template.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Template Save

engagement.studio.tpl.preview

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Tpl Preview

engagement.studio.upload

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Upload

engagement.studio.webhook

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Webhook

engagement.targeting.simulate

Read. Scope: engagement.read, admin. Contract: route_inferred. Survey Targeting Simulate

engagement.template.apply

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Template Apply

engagement.template.list

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Template List

engagement.template.save.custom

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Template Save Custom

engagement.toggle

Write. Scope: engagement.write, admin. Contract: route_inferred. Announcement Toggle

engagement.toggle.route.tour.toggle

Write. Scope: engagement.write, admin. Contract: route_inferred. Tour Toggle

engagement.trigger.set.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Trigger Set Save

engagement.variant.delete

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Variant Delete

engagement.variant.list

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Variant List

engagement.variant.promote

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Variant Promote

engagement.variant.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Variant Save

engagement.version.compare

Read. Scope: engagement.read, admin. Contract: route_inferred. Survey Version Compare

engagement.version.get

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Version Get

engagement.version.label

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Version Label

engagement.webhook.delete

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Webhook Delete

engagement.webhook.replay

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Webhook Replay

engagement.webhook.run

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Webhook Run

engagement.webhook.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Webhook Save

feedback (8)

feedback.analytics

Read. Scope: feedback.read, admin. Contract: source_inferred. Feedback Analytics

feedback.detractors

Read. Scope: feedback.read, admin. Contract: source_inferred. Feedback Detractors

feedback.get

Read. Scope: feedback.read, admin. Contract: source_inferred. Feedback Get

feedback.ingest

Write. Scope: feedback.write, admin. Contract: explicit. Ingest a feedback record or external review

feedback.list

Read. Scope: feedback.read, admin. Contract: source_inferred. Feedback List

feedback.overview

Read. Scope: feedback.read, admin. Contract: source_inferred. Feedback Overview

feedback.sources.list

Read. Scope: feedback.read, admin. Contract: explicit. List Voice of Customer feedback sources

feedback.update

Write. Scope: feedback.write, admin. Contract: source_inferred. Feedback Update Retry-safe with idempotency_key.

files (1)

files.get

Read. Scope: files.read, admin. Contract: source_inferred. Files Get

ساعة (48)

hr.agent.incident.close

Write. Scope: hr.write, admin. Contract: route_inferred. Close an agent incident — the same act that lifts the suspension it caused Required fields: incident_uuid, resolution.

hr.agent.step

Write. Scope: hr.write, admin. Contract: route_inferred. Run one agent step: gate verdict, execution and outcome reported separately Required fields: run_uuid, agent_key, tool_key, jurisdiction, purpose.

hr.agent.step.status

Read. Scope: hr.read, admin. Contract: route_inferred. What actually happened at a step (permitted, executed, proven, failed, compensated) Required fields: run_uuid, seq.

hr.agent.takeover

Write. Scope: hr.write, admin. Contract: route_inferred. A human takes an agent run; no further agent steps are accepted Required fields: run_uuid.

hr.agent.tool.grant

Write. Scope: hr.write, admin. Contract: route_inferred. Grant an agent a tool for one jurisdiction and purpose, up to a risk ceiling Required fields: agent_key, tool_key, jurisdiction, max_risk, purpose.

hr.agent.tools

Read. Scope: hr.read, admin. Contract: declared_dynamic. List the registered typed tools an agent may use, and open agent incidents

hr.ai.corrections

Write. Scope: hr.write, admin. Contract: declared_dynamic. Bundle recent reviewer corrections into a dataset; it is pending privacy review and trains nothing

hr.ai.quality.overview

Read. Scope: hr.read, admin. Contract: declared_dynamic. The AI quality board: sampled defect rate, override pressure per workflow, coaching reception

hr.booking.slots_reconcile

Write. Scope: hr.write, admin. Contract: declared_dynamic. Release booking slots whose claim never became a booked meeting

hr.connectors.certify

Write. Scope: hr.write, admin. Contract: route_inferred. Certify an HR connector (scope sandbox|production; production demands provider-side proof under dual control) Required fields: connector_class, connector_key, scope, evidence, submitted_by.

hr.connectors.health

Read. Scope: hr.read, admin. Contract: route_inferred. One connector account's health: certification level and scope, last reconciliation verdict, failures and webhook backlog Required fields: account_uuid.

hr.decisions.appeals

Write. Scope: hr.write, admin. Contract: route_inferred. File an appeal against an AI decision on a person's behalf; it must be heard by an independent human Required fields: decision_uuid, subject_type, subject_id, grounds.

hr.decisions.explanation

Read. Scope: hr.read, admin. Contract: route_inferred. Plain-language explanation of one AI decision: what was looked at, which policy, and how to appeal Required fields: decision_uuid, audience.

hr.employee.provision

Write. Scope: hr.write, admin. Contract: route_inferred. Provision seatless employee access and send the invitation Required fields: person_uuid.

hr.employee.restore

Write. Scope: hr.write, admin. Contract: route_inferred. Lift an employee access suspension (written reason required) and provision again Required fields: person_uuid, reason.

hr.experience.metrics

Read. Scope: hr.read, admin. Contract: route_inferred. Measured persona experience metrics (self-service rate, decision cycle, coaching usefulness, quality) from live journeys

hr.global.readiness

Read. Scope: hr.read, admin. Contract: declared_dynamic. The whole launch picture: 15-gate leadership score, release readiness checks and jurisdiction coverage

hr.identity.facets

Read. Scope: hr.read, admin. Contract: route_inferred. List a person's identity facets and open conflicts Required fields: person_uuid.

hr.identity.link

Write. Scope: hr.write, admin. Contract: route_inferred. Link an identity facet to a person Required fields: person_uuid, facet_type, facet_key.

hr.interview.room.connect

Write. Scope: hr.write, admin. Contract: route_inferred. Connect the AI to interview media; refuses unless media really reaches the worker Required fields: media_uuid.

hr.interview.room.consent

Write. Scope: hr.write, admin. Contract: route_inferred. Record or withdraw consent for ONE interview purpose (recording, biometric_liveness, transcription) Required fields: media_uuid, purpose, state.

hr.interview.room.pause

Write. Scope: hr.write, admin. Contract: route_inferred. Pause a live interview Required fields: media_uuid.

hr.interview.room.provision

Write. Scope: hr.write, admin. Contract: route_inferred. Provision an interview room (a place to meet — NOT AI participation) Required fields: session_uuid, transport, accommodation_route.

hr.interview.room.state

Read. Scope: hr.read, admin. Contract: route_inferred. Read an interview room, including whether the AI is actually participating Required fields: media_uuid.

hr.interview.room.takeover

Write. Scope: hr.write, admin. Contract: route_inferred. A human takes the interview; the AI cannot speak in it again Required fields: media_uuid, reason.

hr.jurisdiction.capabilities

Read. Scope: hr.read, admin. Contract: route_inferred. What this product may do in one country, per feature, with the law behind each answer Required fields: code.

hr.jurisdiction.change.raise

Write. Scope: hr.write, admin. Contract: route_inferred. Report a change in the law; a high or critical one suspends every lane in that jurisdiction at once Required fields: pack_key, summary, severity.

hr.jurisdiction.coverage

Read. Scope: hr.read, admin. Contract: declared_dynamic. Computed coverage for every market: released pack, named counsel owner, cited sources, passing tests

hr.jurisdiction.explain

Read. Scope: hr.read, admin. Contract: route_inferred. Why an action about one person is allowed, reduced or blocked, with the rule and citation Required fields: person_uuid, feature.

hr.jurisdiction.pack.release

Write. Scope: hr.write, admin. Contract: route_inferred. Put a drafted policy pack into effect; refused without a named counsel owner and a cited law Required fields: release_uuid.

hr.learning.overview

Read. Scope: hr.read, admin. Contract: declared_dynamic. Read courses, paths and enrolments

hr.leave.overview

Read. Scope: hr.read, admin. Contract: declared_dynamic. Read leave types and requests

hr.lifecycle.lanes

Read. Scope: hr.read, admin. Contract: declared_dynamic. Every lifecycle lane with its mode, KPIs and whether a live tool path really exists behind it

hr.marketplace.overview

Read. Scope: hr.read, admin. Contract: declared_dynamic. Read HR connector accounts, conflicts and deliveries

hr.org.tree

Read. Scope: hr.read, admin. Contract: declared_dynamic. Read the organisation tree

hr.people.create

Write. Scope: hr.write, admin. Contract: route_inferred. Create an HR person Required fields: display_name.

hr.people.get

Read. Scope: hr.read, admin. Contract: route_inferred. Get one HR person Required fields: person_uuid.

hr.people.list

Read. Scope: hr.read, admin. Contract: declared_dynamic. List HR people

hr.people.update

Write. Scope: hr.write, admin. Contract: route_inferred. Update an HR person Required fields: person_uuid, display_name, primary_email.

hr.postings.list

Read. Scope: hr.read, admin. Contract: declared_dynamic. List job postings

hr.readiness.read

Read. Scope: hr.read, admin. Contract: declared_dynamic. Run the HR release readiness report

hr.release.verify

Write. Scope: hr.write, admin. Contract: declared_dynamic. Run the four HR release gates (schema, manifest, probe, readiness)

hr.requisitions.create

Write. Scope: hr.write, admin. Contract: route_inferred. Create a requisition Required fields: title, openings, justification.

hr.requisitions.list

Read. Scope: hr.read, admin. Contract: declared_dynamic. List requisitions

hr.thread.delete

Write. Scope: hr.write, admin. Contract: route_inferred. Delete a workforce conversation; refused while it is under legal hold Required fields: thread_uuid, reason.

hr.thread.legal_hold

Write. Scope: hr.write, admin. Contract: route_inferred. Place or lift a legal hold on a workforce conversation Required fields: thread_uuid, on, reason.

hr.thread.retention

Write. Scope: hr.write, admin. Contract: route_inferred. Set a conversation's retention class (standard|extended|permanent) Required fields: thread_uuid, retention_class.

hr.threads.retention_sweep

Write. Scope: hr.write, admin. Contract: declared_dynamic. Run the conversation retention sweep; legal holds are never swept

intent (6)

intent.clear

Write. Scope: intent.write, admin. Contract: declared_dynamic. Intent Clear

intent.funnel

Read. Scope: intent.read, analytics.read, admin. Contract: route_inferred. Read the intent funnel

intent.funnel.aggregate

Read. Scope: intent.read, admin. Contract: route_inferred. Intent Funnel Aggregate

intent.funnel.route.intent.funnel

Read. Scope: intent.read, admin. Contract: route_inferred. Intent Funnel

intent.summary

Read. Scope: intent.read, analytics.read, admin. Contract: route_inferred. Read intent summaries

intent.summary.route.intent.summary

Read. Scope: intent.read, admin. Contract: route_inferred. Intent Summary

كيلوبايت (6)

kb.faq.delete

Write. Scope: kb.write, admin. Contract: source_inferred. Kb Faq Delete Retry-safe with idempotency_key.

kb.faq.generate

Write. Scope: kb.write, admin. Contract: source_inferred. Kb Faq Generate Retry-safe with idempotency_key.

kb.faq.import

Write. Scope: kb.write, admin. Contract: source_inferred. Kb Faq Import Retry-safe with idempotency_key.

kb.faq.list

Read. Scope: kb.read, read, admin. Contract: source_inferred. Kb Faq List

kb.faq.save

Write. Scope: kb.write, admin. Contract: source_inferred. Kb Faq Save Retry-safe with idempotency_key.

kb.faq.set_status

Write. Scope: kb.write, admin. Contract: source_inferred. Kb Faq Set Status Retry-safe with idempotency_key.

knowledge (78)

knowledge.analytics.get

Read. Scope: kb.read, admin. Contract: route_inferred. Help Analytics Get

knowledge.analytics.toggle

Write. Scope: kb.write, admin. Contract: route_inferred. Help Analytics Toggle

knowledge.article.ai.refine

Read. Scope: kb.read, admin. Contract: route_inferred. Help Article Ai Refine

knowledge.article.class.bulk

Write. Scope: kb.write, admin. Contract: route_inferred. Help Article Class Bulk

knowledge.article.delete

Write. Scope: kb.write, admin. Contract: route_inferred. Help Article Delete

knowledge.article.publish

Write. Scope: kb.write, admin. Contract: route_inferred. Help Article Publish

knowledge.article.save

Write. Scope: kb.write, admin. Contract: route_inferred. Help Article Save

knowledge.article.set.category

Write. Scope: kb.write, admin. Contract: route_inferred. Help Article Set Category

knowledge.article.set.public

Write. Scope: kb.write, admin. Contract: route_inferred. Help Article Set Public

knowledge.articles.ai.generate

Write. Scope: kb.write, admin. Contract: route_inferred. Help Articles Ai Generate

knowledge.articles.bulk.delete

Write. Scope: kb.write, admin. Contract: route_inferred. Help Articles Bulk Delete

knowledge.articles.count

Read. Scope: kb.read, admin. Contract: declared_dynamic. Help Articles Count

knowledge.articles.get

Read. Scope: kb.read, admin. Contract: explicit. Get one Help Center article Required fields: article_id.

knowledge.articles.ids

Write. Scope: kb.write, admin. Contract: route_inferred. Help Articles Ids

knowledge.articles.list

Read. Scope: kb.read, admin. Contract: route_inferred. Help Articles List

knowledge.articles.set.public.all

Write. Scope: kb.write, admin. Contract: route_inferred. Help Articles Set Public All

knowledge.categories.ai.merge

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Categories Ai Merge

knowledge.categories.bulk.delete

Write. Scope: kb.write, admin. Contract: route_inferred. Help Categories Bulk Delete

knowledge.categories.list

Read. Scope: kb.read, admin. Contract: declared_dynamic. Help Categories List

knowledge.categories.merge.dupes

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Categories Merge Dupes

knowledge.category.delete

Write. Scope: kb.write, admin. Contract: route_inferred. Help Category Delete

knowledge.category.get

Read. Scope: kb.read, admin. Contract: route_inferred. Help Category Get

knowledge.category.save

Write. Scope: kb.write, admin. Contract: route_inferred. Help Category Save

knowledge.center.article.image.upload

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Article Image Upload

knowledge.center.favicon.upload

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Favicon Upload

knowledge.center.hero.dark.upload

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Hero Dark Upload

knowledge.center.hero.upload

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Hero Upload

knowledge.center.logo.dark.upload

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Logo Dark Upload

knowledge.center.logo.upload

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Logo Upload

knowledge.center.og.image.upload

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Og Image Upload

knowledge.center.settings.get

Read. Scope: kb.read, admin. Contract: declared_dynamic. Help Center Settings Get

knowledge.center.settings.save

Write. Scope: kb.write, admin. Contract: route_inferred. Help Center Settings Save

knowledge.center.subhero.dark.upload

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Subhero Dark Upload

knowledge.center.subhero.upload

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Subhero Upload

knowledge.center.translate.estimate

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Translate Estimate

knowledge.center.translate.run

Write. Scope: kb.write, admin. Contract: route_inferred. Help Center Translate Run

knowledge.center.translate.status

Read. Scope: kb.read, admin. Contract: declared_dynamic. Help Center Translate Status

knowledge.center.translate.stop

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Translate Stop

knowledge.center.widget.hero.upload

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Widget Hero Upload

knowledge.center.widget.icon.upload

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Widget Icon Upload

knowledge.comments.deliver.notifications

Write. Scope: kb.write, admin. Contract: route_inferred. Kb Comments Deliver Notifications

knowledge.comments.moderate

Write. Scope: kb.write, admin. Contract: route_inferred. Kb Comments Moderate

knowledge.comments.moderation.list

Read. Scope: kb.read, admin. Contract: route_inferred. Kb Comments Moderation List

knowledge.import.batches

Write. Scope: kb.write, admin. Contract: route_inferred. Kb Import Batches

knowledge.import.connectors

Write. Scope: kb.write, admin. Contract: declared_dynamic. Kb Import Connectors

knowledge.import.csv.preview

Read. Scope: kb.read, admin. Contract: route_inferred. Kb Import Csv Preview

knowledge.import.preview

Write. Scope: kb.write, admin. Contract: route_inferred. Kb Import Preview

knowledge.import.resync

Write. Scope: kb.write, admin. Contract: route_inferred. Kb Import Resync

knowledge.import.run

Write. Scope: kb.write, admin. Contract: route_inferred. Kb Import Run

knowledge.import.undo

Write. Scope: kb.write, admin. Contract: route_inferred. Kb Import Undo

knowledge.insights.generate

Write. Scope: kb.write, admin. Contract: route_inferred. Help Insights Generate

knowledge.insights.get

Read. Scope: kb.read, admin. Contract: declared_dynamic. Help Insights Get

knowledge.mark.reviewed

Write. Scope: kb.write, admin. Contract: declared_dynamic. Kb Mark Reviewed

knowledge.missed.dismiss

Write. Scope: kb.write, admin. Contract: route_inferred. Kb Missed Dismiss

knowledge.missed.draft.article

Write. Scope: kb.write, admin. Contract: route_inferred. Kb Missed Draft Article

knowledge.missed.list

Read. Scope: kb.read, admin. Contract: route_inferred. Kb Missed List

knowledge.missed.mark.published

Write. Scope: kb.write, admin. Contract: route_inferred. Kb Missed Mark Published

knowledge.missed.refresh

Write. Scope: kb.write, admin. Contract: declared_dynamic. Kb Missed Refresh

knowledge.organize.descriptions

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Organize Descriptions

knowledge.organize.status

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Organize Status

knowledge.organize.step

Write. Scope: kb.write, admin. Contract: route_inferred. Help Organize Step

knowledge.publish

Write. Scope: kb.write, admin. Contract: route_inferred. Kb Publish

knowledge.reformat.revert

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Reformat Revert

knowledge.reformat.status

Read. Scope: kb.read, admin. Contract: declared_dynamic. Help Reformat Status

knowledge.reformat.step

Write. Scope: kb.write, admin. Contract: route_inferred. Help Reformat Step

knowledge.review.queue

Read. Scope: kb.read, admin. Contract: declared_dynamic. Kb Review Queue

knowledge.search.gaps

Read. Scope: kb.read, admin. Contract: declared_dynamic. Kb Search Gaps

knowledge.set.featured

Write. Scope: kb.write, admin. Contract: route_inferred. Help Set Featured

knowledge.set.visibility

Write. Scope: kb.write, admin. Contract: declared_dynamic. Kb Set Visibility

knowledge.subdomain.allocate

Write. Scope: kb.write, admin. Contract: route_inferred. Help Subdomain Allocate

knowledge.subdomain.check

Read. Scope: kb.read, admin. Contract: route_inferred. Help Subdomain Check

knowledge.subdomain.release

Write. Scope: kb.write, admin. Contract: route_inferred. Help Subdomain Release

knowledge.taxonomy.organize

Write. Scope: kb.write, admin. Contract: declared_dynamic. Kb Taxonomy Organize

knowledge.taxonomy.status

Read. Scope: kb.read, admin. Contract: declared_dynamic. Kb Taxonomy Status

knowledge.taxonomy.step

Write. Scope: kb.write, admin. Contract: route_inferred. Kb Taxonomy Step

knowledge.widget.categories

Read. Scope: kb.read, admin. Contract: route_inferred. Kb Widget Categories

knowledge.widget.publish

Write. Scope: kb.write, admin. Contract: route_inferred. Kb Widget Publish

knowledge.widget.targets

Read. Scope: kb.read, admin. Contract: route_inferred. Kb Widget Targets

leads (6)

leads.delete

Write. Scope: leads.write, crm.write, admin. Contract: route_inferred. Delete a lead Required fields: lead_id.

leads.delete.route.lead.delete

Write. Scope: leads.write, admin. Contract: route_inferred. Lead Delete

leads.list

Read. Scope: leads.read, crm.read, admin. Contract: route_inferred. List leads

leads.stats

Read. Scope: leads.read, analytics.read, admin. Contract: declared_dynamic. Get lead statistics

leads.stats.route.leads.stats

Read. Scope: leads.read, admin. Contract: declared_dynamic. Leads Stats

leads.update

Write. Scope: leads.write, crm.write, admin. Contract: route_inferred. Update a lead Required fields: lead_id, status.

ميتا (4)

meta.action

Read. Scope: none. Contract: explicit. Get one General API action contract Required fields: name.

meta.actions

Read. Scope: none. Contract: explicit. List the complete General API contract

meta.me

Read. Scope: none. Contract: explicit. Describe the authenticated API key and active workspace

meta.scopes

Read. Scope: none. Contract: explicit. List API scopes and the actions protected by each scope

notifications (1)

notifications.list

Read. Scope: notifications.read, admin. Contract: source_inferred. Notifications List

المنصة (926)

platform.add.announcement

Write. Scope: platform.write, admin. Contract: declared_dynamic. Add Announcement

platform.add.kb.article

Write. Scope: platform.write, admin. Contract: route_inferred. Add Kb Article

platform.add.todo.item

Write. Scope: platform.write, admin. Contract: route_inferred. Add Todo Item

platform.ai.action.lookup

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Action Lookup

platform.ai.anomaly.detect

Read. Scope: platform.read, admin. Contract: route_inferred. Ai Anomaly Detect

platform.ai.brain.add

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Brain Add

platform.ai.brain.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Brain Delete

platform.ai.brain.edit

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Brain Edit

platform.ai.brain.list

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Brain List

platform.ai.brain.pin

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Brain Pin

platform.ai.brain.status

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Brain Status

platform.ai.chat

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Chat

platform.ai.confidence.stats

Read. Scope: platform.read, admin. Contract: declared_dynamic. Ai Confidence Stats

platform.ai.context.lookup

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Context Lookup

platform.ai.daily.brief

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Daily Brief

platform.ai.daily.brief.check

Read. Scope: platform.read, admin. Contract: declared_dynamic. Ai Daily Brief Check

platform.ai.daily.brief.dismiss

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai Daily Brief Dismiss

platform.ai.daily.brief.fetch

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Daily Brief Fetch

platform.ai.eval.control.summary

Read. Scope: platform.read, admin. Contract: declared_dynamic. Ai Eval Control Summary

platform.ai.eval.feedback.queue

Read. Scope: platform.read, admin. Contract: declared_dynamic. Ai Eval Feedback Queue

platform.ai.eval.kb.gap.queue

Read. Scope: platform.read, admin. Contract: declared_dynamic. Ai Eval Kb Gap Queue

platform.ai.eval.load

Read. Scope: platform.read, admin. Contract: declared_dynamic. Ai Eval Load

platform.ai.eval.replay.history

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai Eval Replay History

platform.ai.eval.run

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai Eval Run

platform.ai.eval.save

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai Eval Save

platform.ai.eval.score.answer

Read. Scope: platform.read, admin. Contract: declared_dynamic. Ai Eval Score Answer

platform.ai.eval.simulate

Read. Scope: platform.read, admin. Contract: route_inferred. Ai Eval Simulate

platform.ai.feedback.analysis

Read. Scope: platform.read, admin. Contract: declared_dynamic. Ai Feedback Analysis

platform.ai.feedback.stats

Read. Scope: platform.read, admin. Contract: declared_dynamic. Ai Feedback Stats

platform.ai.history.archive

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai History Archive

platform.ai.history.clear.all

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai History Clear All

platform.ai.history.delete

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai History Delete

platform.ai.history.export.csv

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai History Export Csv

platform.ai.history.get

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai History Get

platform.ai.history.list

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai History List

platform.ai.history.stats

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai History Stats

platform.ai.insight.clear

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Insight Clear

platform.ai.insight.history

Read. Scope: platform.read, admin. Contract: route_inferred. Ai Insight History

platform.ai.insight.report.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Insight Report Delete

platform.ai.insight.report.get

Read. Scope: platform.read, admin. Contract: route_inferred. Ai Insight Report Get

platform.ai.instructions.compress

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai Instructions Compress

platform.ai.instructions.connector.templates

Read. Scope: platform.read, admin. Contract: declared_dynamic. Ai Instructions Connector Templates

platform.ai.instructions.example

Read. Scope: platform.read, admin. Contract: declared_dynamic. Ai Instructions Example

platform.ai.instructions.load

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai Instructions Load

platform.ai.instructions.preview

Read. Scope: platform.read, admin. Contract: route_inferred. Ai Instructions Preview

platform.ai.instructions.reset

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai Instructions Reset

platform.ai.instructions.save

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai Instructions Save

platform.ai.page.insights

Read. Scope: platform.read, admin. Contract: route_inferred. Ai Page Insights

platform.ai.popup.regen

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Popup Regen

platform.ai.quality.view

Read. Scope: platform.read, admin. Contract: declared_dynamic. Ai Quality View

platform.ai.reasoning.chain.get

Read. Scope: platform.read, admin. Contract: route_inferred. Ai Reasoning Chain Get

platform.ai.score.lead

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Score Lead

platform.ai.smart.alerts

Read. Scope: platform.read, admin. Contract: declared_dynamic. Ai Smart Alerts

platform.ai.spoke

Read. Scope: platform.read, admin. Contract: route_inferred. Ai Spoke

platform.ai.triage.accuracy

Read. Scope: platform.read, admin. Contract: declared_dynamic. Ai Triage Accuracy

platform.ai.whmcs.chat

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Whmcs Chat

platform.ai.writing

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Writing

platform.api.keys.catalog

Read. Scope: admin. Contract: declared_dynamic. Api Keys Catalog

platform.api.keys.create

Write. Scope: admin. Contract: route_inferred. Api Keys Create

platform.api.keys.delete

Write. Scope: admin. Contract: route_inferred. Api Keys Delete

platform.api.keys.list

Read. Scope: admin. Contract: declared_dynamic. Api Keys List

platform.api.keys.revoke

Write. Scope: admin. Contract: route_inferred. Api Keys Revoke

platform.api.keys.update

Write. Scope: admin. Contract: route_inferred. Api Keys Update

platform.audit.export

Read. Scope: admin. Contract: route_inferred. Audit Export

platform.blocked

Write. Scope: platform.write, admin. Contract: route_inferred. Blocked

platform.campaigns

Read. Scope: platform.read, admin. Contract: declared_dynamic. Campaigns

platform.chart.browsers

Read. Scope: platform.read, admin. Contract: declared_dynamic. Chart Browsers

platform.chart.countries

Read. Scope: platform.read, admin. Contract: declared_dynamic. Chart Countries

platform.chart.devices

Read. Scope: platform.read, admin. Contract: declared_dynamic. Chart Devices

platform.chart.hourly

Read. Scope: platform.read, admin. Contract: declared_dynamic. Chart Hourly

platform.chart.new.returning

Read. Scope: platform.read, admin. Contract: declared_dynamic. Chart New Returning

platform.chart.os

Read. Scope: platform.read, admin. Contract: declared_dynamic. Chart Os

platform.chart.sources

Read. Scope: platform.read, admin. Contract: declared_dynamic. Chart Sources

platform.chart.visitors

Read. Scope: platform.read, admin. Contract: route_inferred. Chart Visitors

platform.chatbot.flow.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Chatbot Flow Delete

platform.chatbot.flow.get

Read. Scope: platform.read, admin. Contract: route_inferred. Chatbot Flow Get

platform.chatbot.flow.save

Write. Scope: platform.write, admin. Contract: route_inferred. Chatbot Flow Save

platform.chatbot.flow.stats

Read. Scope: platform.read, admin. Contract: route_inferred. Chatbot Flow Stats

platform.chatbot.flow.test.advance

Write. Scope: platform.write, admin. Contract: route_inferred. Chatbot Flow Test Advance

platform.chatbot.flow.test.start

Write. Scope: platform.write, admin. Contract: route_inferred. Chatbot Flow Test Start

platform.chatbot.flow.toggle

Write. Scope: platform.write, admin. Contract: route_inferred. Chatbot Flow Toggle

platform.chatbot.flows.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Chatbot Flows List

platform.chatbot.node.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Chatbot Node Delete

platform.chatbot.node.save

Write. Scope: platform.write, admin. Contract: route_inferred. Chatbot Node Save

platform.chatbot.nodes.list

Read. Scope: platform.read, admin. Contract: route_inferred. Chatbot Nodes List

platform.clear.admin.chat.history

Write. Scope: platform.write, admin. Contract: declared_dynamic. Clear Admin Chat History

platform.command.center.view

Read. Scope: platform.read, admin. Contract: declared_dynamic. Command Center View

platform.commerce.actf.execute

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Actf Execute

platform.commerce.actf.policy.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Actf Policy Save

platform.commerce.actf.review

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Actf Review

platform.commerce.actf.simulate

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Actf Simulate

platform.commerce.analytics.report

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Analytics Report

platform.commerce.analytics.report.email

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Analytics Report Email

platform.commerce.autonomy.issue

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Autonomy Issue

platform.commerce.autonomy.status

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Autonomy Status

platform.commerce.collections.delete

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Collections Delete

platform.commerce.collections.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Collections Save

platform.commerce.customer.block

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Customer Block

platform.commerce.customer.credit.add

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Customer Credit Add

platform.commerce.customer.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Customer Save

platform.commerce.customers.list

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Customers List

platform.commerce.digital.codes.import

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Digital Codes Import

platform.commerce.digital.config.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Digital Config Save

platform.commerce.digital.file.upload

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Digital File Upload

platform.commerce.fulfilment.transition

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Fulfilment Transition

platform.commerce.intelligence.economics.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Intelligence Economics Save

platform.commerce.intelligence.market.price.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Intelligence Market Price Save

platform.commerce.intelligence.market.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Intelligence Market Save

platform.commerce.kit.apply

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Kit Apply

platform.commerce.kit.preview

Read. Scope: commerce.read, admin. Contract: route_inferred. Commerce Kit Preview

platform.commerce.kits.list

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Kits List

platform.commerce.launch.readiness

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Launch Readiness

platform.commerce.menu.ai.build

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Menu Ai Build

platform.commerce.menus.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Menus Save

platform.commerce.merchandising.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Merchandising Save

platform.commerce.midmarket.operations

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Midmarket Operations

platform.commerce.onboarding.ai.draft

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Onboarding Ai Draft

platform.commerce.onboarding.apply

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Onboarding Apply

platform.commerce.option.sets.generate

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Option Sets Generate

platform.commerce.option.sets.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Option Sets Save

platform.commerce.option.templates

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Option Templates

platform.commerce.order.refundable

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Order Refundable

platform.commerce.order.ship

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Order Ship

platform.commerce.order.shipments

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Order Shipments

platform.commerce.orders.list

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Orders List

platform.commerce.orders.transition

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Orders Transition

platform.commerce.page.ai.draft

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Page Ai Draft

platform.commerce.page.ai.refine

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Page Ai Refine

platform.commerce.page.render

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Page Render

platform.commerce.pages.delete

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Pages Delete

platform.commerce.pages.list

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Pages List

platform.commerce.pages.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Pages Save

platform.commerce.price.advice

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Price Advice

platform.commerce.products.ai.copy

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Products Ai Copy

platform.commerce.products.bulk

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Products Bulk

platform.commerce.products.catalog.meta

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Products Catalog Meta

platform.commerce.products.delete

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Products Delete

platform.commerce.products.duplicate

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Products Duplicate

platform.commerce.products.export.csv

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Products Export Csv

platform.commerce.products.image.alt.ai

Read. Scope: commerce.read, admin. Contract: route_inferred. Commerce Products Image Alt Ai

platform.commerce.products.image.delete

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Products Image Delete

platform.commerce.products.image.update

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Products Image Update

platform.commerce.products.image.upload

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Products Image Upload

platform.commerce.products.images.list

Read. Scope: commerce.read, admin. Contract: route_inferred. Commerce Products Images List

platform.commerce.products.images.reorder

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Products Images Reorder

platform.commerce.products.import.csv

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Products Import Csv

platform.commerce.products.list

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Products List

platform.commerce.products.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Products Save

platform.commerce.refunds.complete.manual

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Refunds Complete Manual

platform.commerce.refunds.request

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Refunds Request

platform.commerce.returns.transition

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Returns Transition

platform.commerce.size.charts.delete

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Size Charts Delete

platform.commerce.size.charts.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Size Charts Save

platform.commerce.store.maturity

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Store Maturity

platform.commerce.storefront.brand.import

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Storefront Brand Import

platform.commerce.storefront.domain.remove

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Storefront Domain Remove

platform.commerce.storefront.domain.set

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Storefront Domain Set

platform.commerce.storefront.logo.upload

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Storefront Logo Upload

platform.commerce.storefront.page.ai.seo

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Storefront Page Ai Seo

platform.commerce.storefront.slug.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Storefront Slug Save

platform.commerce.supply.chain

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Supply Chain

platform.commerce.variants.delete

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Variants Delete

platform.commerce.variants.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Variants Save

platform.commerce.wallet.topup.refund

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Wallet Topup Refund

platform.commerce.wallet.topups.list

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Wallet Topups List

platform.complete.todo.item

Write. Scope: platform.write, admin. Contract: route_inferred. Complete Todo Item

platform.consent.log.list

Read. Scope: platform.read, admin. Contract: route_inferred. Consent Log List

platform.countries

Read. Scope: platform.read, admin. Contract: declared_dynamic. Countries

platform.country.detail

Read. Scope: platform.read, admin. Contract: route_inferred. Country Detail

platform.custom.code.approve

Write. Scope: platform.write, admin. Contract: route_inferred. Custom Code Approve

platform.custom.code.disable

Write. Scope: platform.write, admin. Contract: route_inferred. Custom Code Disable

platform.custom.code.reject

Write. Scope: platform.write, admin. Contract: route_inferred. Custom Code Reject

platform.custom.code.rollback

Write. Scope: platform.write, admin. Contract: route_inferred. Custom Code Rollback

platform.custom.code.status

Read. Scope: platform.read, admin. Contract: route_inferred. Custom Code Status

platform.delete.todo.item

Write. Scope: platform.write, admin. Contract: route_inferred. Delete Todo Item

platform.devices

Read. Scope: platform.read, admin. Contract: declared_dynamic. Devices

platform.diag.check.resolutions

Read. Scope: platform.read, admin. Contract: declared_dynamic. Diag Check Resolutions

platform.diag.dismiss

Write. Scope: platform.write, admin. Contract: route_inferred. Diag Dismiss

platform.diag.event.taxonomy

Read. Scope: platform.read, admin. Contract: declared_dynamic. Diag Event Taxonomy

platform.diag.identity.restitch

Write. Scope: admin. Contract: declared_dynamic. Diag Identity Restitch

platform.diag.recheck

Write. Scope: platform.write, admin. Contract: route_inferred. Diag Recheck

platform.diag.recheck.all

Write. Scope: platform.write, admin. Contract: declared_dynamic. Diag Recheck All

platform.diag.report

Write. Scope: platform.write, admin. Contract: route_inferred. Diag Report

platform.diag.unmute

Write. Scope: platform.write, admin. Contract: route_inferred. Diag Unmute

platform.dismiss.credit.alert

Write. Scope: admin. Contract: route_inferred. Dismiss Credit Alert

platform.domain.knowledge.ai.generate

Write. Scope: platform.write, admin. Contract: route_inferred. Domain Knowledge Ai Generate

platform.domain.knowledge.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Domain Knowledge Delete

platform.domain.knowledge.list

Write. Scope: platform.write, admin. Contract: route_inferred. Domain Knowledge List

platform.domain.knowledge.save

Write. Scope: platform.write, admin. Contract: route_inferred. Domain Knowledge Save

platform.domain.knowledge.toggle

Write. Scope: platform.write, admin. Contract: route_inferred. Domain Knowledge Toggle

platform.domain.verify.add

Write. Scope: platform.write, admin. Contract: route_inferred. Domain Verify Add

platform.domain.verify.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Domain Verify List

platform.domain.verify.recheck

Write. Scope: platform.write, admin. Contract: route_inferred. Domain Verify Recheck

platform.domain.verify.remove

Write. Scope: platform.write, admin. Contract: route_inferred. Domain Verify Remove

platform.dynamic.action.dispatch

Write. Scope: platform.write, admin. Contract: route_inferred. Dynamic Action Dispatch

platform.events.clear.all

Write. Scope: platform.write, admin. Contract: declared_dynamic. Events Clear All

platform.events.list

Read. Scope: platform.read, admin. Contract: route_inferred. Events List

platform.experiment.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Experiment Delete

platform.experiment.results

Read. Scope: platform.read, admin. Contract: route_inferred. Experiment Results

platform.experiment.save

Write. Scope: platform.write, admin. Contract: route_inferred. Experiment Save

platform.experiments.clear.all

Write. Scope: platform.write, admin. Contract: declared_dynamic. Experiments Clear All

platform.experiments.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Experiments List

platform.failed.logins.clear.all

Write. Scope: platform.write, admin. Contract: declared_dynamic. Failed Logins Clear All

platform.failed.logins.clear.history

Write. Scope: platform.write, admin. Contract: declared_dynamic. Failed Logins Clear History

platform.failed.logins.journey

Write. Scope: platform.write, admin. Contract: route_inferred. Failed Logins Journey

platform.failed.logins.list

Write. Scope: platform.write, admin. Contract: declared_dynamic. Failed Logins List

platform.failed.logins.unblock

Write. Scope: platform.write, admin. Contract: route_inferred. Failed Logins Unblock

platform.feedback.analysis.get

Read. Scope: platform.read, admin. Contract: declared_dynamic. Feedback Analysis Get

platform.feedback.analysis.run

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Analysis Run

platform.feedback.analytics.all

Read. Scope: platform.read, admin. Contract: route_inferred. Feedback Analytics All

platform.feedback.analytics.detractors

Read. Scope: platform.read, admin. Contract: route_inferred. Feedback Analytics Detractors

platform.feedback.analytics.metrics

Read. Scope: platform.read, admin. Contract: route_inferred. Feedback Analytics Metrics

platform.feedback.analytics.overview

Read. Scope: platform.read, admin. Contract: route_inferred. Feedback Analytics Overview

platform.feedback.analytics.segments

Read. Scope: platform.read, admin. Contract: route_inferred. Feedback Analytics Segments

platform.feedback.analytics.sentiment

Read. Scope: platform.read, admin. Contract: route_inferred. Feedback Analytics Sentiment

platform.feedback.analytics.themes

Read. Scope: platform.read, admin. Contract: route_inferred. Feedback Analytics Themes

platform.feedback.analytics.trends

Read. Scope: platform.read, admin. Contract: route_inferred. Feedback Analytics Trends

platform.feedback.assignees.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Feedback Assignees List

platform.feedback.event.outbox.drain

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Event Outbox Drain

platform.feedback.exports.create

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Exports Create

platform.feedback.exports.get

Read. Scope: platform.read, admin. Contract: route_inferred. Feedback Exports Get

platform.feedback.external.review.ingest

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback External Review Ingest

platform.feedback.ingest.create

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Ingest Create

platform.feedback.items.assign

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Items Assign

platform.feedback.items.evidence

Read. Scope: platform.read, admin. Contract: route_inferred. Feedback Items Evidence

platform.feedback.items.follow.up.complete

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Items Follow Up Complete

platform.feedback.items.follow.up.set

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Items Follow Up Set Required fields: bool.

platform.feedback.items.get

Read. Scope: platform.read, admin. Contract: route_inferred. Feedback Items Get

platform.feedback.items.list

Read. Scope: platform.read, admin. Contract: route_inferred. Feedback Items List

platform.feedback.items.mark.read

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Items Mark Read

platform.feedback.items.notes.add

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Items Notes Add

platform.feedback.items.set.priority

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Items Set Priority

platform.feedback.items.set.status

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Items Set Status

platform.feedback.items.tags.add

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Items Tags Add

platform.feedback.items.tags.remove

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Items Tags Remove

platform.feedback.list

Read. Scope: platform.read, admin. Contract: route_inferred. Feedback List

platform.feedback.reconciliation

Read. Scope: platform.read, admin. Contract: declared_dynamic. Feedback Reconciliation

platform.feedback.reports.delete

Write. Scope: platform.write, admin. Contract: declared_dynamic. Feedback Reports Delete

platform.feedback.reports.email

Read. Scope: platform.read, admin. Contract: declared_dynamic. Feedback Reports Email

platform.feedback.reports.get

Read. Scope: platform.read, admin. Contract: declared_dynamic. Feedback Reports Get

platform.feedback.reports.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Feedback Reports List

platform.feedback.satisfaction.advice.last

Read. Scope: platform.read, admin. Contract: declared_dynamic. Feedback Satisfaction Advice Last

platform.feedback.satisfaction.advise

Read. Scope: platform.read, admin. Contract: declared_dynamic. Feedback Satisfaction Advise

platform.feedback.satisfaction.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Feedback Satisfaction Overview

platform.feedback.sources.health

Read. Scope: platform.read, admin. Contract: declared_dynamic. Feedback Sources Health

platform.feedback.sources.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Feedback Sources List

platform.feedback.sources.rebuild

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Sources Rebuild

platform.feedback.sources.replay

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Sources Replay

platform.feedback.stats

Write. Scope: platform.write, admin. Contract: declared_dynamic. Feedback Stats

platform.fx.refresh.now

Write. Scope: platform.write, admin. Contract: declared_dynamic. Fx Refresh Now

platform.geoip.autodetect

Read. Scope: platform.read, admin. Contract: declared_dynamic. Geoip Autodetect

platform.get.admin.chat.history

Read. Scope: platform.read, admin. Contract: declared_dynamic. Get Admin Chat History

platform.get.ai.snapshot

Write. Scope: platform.write, admin. Contract: route_inferred. Get Ai Snapshot

platform.get.campaign.groups

Read. Scope: platform.read, admin. Contract: declared_dynamic. Get Campaign Groups

platform.get.client.chat.knowledge.overview

Write. Scope: platform.write, admin. Contract: declared_dynamic. Get Client Chat Knowledge Overview

platform.get.kb.categories

Read. Scope: platform.read, admin. Contract: route_inferred. Get Kb Categories

platform.get.live.health.snapshot

Read. Scope: platform.read, admin. Contract: route_inferred. Get Live Health Snapshot

platform.get.pwa.chat.prefs

Write. Scope: platform.write, admin. Contract: declared_dynamic. Get Pwa Chat Prefs

platform.get.servers

Read. Scope: platform.read, admin. Contract: declared_dynamic. Get Servers

platform.get.survey.config

Read. Scope: platform.read, admin. Contract: declared_dynamic. Get Survey Config

platform.get.ticket.options

Read. Scope: platform.read, admin. Contract: declared_dynamic. Get Ticket Options

platform.get.ticket.thread

Read. Scope: platform.read, admin. Contract: route_inferred. Get Ticket Thread

platform.get.todo.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Get Todo List

platform.get.widget.advanced

Read. Scope: platform.read, admin. Contract: route_inferred. Get Widget Advanced

platform.governance.summary

Read. Scope: platform.read, admin. Contract: route_inferred. Governance Summary

platform.groups.create

Write. Scope: platform.write, admin. Contract: route_inferred. Groups Create

platform.groups.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Groups Delete

platform.groups.list

Write. Scope: platform.write, admin. Contract: route_inferred. Groups List

platform.groups.rename

Write. Scope: platform.write, admin. Contract: route_inferred. Groups Rename

platform.groups.set.primary

Write. Scope: platform.write, admin. Contract: route_inferred. Groups Set Primary

platform.hc.preview.mint

Read. Scope: platform.read, admin. Contract: route_inferred. Hc Preview Mint

platform.hc.template.apply

Write. Scope: platform.write, admin. Contract: route_inferred. Hc Template Apply

platform.hc.template.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Hc Template Delete

platform.hc.template.preview

Read. Scope: platform.read, admin. Contract: route_inferred. Hc Template Preview

platform.hc.template.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hc Template Save

platform.hc.templates.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hc Templates List

platform.hc.translation.review.get

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hc Translation Review Get

platform.hc.translation.review.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hc Translation Review List

platform.hc.translation.review.revert

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hc Translation Review Revert

platform.hc.translation.review.save

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hc Translation Review Save

platform.heatmap

Read. Scope: platform.read, admin. Contract: route_inferred. Heatmap

platform.hr.access.grant.manual

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Access Grant Manual

platform.hr.access.policy.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Access Policy List

platform.hr.access.policy.set

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Access Policy Set

platform.hr.access.request

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Access Request

platform.hr.access.revoke

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Access Revoke

platform.hr.accommodation.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Accommodation List

platform.hr.accommodation.resolve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Accommodation Resolve

platform.hr.agent.assign

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Agent Assign

platform.hr.agent.compensation.retry

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Agent Compensation Retry

platform.hr.agent.compensation.sweep

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Agent Compensation Sweep

platform.hr.agent.compensations

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Agent Compensations

platform.hr.agent.incident.close

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Agent Incident Close

platform.hr.agent.register

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Agent Register

platform.hr.agent.step

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Agent Step

platform.hr.agent.step.status

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Agent Step Status

platform.hr.agent.tool.auth

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Agent Tool Auth

platform.hr.agent.tool.grant

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Agent Tool Grant

platform.hr.agent.tools

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Agent Tools

platform.hr.ai.act.build

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Ai Act Build

platform.hr.ai.act.export

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Ai Act Export

platform.hr.ai.act.fria.record

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Ai Act Fria Record

platform.hr.ai.act.notice.publish

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Ai Act Notice Publish

platform.hr.ai.act.overseer.assign

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Ai Act Overseer Assign

platform.hr.ai.act.overseer.revoke

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Ai Act Overseer Revoke

platform.hr.ai.act.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Ai Act Overview

platform.hr.ai.metering.export

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Ai Metering Export

platform.hr.ai.metering.overview

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Ai Metering Overview

platform.hr.ai.metering.settings.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Ai Metering Settings Save

platform.hr.ai.status

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Ai Status

platform.hr.analytics.ask

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Analytics Ask

platform.hr.analytics.snapshot

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Analytics Snapshot

platform.hr.app.move

Write. Scope: platform.write, admin. Contract: route_inferred. Hr App Move

platform.hr.appeal.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Appeal List

platform.hr.appeal.resolve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Appeal Resolve

platform.hr.application.history

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Application History

platform.hr.application.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Application List

platform.hr.assign

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Assign

platform.hr.auto.offer.run

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Auto Offer Run

platform.hr.autonomy.lane.demote

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Autonomy Lane Demote

platform.hr.autonomy.lane.install

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Autonomy Lane Install

platform.hr.autonomy.lane.promote

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Autonomy Lane Promote

platform.hr.autonomy.lane.review

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Autonomy Lane Review

platform.hr.autonomy.lane.shadow

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Autonomy Lane Shadow

platform.hr.autonomy.lanes

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Autonomy Lanes

platform.hr.autonomy.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Autonomy Overview

platform.hr.availability.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Availability Save

platform.hr.band.approve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Band Approve

platform.hr.band.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Band List

platform.hr.band.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Band Save

platform.hr.benchmarks.contribute.now

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Benchmarks Contribute Now

platform.hr.benchmarks.opt.in

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Benchmarks Opt In

platform.hr.benchmarks.opt.out

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Benchmarks Opt Out

platform.hr.benchmarks.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Benchmarks Overview

platform.hr.benefit.enroll

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Benefit Enroll

platform.hr.benefit.plan.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Benefit Plan Save

platform.hr.bias.audit.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Bias Audit List

platform.hr.bias.audit.run

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Bias Audit Run

platform.hr.booking.link.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Booking Link Save

platform.hr.booking.slots.reconcile

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Booking Slots Reconcile

platform.hr.breaker.reset

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Breaker Reset

platform.hr.broadcast.audience.options

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Broadcast Audience Options

platform.hr.broadcast.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Broadcast List

platform.hr.broadcast.preview

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Broadcast Preview

platform.hr.broadcast.send

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Broadcast Send

platform.hr.budget.set

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Budget Set

platform.hr.calibration.close

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Calibration Close

platform.hr.calibration.move

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Calibration Move

platform.hr.calibration.open

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Calibration Open

platform.hr.capabilities.get

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Capabilities Get

platform.hr.capability.set

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Capability Set

platform.hr.capability.trail

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Capability Trail

platform.hr.cards.refresh

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Cards Refresh

platform.hr.case.assign

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Case Assign

platform.hr.case.attachment.add

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Case Attachment Add

platform.hr.case.attachment.list

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Case Attachment List

platform.hr.case.categories

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Case Categories

platform.hr.case.event.add

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Case Event Add

platform.hr.case.get

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Case Get

platform.hr.case.grant.access

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Case Grant Access

platform.hr.case.intake.mailbox

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Case Intake Mailbox

platform.hr.case.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Case List

platform.hr.case.open

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Case Open

platform.hr.case.route

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Case Route

platform.hr.case.thread

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Case Thread

platform.hr.case.tighten

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Case Tighten

platform.hr.certification.define

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Certification Define

platform.hr.certification.list

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Certification List

platform.hr.certification.record

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Certification Record

platform.hr.certification.state

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Certification State

platform.hr.certification.types

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Certification Types

platform.hr.check.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Check List

platform.hr.check.manual.result

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Check Manual Result

platform.hr.check.order

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Check Order

platform.hr.check.requery

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Check Requery

platform.hr.check.void

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Check Void

platform.hr.checkin.record

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Checkin Record

platform.hr.coach.feedback

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Coach Feedback

platform.hr.coach.me

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Coach Me

platform.hr.coach.receive

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Coach Receive

platform.hr.comp.change.approve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Comp Change Approve

platform.hr.comp.change.request

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Comp Change Request

platform.hr.compliance.build

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Compliance Build

platform.hr.compliance.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Compliance List

platform.hr.connector.cert.revoke

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Connector Cert Revoke

platform.hr.connector.cert.submissions

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Connector Cert Submissions

platform.hr.connector.cert.submit

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Connector Cert Submit

platform.hr.connector.certify

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Connector Certify

platform.hr.connector.health

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Connector Health

platform.hr.connector.options

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Connector Options

platform.hr.connector.revoke

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Connector Revoke

platform.hr.contract.list

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Contract List

platform.hr.copilot.apply

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Copilot Apply

platform.hr.copilot.plan

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Copilot Plan

platform.hr.copilot.recipes

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Copilot Recipes

platform.hr.copilot.reject

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Copilot Reject

platform.hr.correction.dataset.build

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Correction Dataset Build

platform.hr.correction.datasets

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Correction Datasets

platform.hr.correction.privacy.review

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Correction Privacy Review

platform.hr.course.enroll

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Course Enroll

platform.hr.course.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Course Save

platform.hr.course.skills.tag

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Course Skills Tag

platform.hr.decision.appeal.assign

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Decision Appeal Assign

platform.hr.decision.appeal.file

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Decision Appeal File

platform.hr.decision.appeal.resolve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Decision Appeal Resolve

platform.hr.decision.appeals.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Decision Appeals List

platform.hr.decision.explanation

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Decision Explanation

platform.hr.decisions.recent

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Decisions Recent

platform.hr.directory.visibility.get

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Directory Visibility Get

platform.hr.directory.visibility.set

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Directory Visibility Set

platform.hr.discipline.decide

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Discipline Decide

platform.hr.discipline.propose

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Discipline Propose

platform.hr.document.access.log

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Document Access Log

platform.hr.document.deletion.request

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Document Deletion Request

platform.hr.document.hold

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Document Hold

platform.hr.document.intake

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Document Intake

platform.hr.document.list

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Document List

platform.hr.document.requirement.add

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Document Requirement Add

platform.hr.document.requirement.remove

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Document Requirement Remove

platform.hr.document.review.approve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Document Review Approve

platform.hr.document.reviews

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Document Reviews

platform.hr.dsr.list

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Dsr List

platform.hr.dsr.transition

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Dsr Transition

platform.hr.email.intake.log

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Email Intake Log

platform.hr.employee.access.events

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Employee Access Events

platform.hr.employee.provision

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Employee Provision

platform.hr.employee.restore

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Employee Restore

platform.hr.employee.suspend

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Employee Suspend

platform.hr.employment.activate

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Employment Activate

platform.hr.employment.end

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Employment End

platform.hr.enterprise.approve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Enterprise Approve

platform.hr.equipment.delivered

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Equipment Delivered

platform.hr.equipment.request

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Equipment Request

platform.hr.equipment.returned

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Equipment Returned

platform.hr.escrow.resolve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Escrow Resolve

platform.hr.evidence.a11y.record

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Evidence A11y Record

platform.hr.evidence.attest

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Evidence Attest

platform.hr.evidence.dr.record

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Evidence Dr Record

platform.hr.evidence.ledgers

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Evidence Ledgers

platform.hr.evidence.load.record

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Evidence Load Record

platform.hr.evidence.owner.assign

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Evidence Owner Assign

platform.hr.expense.confirm

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Expense Confirm

platform.hr.expense.decide

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Expense Decide

platform.hr.expense.handoff

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Expense Handoff

platform.hr.expense.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Expense Overview

platform.hr.expense.policy.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Expense Policy Save

platform.hr.experience.metrics

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Experience Metrics

platform.hr.expiry.run

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Expiry Run

platform.hr.fairness.cohort.define

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Fairness Cohort Define

platform.hr.fairness.cohorts

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Fairness Cohorts

platform.hr.fairness.evaluate

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Fairness Evaluate

platform.hr.faq.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Faq Delete

platform.hr.faq.draft

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Faq Draft

platform.hr.faq.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Faq List

platform.hr.faq.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Faq Save

platform.hr.faq.state

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Faq State

platform.hr.feedback.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Feedback List

platform.hr.feedback.record

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Feedback Record

platform.hr.flag.set

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Flag Set

platform.hr.flags.get

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Flags Get

platform.hr.frontline.overview

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Frontline Overview

platform.hr.gig.decide

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Gig Decide

platform.hr.gig.post

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Gig Post

platform.hr.global.readiness

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Global Readiness

platform.hr.goal.create

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Goal Create

platform.hr.goal.draft

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Goal Draft

platform.hr.goal.update

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Goal Update

platform.hr.grievance.file

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Grievance File

platform.hr.grievance.outcome

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Grievance Outcome

platform.hr.headcount.approve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Headcount Approve

platform.hr.headcount.draft

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Headcount Draft

platform.hr.headcount.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Headcount List

platform.hr.hire

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Hire

platform.hr.hiring.decide

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Hiring Decide

platform.hr.holiday.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Holiday Save

platform.hr.identity.admin.options

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Identity Admin Options

platform.hr.identity.conflict.resolve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Identity Conflict Resolve

platform.hr.identity.coverage.plan

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Identity Coverage Plan

platform.hr.identity.facets

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Identity Facets

platform.hr.identity.history

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Identity History

platform.hr.identity.link

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Identity Link

platform.hr.identity.revoke

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Identity Revoke

platform.hr.identity.verification.record

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Identity Verification Record

platform.hr.incident.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Incident List

platform.hr.incident.open

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Incident Open

platform.hr.incident.step

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Incident Step

platform.hr.interview.recording.start

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Interview Recording Start

platform.hr.interview.recording.upload

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Interview Recording Upload

platform.hr.interview.review

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Interview Review

platform.hr.interview.room.answer

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Interview Room Answer

platform.hr.interview.room.ask

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Interview Room Ask

platform.hr.interview.room.connect

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Interview Room Connect

platform.hr.interview.room.consent

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Interview Room Consent

platform.hr.interview.room.end

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Interview Room End

platform.hr.interview.room.leave

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Interview Room Leave

platform.hr.interview.room.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Interview Room List

platform.hr.interview.room.observe

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Interview Room Observe

platform.hr.interview.room.pause

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Interview Room Pause

platform.hr.interview.room.provision

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Interview Room Provision

platform.hr.interview.room.reconnect

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Interview Room Reconnect

platform.hr.interview.room.resume

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Interview Room Resume

platform.hr.interview.room.state

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Interview Room State

platform.hr.interview.room.takeover

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Interview Room Takeover

platform.hr.interview.schedule

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Interview Schedule

platform.hr.interview.transcript.correct

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Interview Transcript Correct

platform.hr.investigation.close

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Investigation Close

platform.hr.investigation.finding

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Investigation Finding

platform.hr.investigation.hold

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Investigation Hold

platform.hr.investigation.open

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Investigation Open

platform.hr.investigation.triage

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Investigation Triage

platform.hr.iplan.approve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Iplan Approve

platform.hr.iplan.create

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Iplan Create

platform.hr.iplan.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Iplan List

platform.hr.iscore.human

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Iscore Human

platform.hr.iscore.run

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Iscore Run

platform.hr.isession.attach.meeting

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Isession Attach Meeting

platform.hr.isession.control

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Isession Control

platform.hr.isession.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Isession List

platform.hr.isession.liveness

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Isession Liveness

platform.hr.isession.schedule

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Isession Schedule

platform.hr.job.arch.analyse

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Job Arch Analyse

platform.hr.job.arch.apply

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Job Arch Apply

platform.hr.job.arch.approve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Job Arch Approve

platform.hr.job.arch.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Job Arch Overview

platform.hr.job.arch.propose

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Job Arch Propose

platform.hr.job.arch.reject

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Job Arch Reject

platform.hr.job.family.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Job Family Save

platform.hr.job.level.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Job Level Save

platform.hr.job.profile.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Job Profile Save

platform.hr.job.version.draft.ai

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Job Version Draft Ai

platform.hr.job.version.publish

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Job Version Publish

platform.hr.job.version.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Job Version Save

platform.hr.job.versions

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Job Versions

platform.hr.jurisdiction.capabilities

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Jurisdiction Capabilities

platform.hr.jurisdiction.case.run

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Jurisdiction Case Run

platform.hr.jurisdiction.case.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Jurisdiction Case Save

platform.hr.jurisdiction.change.assess

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Jurisdiction Change Assess

platform.hr.jurisdiction.change.close

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Jurisdiction Change Close

platform.hr.jurisdiction.change.raise

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Jurisdiction Change Raise

platform.hr.jurisdiction.coverage

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Jurisdiction Coverage

platform.hr.jurisdiction.explain

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Jurisdiction Explain

platform.hr.jurisdiction.overlay.list

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Jurisdiction Overlay List

platform.hr.jurisdiction.overlay.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Jurisdiction Overlay Save

platform.hr.jurisdiction.pack.draft

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Jurisdiction Pack Draft

platform.hr.jurisdiction.pack.release

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Jurisdiction Pack Release

platform.hr.jurisdiction.pack.withdraw

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Jurisdiction Pack Withdraw

platform.hr.jurisdiction.release.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Jurisdiction Release List

platform.hr.jurisdiction.rule.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Jurisdiction Rule Save

platform.hr.jurisdiction.source.declare

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Jurisdiction Source Declare

platform.hr.jurisdiction.transfer.declare

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Jurisdiction Transfer Declare

platform.hr.kill.flip

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Kill Flip

platform.hr.kill.toggle

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Kill Toggle

platform.hr.kiosk.register

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Kiosk Register

platform.hr.kiosk.revoke

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Kiosk Revoke

platform.hr.knowledge.pack.install

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Knowledge Pack Install

platform.hr.knowledge.pack.remove

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Knowledge Pack Remove

platform.hr.knowledge.packs

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Knowledge Packs

platform.hr.leadership.score

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Leadership Score

platform.hr.learning.assign.mandatory

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Learning Assign Mandatory

platform.hr.learning.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Learning Overview

platform.hr.leave.decide

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Leave Decide

platform.hr.leave.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Leave Overview

platform.hr.leave.policy.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Leave Policy Save

platform.hr.leave.type.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Leave Type Save

platform.hr.letter.issue

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Letter Issue

platform.hr.letter.kinds

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Letter Kinds

platform.hr.letter.preview

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Letter Preview

platform.hr.listening.close

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Listening Close

platform.hr.listening.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Listening Overview

platform.hr.listening.run.due

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Listening Run Due

platform.hr.listening.schedule.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Listening Schedule Save

platform.hr.listening.schedule.state

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Listening Schedule State

platform.hr.loop.approve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Loop Approve

platform.hr.loop.correct

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Loop Correct

platform.hr.loop.evaluate

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Loop Evaluate

platform.hr.loop.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Loop Overview

platform.hr.loop.propose

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Loop Propose

platform.hr.loop.release

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Loop Release

platform.hr.loop.rollback

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Loop Rollback

platform.hr.loop.snapshot

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Loop Snapshot

platform.hr.marketplace.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Marketplace Overview

platform.hr.meeting.book

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Meeting Book

platform.hr.meeting.cancel

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Meeting Cancel

platform.hr.meeting.propose

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Meeting Propose

platform.hr.meeting.reschedule

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Meeting Reschedule

platform.hr.meetings.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Meetings Overview

platform.hr.meetings.reconcile

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Meetings Reconcile

platform.hr.mentor.propose

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Mentor Propose

platform.hr.module.toggle

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Module Toggle

platform.hr.new.hire.checkin.state

Read. Scope: platform.read, admin. Contract: route_inferred. Hr New Hire Checkin State

platform.hr.offer.approve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Offer Approve

platform.hr.offer.draft

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Offer Draft

platform.hr.offer.esign.confirm

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Offer Esign Confirm

platform.hr.offer.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Offer List

platform.hr.offer.send

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Offer Send

platform.hr.offer.withdraw

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Offer Withdraw

platform.hr.onboarding.checkins.book

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Onboarding Checkins Book

platform.hr.onboarding.draft.tasks

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Onboarding Draft Tasks

platform.hr.onboarding.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Onboarding Overview

platform.hr.onboarding.plan.buddy

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Onboarding Plan Buddy

platform.hr.onboarding.plan.close

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Onboarding Plan Close

platform.hr.onboarding.plan.create

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Onboarding Plan Create

platform.hr.onboarding.task.block

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Onboarding Task Block

platform.hr.onboarding.task.done

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Onboarding Task Done

platform.hr.onboarding.task.skip

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Onboarding Task Skip

platform.hr.onboarding.task.unblock

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Onboarding Task Unblock

platform.hr.onboarding.task.verify

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Onboarding Task Verify

platform.hr.onboarding.template.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Onboarding Template Save

platform.hr.one.on.one.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr One On One List

platform.hr.one.on.one.record

Write. Scope: platform.write, admin. Contract: route_inferred. Hr One On One Record

platform.hr.opportunity.decide

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Opportunity Decide

platform.hr.opportunity.post

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Opportunity Post

platform.hr.org.chart

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Org Chart

platform.hr.org.legal.entities

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Org Legal Entities

platform.hr.org.legal.entity.create

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Org Legal Entity Create

platform.hr.org.location.create

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Org Location Create

platform.hr.org.locations

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Org Locations

platform.hr.org.map.overview

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Org Map Overview

platform.hr.org.map.remove

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Org Map Remove

platform.hr.org.map.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Org Map Save

platform.hr.org.tree

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Org Tree

platform.hr.org.unit.create

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Org Unit Create

platform.hr.org.unit.move

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Org Unit Move

platform.hr.override.record

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Override Record

platform.hr.overtime.decide

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Overtime Decide

platform.hr.path.enroll

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Path Enroll

platform.hr.path.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Path Save

platform.hr.pay.equity.overview

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Pay Equity Overview

platform.hr.pay.gap.evaluate

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Pay Gap Evaluate

platform.hr.payroll.import

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Payroll Import

platform.hr.payroll.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Payroll Overview

platform.hr.payroll.provider.exceptions

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Payroll Provider Exceptions

platform.hr.payroll.reconcile

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Payroll Reconcile

platform.hr.payslips.issue

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Payslips Issue

platform.hr.people.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr People List

platform.hr.perf.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Perf Overview

platform.hr.person.create

Write. Scope: platform.write, admin. Contract: route_inferred. Create an HR person Required fields: display_name.

platform.hr.person.get

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Person Get

platform.hr.person.identifier.add

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Person Identifier Add

platform.hr.person.identifier.read

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Person Identifier Read

platform.hr.person.identifiers

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Person Identifiers

platform.hr.person.update

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Person Update

platform.hr.pilot.outcome.record

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Pilot Outcome Record

platform.hr.pipeline

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Pipeline

platform.hr.policy.activate

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Policy Activate

platform.hr.policy.compile

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Policy Compile

platform.hr.pool.create

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Pool Create

platform.hr.pool.member.add

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Pool Member Add

platform.hr.pool.member.remove

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Pool Member Remove

platform.hr.pool.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Pool Overview

platform.hr.portal.address

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Portal Address

platform.hr.portal.slug.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Portal Slug Save

platform.hr.position.assign

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Position Assign

platform.hr.position.create

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Position Create

platform.hr.position.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Position Overview

platform.hr.position.profile.set

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Position Profile Set

platform.hr.position.reports.to

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Position Reports To

platform.hr.position.state

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Position State

platform.hr.position.vacate

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Position Vacate

platform.hr.posting.close

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Posting Close

platform.hr.posting.create

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Posting Create

platform.hr.posting.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Posting List

platform.hr.posting.publish

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Posting Publish

platform.hr.probation.open

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Probation Open

platform.hr.probation.review

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Probation Review

platform.hr.profile.address.format

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Profile Address Format

platform.hr.profile.address.write

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Profile Address Write

platform.hr.profile.decide

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Profile Decide

platform.hr.profile.ownership.get

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Profile Ownership Get

platform.hr.profile.ownership.set

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Profile Ownership Set

platform.hr.profile.pending

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Profile Pending

platform.hr.profile.photo.clear

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Profile Photo Clear

platform.hr.profile.photo.set

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Profile Photo Set

platform.hr.profile.reveal

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Profile Reveal

platform.hr.profile.section.end

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Profile Section End

platform.hr.profile.section.write

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Profile Section Write

platform.hr.profile.sections

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Profile Sections

platform.hr.pulse.close

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Pulse Close

platform.hr.pulse.issue

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Pulse Issue

platform.hr.pulse.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Pulse List

platform.hr.pulse.open

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Pulse Open

platform.hr.pulse.results

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Pulse Results

platform.hr.quality.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Quality Overview

platform.hr.quality.sample.draw

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Quality Sample Draw

platform.hr.quality.samples

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Quality Samples

platform.hr.quality.verdict

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Quality Verdict

platform.hr.queue.agent.add

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Queue Agent Add

platform.hr.queue.agent.remove

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Queue Agent Remove

platform.hr.queue.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Queue Save

platform.hr.readiness.report

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Readiness Report

platform.hr.recognise

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Recognise

platform.hr.relations.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Relations Overview

platform.hr.release.gates

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Release Gates

platform.hr.release.verify

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Release Verify

platform.hr.req.create

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Req Create

platform.hr.req.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Req List

platform.hr.req.reject

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Req Reject

platform.hr.req.transition

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Req Transition

platform.hr.review.cycle.open

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Review Cycle Open

platform.hr.review.include

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Review Include

platform.hr.review.respond

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Review Respond

platform.hr.review.template.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Review Template Save

platform.hr.rubric.approve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Rubric Approve

platform.hr.rubric.create

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Rubric Create

platform.hr.rubric.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Rubric List

platform.hr.run.replay

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Run Replay

platform.hr.run.start

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Run Start

platform.hr.run.step

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Run Step

platform.hr.run.takeover

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Run Takeover

platform.hr.scenario.run

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Scenario Run

platform.hr.schedule.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Schedule Save

platform.hr.screening.correct

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Screening Correct

platform.hr.screening.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Screening List

platform.hr.screening.review

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Screening Review

platform.hr.screening.run

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Screening Run

platform.hr.screening.verify

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Screening Verify

platform.hr.security.assurance.record

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Security Assurance Record

platform.hr.service.item.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Service Item Save

platform.hr.servicedesk.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Servicedesk Overview

platform.hr.shadow.compare

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Shadow Compare

platform.hr.shift.add

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Shift Add

platform.hr.shift.assign

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Shift Assign

platform.hr.signature.cancel

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Signature Cancel

platform.hr.signature.confirm

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Signature Confirm

platform.hr.signature.list

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Signature List

platform.hr.signature.request

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Signature Request

platform.hr.signin.design.get

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Signin Design Get

platform.hr.signin.design.save

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Signin Design Save

platform.hr.skill.challenge.resolve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Skill Challenge Resolve

platform.hr.skills.infer.sweep

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Skills Infer Sweep

platform.hr.skills.infer.text

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Skills Infer Text

platform.hr.skills.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Skills Overview

platform.hr.skills.taxonomy.adopt

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Skills Taxonomy Adopt

platform.hr.status

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Status

platform.hr.succession.nominate

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Succession Nominate

platform.hr.succession.open

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Succession Open

platform.hr.succession.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Succession Overview

platform.hr.swap.approve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Swap Approve

platform.hr.swap.decline

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Swap Decline

platform.hr.sync.conflict.resolve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Sync Conflict Resolve

platform.hr.talent.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Talent Overview

platform.hr.thread.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Thread Delete

platform.hr.thread.dm

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Thread Dm

platform.hr.thread.legal.hold

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Thread Legal Hold

platform.hr.thread.outreach

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Thread Outreach

platform.hr.thread.post

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Thread Post

platform.hr.thread.read

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Thread Read

platform.hr.thread.retention

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Thread Retention

platform.hr.thread.search

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Thread Search

platform.hr.threads.inbox

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Threads Inbox

platform.hr.threads.retention.sweep

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Threads Retention Sweep

platform.hr.time.decide

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Time Decide

platform.hr.time.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Time Overview

platform.hr.title.history

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Title History

platform.hr.title.record

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Title Record

platform.hr.training.requirement.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Training Requirement Save

platform.hr.truth.register

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Truth Register

platform.hr.turnover.run

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Turnover Run

platform.hr.verifier.verdict

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Verifier Verdict

platform.hr.wb.grant

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Wb Grant

platform.hr.wb.identity

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Wb Identity

platform.hr.wb.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Wb List

platform.hr.wb.read

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Wb Read

platform.hr.wb.state

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Wb State

platform.hr.workforce.dashboard

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Workforce Dashboard

platform.inbound.activity.feed

Write. Scope: platform.write, admin. Contract: route_inferred. Inbound Activity Feed

platform.inbound.endpoints.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Inbound Endpoints Delete

platform.inbound.endpoints.list

Write. Scope: admin. Contract: route_inferred. Inbound Endpoints List

platform.inbound.endpoints.save

Write. Scope: platform.write, admin. Contract: route_inferred. Inbound Endpoints Save

platform.inbound.endpoints.test

Write. Scope: platform.write, admin. Contract: route_inferred. Inbound Endpoints Test

platform.interrupted

Read. Scope: platform.read, admin. Contract: declared_dynamic. Interrupted

platform.ip.classify

Read. Scope: platform.read, admin. Contract: route_inferred. Ip Classify

platform.js.errors.clear.all

Write. Scope: platform.write, admin. Contract: declared_dynamic. Js Errors Clear All

platform.js.errors.list

Read. Scope: platform.read, admin. Contract: route_inferred. Js Errors List

platform.js.issue.assign

Write. Scope: platform.write, admin. Contract: route_inferred. Js Issue Assign

platform.js.issue.update

Write. Scope: platform.write, admin. Contract: route_inferred. Js Issue Update

platform.js.sourcemap.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Js Sourcemap Delete

platform.js.sourcemap.upload

Write. Scope: platform.write, admin. Contract: route_inferred. Js Sourcemap Upload

platform.js.sourcemaps.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Js Sourcemaps List

platform.leads

Read. Scope: platform.read, admin. Contract: route_inferred. Leads

platform.license.delete

Write. Scope: admin. Contract: declared_dynamic. License Delete

platform.license.diagnostics

Read. Scope: platform.read, admin. Contract: declared_dynamic. License Diagnostics

platform.license.force.check

Read. Scope: platform.read, admin. Contract: declared_dynamic. License Force Check

platform.license.preflight

Read. Scope: platform.read, admin. Contract: declared_dynamic. License Preflight

platform.license.save

Write. Scope: admin. Contract: route_inferred. License Save

platform.license.status

Read. Scope: platform.read, admin. Contract: declared_dynamic. License Status

platform.license.verify.now

Write. Scope: platform.write, admin. Contract: declared_dynamic. License Verify Now

platform.lifecycle.evaluate

Read. Scope: platform.read, admin. Contract: route_inferred. Lifecycle Evaluate

platform.lifecycle.rule.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Lifecycle Rule Delete

platform.lifecycle.rule.list

Read. Scope: platform.read, admin. Contract: route_inferred. Lifecycle Rule List

platform.lifecycle.rule.save

Write. Scope: platform.write, admin. Contract: route_inferred. Lifecycle Rule Save

platform.list.assignable.sites

Read. Scope: platform.read, admin. Contract: declared_dynamic. List Assignable Sites

platform.list.network.issues

Read. Scope: platform.read, admin. Contract: declared_dynamic. List Network Issues

platform.lookup.client.full

Read. Scope: platform.read, admin. Contract: route_inferred. Lookup Client Full

platform.mark.feedback.read

Write. Scope: platform.write, admin. Contract: route_inferred. Mark Feedback Read

platform.marketplace.local.install

Write. Scope: platform.write, admin. Contract: route_inferred. Marketplace Local Install

platform.marketplace.local.uninstall

Write. Scope: platform.write, admin. Contract: route_inferred. Marketplace Local Uninstall

platform.marketplace.session.get

Read. Scope: platform.read, admin. Contract: declared_dynamic. Marketplace Session Get

platform.marketplace.session.set

Write. Scope: platform.write, admin. Contract: route_inferred. Marketplace Session Set

platform.media.ready

Read. Scope: platform.read, admin. Contract: route_inferred. Media Ready

platform.message.contact.locale

Write. Scope: platform.write, admin. Contract: route_inferred. Message Contact Locale

platform.message.outbound.convert

Write. Scope: platform.write, admin. Contract: route_inferred. Message Outbound Convert

platform.message.translate

Write. Scope: platform.write, admin. Contract: route_inferred. Message Translate

platform.message.translation.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Message Translation Delete

platform.message.translation.save

Write. Scope: platform.write, admin. Contract: route_inferred. Message Translation Save

platform.meta.channels.disconnect

Write. Scope: platform.write, admin. Contract: declared_dynamic. Meta Channels Disconnect

platform.meta.channels.switch.page

Write. Scope: platform.write, admin. Contract: route_inferred. Meta Channels Switch Page

platform.observe

Read. Scope: platform.read, admin. Contract: declared_dynamic. Observe

platform.onboarding.action

Read. Scope: platform.read, admin. Contract: declared_dynamic. Onboarding Action

platform.onboarding.readiness

Read. Scope: platform.read, admin. Contract: declared_dynamic. Onboarding Readiness

platform.open.network.issue

Read. Scope: platform.read, admin. Contract: declared_dynamic. Open Network Issue

platform.open.ticket

Read. Scope: platform.read, admin. Contract: route_inferred. Open Ticket

platform.operator.text.translate

Write. Scope: platform.write, admin. Contract: route_inferred. Operator Text Translate

platform.opsiq.backup.export

Read. Scope: platform.read, admin. Contract: declared_dynamic. Download a full backup in one request (retired)

platform.opsiq.backup.import

Write. Scope: platform.write, admin. Contract: route_inferred. Opsiq Backup Import

platform.opsiq.backup.import.start

Write. Scope: platform.write, admin. Contract: route_inferred. Opsiq Backup Import Start

platform.opsiq.backup.job.start

Write. Scope: platform.write, admin. Contract: route_inferred. Opsiq Backup Job Start

platform.opsiq.backup.job.status

Write. Scope: platform.write, admin. Contract: route_inferred. Opsiq Backup Job Status

platform.outreach.campaign.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Campaign Delete

platform.outreach.campaign.list

Read. Scope: platform.read, admin. Contract: route_inferred. Outreach Campaign List

platform.outreach.campaign.save

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Campaign Save

platform.outreach.campaign.send

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Campaign Send

platform.outreach.compose.send

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Compose Send

platform.outreach.draft.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Draft Delete

platform.outreach.draft.list

Read. Scope: platform.read, admin. Contract: route_inferred. Outreach Draft List

platform.outreach.draft.save

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Draft Save

platform.outreach.messages.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Messages Delete

platform.outreach.replies.list

Read. Scope: platform.read, admin. Contract: route_inferred. Outreach Replies List

platform.outreach.reply.ai

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Reply Ai

platform.outreach.reply.mark

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Reply Mark

platform.outreach.reply.pref

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Reply Pref

platform.outreach.reply.send

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Reply Send

platform.outreach.reply.thread

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Reply Thread

platform.outreach.send.detail

Read. Scope: platform.read, admin. Contract: route_inferred. Outreach Send Detail

platform.outreach.send.retry

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Send Retry

platform.outreach.sends.list

Read. Scope: platform.read, admin. Contract: route_inferred. Outreach Sends List

platform.outreach.template.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Template Delete

platform.outreach.template.list

Read. Scope: platform.read, admin. Contract: route_inferred. Outreach Template List

platform.outreach.template.preview

Read. Scope: platform.read, admin. Contract: route_inferred. Outreach Template Preview

platform.outreach.template.save

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Template Save

platform.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Overview

platform.overview.hub.view

Read. Scope: platform.read, admin. Contract: route_inferred. Overview Hub View

platform.overview.intelligence.graph

Read. Scope: platform.read, admin. Contract: declared_dynamic. Overview Intelligence Graph

platform.pages

Read. Scope: platform.read, admin. Contract: route_inferred. Pages

platform.paths.data

Read. Scope: platform.read, admin. Contract: route_inferred. Paths Data

platform.pause

Read. Scope: platform.read, admin. Contract: declared_dynamic. Pause

platform.profile.change.password

Write. Scope: platform.write, admin. Contract: declared_dynamic. Profile Change Password

platform.profile.get

Read. Scope: platform.read, admin. Contract: route_inferred. Profile Get

platform.profile.reward.claim

Write. Scope: platform.write, admin. Contract: route_inferred. Profile Reward Claim

platform.profile.reward.claim.cancel

Write. Scope: platform.write, admin. Contract: route_inferred. Profile Reward Claim Cancel

platform.profile.save

Write. Scope: platform.write, admin. Contract: declared_dynamic. Profile Save

platform.profile.session.revoke

Write. Scope: platform.write, admin. Contract: route_inferred. Profile Session Revoke

platform.profile.sessions.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Profile Sessions List

platform.profile.sessions.revoke.others

Write. Scope: platform.write, admin. Contract: declared_dynamic. Profile Sessions Revoke Others

platform.profile.team.dispute.file

Write. Scope: platform.write, admin. Contract: route_inferred. Profile Team Dispute File

platform.purge

Write. Scope: admin. Contract: route_inferred. Purge

platform.purge.all

Write. Scope: admin. Contract: route_inferred. Purge All

platform.realtime

Read. Scope: platform.read, admin. Contract: route_inferred. Realtime

platform.realtime.test

Write. Scope: platform.write, admin. Contract: route_inferred. Realtime Test

platform.resume

Read. Scope: platform.read, admin. Contract: declared_dynamic. Resume

platform.retention.data

Read. Scope: platform.read, admin. Contract: route_inferred. Retention Data

platform.routes.list

Read. Scope: admin. Contract: source_inferred. List every registered OpsIQ operation

platform.routes.read

Read. Scope: admin. Contract: explicit. Execute a registered read operation Required fields: route.

platform.routes.write

Write. Scope: admin. Contract: explicit. Execute a registered write operation Required fields: route, idempotency_key. Retry-safe with idempotency_key.

platform.run.ai.analysis

Write. Scope: platform.write, admin. Contract: route_inferred. Run Ai Analysis

platform.save.admin.chat.history

Write. Scope: platform.write, admin. Contract: route_inferred. Save Admin Chat History

platform.save.pwa.chat.prefs

Write. Scope: platform.write, admin. Contract: declared_dynamic. Save Pwa Chat Prefs

platform.save.survey.config

Write. Scope: platform.write, admin. Contract: route_inferred. Save Survey Config

platform.save.widget.advanced

Write. Scope: platform.write, admin. Contract: declared_dynamic. Save Widget Advanced

platform.scim.token.issue

Read. Scope: platform.read, admin. Contract: route_inferred. Scim Token Issue

platform.scim.token.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Scim Token List

platform.scim.token.revoke

Write. Scope: platform.write, admin. Contract: route_inferred. Scim Token Revoke

platform.segment.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Segment Delete

platform.segment.list

Read. Scope: platform.read, admin. Contract: route_inferred. Segment List

platform.segment.members

Read. Scope: platform.read, admin. Contract: route_inferred. Segment Members

platform.segment.preview

Read. Scope: platform.read, admin. Contract: route_inferred. Segment Preview

platform.segment.save

Write. Scope: platform.write, admin. Contract: route_inferred. Segment Save

platform.segment.suggestion.accept

Write. Scope: platform.write, admin. Contract: route_inferred. Segment Suggestion Accept

platform.segment.suggestion.dismiss

Write. Scope: platform.write, admin. Contract: route_inferred. Segment Suggestion Dismiss

platform.segment.suggestion.list

Read. Scope: platform.read, admin. Contract: route_inferred. Segment Suggestion List

platform.send.campaign

Write. Scope: platform.write, admin. Contract: route_inferred. Send Campaign

platform.send.client.email

Write. Scope: platform.write, admin. Contract: route_inferred. Send Client Email

platform.send.ticket.reply

Write. Scope: platform.write, admin. Contract: route_inferred. Send Ticket Reply

platform.service.studio.get

Read. Scope: platform.read, admin. Contract: declared_dynamic. Service Studio Get

platform.set.active.site

Write. Scope: platform.write, admin. Contract: route_inferred. Set Active Site

platform.silence

Read. Scope: platform.read, admin. Contract: declared_dynamic. Silence

platform.site.set.group

Write. Scope: platform.write, admin. Contract: route_inferred. Site Set Group

platform.sites.add

Write. Scope: platform.write, admin. Contract: route_inferred. Sites Add

platform.sites.edit

Write. Scope: platform.write, admin. Contract: route_inferred. Sites Edit

platform.sites.list

Write. Scope: platform.write, admin. Contract: route_inferred. Sites List

platform.sites.picker

Write. Scope: platform.write, admin. Contract: route_inferred. Sites Picker

platform.sites.regenerate.secret

Write. Scope: platform.write, admin. Contract: route_inferred. Sites Regenerate Secret

platform.sites.remove

Write. Scope: platform.write, admin. Contract: route_inferred. Sites Remove

platform.stats

Read. Scope: platform.read, admin. Contract: declared_dynamic. Stats

platform.stepup.verify

Write. Scope: platform.write, admin. Contract: declared_dynamic. Stepup Verify

platform.submit.agent.ai.feedback

Write. Scope: platform.write, admin. Contract: route_inferred. Submit Agent Ai Feedback

platform.submit.triage.feedback

Write. Scope: platform.write, admin. Contract: route_inferred. Submit Triage Feedback

platform.takeover

Read. Scope: platform.read, admin. Contract: declared_dynamic. Takeover

platform.terminate

Read. Scope: platform.read, admin. Contract: route_inferred. Terminate

platform.test.geoip

Read. Scope: platform.read, admin. Contract: route_inferred. Test Geoip

platform.top.pages

Read. Scope: platform.read, admin. Contract: route_inferred. Top Pages

platform.train.client.chat.knowledge

Write. Scope: platform.write, admin. Contract: route_inferred. Train Client Chat Knowledge

platform.triggers

Read. Scope: platform.read, admin. Contract: declared_dynamic. Triggers

platform.trust.evidence.report

Write. Scope: platform.write, admin. Contract: declared_dynamic. Trust Evidence Report

platform.turn.pool.add

Write. Scope: platform.write, admin. Contract: route_inferred. Turn Pool Add

platform.turn.pool.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Turn Pool List

platform.turn.pool.pick.test

Write. Scope: platform.write, admin. Contract: route_inferred. Turn Pool Pick Test

platform.turn.pool.remove

Write. Scope: platform.write, admin. Contract: route_inferred. Turn Pool Remove

platform.turn.pool.update

Write. Scope: platform.write, admin. Contract: route_inferred. Turn Pool Update

platform.update.lead.status

Write. Scope: platform.write, admin. Contract: route_inferred. Update Lead Status

platform.wa.embedded.signup.exchange

Write. Scope: platform.write, admin. Contract: route_inferred. Wa Embedded Signup Exchange

platform.warehouse.export.run

Read. Scope: platform.read, admin. Contract: declared_dynamic. Warehouse Export Run

platform.warehouse.exports.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Warehouse Exports List

platform.webhook.deliveries.list

Read. Scope: platform.read, admin. Contract: route_inferred. Webhook Deliveries List

platform.webhook.endpoint.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Webhook Endpoint Delete

platform.webhook.endpoint.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Webhook Endpoint List

platform.webhook.endpoint.save

Write. Scope: platform.write, admin. Contract: route_inferred. Webhook Endpoint Save

platform.webhook.endpoint.test

Write. Scope: platform.write, admin. Contract: route_inferred. Webhook Endpoint Test

platform.webhook.redeliver

Write. Scope: platform.write, admin. Contract: route_inferred. Webhook Redeliver

platform.weekly.digest.view

Read. Scope: platform.read, admin. Contract: route_inferred. Weekly Digest View

platform.whmcs.op.dispatch

Read. Scope: platform.read, admin. Contract: declared_dynamic. Whmcs Op Dispatch

platform.workspace.custom.domain.remove

Write. Scope: platform.write, admin. Contract: route_inferred. Workspace Custom Domain Remove

platform.workspace.custom.domain.set

Write. Scope: platform.write, admin. Contract: route_inferred. Workspace Custom Domain Set

platform.writing.json.knowledge.clear

Write. Scope: platform.write, admin. Contract: declared_dynamic. Writing Json Knowledge Clear

platform.writing.json.knowledge.count

Read. Scope: platform.read, admin. Contract: declared_dynamic. Writing Json Knowledge Count

platform.writing.json.knowledge.import

Write. Scope: platform.write, admin. Contract: route_inferred. Writing Json Knowledge Import

portal_studio (169)

portal_studio.accessibility.evidence.save

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Accessibility Evidence Save

portal_studio.add

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Domain Add

portal_studio.allocate

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Subdomain Allocate

portal_studio.analytics.breakdown

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Analytics Breakdown

portal_studio.analytics.load

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Analytics Load

portal_studio.apply.kit

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Apply Kit

portal_studio.apply.theme

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Design Apply Theme

portal_studio.approval

Read. Scope: portal_studio.read, admin. Contract: route_inferred. Portal Design Approval

portal_studio.approve

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Approve

portal_studio.ask

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Ask

portal_studio.audience.delete

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Audience Delete

portal_studio.audience.explain

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Audience Explain

portal_studio.audience.list

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Audience List

portal_studio.audience.preview

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Audience Preview

portal_studio.audience.save

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Audience Save

portal_studio.brand.generate

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Design Brand Generate

portal_studio.brand.import

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Design Brand Import

portal_studio.cancel.schedule

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Design Cancel Schedule

portal_studio.certify

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Certify

portal_studio.check

Read. Scope: portal_studio.read, admin. Contract: route_inferred. Portal Host Check

portal_studio.check.route.portal.subdomain.check

Read. Scope: portal_studio.read, admin. Contract: route_inferred. Portal Subdomain Check

portal_studio.comment.add

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Comment Add

portal_studio.comment.resolve

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Comment Resolve

portal_studio.component.package.inspect

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Component Package Inspect

portal_studio.component.package.install

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Component Package Install

portal_studio.component.validate

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Component Validate

portal_studio.config

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Handoff Config

portal_studio.data.resolve

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Data Resolve

portal_studio.delete.theme

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Design Delete Theme

portal_studio.developer.contract

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Developer Contract

portal_studio.discovery.preview

Read. Scope: portal_studio.read, admin. Contract: route_inferred. Portal Studio Discovery Preview

portal_studio.discovery.save

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Discovery Save

portal_studio.document.load

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Load

portal_studio.document.save

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Save

portal_studio.experiment.control

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Experiment Control

portal_studio.experiment.results

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Experiment Results

portal_studio.experiment.save

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Experiment Save

portal_studio.experiments.list

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Experiments List

portal_studio.form.archive

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Form Archive

portal_studio.form.catalog

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Form Catalog

portal_studio.form.create

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Form Create

portal_studio.form.delete

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Form Delete

portal_studio.form.duplicate

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Form Duplicate

portal_studio.form.evaluate

Read. Scope: portal_studio.read, admin. Contract: route_inferred. Portal Studio Form Evaluate

portal_studio.form.group.apply

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Form Group Apply

portal_studio.form.group.delete

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Form Group Delete

portal_studio.form.group.save

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Form Group Save

portal_studio.form.publish

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Form Publish

portal_studio.form.restore

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Form Restore

portal_studio.form.save

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Form Save

portal_studio.form.template

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Form Template

portal_studio.form.test

Read. Scope: portal_studio.read, admin. Contract: route_inferred. Portal Studio Form Test

portal_studio.form.version.restore

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Form Version Restore

portal_studio.history

Read. Scope: portal_studio.read, admin. Contract: route_inferred. Portal Design History

portal_studio.identity.discover

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Identity Discover

portal_studio.identity.load

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Identity Load

portal_studio.identity.save

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Identity Save

portal_studio.integration.activate

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Integration Activate

portal_studio.integration.install

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Integration Install

portal_studio.integration.kill.switch

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Integration Kill Switch

portal_studio.integration.list

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Integration List

portal_studio.integration.policy

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Integration Policy

portal_studio.integration.policy.save

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Integration Policy Save

portal_studio.integration.preflight

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Integration Preflight

portal_studio.integration.revise

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Integration Revise

portal_studio.integration.rollback

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Integration Rollback

portal_studio.integration.transition

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Integration Transition

portal_studio.journey.archive

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Journey Archive

portal_studio.journey.catalog

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Journey Catalog

portal_studio.journey.delete

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Journey Delete

portal_studio.journey.duplicate

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Journey Duplicate

portal_studio.journey.evaluate

Read. Scope: portal_studio.read, admin. Contract: route_inferred. Portal Studio Journey Evaluate

portal_studio.journey.instantiate

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Journey Instantiate

portal_studio.journey.restore

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Journey Restore

portal_studio.journey.save

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Journey Save

portal_studio.kb.category.delete

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Kb Category Delete

portal_studio.kb.category.reorder

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Kb Category Reorder

portal_studio.kb.category.save

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Kb Category Save

portal_studio.kb.governance

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Kb Governance

portal_studio.kb.governance.save

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Kb Governance Save

portal_studio.kb.languages

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Kb Languages

portal_studio.kb.languages.save

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Kb Languages Save

portal_studio.kb.parity

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Kb Parity

portal_studio.kb.search.tuning

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Kb Search Tuning

portal_studio.kb.search.tuning.save

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Kb Search Tuning Save

portal_studio.kb.tree

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Kb Tree

portal_studio.knowledge.summary

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Knowledge Summary

portal_studio.list

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Domain List

portal_studio.load

Read. Scope: portal_studio.read, admin. Contract: route_inferred. Portal Analytics Load

portal_studio.load.route.portal.design.load

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Design Load

portal_studio.load.route.portal.form.load

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Form Load

portal_studio.lock

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Lock

portal_studio.migration.apply

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Migration Apply

portal_studio.migration.approve

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Migration Approve

portal_studio.migration.list

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Migration List

portal_studio.migration.reconcile

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Migration Reconcile

portal_studio.migration.report

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Migration Report

portal_studio.migration.rollback

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Migration Rollback

portal_studio.migration.rollout

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Migration Rollout

portal_studio.migration.start

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Migration Start

portal_studio.node.add

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Node Add

portal_studio.node.delete

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Node Delete

portal_studio.node.duplicate

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Node Duplicate

portal_studio.node.move

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Node Move

portal_studio.node.update

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Node Update

portal_studio.operations.control

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Operations Control

portal_studio.operations.feed

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Operations Feed

portal_studio.operations.record

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Operations Record

portal_studio.operations.summary

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Operations Summary

portal_studio.org.context

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Org Context

portal_studio.org.member.save

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Org Member Save

portal_studio.org.members

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Org Members

portal_studio.org.requests

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Org Requests

portal_studio.page.archive

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Page Archive

portal_studio.page.create

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Page Create

portal_studio.page.delete

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Page Delete

portal_studio.page.duplicate

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Page Duplicate

portal_studio.page.restore

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Page Restore

portal_studio.page.update

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Page Update

portal_studio.parity.accept

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Parity Accept

portal_studio.parity.capture

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Parity Capture

portal_studio.parity.compare

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Parity Compare

portal_studio.parity.create

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Parity Create

portal_studio.parity.list

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Parity List

portal_studio.personalization.delete

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Personalization Delete

portal_studio.personalization.list

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Personalization List

portal_studio.personalization.save

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Personalization Save

portal_studio.presence

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Presence

portal_studio.preview

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Design Preview

portal_studio.preview.catalog

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Preview Catalog

portal_studio.publish

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Design Publish

portal_studio.quality

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Quality

portal_studio.redirect.delete

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Redirect Delete

portal_studio.redirect.save

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Redirect Save

portal_studio.release.diff

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Design Release Diff

portal_studio.release.evidence

Read. Scope: portal_studio.read, admin. Contract: route_inferred. Portal Design Release Evidence

portal_studio.release.history

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Release History

portal_studio.release.publish

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Publish

portal_studio.release.rollback

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Rollback

portal_studio.release.schedule

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Schedule

portal_studio.remove

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Domain Remove

portal_studio.request.changes

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Request Changes

portal_studio.restore.field

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Design Restore Field

portal_studio.restore.published

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Restore Published

portal_studio.revert

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Design Revert

portal_studio.review

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Review

portal_studio.review.link

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Design Review Link

portal_studio.rollback

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Design Rollback

portal_studio.save

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Design Save

portal_studio.save.route.portal.form.save

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Form Save

portal_studio.save.theme

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Design Save Theme

portal_studio.saved.section.delete

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Saved Section Delete

portal_studio.saved.section.instantiate

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Saved Section Instantiate

portal_studio.saved.section.save

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Saved Section Save

portal_studio.schedule

Read. Scope: portal_studio.read, admin. Contract: route_inferred. Portal Design Schedule

portal_studio.schedule.cancel

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Schedule Cancel

portal_studio.scim.config

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Scim Config

portal_studio.service.archive

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Service Archive

portal_studio.service.catalog

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Service Catalog

portal_studio.service.duplicate

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Service Duplicate

portal_studio.service.reorder

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Service Reorder

portal_studio.service.restore

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Service Restore

portal_studio.service.save

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Service Save

portal_studio.service.template

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Service Template

portal_studio.sign.in.flow.save

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Sign In Flow Save

portal_studio.signin.methods

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Design Signin Methods

portal_studio.test.link

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Handoff Test Link

portal_studio.unlock

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Unlock

portal_studio.upload

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Image Upload

sales (14)

sales.ai.insight

Write. Scope: sales.write, admin. Contract: route_inferred. Sales Ai Insight

sales.analyze

Write. Scope: sales.write, analytics.write, admin. Contract: route_inferred. Analyze sales with AI

sales.chart

Write. Scope: sales.write, admin. Contract: route_inferred. Sales Chart

sales.compare

Read. Scope: sales.read, analytics.read, admin. Contract: route_inferred. Compare sales periods

sales.compare.route.sales.compare

Read. Scope: sales.read, admin. Contract: route_inferred. Sales Compare

sales.goal.delete

Write. Scope: sales.write, admin. Contract: route_inferred. Conversion Goal Delete

sales.goal.list

Read. Scope: sales.read, admin. Contract: route_inferred. Conversion Goal List

sales.goal.save

Write. Scope: sales.write, admin. Contract: route_inferred. Conversion Goal Save

sales.list

Read. Scope: sales.read, analytics.read, admin. Contract: route_inferred. List sales and conversions

sales.list.route.conversion.list

Read. Scope: sales.read, admin. Contract: route_inferred. Conversion List

sales.record

Write. Scope: sales.write, admin. Contract: route_inferred. Conversion Record

sales.stats

Read. Scope: sales.read, analytics.read, admin. Contract: declared_dynamic. Read sales statistics

sales.stats.route.sales.stats

Read. Scope: sales.read, admin. Contract: declared_dynamic. Sales Stats

sales.table

Read. Scope: sales.read, admin. Contract: route_inferred. Sales Table

الأمان (21)

security.ai.analyze

Write. Scope: security.write, admin. Contract: route_inferred. Security Ai Analyze

security.ai.ask

Write. Scope: security.write, admin. Contract: route_inferred. Security Ai Ask

security.ai.briefs

Read. Scope: security.read, admin. Contract: declared_dynamic. Security Ai Briefs

security.ai.chain.explain

Read. Scope: security.read, admin. Contract: route_inferred. Security Ai Chain Explain

security.ai.incident.action

Write. Scope: security.write, admin. Contract: route_inferred. Security Ai Incident Action

security.ai.incidents

Read. Scope: security.read, admin. Contract: route_inferred. Security Ai Incidents

security.ai.js.triage

Read. Scope: security.read, admin. Contract: route_inferred. Security Ai Js Triage

security.ai.policies

Read. Scope: security.read, admin. Contract: declared_dynamic. Security Ai Policies

security.ai.policy.action

Write. Scope: security.write, admin. Contract: route_inferred. Security Ai Policy Action

security.ai.verdicts

Read. Scope: security.read, admin. Contract: route_inferred. Security Ai Verdicts

security.blocklist.add

Write. Scope: security.write, admin. Contract: source_inferred. Add a spam rule (email, domain or IP) to the ticket blocklist Required fields: kind, value. Retry-safe with idempotency_key.

security.blocklist.list

Read. Scope: security.read, admin. Contract: explicit. List the current ticket spam rules

security.chain.reanchor

Write. Scope: security.write, admin. Contract: declared_dynamic. Security Chain Reanchor

security.check

Read. Scope: security.read, admin. Contract: source_inferred. Check an IP or email against the platform blocklists and Security AI verdicts

security.ip

Write. Scope: security.write, admin. Contract: route_inferred. Block Ip

security.ip.route.unblock.ip

Write. Scope: security.write, admin. Contract: route_inferred. Unblock Ip

security.list

Write. Scope: security.write, admin. Contract: route_inferred. Access Log List

security.overview.chains

Read. Scope: security.read, admin. Contract: declared_dynamic. Security Overview Chains

security.overview.data

Read. Scope: security.read, admin. Contract: declared_dynamic. Security Overview Data

security.report

Write. Scope: security.write, admin. Contract: source_inferred. Report abuse a connector observed (spam, login attack, scan, fraud) Retry-safe with idempotency_key.

security.visitor

Write. Scope: security.write, admin. Contract: route_inferred. Block Visitor

sessions (5)

sessions.detail

Read. Scope: sessions.read, admin. Contract: route_inferred. Session Detail

sessions.get

Read. Scope: sessions.read, analytics.read, admin. Contract: route_inferred. Get a session journey Required fields: session_id.

sessions.list

Read. Scope: sessions.read, analytics.read, admin. Contract: route_inferred. List sessions

sessions.merged

Read. Scope: sessions.read, admin. Contract: route_inferred. Sessions Merged

sessions.table

Read. Scope: sessions.read, admin. Contract: route_inferred. Sessions Table

settings (11)

settings.ai.eval.watchtower.config

Write. Scope: settings.write, admin. Contract: declared_dynamic. Ai Eval Watchtower Config

settings.get.client.chat.settings

Read. Scope: settings.read, admin. Contract: route_inferred. Get Client Chat Settings

settings.get.settings

Read. Scope: settings.read, admin. Contract: route_inferred. Get Settings

settings.opsiq.branding.clear

Write. Scope: admin. Contract: route_inferred. Opsiq Branding Clear

settings.opsiq.branding.upload

Write. Scope: admin. Contract: route_inferred. Opsiq Branding Upload

settings.privacy.settings.get

Read. Scope: settings.read, admin. Contract: declared_dynamic. Privacy Settings Get

settings.privacy.settings.save

Write. Scope: settings.write, admin. Contract: route_inferred. Privacy Settings Save

settings.save.ai.settings

Write. Scope: settings.write, admin. Contract: route_inferred. Save Ai Settings

settings.save.chat.widget.settings

Write. Scope: settings.write, admin. Contract: declared_dynamic. Save Chat Widget Settings

settings.save.client.chat.settings

Write. Scope: settings.write, admin. Contract: route_inferred. Save Client Chat Settings

settings.save.settings

Write. Scope: settings.write, admin. Contract: route_inferred. Save Settings

site_intelligence (221)

site_intelligence.action.audit.chain

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Action Audit Chain

site_intelligence.action.execute

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Action Execute

site_intelligence.action.preview

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Action Preview

site_intelligence.action.token

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Action Token

site_intelligence.agent.auto.bg

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Auto Bg

site_intelligence.agent.auto.bg.stop

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Auto Bg Stop

site_intelligence.agent.auto.step

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Auto Step

site_intelligence.agent.chat

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Chat

site_intelligence.agent.conn.delete

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Conn Delete

site_intelligence.agent.conn.get

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Conn Get

site_intelligence.agent.conn.save

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Conn Save

site_intelligence.agent.conn.test

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Conn Test

site_intelligence.agent.coverage

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Coverage

site_intelligence.agent.events

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Events

site_intelligence.agent.hosted.apply

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Hosted Apply

site_intelligence.agent.hosted.finalize

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Hosted Finalize

site_intelligence.agent.hosted.live.set

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Hosted Live Set

site_intelligence.agent.hosted.preview

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Hosted Preview

site_intelligence.agent.hosted.rollback

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Hosted Rollback

site_intelligence.agent.hosted.start

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Hosted Start

site_intelligence.agent.hosted.verify

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Hosted Verify

site_intelligence.agent.run.delete

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Run Delete

site_intelligence.agent.run.finalize

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Run Finalize

site_intelligence.agent.run.rollback

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Run Rollback

site_intelligence.agent.run.start

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Run Start

site_intelligence.agent.run.status

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Run Status

site_intelligence.agent.run.verify

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Run Verify

site_intelligence.agent.runs.list

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Runs List

site_intelligence.agent.set.mode

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Set Mode

site_intelligence.agent.status

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Status

site_intelligence.agent.step.apply

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Step Apply

site_intelligence.agent.step.skip

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Step Skip

site_intelligence.agent.turn.status

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Turn Status

site_intelligence.ai.activity

Read. Scope: site_intelligence.read, admin. Contract: declared_dynamic. Si Ai Activity

site_intelligence.ai.alert.enrich

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Alert Enrich

site_intelligence.ai.alerts

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Alerts

site_intelligence.ai.analyst

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Analyst

site_intelligence.ai.analyst.ask

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Analyst Ask

site_intelligence.ai.analyst.email

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Analyst Email

site_intelligence.ai.analyst.run

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Analyst Run

site_intelligence.ai.badges

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Badges

site_intelligence.ai.badges.portfolio

Read. Scope: site_intelligence.read, admin. Contract: declared_dynamic. Si Ai Badges Portfolio

site_intelligence.ai.badges.preview

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Badges Preview

site_intelligence.ai.bl.plan

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Bl Plan

site_intelligence.ai.bl.plan.run

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Bl Plan Run

site_intelligence.ai.brief

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Brief

site_intelligence.ai.brief.run

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Brief Run

site_intelligence.ai.comp.analyse

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Comp Analyse

site_intelligence.ai.comp.analyse.run

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Comp Analyse Run

site_intelligence.ai.content.get

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Content Get

site_intelligence.ai.content.list

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Content List

site_intelligence.ai.content.publish

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Content Publish

site_intelligence.ai.content.write

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Content Write

site_intelligence.ai.daily.digest

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Daily Digest

site_intelligence.ai.discover

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Discover

site_intelligence.ai.fix.apply

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Fix Apply

site_intelligence.ai.fix.apply.bulk

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Fix Apply Bulk

site_intelligence.ai.fix.dismiss

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Fix Dismiss

site_intelligence.ai.fix.dismiss.bulk

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Fix Dismiss Bulk

site_intelligence.ai.fix.generate

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Fix Generate

site_intelligence.ai.fix.generate.all

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Fix Generate All

site_intelligence.ai.fix.list

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Fix List

site_intelligence.ai.kw.coach

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Kw Coach

site_intelligence.ai.kw.coach.run

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Kw Coach Run

site_intelligence.ai.overview

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Overview

site_intelligence.ai.page.audit

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Page Audit

site_intelligence.ai.page.audit.run

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Page Audit Run

site_intelligence.ai.portfolio

Read. Scope: site_intelligence.read, admin. Contract: declared_dynamic. Si Ai Portfolio

site_intelligence.ai.portfolio.history

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Si Ai Portfolio History

site_intelligence.ai.portfolio.run

Write. Scope: site_intelligence.write, admin. Contract: declared_dynamic. Si Ai Portfolio Run

site_intelligence.ai.probe

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Probe

site_intelligence.ai.prompt.add

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Prompt Add

site_intelligence.ai.prompt.history

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Prompt History

site_intelligence.ai.prompt.remove

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Prompt Remove

site_intelligence.ai.prompts

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Prompts

site_intelligence.ai.readiness

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Readiness

site_intelligence.ai.ready

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Ready

site_intelligence.alert.resolve

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Alert Resolve

site_intelligence.alerts

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Si Alerts

site_intelligence.alerts.list

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. List Site Intelligence alerts

site_intelligence.alerts.resolve

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Resolve a Site Intelligence alert Required fields: alert_id.

site_intelligence.analyze

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Analyze

site_intelligence.ask

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ask

site_intelligence.audit.hint

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Audit Hint

site_intelligence.backlink.disavow

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Backlink Disavow

site_intelligence.backlinks

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Si Backlinks

site_intelligence.backlinks.list

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. List backlinks

site_intelligence.backlinks.refresh

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Backlinks Refresh

site_intelligence.billing.overview

Read. Scope: site_intelligence.read, admin. Contract: declared_dynamic. Si Billing Overview

site_intelligence.brand.get

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Brand Get

site_intelligence.brand.radar

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Brand Radar

site_intelligence.brand.save

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Brand Save

site_intelligence.cannibalisation

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Cannibalisation

site_intelligence.compare

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Compare

site_intelligence.competitor.add

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Competitor Add

site_intelligence.competitor.refresh

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Competitor Refresh

site_intelligence.competitor.remove

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Competitor Remove

site_intelligence.competitors

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Si Competitors

site_intelligence.competitors.list

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. List competitors

site_intelligence.content.brief

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Content Brief

site_intelligence.content.decay

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Content Decay

site_intelligence.content.draft

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Content Draft

site_intelligence.crawl.budget

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Crawl Budget

site_intelligence.crawl.list

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Si Crawl List

site_intelligence.crawl.status

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Si Crawl Status

site_intelligence.crawls.list

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. List Site Intelligence crawls

site_intelligence.crawls.status

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Get crawl status

site_intelligence.dashboard

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Read the Site Intelligence dashboard

site_intelligence.dashboard.route.si.dashboard

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Si Dashboard

site_intelligence.dashboard.save

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Dashboard Save

site_intelligence.diag.backfill

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Diag Backfill

site_intelligence.diag.compare

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Diag Compare

site_intelligence.diag.portfolio

Read. Scope: site_intelligence.read, admin. Contract: declared_dynamic. Si Diag Portfolio

site_intelligence.diag.recs.regen

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Diag Recs Regen

site_intelligence.diag.thresholds

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Diag Thresholds

site_intelligence.diag.thresholds.eval

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Diag Thresholds Eval

site_intelligence.diag.thresholds.history

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Diag Thresholds History

site_intelligence.diag.thresholds.profile

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Diag Thresholds Profile

site_intelligence.diag.thresholds.save

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Diag Thresholds Save

site_intelligence.diagnostics

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Diagnostics

site_intelligence.exec.report

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Exec Report

site_intelligence.export

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Export

site_intelligence.ga4.connect

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ga4 Connect

site_intelligence.ga4.list.properties

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ga4 List Properties

site_intelligence.ga4.map

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ga4 Map

site_intelligence.ga4.status

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ga4 Status

site_intelligence.ga4.sync

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ga4 Sync

site_intelligence.gbp

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp

site_intelligence.gbp.draft.approve

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Draft Approve

site_intelligence.gbp.draft.dismiss

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Draft Dismiss

site_intelligence.gbp.draft.sync

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Draft Sync

site_intelligence.gbp.drafts

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Drafts

site_intelligence.gbp.locations

Read. Scope: site_intelligence.read, admin. Contract: declared_dynamic. Si Gbp Locations

site_intelligence.gbp.map

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Map

site_intelligence.gbp.post.draft

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Post Draft

site_intelligence.gbp.post.publish

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Post Publish

site_intelligence.gbp.qa

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Qa

site_intelligence.gbp.qa.approve

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Qa Approve

site_intelligence.gbp.qa.dismiss

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Qa Dismiss

site_intelligence.gbp.qa.sync

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Qa Sync

site_intelligence.gbp.site.prefs

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Site Prefs

site_intelligence.gbp.sync

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Sync

site_intelligence.google.truth.schedule.save

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Google Truth Schedule Save

site_intelligence.growth

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Growth

site_intelligence.gsc.connect

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gsc Connect

site_intelligence.gsc.list.properties

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gsc List Properties

site_intelligence.gsc.map

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gsc Map

site_intelligence.gsc.opportunities

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gsc Opportunities

site_intelligence.gsc.status

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gsc Status

site_intelligence.gsc.sync

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gsc Sync

site_intelligence.image.audit

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Image Audit

site_intelligence.internal.links

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Internal Links

site_intelligence.issue.history

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Issue History

site_intelligence.issues

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Si Issues

site_intelligence.issues.list

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. List Site Intelligence issues

site_intelligence.keyword.add

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Keyword Add

site_intelligence.keyword.remove

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Keyword Remove

site_intelligence.keyword.research

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Keyword Research

site_intelligence.keywords

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Si Keywords

site_intelligence.keywords.list

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. List tracked keywords

site_intelligence.local

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Local

site_intelligence.local.grid

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Local Grid

site_intelligence.local.grid.scan

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Local Grid Scan

site_intelligence.log.ingest

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Log Ingest

site_intelligence.log.summary

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Log Summary

site_intelligence.metadata.audit

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Metadata Audit

site_intelligence.overview

Read. Scope: site_intelligence.read, admin. Contract: declared_dynamic. Si Overview

site_intelligence.page

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Page

site_intelligence.page.experience

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Page Experience

site_intelligence.page.optimize

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Page Optimize

site_intelligence.pages

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Si Pages

site_intelligence.pages.list

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. List Site Intelligence pages

site_intelligence.pagespeed.bridge.status

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Pagespeed Bridge Status

site_intelligence.portfolio.export

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Portfolio Export

site_intelligence.provider.health

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Provider Health

site_intelligence.rank.check

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Rank Check

site_intelligence.rec.action

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Rec Action

site_intelligence.recommendations

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Recommendations

site_intelligence.redirect.audit

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Redirect Audit

site_intelligence.report

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Report

site_intelligence.report.generate

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Report Generate

site_intelligence.reports

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Reports

site_intelligence.reports.list

Read. Scope: site_intelligence.read, admin. Contract: source_inferred. Site Intelligence Reports List

site_intelligence.reset.google.oauth

Write. Scope: site_intelligence.write, admin. Contract: declared_dynamic. Si Reset Google Oauth

site_intelligence.revenue

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Revenue

site_intelligence.revenue.portfolio

Read. Scope: site_intelligence.read, admin. Contract: declared_dynamic. Si Revenue Portfolio

site_intelligence.save.shared.google.oauth

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Save Shared Google Oauth

site_intelligence.scan.run

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Start a Site Intelligence analysis

site_intelligence.schedule.delete

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Schedule Delete

site_intelligence.schedule.run.now

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Schedule Run Now

site_intelligence.schedule.save

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Schedule Save

site_intelligence.schedules.list

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Schedules List

site_intelligence.schema.audit

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Schema Audit

site_intelligence.server.engineer

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Server Engineer

site_intelligence.settings.save

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Settings Save

site_intelligence.sites.list

Read. Scope: site_intelligence.read, admin. Contract: explicit. List Site Intelligence monitored sites

site_intelligence.speed

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Speed

site_intelligence.speed.progress

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Speed Progress

site_intelligence.speed.run

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Speed Run

site_intelligence.speed.v2

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Speed V2

site_intelligence.speed.v2.build.task

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Speed V2 Build Task

site_intelligence.speed.v2.collect

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Speed V2 Collect

site_intelligence.speed.v2.read

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Speed V2 Read

site_intelligence.speed.v2.run

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Speed V2 Run

site_intelligence.start.crawl

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Start Crawl

site_intelligence.task.approve

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Approve

site_intelligence.task.assign

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Assign

site_intelligence.task.bulk.apply

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Bulk Apply

site_intelligence.task.bulk.assign

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Bulk Assign

site_intelligence.task.bulk.deadline

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Bulk Deadline

site_intelligence.task.bulk.dismiss

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Bulk Dismiss

site_intelligence.task.deadline

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Deadline

site_intelligence.task.note

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Note

site_intelligence.task.proof

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Proof

site_intelligence.task.reject

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Reject

site_intelligence.task.review

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Review

site_intelligence.topical.map

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Topical Map

site_intelligence.webhook.delete

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Webhook Delete

site_intelligence.webhook.save

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Webhook Save

site_intelligence.webhooks.list

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Webhooks List

site_intelligence.workflow

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Workflow

الحالة (6)

status.component.save

Write. Scope: status.write, admin. Contract: declared_dynamic. Status Component Save

status.components.save

Write. Scope: status.write, admin. Contract: explicit. Create or update a public status component Required fields: name. Retry-safe with idempotency_key.

status.incident.create

Write. Scope: status.write, admin. Contract: declared_dynamic. Status Incident Create

status.incident.resolve

Read. Scope: status.read, admin. Contract: route_inferred. Status Incident Resolve

status.incidents.create

Write. Scope: status.write, admin. Contract: explicit. Create a status-page incident Required fields: title. Retry-safe with idempotency_key.

status.incidents.resolve

Write. Scope: status.write, admin. Contract: source_inferred. Status Incidents Resolve Retry-safe with idempotency_key.

دعم استضافة متميز (22)

surveys.analytics.get

Read. Scope: surveys.read, admin. Contract: source_inferred. Surveys Analytics Get

surveys.audiences.list

Read. Scope: surveys.read, admin. Contract: explicit. List survey audiences

surveys.audiences.materialize

Write. Scope: surveys.write, admin. Contract: source_inferred. Surveys Audiences Materialize Retry-safe with idempotency_key.

surveys.campaigns.create

Write. Scope: surveys.write, admin. Contract: explicit. Create or update a survey campaign Required fields: deployment_id. Retry-safe with idempotency_key.

surveys.campaigns.launch

Write. Scope: surveys.write, admin. Contract: source_inferred. Surveys Campaigns Launch Retry-safe with idempotency_key.

surveys.campaigns.list

Read. Scope: surveys.read, admin. Contract: explicit. List survey campaigns

surveys.deployments.list

Read. Scope: surveys.read, admin. Contract: explicit. List survey deployments

surveys.deployments.set_status

Write. Scope: surveys.write, admin. Contract: source_inferred. Surveys Deployments Set Status Retry-safe with idempotency_key.

surveys.get

Read. Scope: surveys.read, admin. Contract: source_inferred. Surveys Get

surveys.imports.create

Write. Scope: surveys.write, admin. Contract: explicit. Create and run a survey import Required fields: kind. Retry-safe with idempotency_key.

surveys.imports.process

Write. Scope: surveys.write, admin. Contract: source_inferred. Surveys Imports Process Retry-safe with idempotency_key.

surveys.invitations.list

Read. Scope: surveys.read, admin. Contract: explicit. List survey invitations

surveys.links.create

Write. Scope: surveys.write, admin. Contract: source_inferred. Surveys Links Create Retry-safe with idempotency_key.

surveys.list

Read. Scope: surveys.read, admin. Contract: explicit. List survey definitions

surveys.responses.get

Read. Scope: surveys.read, admin. Contract: source_inferred. Surveys Responses Get

surveys.responses.list

Read. Scope: surveys.read, admin. Contract: explicit. List survey responses

surveys.triggers.list

Read. Scope: surveys.read, admin. Contract: explicit. List survey trigger sets

surveys.types.list

Read. Scope: surveys.read, admin. Contract: explicit. List supported question types and Studio templates

surveys.versions.list

Read. Scope: surveys.read, admin. Contract: source_inferred. Surveys Versions List

surveys.webhooks.delete

Write. Scope: surveys.write, admin. Contract: source_inferred. Surveys Webhooks Delete Retry-safe with idempotency_key.

surveys.webhooks.list

Read. Scope: surveys.read, admin. Contract: explicit. List survey webhook subscriptions

surveys.webhooks.save

Write. Scope: surveys.write, admin. Contract: explicit. Create or update a survey webhook subscription Required fields: url. Retry-safe with idempotency_key.

فريق (63)

team.delete

Write. Scope: team.write, admin. Contract: route_inferred. Admin Users Delete

team.delete.route.departments.delete

Write. Scope: team.write, admin. Contract: route_inferred. Departments Delete

team.list

Read. Scope: team.read, admin. Contract: route_inferred. Admin Users List

team.list.route.departments.list

Read. Scope: team.read, admin. Contract: declared_dynamic. Departments List

team.perf.activity

Write. Scope: admin. Contract: route_inferred. Team Perf Activity

team.perf.ai.compare

Write. Scope: admin. Contract: route_inferred. Team Perf Ai Compare

team.perf.ai.review

Write. Scope: admin. Contract: route_inferred. Team Perf Ai Review

team.perf.availability

Write. Scope: admin. Contract: route_inferred. Team Perf Availability

team.perf.award.finalize

Write. Scope: admin. Contract: route_inferred. Team Perf Award Finalize

team.perf.award.history

Read. Scope: team.read, admin. Contract: route_inferred. Team Perf Award History

team.perf.award.void

Write. Scope: admin. Contract: route_inferred. Team Perf Award Void

team.perf.claim.pay

Write. Scope: admin. Contract: route_inferred. Team Perf Claim Pay

team.perf.claim.recover

Write. Scope: admin. Contract: route_inferred. Team Perf Claim Recover

team.perf.claim.reject

Write. Scope: admin. Contract: route_inferred. Team Perf Claim Reject

team.perf.clear

Write. Scope: admin. Contract: route_inferred. Team Perf Clear

team.perf.coaching.action.item.add

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Coaching Action Item Add

team.perf.coaching.action.item.complete

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Coaching Action Item Complete

team.perf.coaching.evidence.pin

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Coaching Evidence Pin

team.perf.coaching.evidence.unpin

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Coaching Evidence Unpin

team.perf.coaching.session

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Coaching Session

team.perf.coaching.session.create

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Coaching Session Create

team.perf.coaching.session.update

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Coaching Session Update

team.perf.coaching.sessions

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Coaching Sessions

team.perf.coaching.status

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Coaching Status

team.perf.data

Write. Scope: admin. Contract: route_inferred. Team Perf Data

team.perf.heatmap

Write. Scope: admin. Contract: route_inferred. Team Perf Heatmap

team.perf.history

Write. Scope: admin. Contract: route_inferred. Team Perf History

team.perf.pay.all.claims

Write. Scope: admin. Contract: route_inferred. Team Perf Pay All Claims

team.perf.qa.calibration.record

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Qa Calibration Record

team.perf.qa.dispute.resolve

Write. Scope: admin. Contract: route_inferred. Team Perf Qa Dispute Resolve

team.perf.qa.disputes

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Qa Disputes

team.perf.qa.evaluation.submit

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Qa Evaluation Submit

team.perf.qa.overview

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Qa Overview

team.perf.qa.scorecard.publish

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Qa Scorecard Publish

team.perf.qa.scorecard.save

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Qa Scorecard Save

team.perf.quest.record

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Quest Record

team.perf.quest.save

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Quest Save

team.perf.quest.status

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Quest Status

team.perf.quests

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Quests

team.perf.recognition

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Recognition

team.perf.recognition.settings.save

Write. Scope: admin. Contract: route_inferred. Team Perf Recognition Settings Save

team.perf.recognition.streak.history

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Recognition Streak History

team.perf.recognition.streaks.record

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Recognition Streaks Record

team.perf.reward.budget.authorize

Write. Scope: admin. Contract: route_inferred. Team Perf Reward Budget Authorize

team.perf.reward.claims

Write. Scope: admin. Contract: route_inferred. Team Perf Reward Claims

team.perf.reward.pay

Write. Scope: admin. Contract: route_inferred. Team Perf Reward Pay

team.perf.reward.payouts

Write. Scope: admin. Contract: route_inferred. Team Perf Reward Payouts

team.perf.reward.period.finalize

Write. Scope: admin. Contract: route_inferred. Team Perf Reward Period Finalize

team.perf.reward.period.history

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Reward Period History

team.perf.reward.period.preview

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Reward Period Preview

team.perf.reward.period.reverse

Write. Scope: admin. Contract: route_inferred. Team Perf Reward Period Reverse

team.perf.reward.period.void

Write. Scope: admin. Contract: route_inferred. Team Perf Reward Period Void

team.perf.reward.save

Write. Scope: admin. Contract: route_inferred. Team Perf Reward Save

team.perf.reward.state

Write. Scope: admin. Contract: route_inferred. Team Perf Reward State

team.perf.trends

Write. Scope: admin. Contract: route_inferred. Team Perf Trends

team.perf.v2.data

Write. Scope: admin. Contract: route_inferred. Team Perf V2 Data

team.perf.v2.export

Write. Scope: admin. Contract: route_inferred. Team Perf V2 Export

team.perf.v2.live

Write. Scope: admin. Contract: route_inferred. Team Perf V2 Live

team.perf.v2.reward.sheet

Write. Scope: admin. Contract: route_inferred. Team Perf V2 Reward Sheet

team.perf.v2.settings

Write. Scope: admin. Contract: route_inferred. Team Perf V2 Settings

team.perf.v2.settings.save

Write. Scope: admin. Contract: route_inferred. Team Perf V2 Settings Save

team.save

Write. Scope: team.write, admin. Contract: route_inferred. Admin Users Save

team.save.route.departments.save

Write. Scope: team.write, admin. Contract: route_inferred. Departments Save

التذاكر (77)

tickets.ai.summary

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Ai Summary

tickets.analytics

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Analytics

tickets.approval.decide

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Approval Decide

tickets.approval.request

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Approval Request

tickets.approvals.pending

Read. Scope: tickets.read, admin. Contract: declared_dynamic. Ticket Approvals Pending

tickets.assignment.rule.delete

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Assignment Rule Delete

tickets.assignment.rule.list

Read. Scope: tickets.read, admin. Contract: declared_dynamic. Ticket Assignment Rule List

tickets.assignment.rule.save

Write. Scope: tickets.write, admin. Contract: declared_dynamic. Ticket Assignment Rule Save

tickets.assignment_rules.delete

Write. Scope: tickets.write, admin. Contract: source_inferred. Tickets Assignment Rules Delete Retry-safe with idempotency_key.

tickets.assignment_rules.save

Write. Scope: tickets.write, admin. Contract: explicit. Create or update a ticket assignment rule Required fields: name. Retry-safe with idempotency_key.

tickets.bulk

Write. Scope: tickets.write, admin. Contract: source_inferred. Tickets Bulk Retry-safe with idempotency_key.

tickets.bulk.route.tickets.bulk

Write. Scope: tickets.write, admin. Contract: route_inferred. Tickets Bulk

tickets.calendar.delete

Write. Scope: tickets.write, admin. Contract: route_inferred. Sla Calendar Delete

tickets.calendar.save

Write. Scope: tickets.write, admin. Contract: declared_dynamic. Sla Calendar Save

tickets.claim

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Claim

tickets.csat.get

Read. Scope: tickets.read, admin. Contract: explicit. Get the CSAT response for one ticket Required fields: ticket_id.

tickets.csat.list

Read. Scope: tickets.read, admin. Contract: explicit. List ticket CSAT responses in the bound workspace

tickets.csat.metrics

Read. Scope: tickets.read, admin. Contract: explicit. CSAT metrics for a period (the tickets dashboard numbers)

tickets.embed.load

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Embed Load

tickets.embed.save

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Embed Save

tickets.embed.secret

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Embed Secret

tickets.field.save

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Field Save

tickets.follower.add

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Follower Add

tickets.follower.remove

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Follower Remove

tickets.get

Read. Scope: tickets.read, admin. Contract: source_inferred. Tickets Get

tickets.kb.deflection

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Kb Deflection

tickets.kb.draft

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Kb Draft

tickets.kb.save

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Kb Save

tickets.kb.version.restore

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Kb Version Restore

tickets.kb.versions

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Kb Versions

tickets.link.add

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Link Add

tickets.link.remove

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Link Remove

tickets.list

Read. Scope: tickets.read, admin. Contract: source_inferred. Tickets List

tickets.open

Write. Scope: tickets.write, admin. Contract: source_inferred. Tickets Open Retry-safe with idempotency_key.

tickets.open_guest

Write. Scope: tickets.write, admin. Contract: source_inferred. Tickets Open Guest Retry-safe with idempotency_key.

tickets.ops.summary

Read. Scope: tickets.read, admin. Contract: declared_dynamic. Ticket Ops Summary

tickets.policy.delete

Write. Scope: tickets.write, admin. Contract: route_inferred. Sla Policy Delete

tickets.policy.save

Write. Scope: tickets.write, admin. Contract: declared_dynamic. Sla Policy Save

tickets.presence.leave

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Presence Leave

tickets.presence.ping

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Presence Ping

tickets.quick.replies

Write. Scope: tickets.write, admin. Contract: declared_dynamic. Ticket Quick Replies

tickets.quick.reply.save

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Quick Reply Save

tickets.relations.get

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Relations Get

tickets.reply

Write. Scope: tickets.write, admin. Contract: source_inferred. Tickets Reply Retry-safe with idempotency_key.

tickets.reply.delete

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Reply Delete

tickets.reply.edit

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Reply Edit

tickets.reply.outbound.convert

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Reply Outbound Convert

tickets.reply.translate

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Reply Translate

tickets.reply.translation.delete

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Reply Translation Delete

tickets.reply.translation.save

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Reply Translation Save

tickets.rule.compose

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Rule Compose

tickets.side.ai.draft

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Side Ai Draft

tickets.side.assign.department

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Side Assign Department

tickets.side.create

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Side Create

tickets.side.list

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Side List

tickets.side.mention

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Side Mention

tickets.side.recipients

Read. Scope: tickets.read, admin. Contract: declared_dynamic. Ticket Side Recipients

tickets.side.reply

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Side Reply

tickets.sla.delete

Write. Scope: tickets.write, admin. Contract: source_inferred. Tickets Sla Delete Retry-safe with idempotency_key.

tickets.sla.save

Write. Scope: tickets.write, admin. Contract: explicit. Create or update an SLA policy Required fields: name. Retry-safe with idempotency_key.

tickets.split

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Split

tickets.split.candidates

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Split Candidates

tickets.tag.add

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Tag Add

tickets.tag.list

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Tag List

tickets.tag.remove

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Tag Remove

tickets.tags.add

Write. Scope: tickets.write, admin. Contract: source_inferred. Tickets Tags Add Retry-safe with idempotency_key.

tickets.tags.list

Read. Scope: tickets.read, admin. Contract: source_inferred. Tickets Tags List

tickets.tags.remove

Write. Scope: tickets.write, admin. Contract: source_inferred. Tickets Tags Remove Retry-safe with idempotency_key.

tickets.update

Write. Scope: tickets.write, admin. Contract: source_inferred. Update a ticket status, priority, subject, department or assignment Retry-safe with idempotency_key.

tickets.view.delete

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket View Delete

tickets.view.list

Read. Scope: tickets.read, admin. Contract: declared_dynamic. Ticket View List

tickets.view.save

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket View Save

tickets.views.delete

Write. Scope: tickets.write, admin. Contract: source_inferred. Tickets Views Delete Retry-safe with idempotency_key.

tickets.views.save

Write. Scope: tickets.write, admin. Contract: source_inferred. Tickets Views Save Retry-safe with idempotency_key.

tickets.worklog.add

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Worklog Add

tickets.worklog.delete

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Worklog Delete

tickets.worklog.list

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Worklog List

todos (1)

todos.add

Write. Scope: todos.write, admin. Contract: source_inferred. Todos Add Retry-safe with idempotency_key.

visitors (3)

visitors.block

Write. Scope: visitors.write, security.write, admin. Contract: route_inferred. Block a visitor Required fields: visitor_id.

visitors.list

Read. Scope: visitors.read, analytics.read, admin. Contract: route_inferred. List visitors

visitors.table

Read. Scope: visitors.read, admin. Contract: route_inferred. Visitors Table

الويب هوك (1)

webhooks.events.list

Read. Scope: webhooks.read, crm.read, admin. Contract: explicit. List outbound webhook events and their payloads

كتابة (6)

writing.analyze

Write. Scope: writing. Contract: source_inferred. Writing Analyze Retry-safe with idempotency_key.

writing.compose

Write. Scope: writing. Contract: source_inferred. Writing Compose Retry-safe with idempotency_key.

writing.reply

Write. Scope: writing. Contract: source_inferred. Writing Reply Retry-safe with idempotency_key.

writing.rewrite

Write. Scope: writing. Contract: source_inferred. Writing Rewrite Retry-safe with idempotency_key.

writing.summarize

Write. Scope: writing. Contract: source_inferred. Writing Summarize Retry-safe with idempotency_key.

writing.translate

Write. Scope: writing. Contract: source_inferred. Writing Translate Retry-safe with idempotency_key.

هل OpenAPI وPostman متاحان؟+

نعم. 3.0 الوثيقة موجودة في /api/v1/openapi.php, مجموعـة البريدي المولدة هي في. /api/v1/postman.php, ووثائق المطور القابلة للقراءة البشرية هي في. /api/docs/.

كيف أعمل مع أكثر من حيز عمل واحد؟+

إرسال site_key في جسد الطلب لاختيار مساحة عمل. مفتاح صادر لمساحة عمل واحدة يظل مركّباً عليها؛ المفتاح مع سياق الإدارية يمكن أن تختار أي مساحة العمل المسموح لها برؤيته، ويتم رفضه لأي منها لا يكون.

ما هي الإجراءات التي يمكن أن يقوم بها مفتاح قراءة فقط؟+

أي عمل يوضع عليه علامة القراءة. حدِّد طريقة الإذن على المفتاح إلى read_only ويتم رفض كل كتابة باستخدام read_Only_Key، وبالتالي لا يمكن لعملية التكامل في إعداد التقارير أن تغيِّر أي شيء حتى عن طريق الخطأ.

لماذا حصلت على not_found لشيء يمكنني رؤيته في الإدارية؟+

المفتاح هو نطاق إلى مساحة عمل. السجلات في مساحات العمل الأخرى تعيد not_found بدلا من خطأ الإذن، لذلك لا يؤكد API أبدا ما إذا كان شيء موجود في مكان آخر.

المطور

الأمن API

عقد أمني واحد لكل وصلة وتكامل: استفسر OpsIQ ماذا تعرف عن IP أو المرسل، وتغذية الاستغلال الذي يراه نظامك الخاص.

OpsIQ الدفاع عن النفس: IP ويمنع الجدار الواقي المهاجمين، ويصنف أنابيب التذاكر الرسائل غير المرغوب فيها، ويصنف الذكاء الصناعي الأمني الجناة ويقترح قواعد للحظر. API يفتح هذا الذكاء لأنظمةك الأخرى. منصة الفواتير، بوابة العميل أو التطبيق المخصص يمكن التحقق من زائر قبل الثقة به، والإبلاغ عما لاحظه بحيث يتعلم النظام بأكمله من كل سطح.

ماذا يمكنك أن تفعل

التحقق قبل الثقة

security. check يرد بحالة الجدار الواقي، أي قاعدة تطابق المرسل للرسائل غير المرغوب فيها، وحكم الذكاء الصناعي المخزن في مخزن مؤقت لـ IP.

أبلغ ما رأيته

security.report يسجل الملاحظة كحدث أمني، ويجعل الذكاء الاصطناعي الأمني يصنفها IP التقارير المتكررة تتجمع في حوادث، تماماً مثل الهجمات التي تحدث عندما يقوم شخص ما بعمل شيء خاطئ. OpsIQ مباشرة.

قواعد تقاسم الرسائل غير المرغوب فيها

security. blocklist. add و security. blocklist. list يقرأان ويكتبان نفس القواعد التي تستخدمها صفحة التذاكر، وبالتالي فإن المرسل الذي يتم حجبه في نظام ما يمنع من الوصول إليه في كل مكان.

الإبلاغ عن إساءة الاستعمال من موصل
POST /api/v1.php
Authorization: Bearer opq_your_api_key
Content-Type: application/json

{
  "action": "security.report",
  "ip": "203.0.113.7",
  "kind": "spam",
  "reason": "Sent 40 junk tickets in 10 minutes",
  "source": "whmcs:example.com"
}

النطاقات والسلامة

security.read

مطلوب لـ security. check و security. blocklist. list آمن لإعطاء تكامل الإبلاغ

security.write

مطلوب لـ security. report و security. blocklist. add، أعطه فقط للأنظمة التي تريد أن تغذي القواعد والتقارير فيها.

لا شيء يدمر في صمت

لا يزال المرسل المدرج في قائمة المنع ينزل إلى عرض الرسائل غير المرغوب فيها حيث يمكن قراءة التذكرة واستعادتها.

المنبر يحمي نفسه

الخادم الخاص IP لا يمكن أبداً حجب عناوين البريد الإلكتروني أو إدراجها في قوائم الحجب أو الإبلاغ عنها من خلال هذا الموقع. API لذا فإن التكامل الخاطئ لا يمكن أن يحطم المنصة.

💡
ضع مفتاحاً تحت Integrations، ثم API Keys، واعطه فقط النطاقات الأمنية التي يحتاجها. ويوجد عقد الطلب الكامل لكل عمل في meta. actions ومستند OpenAPI.
هل وصلاتي الحالية تستخدم هذا تلقائياً؟+

التزامن الخارجي هو بالفعل تلقائيا: عندما تمنع IP, المنصات المتصلة يقال من خلال تزامن أمن الموصل. API هو النصف الداخل، ووجه وصلتك أو رمزك المخصص إلى هذه الأفعال الأربعة بمفتاح يحمل نطاقات الأمن.

أين تعيش قواعد التهديد؟+

مخزن واحد. صفحة التذاكر تحكم في المرسلين، الذكاء الاصطناعي للرسائل غير المرغوب فيها في الإعدادات، و هذا API كلها تعمل ضد نفس قائمة الحظر، لذلك هناك مكان واحد بالضبط للنظر فيه.

المطور

الأحداث API

إرسال الأحداث المخصصة من خادمك أو موقع الويب إلى OpsIQ لتحليلات، التجارب، CRM محركات، وشروط webhook.

كيف يعمل
الأحداث APIاستدعاء track () لإرسال حدث demo_booked مخصص إلى OpsIQ، الذي يغذّي أهداف التحويل، والشرائح والمثيرات.OpsIQ. track("demo_booked", {القيمة: 0، الخطة: "pro"});حيث يقوم العميل بنشر OpsIQ كـالأجزاءالمُحفزات والروابط الشبكيةالمتصفح (OpsIQ.track) أو POST على جانب الخادوم /v1/events
الأحداث API

أحداث جانب المتصفح

تتبع أحداث المتصفح
window.OpsIQ = window.OpsIQ || [];
window.OpsIQ.push(["track", "button_clicked", {
  button: "signup",
  page: "/pricing",
  variant: "green"
}]);

أحداث جانب الخدمة

على جانب الخادم، تسجيل الأنشطة والتحويلات ضد الاتصال من خلال الإجراء API:: الاستخدام crm.activities.record دورة الحياة/نشاط الأعمال التجارية crm.conversions.record وليس هناك أي حاجة إلى تحويل events.send العمل؛ و CRM _BAR_ /v1/inbound.php?t=<token> لأنظمة الطرف الثالث التي تدفع الأحداث.

نشاط جانب الحاسوب (الإجراء API)
POST /api/v1.php
Authorization: Bearer opq_your_key
Content-Type: application/json

{
  "action": "crm.activities.record",
  "site_key": "site_abc123",
  "email": "[email protected]",
  "event": "subscription.upgraded",
  "value": 50,
  "currency": "USD"
}

اتفاقية التسمية

علامة النقطة

"طلب.مكتمل" وليس "طلب مكتمل".

الماضي

"الزر.نقر" ليس "الزناد.نقرات".

كن محدداً

"pricing. plan_selected" ليس "user_action".

المطور

كيف تتدفق البيانات من خلال OpsIQ

فهم تدفق البيانات يساعدك على تصحيح الأخطاء في عمليات التكامل وتحسين الأداء.

كيف يعمل
كيف تتدفق البياناتتدفقات البيانات من المستعارة و المنارة إلىOpsIQالجوهر (CDP, identity graph, AI brain, analytics,CRMثم عبر الويب و ريستAPI.ويدجتعلامةOpsIQ أساسيرسم بياني للهويةدماغ الذكاء الاصطناعيمحللCRMاتصالات خارجيةواجهة برمجة التطبيقات REST
تدفق البيانات

تدفق البيانات الواردة

1
منارة الوسائط

TheJavaScriptويرسل (وادج) رسائل للصفحة، ونقرات، وتحدث الرسائل إلى/beacon.php.

2
تناول الأحداث

الأحداث المخزنة في opsiq_events مع site_key، ونوع الحدث، والعميل، والخصائص.

3
جمعية الدورة

يقوم بنّاء الجلسات بتجميع مشاهدات الصفحة في جلسات (عبر Cron).

4
باء - تحديد الهوية

وعند تحديد هوية السجلات المجهولة الهوية، يتم ربطها ببيانات العميل.

5
تزامن الموصل

وتسحب أجهزة الاتصال البيانات من المنصات الخارجية وتخزنها في مخزون أجهزة الوصل.

6
سياق الذكاء الاصطناعي

ويجمع الذكاء الاصطناعي السياق من: تاريخ الزائر، وبيانات العميل، ومعلومات الموصل، والمعرف، والطلب.

تدفق البيانات الخارجة

1
حرائق الأحداث

حوادث الأحداث الداخلية (ticket. created, chat. message, order. completed).

2
صف الوظائف

وضع الحدث في طابور الأعمال غير المتزامنة.

3
إرسال Webhook

ويوقع المرسل ويرسل إلى جميع النقاط الطرفية المشتركة.

4
إعادة المحاولة عند الفشل

إعادة محاولة عمليات التسليم الفاشلة مع تراجع أسي.

الإعدادات

مرجع الإعدادات

الإعدادات هي مركز التحكم في مساحة العمل. كل شيء أدناه يتعلق بنطاق مساحة عملك الحالية، وبالتالي يمكن لحساب واحد أن ينفذ عدة علامات تجارية بهويات مختلفة وسلوك المحادثة وقواعد الاحتفاظ.

إيجاد بيئة

هناك نحو ستمائة من الضوابط الفردية في الإعدادات، موزعة على أحد عشر علامة تبويب مجمعة تحت أربع قوائم. ولا يتوقع منا أن نبحث عنها.

إعدادات البحث (Ctrl + K)

اضغط على Ctrl + K أو Cmd + K على جهاز Mac، في أي مكان من صفحة الإعدادات. أدخل كلمات بسيطة ثم اضغط Enter للقفز إلى التحكم مباشرةً. البحث يتحمل الأخطاء المطبعية الصغيرة ويفهم الكلمات ذات الصلة، لذلك يجد المقرر Cron وتجد الخصوصية تدابير التتبع. لا يظهر إلا الإعداد الذي يمكن أن يفتحه دورك.

حيز العمل والخطة

التعليم العام والرخص.

الذكاء الاصطناعي ودعم العملاء

مساعد لشؤون الذكاء الاصطناعي، محادثات العملاء OpsIQ كتابة ودعم بوابة.

البيانات والحوكمة

التتبع والخصوصية، الإذن والأمن.

النظام

Cron Setup (الاستضافة الذاتية فقط) ومنطقة الخطر.

الادخار

كل علامة تبويب تخزن بنفسها مع زر حفظ خاص بها. المحادثات العميلية و OpsIQ الكتابة يثبتان على الشاشة. تخزين قبل تغيير العلامات التبويب؛ لا يتم نقل التغييرات عبر.

الروابط العميقة

يتم كتابة العلامة المرجعية الفعلية في عنوان الصفحة، وبالتالي يمكن وضع علامة مرجعية على علامه أو إرسالها إلى زميل.

عامة: الهوية التجارية

أهم بطاقة على الصفحة، تقرأ الوكالة هذه القيم في كل رد وتقرير ومذكرة يومية.

اسم العمل

تستخدم في تقارير الإدارة الذاتية، والإحاطات اليومية والصياغة الموجهة إلى العملاء.

الأعمال التجارية والصناعة

يقوم بتحليل الذكاء الاصطناعي، وتقييم الريادة، والإحاطات والمجموعات المسبقة للدراسات الاستقصائية.اختر من بين استضافة الويب، والتجارة الإلكترونية، والبرامجيات كخدمة، والعقارات، والوكالات، والخدمات الاستشارية، والرعاية الصحية، والتعليم، والشؤون المالية أو الأعمال التجارية العامة.

لغة النظام

اللغة التي تظهر لأي شخص لم يختار لغته الخاصة. يمكن لكل وكيل أن يعدلها في ملفه الشخصي.

استخدام لغة المتصفح

يعرض صفحة الدخول بلغة الزائر الخاص. بمجرد أن يختار شخص ما لغة هناك، فإن اختياره هو الفائز وهذا لا يعلوها أبداً.

منطقة التوقيت

المنطقة التي يعمل فيها النظام بأكمله: التواريخ، التقارير، الجداول الزمنية وعملية كرون الخلفية. استخدم منطقة توقيت عملياتك، وليس عملائك.

عامة: GeoIP والتتبع

مسار قاعدة البيانات GeoIP2

المسار الكامل إلى GeoLite2-City.mmdb. الكشف التلقائي عند أول تحميل عبر cPanel, Plesk, DirectAdmin, Cloudways،() Docker بسيطة Linux إضافة GeoLite2-ASN.mmdb في نفس المجلد لمقدم خدمات الإنترنت الزائر.

طريقة المصدر الجغرافي

GeoLite2 فقط، وGeoLite 2 مع Cloudflare خيار احتياطي أو Cloudflare فقط.Cloudflare تقتضي الطرائق أن يكون الموقع وكيلاً عبر.Cloudflare, مع تفعيل عناوين مواقع الزوار لتفاصيل المدينة والمنطقة.

انتهاء مدة الجلسة (ثوان)

يعتبر عدم النشاط قبل انتهاء جلسة الزائر قد انتهى. القيمة الافتراضية هي 14400، وهي أربع ساعات.

فترات التحديث المباشر (ثوان)

كم مرة يتم تحديث التغذية الحية. الافتراض 30 ثانية.

العتبة النشطة (دقيقة)

كم من الوقت يحسب الزائر على أنه حي بعد تحميل صفحته الأخيرة. الافتراض 2 دقائق. هذا هو وقت توقف التغذية الحية، وليس طول الجلسة.

الاحتفاظ بالبيانات (بالأيام)

تحذف السجلات التي تم جمعها وتولدها في هذا العمر: تحليلات، ودرقات، وتذاكر، وردود فعل، ومعاملات، وقياسات عن بعد، وسجلات للتكامل،CRMنشاط0يحافظ على كل شيء إلى الأبد، لا تُزال أبداً المواضع والمحتوى المرخص و إيصالات الموافقة

عندما يتم حذف محادثة

يُختار كم من المحادثة المحذوفة تبقى في سجلها: السجل الكامل، والسجل بدون المحادثة أو النتيجة فقط

تتبع حركة المرور

يحسب الزوار كزائرين. اتركه؛ فهو يضخم أعداد الزوار ويشوه كل تقرير.

تم تفعيل استقصاء التعليقات

يعرض على الزوار أداة التغذية المرتدة على نطاق الموقع. منفصلة عن استقصاءات الدردشة تحت محادثات العملاء، تدفق الدعم.

عامة: خصائص الذكاء الاصطناعي

مفتاح رئيسي لكل سطح من أسطح الذكاء الاصطناعي كلها افتراضية ويتم حفظها حسب مساحة العمل

فرز التذاكر

يصنف كل تذكرة حسب الفئة والأولوية والرأي، ويكتب موجزاً للمسألة في أعلى التذكرة.

موجز تحليلي

يعرض علامات الفرز والموجز في نصيحة عندما يضع وكيل السطر في قائمة التذاكر. يتطلب AI Triage.

مساعد طيار (مؤلف)

يضاف مسودة رد من البرنامج الآلي، أكثر دفئاً، أقصر، أكثر رسمية واعتذار أزرار تحت مربع الرد التذكرة. لا شيء يرسل بدون الوكيل.

اسألني OpsIQ مساعد قائد الطائرة

يعرف أي زبون أو فاتورة أو تذكرة مفتوحة.

إحاطة صباحية

في أول يوم يفتح فيه الطيار الثاني يقدم تذاكر عاجلة، ردود متأخرة ومحادثات منتظرة.

عامة: المال، العلامات التجارية، الاحتياطي

OpsIQ عملة الأساس

كل إجمالي المال في الإدارية تحوّل إلى هذه العملة للعرض. الموصولات تخزن عملتها المصدرية الخاصة بها؛ وضع ذلك لكل موصل.

أسعار صرف العملات المتزامنة آليا

يقوم بتحديث الأسعار كل ست ساعات من مصدر عام مجاني بدون مفتاح API. يمكنك إضافة أسعار يدوية تطغى على المصدر. مع عدم وجود تزامن آلي، فإن العملات التي لا تحتوي على سعر يدويّ لن تُحول.

تمكين خاصيات التجارة والفواتير

تشغيله يكشف عن صفحة المبيعات والتحويلات، وبطاقات الإيرادات لوحة التحكم وتغذية الاستخبارات الحية. مع إطفائه، يتم إخفاء كل سطح السعر وتترك صفحة البيع من القائمة.

مفردات التجارة

التدريس OpsIQ صياغتك: هل تقوم بالتجديدات، وكلمة التجديد، وما الذي تبيعه، وماذا يطلق على المشترين.

العلامات والشعارات

تحميلان، أحدهما للخلفيات الواضحة (الشريط الجانبي الإداري) والآخر للظلام (صفحة الدخول). PNG, JPG, WebP or SVG up to 3 MB.

عميل استخبارات الموقع، يسمح بالخصوصية SSH الأهداف

The Auto-Implement SEO العميل يتواصلSSH- تحجب العناوين الخاصة والنقاشة والعناوين المحجوزة عن طريق التقصير كتدبير مضاد لنموذج الإبلاغ الموحد، ولا يمكن إلا من التركات ذاتيا التي يجب أن تصل إلى خادم محلي.

OpsIQ النسخ الاحتياطي/الاستعادة

تصدير كل الإعدادات والجدول المملوك لـ OpsIQ بالإضافة إلى الملفات المرفوعة. يستبدل استرداد التشكيل والسجلات الخاصة بــ _OpsIQ فقط؛ ولا يمس أبدا العملاء أو الفواتير أو التذاكر أو الخدمات أو المجالات أو الأوامر أو المعاملات.

⚠️
احصل على نسخة احتياطية قبل استخدام أي شيء في منطقة الخطر. النسخ الاحتياطي يعيش في العام وتعيش أعمال الحذف في منطقة خطر، لذلك من السهل الوصول إلى زر حذف دون أن يكون قد تم تصدير أولاً.
الإعدادات

الإعدادات: الأمن

حماية الدخول الإداري، وحسابات موظفيك والبيانات التي يجمعها OpsIQ. يتم تشكيل دخول العميل لبوابة الدعم بشكل منفصل.

حماية التسجيل

GooglereCAPTCHA

يوقف الروبوتات وملء بيانات الاعتماد على إدخال الإدارية. اختيار v3 (غير مرئي، الدرجة) أو v2 ( مربع التحقق)، وضع عتبة الدرجة v3، وتقديم الموقع والمفاتيح السرية. هذه المفاتيح نفسها تعيد استخدامها من قبل استمارة طلب بوابة الدعم.

الإغلاق التلقائي عند فشل الدخول

يحجب عنوان بعد عدد من الإخفاقات داخل نافذة، لعدد من الساعات. يمكنك تعديل رسالة الصفحة المقفلة وعرض شاشة انتظار صغيرة لتشتيت الانتباه.

تسجيل الدخول

سياسة لكلمة السر مع حد أدنى من طولها، ورفض كلمات السر التي توجد في الانتهاكات المعروفة، وغلق حسابات معينة ضد تعبئة البيانات الموثقة، والتحقق الإلزامي من عاملين لكل مدير، وإعادة إدخال كلمة المرور قبل القيام بأعمال خطرة، وإنذارات الدخول إلى جهاز جديد.

سين - أون )توقيع واحد(OIDC)

تسجيل دخول الموظفين من خلال مقدم خدمات الهوية الخاص بك. URL ومجالات الإتاحة التلقائية، واحد لكل خط، تنشئ المستخدمين تلقائيا عند أول دخول.

الدخول الوحيد (Single Sign On)SAML 2.0)

لمقدمي الخدمات الذين يتحدثون SAML. OpsIQ يقدم الرد من ACS.URL و SP هوية الكيان؛ أنت تقدم IdP هوية كيان، تسجيل الدخول URL, الخروج الاختياري URL و سين.509 شهادة توقيع. الحقول الخاصة بخصائص البريد الإلكتروني والاسم مطلوبة فقط لأسماء الخصائص غير القياسية.

توفير SCIM

إنشاء واستكمال وتعطيل البرامجيات التي تعتمد على الدليل OpsIQ الحسابات.OpsIQ الموردون SCIM القاعدة URL؛ أنت تنتج رموزا معلمة هنا بحيث يمكن إلغاء واحدة دون كسر الباقي.

التهديدات والمنع وجمع الأموال

قائمة الخروج المسموح به

يقيد المضيفين الخارجيين الذين يمكن أن يستدعيهم هذا الموصل لمجال العمل. مرافق للتحكم في هدف SSH في General.

تصنيف التهديدات والحظر التلقائي

يحجب زائراً بمجرد أن يتجاوز معدل تهديده العتبة الخاصة بك. 0 يعطلها. شاهد صفحة نظرة عامة على الأمن لأسبوع قبل اختيار رقم.

رسالة صفحة التثبيت

الرسالة التي يراها الزائر المحظور، بنص واضح أو حسب الرغبة الخاصة بك HTML قفله.

بيانات أساسية حيوية عن الموقع من زوار حقيقيين

يقيس LCP و INP و CLS من جلسات حقيقية.

تسليم الأحداث في دفعات، وقابلة لإعادة المحاولة

وتصطف الأحداث المخصصة في المتصفح وتقدم في مجموعات مع إعادة محاولات، مما يقلل من الخسارة على الوصلات المحمولة السيئة.

منارات تتبع موقعة

تحمل العناصر الحقيقية المدمجة رمزاً تشفيرياً دائرياً بحيث يمكن رفض بيانات التتبع المزورة. غير متوفر بالشكل الافتراضي؛ يغير تمكينه طريقة توثيق العناصر المدمجّة، لذلك قم باختباره أولاً.

الإنذارات الأمنية

تشغيل افتراضي، الكشف والمنع يجري بغض النظر هذه البطاقة تتحكم في ما إذا كنت قد تم إبلاغك، وكم من الذكاء الاصطناعي تساعد.

تمكين التنبيهات الأمنية

مفتاح رئيسي لهذه البطاقة

عتبة موجة الدخول الفاشل

كم عدد عمليات الدخول الفاشلة في فترة قصيرة تعتبر موجة تستحق التنبيه عليها

IP معلومات عن السمعة

يضاف تصنيف التهديد للزوار الذين يظهرون في تغذيات الإساءة العامة.

مراقبة الموقع

مدة التشغيل بالساعة TLS:: عمليات التحقق من انتهاء الصلاحية، والإنذار قبل انقضاء صلاحية الشهادة.

محلل أمني للذكاء الاصطناعي وموجزات الحوادث التي يقوم بها الذكاء التقني

يضيف قرارا قابلا للتفسير إلى النشاط المشبوه، ويجمع الهجمات ذات الصلة في حادث واحد مقروء بدلا من تدفق الأحداث.

الطائرة الذاتية للسياسة

فهو يعمل من تلقاء نفسه، ويحول ما يتعلمه من الحادثة إلى قاعدة مقترحة أو مطبقة. لا تفعل ذلك حتى تستعرض مقترحاته وتقبلها.

موجز أمني يومي ومستشار أسبوعي بشأن الوضع الأمني

موجز يومي في صفحة الاستعراض العام للأمن، وقائمة مرجعية أسبوعية للتشديد تبين ما هو محمي وما لا يزال مفتوحا.

المقترحات المتقادمة التي تنتهي صلاحيتها تلقائيا

قاعدة كتلة مقترحة لم تتصرف أبدا على انتهاء صلاحيتها بنفسها بدلا من التراكم.

إعادة بث جلسة

تمكين إعادة عرض جلسة DOM

يسجل جلسات الزوار لإعادة التشغيل. وعندما تكون مكتبة إعادة العرض منقطعة لا يتم تحميلها أبدا، وبالتالي ليس هناك تكلفة في تركها منقطعا. ويتم أخذ عينات من التسجيلات وتغطيتها بالخصوصية، ويجري مشاهدتها على صفحة إحياء الجلسة تحت التحليلات.

معدل العينة، الحد الأقصى للاستخلاص، الاحتفاظ

:: تحديد نسبة الجلسات التي يتعين تسجيلها، ومدة التسجيل الوحيد الذي يمكن أن يستمر، وعدد الأيام التي تحفظ فيها التسجيلات.

⚠️
يسجل إعادة بث الجلسة أناساً حقيقيين يستخدمون موقعك. حافظ على معدل العينة والاحتفاظ به منخفضاً إلى الحد الذي لا يزال يجيب عن سؤالك، وكشف عنه في إشعار الخصوصية الخاص بك.
الإعدادات

الإعدادات: التتبع والخصوصية

ما الذي يمكن أن يجمعه OpsIQ ، ومدة بقاء كل نوع من السجلات.

الاستثناءات

المستبعدون IPs ونطاقات CIDR

عناوين لم يتم تتبعها أبدا، واحد لكل سطر، العناوين الدقيقة أو نطاقات CIDR. أنظف طريقة لإبقاء فريقك الخاص خارج تحليلاتك، لأنها تغطي كل شخص في ذلك العنوان بدلاً من الإداريين المسجلين فقط.

المستبعدون URL المسارات

أنماط الصفحة لم يتم تتبعها أبداً، واحدة في كل سطر، رمز غريب مع نجمة. على سبيل المثال /admin/* يحتفظ بالمكتب الخلفي بأكمله خارج سجلات الزوار.

سياسة الاحتفاظ بالبيانات

Per-subsystem auto-purge in days. Separate from the overall Data Retention setting in General and from the Danger Zone purge.

سجلات التفاعل مع الذكاء الاصطناعي

القياس عن بعد الثقة يحتفظ بمشاهدات قصيرة للاستفسار والرد. افتراضي 90 أيام. هذا يحتفظه معظم نص العميل، لذلك اختصره أولا عند تشديد السرية.

أحداث استخدام الذكاء الاصطناعي

حسابات الرموز لكل مكالمة للإبلاغ عن التكاليف. 90 أرقام فقط، لا محتوى للرسائل.

تتبع الإجراءات

سجل الإجراءات والأمن الذي يظهر التلاعب. 365 احتفظ بهذا لأطول فترة ممكنة فهو دليلك

التشخيص

سجلات صحة النظام. 30 أيام.

الأسئلة التي لم يرد عليها جواب

مجموعات من الأسئلة التي لا يستطيع الذكاء الاصطناعي الإجابة عليها. 90 اعمل من خلالها على صفحة الأسئلة التي أغفلتها منظمة العفو الدولية قبل انتهاء صلاحيتها.

أجهزة الرقابة والصادرات

إنذارات الشذوذ القياسي

مقارنة يومية للأمس مقابل خط الأساس الأخير، تنبيه عندما يتحرك مقياس أكثر من العتبة الخاصة بك. 35 نسبة مئوية، معطلة بالافتراض.

تصدير المستودع

بيانات الدورات الليلية، الزوار، مشاهدة الصفحات والجداول ذات الصلة لكتلة معلوماتك التجارية الخاصة بك، في شكل تختاره، والمحتفظ بها لعدد من الأيام.

الإعدادات

الإعدادات: مساعد إدارة الذكاء الاصطناعي

المساعد العائم الذي يستخدمه موظفوك داخل الإدارات، مع إمكانية الوصول إلى العملاء والفواتير والتذاكر والخوادم وسجلات الزمن. مساعد مختلف عن المساعد الذي يواجه الزبون تحت محادثة العميل.

OpsIQ

يظهر زر المساعد على كل صفحة إدارية. إذا تم إيقافه، سيُخفيه الجميع.

التصميم والسلوك

موقع الزاوية، عرض اللوحة 320 إلى 600 الطول اﻷقصى )م(400 إلى 900 نصف قطر الزاوية )0إلى 24()، وحجم الخط، وعدم وضوح الزجاج المموج خلف اللوحة.

أظهر الرموز السريعة

أزرار اختصار بزر واحد تحت العنوان أسرع طريقة للدخول لمعظم الموظفين

أظهر معلومات النموذج

يعرض أي نموذج استجاب وكم استغرق ذلك من الوقت. مفيد أثناء ضبط التكلفة، الضوضاء للاستخدام اليومي.

بوابة الوصول لكل مدير

يظهر المساعد فقط للمدير المسجل الذي يتطابق اسمه المستخدم وبريده الإلكتروني مع OpsIQ الوكيل المعين لهذا الحيز العملي. المالكون دائماً يمررون. استخدم زر تحقق من وصولي قبل التفعيل أو يمكنك إغلاق الفريق الخاص بك خارجه.

ألف - الأفراد

اسم العرض، وعنوان الرسالة ورسالة ترحيب مخصصة تُظهر عند فتح اللوحة.

رقائق ذكية سريعة التصرف

تعديل العلامة والنداء الأساسي لكل اختصار، إضافة الخاص بك، أو استعادة إلى الافتراضات. وعلامة هو ما يراه الموظفون، النداء هو ما يستلم الذكاء الاصطناعي.

الألوان والشكل

شكل الرقاقة (حبيبة، مستديرة، مربعة)، وألوان الرقاقات، وموضوع البطاقات وشكل جهاز الإطلاق (مدور، دوار، مربع) مع عرض مسبق مباشر.

ذاكرة المحادثة

يتذكر المساعد تاريخ كل شخص عبر جلسات المتصفح، حتى رسائل 120 ، المخزنة في قاعدة بياناتنا الخاصة بك. إزالته لبدء جديد.

الإعدادات

الإعدادات: محادثة العميل

وسيطة الدردشة التي يستخدمها عملائك، وأكبر منطقة من الإعدادات. ستة أزرار فرعية، مع المفتاح الرئيسي والحفظ المثبت في أعلى العلامة التبويب.

اعمل على مرور العلامات الفرعية بالترتيب في تركيب جديد: الهوية والنسخة، المظهر، السلوك، تدفق الدعم، التدريب على المعرفة.

الهوية والنسخة

هوية العلامة التجارية

اسم الوحدة، وعنوانها، واسم الذكاء الاصطناعي، والاسم المستخدم للإخطارات الخاصة بالنظام والإشعارات غير النشطة، وكيفية ظهور أسماء الوكلاء. يقرر مصدر اسم الوكالة ما بين الأسماء الحقيقية أو الاسم المخصص أو تسمية الفريق.

تحية في الدردشة

تحياتين، واحدة لجميع الزوار وأخرى للزوار المحددين السؤال يبدأ محادثات أكثر من البيان

إعلان

وقبل فتح الدردشة، تظهر رسالة عائمة باسمها الخاص، وبحجم الخط والألوان. ويمكن للذكاء الاصطناعي كتابة الملصقات، مع ضوابط لعدد ما يتم توليده، وعدد ما يعرض في كل زيارة والفجوة بينهما.

الطلبات والتسليم

السيناريو الكامل: طلب اسم وبريد إلكتروني، تأكيدات، طلب شخص، لا يوجد عملاء متاحون، تذكرة أنشئت أو ألغيت، التسليم معلق.

إشعارات الحالة والخمول

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

المؤلف والاقتراحات

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

مطلق، أيقونة وصور

أيقونة قاذفة، رمز اختياري مختلف عند فتحه، حجم القاذفة وصور للعامل البشري والذكاء الاصطناعي.

المظهر

الموضوع والزجاج

طريقة الموضوع، وتحديد مسبق للألوان العالية الجودة، وكثافة الغموض والانعكاسية، بالإضافة إلى إمكانية تغيير الرسوم المتحركة، وخطوط الفصل، وإخفاء صف الحالة، وإختفاء بطاقة صندوق الرسالة، وإخماد زر الإغلاق. ابدأ بمحدد مسبق؛ فهي تحدد عشرات الألوان في وقت واحد.

الألوان الرئيسية

المُطلق، العنوان، لوحة المساعدة، الروابط، الأزرار، إشعارات النظام والمؤلف، كل واحد مع لون البداية والنهاية للدرجات. يستخدم خيار الزجاج الافتراضي لتجاهل هذه ويحافظ على الشفافية النهائية.

لوحة، فقاعات ورقائق

حوالي ثلاثين من الاختيارات التي تغطي اللوحة، والحدود، والنص، ومنطقة المدخلات وكل نوع فقاعة (الزائر، والذكاء الاصطناعي، والوكيل، والكتابة، والنظام) بالإضافة إلى رقائق الاقتراح وحالة التحليق. فقط افتح هذا لمطابقة العلامة التجارية بدقة، وتحقق من التباين على نص الفقاعة.

التصميم والشكل

عرض اللوح وارتفاع، نصف قطر الزاوية، حجم الخط، موقع الشاشة، شكل المطلق، أسلوب الفقاعة وما إذا كانت الصور تظهر. اختبار العرض على هاتف.

السلوك

الذكاء الاصطناعي يجيب تلقائياً

مفتاح رئيسي للرد على الذكاء الاصطناعي، OFF يعني أن كل رسالة تنتظر الإنسان.

المتابعة البشرية والازدواجية الطبيعية في النصوص

متابعة هادئة عندما يصبح الزائر صامتاً، ورسالة ثانية قصيرة اختيارية بالطريقة التي سيرسل بها شخص ما رسالة. معدّلة بأقصى عدد من المتابعة لكل صمت، والتأخير الأولي، والمضاعف اللاحق، ونافذة الحضور وأقصى نافذات التسلسل. يمكن أن تكون مقصورة على ساعات العمل، وأن تُقمع بعد شكر بسيط.

الردود الآلية ومعدل الرد

ما إذا كانت الردود تطبع كلمة بكلمة، وكم هو سريع المساعد يرد ، من قبل الوضع المسبق أو الحد الأدنى والحد الأقصى الخاص بك التأخير في مللي ثانية. التأخير الصغير يقرأ أكثر بشرية من رد فوري.

الترجمة الحية

ويقوم كل موظف بالقراءة والكتابة بلغته الخاصة بينما يقرأ الزائر لغته.

إعادة التسليم إلى الآلية بعد تعطل الوكيل

دقائق من عدم النشاط قبل أن يستأنف العميل المحادثة

افتح الدردشة تلقائياً

ثواني قبل أن يفتح البرنامج نفسه.0لا يفتح أبدا.0ما لم يتم اختبارها.

إجابات أذكى

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

وفورات التكلفة

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

اللغات

ما هي اللغات التي تدعمها الوسيلة وكيف تختار واحدة للزائر.

إجابات حسابات العملاء

الردود من حساب العميل الخاص المسجل، والبحث عنها مباشرة بصورة اختيارية، وتحميلها عند الحاجة فقط بصورة انتخابية؛ والقراءة فقط في جميع الحالات؛ والتحميل عند اللزوم يقلل التكلفة بشكل ملحوظ.

استرداد

طلبات استرداد المساعد حيث يجمع المساعد التفاصيل ويسلمها إلى شخص ما، ولا يكمل أبدا عملية الاسترداد بنفسه.

المحادثة و Widget

الحفاظ على المحادثات السابقة، ومواصلة محادثة عبر مواقعك المتصلة، ونافذة قابلة للسحب، وطلب بريد إلكتروني من الضيوف، والسماح لفريقك بتحويل محادثات إلى تذاكر.

خصائص الوحدة

Emoji picker, attachments with an optional paste-only mode, AI image understanding, inline icons, microphone, talk-to-agent button, visitor sounds, attachment preview, voice-call button and session isolation. AI image understanding is what lets a visitor paste an error screenshot and get a useful answer.

صندوق الواردات، الإخطارات والنافذة المنبثقة الترحيب

نافذة الترحيب بالزوار، بالإضافة إلى تنبيهات عملائك: أصوات صندوق الوارد، إشعارات سطح المكتب، أصوات الهمس، ما إذا كانت الهمسات الخاصة تصرخ، والفترة بين استطلاعات صندوق الدخول.

تدفق الدعم

التسليم البشري

كيف يتم تخصيص طلبات شخص ما، والثواني التي يتعين على الوكيل أن يستجيب لها، وما إذا كان الرفض يعيد المحادثة إلى الذكاء الاصطناعي، وما إن كان الذكاء الصناعي سيستأنف العمل عندما ينتهي الوقت. قم بتعيين هذا قبل بدء التشغيل أو أن الزائر الذي يطلب بشراً سوف ينتظر ببساطة.

ساعات العمل

ساعات الافتتاح، منطقة زمنية ورسالة ساعات الإغلاق. خارج هذه الساعات الذكاء الاصطناعي لن يقدم الإنسان. جدول منفصل عن ساعات العمل التذكرة تحت. OpsIQ الكتابة.

الردود عندما يكون الذكاء الاصطناعي مطفأ

الرد الأول على رسالة جديدة، والرد عندما يكون شخص ما في صف بالفعل، وكم من الوقت قبل تكرار.

الاستمارة غير المتصلة بالإنترنت

يعرض استمارة اتصال بدلا من الدردشة.

البحث عن التذاكر وإخطارات الإدارات

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

مركز المساعدة في أداة المحادثة

يسمح للزوار بتصفح المقالات المنشورة دون مغادرة المحادثة. يمكنك اختيار مكان ظهور نقطة الدخول، وعلامة الشريط السفلي والأيقونة، وما إذا كان سيتم عرض رابط إلى مركز المساعدة الكامل. معطل بصورة افتراضية.

تقييم المحادثة

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

الدراسة الاستقصائية اللاحقة للدردشة

استطلاع قصير عندما يغلق الزائر المحادثة، مع سؤالك، والتأخير، وقاعدة التوقيت والحد الأقصى لكل زيارة. يمكن للزوار أيضاً إرسال النص بالبريد الإلكتروني أو تنزيله. يتم الإجابة على سؤال واحد؛ ولا يجري الإجابة عن ثلاثة أسئلة.

استقصاء البريد الإلكتروني بعد المحادثة

(د) إجراء استقصاء للمتابعة بالبريد الإلكتروني بعد انتهاء المحادثة، بصورة اختيارية باللغة التي تكلم بها الزائر، مع التحكم في التأخير والموضوع والتقديم والسؤال وعلامات الأزرار وسطر الشكر.

رد

إبهام إلى الأعلى وإبهام لأسفل على كل إجابة الذكاء الاصطناعي، تغذية لوحات جودة.

محفوظات المحادثة

حفظ تلقائي بعد أيام، حل تلقائية بعد دقائق من الصمت، وحذف المحاضرات المؤرَّخة بعد أيامي. يُحدَّد مكان الاحتفاظ الثالث إلى جانب العام والتتبع.

تدريب المعرفة

ماذا يعرف المساعد فعلاً لا شيء آخر في محادثة العميل مهم بنفس القدر

التدريب على المعرفة بالموقع الشبكي

يقوم بعمل مسح للموقع حتى يستطيع المساعد الرد منه. يمكن أن تبدأ عشر روابط، حد صفحة، عمق رابط، ومجلدات مستبعدة. يمكن اختبار URL واحد قبل المسح الكامل. استثني مسار الشراء والحساب والمسارات الإدارية.

التضمين

المفتاح API والنموذج الذي يحول الصفحات إلى معاني قابلة للبحث بدلاً من التوافق مع الكلمات الرئيسية.

منظم المعارف

وبمجرد النقر على زر واحد، يقرأ الذكاء الاصطناعي كل سؤال يطرح باستمرار وكل صفحة يتم البحث فيها ويرتبها في فئات.

الأسئلة المتكررة، الإجابات المتحقق منها

زوج من الأسئلة والأجوبة يعامل كمصدر ذو أولوية عالية، كل واحد له وضعية ووزن وفئـة. قابل للبحث، ويمكن استيراده من JSON، والذكاء الاصطناعي يمكن أن يكتبها من وصف لعملك. عندما يحصل المساعد على شيء خاطئ، اكتب سؤالاً متكرراً: فهي تتفوق في الترتيب على الصفحات التي تم مسحها، وبالتالي فإن التصحيح فوري.

متقدم

الأداء والحدود

فاصل الاستفتاء، حد معدل الرسالة والنافذة، الحد الأقصى لحجم المرفقات، محاولات الإرفاق لكل نافذه، وتمديدات الملفات المسموح بها. قائمة الامتدادات هي تحكم أمني؛ حافظ عليها محكمة.

التسليم الآني

تسليم الرسائل الفورية والحالة بدلا من الاستطلاع، عن طريق Pusher أو Ably أو Firebase، مع فترة استطلاع احتياطية.

إشعارات الدفع

تنبيهات الجهاز للعملاء من خلال Pusher Beams أو OneSignal، مع جهاز مثير للاهتمام.

الدفع عبر الشبكة (VAPID)

..إستخدام المفاتيح الخاصة بك بدون أي طرف ثالث مُصدر هنا، ليس في منطقة الخطر

الصوت والفيديو وتقاسم الشاشة

وثائق التفويض لتحويل بحيث المكالمات تتصل عبر الشبكات التقييدية، باستخدام Cloudflare أو وثائق التفويض Twilio أو الخاص بك التحول URL اسم المستخدم وبيانات الاعتماد.

تدفق العمل في صندوق الواردات

إعدادات حيز عمل الوكيل بدلا من إعداداته للزائر: SLA الاستجابة الأولى في غضون دقائق، ورؤية الصفوف المحفظة، والوصلات المختصرة على لوحة المفاتيح ولوح الأوامر، والبحث أثناء المحادثة، وتذاكر العملاء في مفتش.

قنوات الرسائل

WhatsApp, رسالة نصية قصيرة Facebook Messenger, Instagram, Telegramو X الرسائل المباشرة والخط، كل منها مع مفتاح الرد الآلي الذكاء الاصطناعي الخاص به، بالإضافة إلى مفتاح سياسة لإجراءات الذكاء الصناعي على القنوات، رد debounce والمحطة WhatsApp كل قناة تصل إلى نفس صندوق البريد الوارد مثل المحادثات على شبكة الإنترنت.

تحديثات العرض التقديمي الحي للوحدة في أسفل العلامة عندما تعدل. استخدمه بدلاً من إعادة تحميل موقعك على الويب للتحقق من تغيير ما.
الإعدادات

المنصات: النماذج

كل بريد إلكترونيOpsIQيرسلون، والتصميم الوحيد الذي يلفهم كلّهم.OpsIQلا يرسلها بالفعل

تصميم واحد، العديد من الرسائل

الـ نموذج البريد الإلكتروني العالمي هو الغلاف: شعارك، ورأس الصفحة، والبطاقة، والطباعة، وأسفل الصفحة مع وجود مكان فارغ في الوسط. OpsIQ تعديل الغلاف مرة واحدة وكل تغييرات البريد الإلكتروني معاً - ردود التذكرة، إيصالات المتجر، إعادة تعيين كلمة المرور، تذكيرات الحجز، وغيرها. PeopleOS رسائل، وأي شيء تكتبه بنفسك

لا توجد طريقة لإرسال بريد إلكتروني منOpsIQبدون هذه اللفافة، إنها تُطبق في نقطة واحدة كل رسالة تعبر لذا الرسالة المضافة لاحقاً لا يمكن أن تفوتها

تحرير رسالة

1
فتح المواضع، ثم التسلسل

يتم تجميع الرسائل حسب ما هي: التذاكر والبوابة، المتجر، التسجيل وأمن الحسابات، الحجز، المحادثات والإخطارات، التقارير، رسائل PeopleOS، وتلك الخاصة بك.

2
إضغط على الذي تريد

تحصل على الموضوع، محرر غني معHTMLمنظر يمكنك أن تتحول للعيش، ونظرة أولية للالبريد الإلكتروني المنتهي بالضبط كما يتلقىه المتلقي - ملفوفك يشمل.

3
استخدمي رقائق المتغيرات

الرقائق التي فوق المحرر هي الحقائق التي تتغير: رقم التذاكر، إشارة طلب، وقت الحجز

4
احفظ

فقط تلك الرسالة مكتوبة أترك الحقل فارغاً وحافظ على صيغته المُبنية، الحبوب على الصف يخبرك بأيّ شيء

💡
المتغير الذي لا تستخدمه يتم إزالتها عندما يرسل البريد الإلكتروني، وكذلك الخط الذي يجلس عليه، لهذا السبب الحجز بدون رقم هاتف لا يرسل "فون" ولا شيء بعد ذلك.

أكتب نموذجك الخاص

استخدم هذا لرسالةOpsIQلا يرسل بالفعل إشعارا بالتوصيل، وتذكرة تجديدية، وحزمة ترحيب، ومفتاح ترخيص، ويحصل على كل شيء رسالة مدمجة - المحررة، والمراجعة التمهيدية، وقواعد الخطة وتصميمك العالمي - ونظامك الخاص يرسله من خلالAPI.

1
نموذج مضاف

الزر يجلس على أعلى صفحة التسلسلات ومرة أخرى بجانب "نموذجك الخاص"

2
سمّه

الاسم يصبح المرجع الذي يرسله نظامك، موضحاً تحت الميدان كما تطبع - على سبيل المثال "سيكس إكس اكستوم" لا يمكن أن يتغير بعد ذلك، لأن شيئاً ما سيرسلها بالفعل.

3
قل ما هو عليه وعندما يرسل

هذان الخطان هما ما تقرأونه أنت وزملائكم على صفحة التسلسلات بعد عام من الآن، إنهما يستحقان ثلاثين ثانية

4
قائمة بالأجزاء التي تغيرت

على سبيل المثال: الاسم، عندما يتعقبون (لينك) كل واحد يصبح{{variable}}يمكنك أن تسقط في الموضوع أو الرسالة و نظامك يملأها في وقت الإرسال

5
أكتب الموضوع والرسالة

وعقوبة الجنين هي جملتها - وتصبح فترات التوقف فقرات، ولا تكتب إلا نظام تقييم الأداء وتقييم التنفيذ؛ فالشعار والرأي والقدم تأتي من النموذج العالمي.

6
اصنعه، ثم افتحه

يبدو تحت "نماذجك" مع المحرّر الكامل ونظرة مباشرة، نفس كل رسالة مُبنية.

⚠️
Write the message, not the whole page. A template that carries its own <html> document is refused, because a whole document would slip past the wrapper and your email would go out with none of your branding on it.

إرسال نموذج الخاص بك

نداءان على المنتج API. المتصل يزود المتلقي والمتغيرات - لا الصياغة ولا التصميم أبدا، حتى لا يمكن للتكامل أن يرسل بريدا غير مغطى من خلال مكان العمل الخاص بك ولا يغير بهدوء ما تقوله إلى زبائنك.

ضعي نماذجك والمتغيرات التي يأخذها كل واحد
POST /api/v1.php
Authorization: Bearer YOUR_API_KEY

{ "action": "email.templates.list", "mine": true }
أرسلها
POST /api/v1.php
Authorization: Bearer YOUR_API_KEY

{
  "action": "email.template.send",
  "template": "x_custom_delivery_booked",
  "to": "[email protected]",
  "to_name": "Ada Obi",
  "variables": {
    "name": "Ada",
    "when": "Thursday 11 September, 14:00",
    "tracking_link": "https://track.example.com/AB12"
  }
}
💡
الأسماء المتغيرة تذهب بدون حمالات فيAPIاتصلي بالبريد الإلكتروني، (مبتلات) ضعيهم في الشكل الذي تمرين به

التوابل وخطتك

رسالة ليس لديك خدمة

يبقى مع وصلة "انظر الخطط" ولا محرر حتى يمكنك أن ترى ماOpsIQسيرسل، وما الذي يفتحه.

نماذجك الخاصة

اختر الخدمة التي تُعدّها نموذجاً عندما تخلقه أو تتركه على كل خطة، فضاء عمل بدون تلك الخدمة يُرى أنها مدرجة في القائمة ولكن لا يمكن تحريرها أو إرسالها.

التوقيع، والأمن، والإخطارات واختبار البريد الإلكتروني

لا تُخطّط أبداً، عدم القدرة على إصلاح صيغة كلمة السرّ التي تعيد كتابة إعلاناتك ستكون القفل الخاطئ

المسائل

هل يمكنني تغيير التصميم لرسالة واحدة فقط؟+

لا، وعمّا يُعمَل، التصميم هو المغلفة، وهو ما يبقي كل بريد إلكتروني على محمل الجد.

ماذا يحدث لصيغتي إذا ضغطت على (ريست)؟+

يظهر إعادة التشغيل على النموذج العالمي فقط ويستبدل ما هو في المحرّر بتصميم مبني، لا شيء مكتوب حتى تضغط على (فريف)

لقد حذفت أحد نماذجي بالخطأ+

إن إزالة الألغام تستلزم نقرتين لهذا السبب بالضبط - أول ذراعين لها و يخبرانكم بما سيتوقف عن العمل، وإذا ما اختفت بالفعل، فخلقها مرة أخرى بنفس الاسم، ثم تعود نفس الإشارة إلى الوراء؛ ولا ينبغي إعادة صياغة الصياغة إلا.

هل يمكن للموصل أو الإضافات أن تجلب نماذجه الخاصة؟+

نعم، حزمة من السفن البريديةjsonفي دليله الخاص، ورسائله تظهر تحت نماذج "ديفيلوب" مع نفس المحرّر، المُراجعة، اللفافة و بوابة الخطة

الإعدادات

الإعدادات: OpsIQ الكتابة

عدد طلبات المساعدة التي تم الرد عليها كتابة: الردود الآلية، ونظام طلبات دعم العملاء المحلي، والتصعيد، وساعات العمل، وتوجيه الرسائل الإلكترونية الموجهة إلى الزبائن.

الرد الآلي

أظهر OpsIQ أزرار الكتابة

يضع أزرار مساعد الكتابة لعملائك في الإدارات.

تمكين الرد الآلي على التذاكر

يقوم بتصفية التذاكر الجديدة والردود ويرد عليها بعد تأخير. ابدأ بذلك واستعراض المسودات لمدة أسبوع. يجب أن تصل دائما إلى شخص رد الأموال، والإلغاءات وتغييرات الوصول.

إدارات الرد الآلي

أي الإدارات يمكن أن يرد فيها الرد الآلي. كل شيء غير مدرج في القائمة يُترك للإنسان، وهو الخيار المأمون الافتراضي.

الجدول الزمني لتأخير الرد (بالدقائق)

كم من الوقت ينبغي الانتظار قبل إرسال الرد الآلي. يبدو أن الرد الفوري هو رد آلي؛ ويبدو أن بضعة دقائق هي رد سريع.

الحد الأقصى للردود التي تتلقاها الإدارة على كل طلب

حد أقصى لكل إدارة، على سبيل المثال 1 والدعم 3بدون غطاء يمكن لخيوط مشوشة أن تصبح حلقات.

طول الرد ووضعه وهويته

الحد الأقصى لعدد رموز الكتابة، وحالة التذكرة بعد الرد وبعد التصعيد، وحساب المدير الذي تنسب إليه الردود الآلية. استخدام حساب مسمّى بوضوح حتى يتمكن الموظفون من تمييز ردود الذكاء الاصطناعي عن تلك البشرية.

عمليات التذاكر المحلية

نظام التذاكر الأصلي

نظام التذاكر مدمج في OpsIQ، للتركيب بدون مكتب خارجي للمساعدة.

توجيه البريد الإلكتروني الوارد إلى بطاقات أصلية

يُحوّلُ البريد الإلكتروني القادم إلى التذاكرِ.OpsIQلوازم نقطة النهايةURLأي شيء يمكن أن ينشر إلى تلك النقطة النهائية يمكنه أن يصنع التذاكر

الرد المتعدد الدورات والتأخير وعدم التسليم

وهناك ثلاثة إعدادات رئيسية للذكاء الاصطناعي. فهل يستمر في الرد مع استمرار المحادثة، وهل ينتظر فترة صمت حتى تحصل ثلاث رسائل سريعة على رد واحد موضع اعتبار؟ إن الفترة الصامتة هي أفضل إعداد وحيد لجعل الردود الآلية تشعر بالاهتمام.

بوابة الدعم العام

صفحة موجهة نحو العميل حيث يمكن لأي شخص أن يقدم وتتبع تذكرة، مع خط ترحيب اختياري.يتم تشكيل عنوانه ومظهره في علامة بوابة الدعم.

شكل رقم التذكرة

عدد الحروف العشوائية التي تظهر في أرقام التذاكر المولدة.

البريد الإلكتروني للعملاء بلغتهم

وتتبع رسائل البريد الإلكتروني الخاصة بالطلبات لغة العميل، ولا يتغير بريد الموظفين الإلكتروني أبدا من حيث اللغة: فالإخطارات والتحذيرات والإحاطات الإعلامية والتقارير المقررة تظل بلغة نظامكم.

دال - الشكر والتأكيد

إقرار ثابت على التذاكر الجديدة، بالإضافة إلى رسائل تأكيد عند فتح تذكرة، وعند ترك تعليقات وعند إغلاق تذكره، كل منها مع عرض مسبق حي. هناك أيضاً غلاف نموذج البريد الإلكتروني العالمي والرابط وراء زر عرض تذكرتك.

فحص البريد غير المرغوب فيه بالذكاء الاصطناعي

يقوم بفحص التذاكر من المرسلين المجهولي الهوية، ويمكن أن يقوم تلقائياً بنقل الرسائل المشبوهة. اترك الحركة التلقائية مغلقة حتى تراقب قرارها.

إغلاق بطاقات العطل تلقائيا

تغلق التذكرة بعد عدد من الأيام الصامتة. أخبر العميل في رسالة الإغلاق كيف يعيد فتحها.

ساعات العمل )العمل(SLAالجدول الزمني

المنطقة الزمنية، وأوقات فتح وغلق أبواب المكاتب، وأيام العمل والعطلات بالنسبة لتوقيت الاستجابة الأولى والتسوية.جدول زمني منفصل عن ساعات العمل تحت قائمة محادثات الزبائن.

تخصيص بطاقات جديدة تلقائيا

التخصيص التلقائي، اختياريا فقط إلى وكلاء الذين هم على الإنترنت، مع مهارات الوكيل وحساسية مطابقة للتوجيه القائم على المهارات.

اقتراح تذاكر مزدوجة

تظهر عندما يفتح العميل وثيقة قريبة من واحدة لديهم بالفعل، مع حساسية مطابقة قابلة للتعديل.

استقصاء الرضا بعد إغلاق المكتب

يرسل بالبريد الإلكتروني استقصاء بعد يوم من إغلاقه وتظهر النتائج على صفحة CSAT.

إخطار الإدارة بالبريد الإلكتروني

يرسل البريد الإلكتروني إلى الإدارة عندما تصل وثيقة جديدة. والمتلقون هم أعضاء تلك الإدارة، وليس عنوان صندوق البريد للإدارة، وهو العنوان الذي تصل إليه الوثائق الواردة.

ما يمكن أن تقرأه العفو الدولية

الوصول إلى بيانات العملاء باستخدام الذكاء الاصطناعي

مفتاح رئيسي بالإضافة إلى تصاريح فردية للقراءة فقط لملخص ملف العميل، والفواتير، والمعاملات، والرصيد الائتماني، والمنتجات والخدمات، ومجالات النطاق، والحواسيب المركزية المرتبطة واستعراض عام للحساب من المستوى الأعلى.ابدأ بملخص ملحوظات وأضف الفئات حسبما تحتاج إليه الردود.

التصعيد والمعرفة

تمكين تصاعد تذاكر السفر بواسطة الذكاء الاصطناعي

ينقل تذكرة إلى إدارة أنسب قبل الإجابة. يمكنك اختيار الإدارات المسموح بها، والتأخير في التحقق، ويمكنك كتابة تعليمات إشعار التصعيد الخاصة بك. تشغيل مذكرة التصعيد الداخلية حتى يمكن لفريقك رؤية سبب نقل تذكره.

أوضاع المعرفة

:: ما إذا كانت الردود تستخدم لغة الزبون، وما إذا كانت تستند إلى وصلات متصفحة وإلى الأسئلة المتكررة، وما إن كان الذكاء الاصطناعي يقرأ الصور ويسجلها. PDF الملحقات، طريقة الرد على المعرفة، سواء استوردت أو لم تستورد JSON وينبغي أن يكون استخدام الروابط المتصفحة والأسئلة المتكررة مفعلاً، وإلا فإن الذكاء الاصطناعي يقوم بالتخمين.

إيقاف الرد الآلي بعد رد بشري

بمجرد أن يجيب الموظف، يتوقف الذكاء الاصطناعي عن الإجابة على تلك البطاقة. بدونها يمكن للذكاء الصنعي أن يتحدث عبر وكيلك الخاص.

تعليمات بشأن التذاكر والبريد الإلكتروني

التعليمات النصية الحرة التي تشكل النبرة والمحتوى لكل رد، مع مثال عملي قابل للتحميل. وكونوا محددين بشأن ما يجب على الذكاء الاصطناعي ألا يفعله أبدا.

الواردات JSON المعارف

تحميل أو لصق JSON ملف المعرفة لمساعد الكتابة.

استوديو زر

تصميم كامل للزر الموجه نحو الزبون: أسلوب العرض، والحجم، والشعار، والأيقونة، والشكل، والحد الأدنى من العرض وأسلوب الخلفية بالألوان الأولية والثانوية، وزاوية التدرج، والحدود، ونصف قطر الزاوية، والظلال، والطباعة، والتغطية، والحركة في حالة عدم الاستخدام، وحركة التحليق، والألوان، وخاتم التركيز، إضافة إلى تصميم مخصص CSS حدد مربعاً لأي شيء لا تغطيه الضوابط.

الإعدادات

الإعدادات: بوابة الدعم

الموقع الموجه للعملاء حيث يقوم الناس بطرح وتتبع التذاكر وقراءة مقالات المساعدة الخاصة بك. تتحكم هذه العلامة في كيفية الوصول إليه وكيف يسجل العملاء؛ ويجري تصميمه المرئي في استوديو بوابة الدعم.

ستوديو البوابة أو بوابة التذاكر المدمجة: أيهما أريد؟

هذين المنتجين مختلفان و الناس يخلطون بينهما باستمرار إنهما يحلان مشاكل مختلفة، ومن الطبيعي أن يعملا معاً.

"أستديو بورتال" مكان ترسل فيه زبائن

يقوم الاستوديو بتصميم موقع دعم كامل OpsIQ أهلاً بكم. لديها عنوانها الخاص على شبكة الويب، أو مجالك الخاص، ويحمل تجربة الخدمة الذاتية بأكملها: مقالات المساعدة مع البحث، استمارة الطلب، تاريخ التذكرة، دخول العميل والمساعد. اختار نموذجا، والعمل من خلال الموضوع، والتنقل، وتصميم، المعرفة، وقدم الصفحة، العلامة التجارية، تذاكر، المساعد، الاستمارة و CSS، استعراض في سطح المكتب، وأحجام اللوحة والهاتف، ثم نشر.

استخدمه عندما تريد وجهة واحدة ذات علامة تجارية يمكنك أن تشير إلى كل عميل، وأنت لا تحبذ بناء أو الحفاظ على منطقة للدعم داخل موقعك الخاص.

تذاكر داخل موقعك الخاص

الضم يضع تجربة التذاكر فقط على صفحة من موقعك الخاص. يفتح العملاء، وتتبع والرد على طلبات الدعم دون مغادرة صفحاتك أبدا، ورأس الخاص بك، والتنقل والتصميم تبقى تماما كما هي. وضع التخطيط، والمظهر، وقواعد الوصول في بناء الأدوات، استعراض النتيجة، ثم نسخ النص المضمن إلى صفحتك.

استخدمه عندما لديك بالفعل موقع أو تطبيق مع تصميمه الخاص، وتود أن يحدث الدعم داخله بدلاً من تسليم العميل إلى عنوان مختلف.

النسخة المختصرة

إنشاءات الاستوديو مكان ترسل إليه الزبائن. الضم يجلبُ تذاكر إلى حيث عملائك موجودون بالفعل. Many businesses run both, embedding the ticket widget in their account area for in-context requests while keeping the hosted portal as the full self-service destination with articles and search. They are independent switches.

العنوان والوصول

طريقة الوصول

ما إذا كانت البوابة مفتوحة لأي شخص أو مقصورة على العملاء المسجلين.

خيارات التصميم

ما إذا كانت البوابة ومركز المساعدة يتقاسمان بطلاً واحداً أو يستخدمان اثنين، وما هي التنقلات والساق التي تظهر على كلا السطحين، وعلامة قسم التنقل.

عنوان البوابة

العنوان الذي يستخدمه الزبائن. اختار اسماً و OpsIQ يظهر البوابة الناتجة والعناوين المطابقة لمركز المساعدة. تغييرها لاحقاً سيؤدي إلى كسر روابط أرسلتها بالفعل.

نطاقك الخاص

يخدم البوابة من نطاق تمتلكه، مثل support. yourdomain. com.

بوابة التذاكر المتكاملة

يقوم بتشغيل الوسيلة المنسدلة الموصوفة أعلاه، ويفتح بناء التضمين حيث يمكنك اختيار التصميم والمظهر وقواعد الوصول، وتصفح النتيجة ونسخ الجزء من صفحتك. هذا ليس استوديو البوابة: يستضيف الاستديو تصميم البوابة، وهذا يضع تذاكر داخل موقعك الخاص. يمكن أن يكون كلاهما في نفس الوقت.

كيفية تسجيل الدخول للعملاء

هذه هي خيارات دخول عملائك. يتم تثبيت دخول الموظفين تحت الإعدادات، الأمن.

طرائق التسجيل

أي الخيارات تظهر على صفحة الدخول. الوصلات والبريد الإلكتروني دخول العمل تلقائيا.

التسجيل الاجتماعي

مقدمو حسابات المستهلكين، الذين يحتاج كل منهم إلى هوية زبون وسرية، مع عنوان إعادة التوجيه الذي يوفره OpsIQ للتسجيل مع ذلك المزود.

لافتة واحدةOIDC)

تسجيل دخول العميل من خلال مقدم خدمات الهوية، مع الجهة المصدرة URL, هوية العميل, سر وقائمة اختيارية مسموح بها لنطاقات البريد الإلكتروني.

العميل SAML 2.0

The SAML equivalent. OpsIQ supplies the ACS reply URL and SP entity ID; you supply the IdP entity ID, sign-in and sign-out URLs, X.509 certificate and optional attribute names. Turn SAML on in Sign-in methods or it will not appear.

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

وصلة عميقة موقعة بحيث يدخل العميل الذي سبق له التسجيل في تطبيقك إلى البوابة دون تسجيله مرة أخرى. OpsIQ يقدم سر التوقيع، البوابة URL ومساحة العمل، مسار كامل للغة الخاصة بك (PHP, ) Laravel, WordPress, WHMCS, Node.js, Flask, Django.NET, Rails, Java, Go، وفي حالة الاستضافة الذاتية يقوم بتركيب البرنامج التالي: OpsIQ الخادم نفسه)، ملاحظات التثبيت خطوة بخطوة، ومولِّد وصلة اختبار موقعة. استخدم المولد قبل كتابة أي برمجة.

كيف يعمل الطريق

زبونك يضغط على وصلة دعم في الطريق، ويجد الطريق العميل موقعاً إلى تطبيقك (يرسل ضيف إلى لوحتك وخلفك) ويقرأ السر من خادمك، ويوقع علامة على مركب واحد ينتهي خلال دقيقتين، ويعيد توجيهه إلى البوابة مع رؤساء لا يوجدون أي مبعثرين، لذا فإن المركب ليس مخدّراً أو مسرباً.

البوابة الخاصة بعلامة الزر

في استديو بورتال، صفحة الإشارة، تشغيل على استخدام سجل موقعي الإلكتروني وضبط صفحتك URL إلى نفس الطريق، البوابة تضيف opsiq_portal_return (الصفحة كان الزبون على)؛ والطريق لا يحترمه إلا عندما يكون داخل عنوان بوّابة الخاص بك ويعيد العميل إلى هناك، موقّع في.

WHMCS

لا شيء للكتابة: WHMCS الخطاف من مواقع البقايا المُتعدّة يوقع العملاء على البوّابة ويتعامل مع عنوان العودة URL لك WHMCS سجل منطقة العملاء

أخرج من كل مكان

ويؤدي الخروج من البوابة أيضا إلى خروج العميل من تطبيقك.

الاستقبال والحماية

حقول استمارة الطلب

أي الحقول المرتبة تجمع استمارة الطلب. كل حقل إضافي يفقد التقديمات، لذلك لا تسأل إلا عما تحتاج إلى فرزه.

الحماية من الرسائل الإلكترونية غير المرغوب فيها وسوء الاستعمال

يوجد في النموذج العام دائماً حد للحد من معدلات التصفح ووضع عسل. وفي الأعلى يمكنك حجب عناوين البريد الإلكتروني التي يمكن التخلص منها، وإضافة نطاقاتك المحجوبة الخاصة بك، وإنشاء مفتاح CAPTCHA باستخدام Google reCAPTCHA أو Cloudflare Turnstile. ويعيد reCAPPTA استخدام المفاتيح المحددة بالفعل تحت الإعدادات، الأمن؛ وتدخل مفاتيح الدائرة هنا.

تحليل البوابة

موجز قراءة فقط لنشاط البوابة خلال الثلاثين يوما الماضية.

الإعدادات

الإعدادات: التصاريح، الترخيص، Cron ومنطقة الخطر

مجموعة النظام، بالإضافة إلى ضوابط الوصول للفريق التي تقرر من يمكنه رؤية أي علامة التبويب الإعدادات.

الوصول والحقوق

الإذن لكل مدير

كل مدير يحصل على مجموعة صريحة من الإذن تغطي الوصول إلى صندوق الدردشة، وأجزاء الإعدادات التي يمكنهم تعديلها، وإداراتهم. أي شخص مع دور المدير الكامل لديه دائما جميع الإذونات. إجازة الإعداد تقرر أية علامات التبويب الذي يرى الشخص، لذلك منح أضيق مجموعة تسمح لهم بالعمل.

شهادة البكالوريوس

يبين رخصةك الحالية، وما تستحقه من حقوق ووضعها.

تثبيت Cron

التركيبات المستضافة ذاتياً فقط. في السحابة OpsIQ تجري المهام المقررة من أجلك ويتم إخفاء العلامة. سطر واحد من crontab يقود كل مهمة مخططة: رد أوتوماتيكي على التذكرة، توجيه تصعيد، تجديد سعر صرف العملات الأجنبية، استفتاء صندوق البريد والمزامنة مع الموصل.

1
نسخ السطر

يظهر الخيار السطر المحدد في crontab لخادومك مع ثنائي بي إتش بي الصحيح الذي تم اختياره بالفعل.

2
أضفها إلى جدول التوقيت

تشغيل crontab -e كمستخدم يقوم بتشغيل PHP ولصق السطر الواحد. cPanel استخدم أداة Cron Jobs بدلاً من ذلك.

3
تحقق

خلال دقيقة ستشعل البلاطات القلبية. استخدم التشغيل الآن لاختباره فوراً بدلاً من الانتظار.

يظهر لوحة نبض القلب آخر تشغيل، والمدة وما تم معالجته لكل من صف الرد الآلي واستطلاع البريد الإلكتروني والموصل. ويحذر عندما جاء آخر تنفيذ من زر الويب اليدوي بدلاً من خادم كرون حقيقي، وعندما أصبح نبض قلب متقادمًا.

منطقة الخطر

حذف جميع بيانات التتبع

OpsIQ جمعت أو أنتجتها. يمكنك وضع علامة على ما تريد إدراجه وكتابة عبارة التأكيد بالضبط. الإعدادات وتشكيلة الموقع، والعناوين المحظورة، كل شيء كتبه فريقك (قاعدة المعرفة، الأسئلة الشائعة، الترجمات، تصميم البوابات، تعاريف التصرف) وإيصالات الموافقة جميعها محفوظة.

بيانات أقدم من

ويقتصر المسح نفسه على السجلات التي يزيد عمرها عن 30, 60, 90 أو 180 بالنسبة للاحتفاظ المتجدد التلقائي، استخدم قيم الاحتفاظ في العام والتتبع بدلاً من ذلك ودع المهمة المقررة تقوم بذلك.

🚫
تصدير نسخة احتياطية من الإعدادات، العامة قبل استخدام أي شيء في منطقة الخطر. هذه الإجراءات لا يمكن إلغاؤها.
الإعدادات

إدارة فريقك

دعوة أعضاء الفريق وتعيين الأدوار للتحكم في من يمكنه الوصول إلى ماذا.

فريق
الفريق والإداراتThe team screen: a table of admins with contact, role badge (Owner, Full Admin, Agent) and the departments each can access.الفريق والإداراتمساحة العملالفريق والإدارات+ حفظ المستخدم الإدارياتصلالدورالإداراتألف - الإدارة[email protected]آدا أووسوالمالكالجميعألف - الميزانية[email protected]كوجو مينساهالإدارة الكاملةالجميعRT[email protected]ريتا تيتيهالوكالةالفوترةالميزانية العادية[email protected]الوكالةالدعم1TEAMدعوة وإدارة المديرين2ROLESOwner · Full Admin · Agent3SCOPEDالوصول حسب الإدارة
شاشة الفريق الحقيقي: كل مدير مع اتصالهم، الدور والإدارات التي يمكن أن تصل إليهم، وكلاء نطاق، والمالكين كاملة.

الأدوار

المالك

الوصول الكامل بما في ذلك الترخيص والفواتير ومنطقة الخطر واحد لكل منشأة

الإدارة الكاملة

الوصول الكامل باستثناء الترخيص ومنطقة الخطر يمكنه إدارة المديرين

الوكالة

تقتصر على الإدارات المخصصة، التذاكر والمحادثات والتحليل فقط.

دعوة أعضاء الفريق

1
اذهب إلى الفريق

انتقل إلى الفريق في الشريط الجانبي.

2
انقر على دعوة

أدخل بريد عضو الفريق

3
تحديد الدور

اختار مالك، أو مدير كامل، أو وكيل.

4
إسناد الإدارات

بالنسبة للوكلاء، اختر الإدارات التي يمكن الوصول إليها.

5
إرسال دعوة

ويتلقون رسالة بريد إلكتروني تحتوي على رابط لإنشاء حساب.

الإعدادات

أداء الفريق

كيف يعمل فريق الدعم الخاص بك. الوصول هو من خلال الإذن، لا الدور: إذن العرض يفتح الصفحة، وإذن إدارة يفتح الأهداف، وQA والقراءات التي تحدد هوية الزملاء، والإذن المكافأة المالية هي ما تضيف إلى علامة المكافآت. يمكن أن يعطى قائد الفريق أيا من هذه دون أن يصبح مدير كامل.

أداء الفريق
أداء الفريقشاشة أداء الفريق: رتبة الوكلاء بواسطة شريط مركب للدرجات، و CSAT ورصيد المكافأة مع زر دفع لكل صف.أداء الفريقمساحة العملأداء الفريقالوكيلالنتيجةCSATالرصيدRTريتا تيتيه4.8$42ادفعالميزانية العاديةسام بوتنغ4.5$28ادفعألف - الميزانيةكوجو مينساه4.2$15ادفعألف - الإدارةآدا أووسو4.9$51ادفع1SCOREDالأداء المركب2CSAT & LOADالتصنيفات + الحجم3REWARDSأرصدة وكلاء الدفع
..الشاشة الحقيقية لأداء الفريق كل وكيل يحصل على نقاط حسب حجمه و CSAT مع مكافأة يمكنك دفعها لكل صف

كيف يتم تنظيم الصفحة

أداء الفريق هو خمسة تابس كل واحد يجيب على سؤال مختلف و يتم الأمر به كم هم بحاجة إليك

01 مركز القيادة

حالة طابور، نتائج العملاء ضد أهدافك، كيف أنفقت القدرات، الحالات التي تحتاج إلى قرار، ومؤشر البقايا المُعدّل حسب الأدلة.

02 زملاء الفريق

لوحة القيادة، الاعتراف (تحسن معظمها وتحسنها)، والمساعي، والتحكم في اختيار من قد يرى الترتيب.

03 النوعية

بطاقات الإطلاع، والتقييمات المسجلة، واتفاق المستعرضين المصححون للفرصة، والانتقال إلى الخارج، ومنازعات الأدلة.

04Rewards

القيمة المكشوفة، مطالبات الدفع، وتخصيص الفترة الخاضعة للتنظيم: الإذن بالحد الأقصى الممول، واستعراض ما قبل الاستعراض، والانتهاء من ذلك.

05 التاريخ

كيفية انتقال مكان العمل عبر الزمن: قياسات الاتجاهات مع مخطط، و 28 كل بطاقة تخفي نفسها حتى يكون هناك ما يكفي من التاريخ لرسمها

غير مُذكّر ليس صفراً

ويظهر أن أحد أعضاء الفريق الذين لا يُعالج بكميات كافية - أو التي تضيف أبعادها إلى أقل من نصف الوزن المكون - غير مكتمل، وسجلهم ومرتبتهم وفرقتهم فارغة، وانهيارهم متعمد: جعل القياس الغائب صفرا يضع شخصا في أسفل أسبوع هادئ، كما أن العتبات الدلائية قابلة للتشكيل لكل مكان عمل في منطقة الأهداف.

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

💡
كل رقم متسع لأماكن العمل التي تشاهدونها والوقت الذي تختارونه، زميل في الفريق يعمل في مجالين منفصلين له سجل مستقل في كل منهما، واستثناءان يستحقان المعرفة: فريق الموقع هو مكان عمل واحد، بحيث يتم قياس مجالاته الأعضاء معاً؛ وترى جميع المواقع أن ذلك يُحدّد كل شيء على نحو متعمد.

مؤشر الأداء

مجموعة مكونة من خمسة أبعاد، يقاس كل واحد منها على هدف وضعته بدلاً من الزملاء، ثم تتجه نحو الوسط عندما تكون الأدلة وراءها ضئيلة.70 لذا تم سحب النتيجة الممتازة وسحبت النتيجة المسكينة الكبيرة والأسبوع الأول السيء في أربعة محادثات ليس قراراً مسوّقاً أيضاً

الجودة

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

الاستجابة

أول مرة استجابة في P50 و P90 المئة من الأهداف الخاصة بك.

القرار

وقت القرار ومعدل التسوية المكشوف.

SLA

الاحتجاز ضدSLAلقد تم تشكيلك، بالإضافة إلى التهم المعرضة للخطر والمخترقة.

الإشراف

إعادة التشغيل ومعدلات التحويل - العمل الذي يعود.

💡
الوزن قابل للتشكيل ونسبي؛ لا يجب أن يكون المجموع 100 ولا يمكن أن تؤدي الأدلة المفقودة إلا إلى تخفيض المؤشر، وعدم رفعه أبداً - فالوزن المهيمن بالكامل يبقى في القاسم.

القدرات والوقت الإنتاجي

الحيازة، والوقت الإنتاجي، وحُلّت في الساعة المنتجة وفي حصة النوافذ على الإنترنت، ولا يُبلَّغ عن الاستخدام عمداً: فهو يحتاج إلى ساعات مقررة كمرشِّح OpsIQ ليس لديه أي قائمة أو مصدر للتحول، وسيكون القاسم البديل تخميناً يرتدي علامة مئوية، كما أنه غير متاح لهذا السبب.

⚠️
التبليغ فقط، يقول التراكم كيف أن الوقت قد أُنفق لا يُمكن إنفاقه ولا يُصرف أبداً أو يُدفع له أي أموال أو بوابات أو حجم

ضمان الجودة

سجل النتائج هو أن المستعرضين يسجلون محادثات حقيقية ضدها، ولا يمكن إلا لنسخة منشورة أن تتلقى تقييماً، ونشر نسخة جديدة لا يعيد كتابة ما تم بالفعل تسجيله، بل إن استعراضاً دليل على محادثة واحدة وليس حكماً على شخص.

اتفاق الاستعراض

تم الإبلاغ عنه كإحصاءات مصحوبة بالصدفة (كابا كوهين وفليس) وليس نسبة مئوية من الإتفاقية الأولية 100% في الوقت الذي لا يحمل فيه أي معلومات

المستعرضون الذين ينجرفون

وسواء كان المستعرض يسجل بصورة منهجية أكثر صعوبة أو أكثر سهولة من زملائه في نفس المحادثة - أي مقارنة مع بقية الفريق، لا اتجاه على مر الزمن، بل يحتاج إلى تفاعل يجري استعراضه بشكل مستقل أكثر من مرة.

المنازعات

يمكن لشريك في الفريق أن يسجل رسمياً أدلة النزاع عليها، وفتح باب النـزاع يُفضي إلى إنهاء فترة المكافأة حتى يتم حلها.

الاستعراض الذاتي

لا يمكن لشريك الفريق أن يقدم تقييماً لنفسه

⚠️
ولا يمكن للتقييمات التي تُدرج في القائمة أن تؤثر على الأجور إلا بعد نشر معايرة تبين أن النموذج يتفق مع خبراء الاستعراض البشري بشكل وثيق بما يكفي، ويقاس بالكابا مقابل عينة دنيا، ويعني وجود بوابة مفتوحة أن النموذج يوافق الناس عن كثب على العد - وهذا لا يعني أبدا أن النموذج صحيح.

الاعتراف

الرنين لوحده قد وثق أساليب الفشل: التقمار المتأصل، والحرق، والضرب العام لمن هو الأخير.

تحسنت

قاس ضد سجل زميله السابق، لا ضد الزملاء، مع الانكماش لذا القاسم الصغير لا يستطيع أن يفوز.

شرائح اللحم

ففترات تنفيذية تلتقي بنقابة ثابتة ومعلنة - متوسط التقدير، وحساب الحجم، وتقديرات تقديرية، ومعدلات رد الدين السلبية، وجميع الأرقام المطلقة، ويمكن لكل شخص أن يتمسك بمظهره في وقت واحد، بحيث لا يخلق ترتيباً، ولا يمكن لزميل له شهر استثنائي أن يكسر خاصتك.

ترتيب أوب في

غير مقصود، يرى زميل الفريق دائماً مؤشره الخاص؛ وما إذا كان يريان الزملاء قرار بشأن مكان العمل، ويمكن نشر فرق مرنة بدلاً من المواقع المطلقة.

💡
الاعتراف لا يمسّ المال أبداً، ولا يمكن للخنزير أن يمول دفعة أو يكسر واحدة، والأكثر تحسيناً ليس فئة جائزة.

الحيتان

ويسعى الفريق إلى تحقيق هدف يقاس على حانة محددة بدلا من أن يُقيس ضد بعضهم البعض - حتى يتمكن الجميع من إزالة نفس المسعى في الفترة نفسها.

النطاق والمستوى

فردي أو فريق؛ واحد، قابل للتكرار، أو موسمي مع نافذة واضحة.

المعايير

وتناولت المضامين، أو تقييماتها، أو أيام العمل، أو متوسط التقدير، أو معدل التغذية العكسية السلبية، وكلها مبدئية - لا توجد مقاييس تعتمد قيمتها على ما فعله الزملاء.

حارس الجودة

مطلوب من أي طلب مع هدف الحجم، وإن ضرب الرقم بينما تهبط النوعية إلى ما دون الأرض يحجب السعي بدلاً من إكماله، ويظهر على أنه محجوب وليس غير مكتمل.

الحدود القصوى

كبسولة لكل فترة، مدفوعة بأبطأ معيار، بالإضافة إلى التبريد الاختياري قبل تكرار يمكن أن يحسب.

الفريق

تبادل التقدم مع عدم نشر أي نسب للزملاء، لذلك لا يمكن أن يصبح البحث عن فريق لوحة قيادة.

دورات تدريبية

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

نقاط الحديث

وافق قبل الجلسة، لذا زميل الفريق لا يفاجئني

أدلة مثبتة

وتخزن الدبابيس مرجعاً - نوع وثدي - وليس نسخة، ولذلك فهي تشير دائماً إلى السجل الحي.OpsIQ لا يُحقّق من هوية الضحية قبل قبولها.

بنود العمل

وكل من له مالك وموعد مناسب، ويظهر بند في تاريخه متأخرا - وهو دولة مستمدة وليس وضع يجب على شخص ما أن يتذكره.

مذكرة خاصة

مذكرة المدرب الخاصة زميل الفريق الذي يتم تدريبه لا يستطيع قراءتها أبداً ليس كوكيل وليس كمدير

الذي يستطيع أن يرى جلسة

المدرب، زميل الفريق وأي شخص لديه تصريح أداء الفريق لا أحد آخر، بما في ذلك بقية زملاء الفريق في نفس القسم

تدقيق

ويسجل كل ما يستجد من أعمال، وتحديث، ودبوس، وغياب، وإكمال بما تغير، من قبل من.

💡
التدريب مُتعمداً منفصل عن التكسير والمال جلسة لا تغير الرقم القياسي لأي شخص ولا تُعطي جائزة ولا تظهر على لوحة القيادة

المبالغ المستردة والمكافآت

النشاط المسجل يتحول إلى كسور ذات قيمة نقدية تجهزها الطريق إلى الدفع بطيء عمداً وكل خطوة يتم تسجيلها

1
حدد القيمة المكسورة

كم عدد الكسور تساوي كمية المال وما قيمة كل نشاط

2
الإذن بالحد الأقصى الممول

وبالنسبة لفترة تقويمية مغلقة، يذكر مدير كامل الحد الأقصى للرسوم التي قد يدفعها، ولا يسمح توفير استمارة تحديد المواقع بميزانية، ولا يمكن أن يغير سقفا سبق الإذن به.

3
استعراض الاستعراض الأولي

المُستقبلون، الإحتياط والسبب في عدم الأهلية، ومنازعات الأدلة المفتوحة تحجب هذه الخطوة.

4
الصيغة النهائية

ويسجل هذا التخصيص بصفة دائمة مع الأدلة الكامنة وراءه، إذ لا يمكن إلغاء الفترة التي يخصص فيها أي شيء وإعادة التشغيل بشكل صحيح، ويجب أن تُعكس النقطة التي تصدر كسورا أولا:OpsIQ يكتب دخولاً تعويضياً ضد كل محفظة ولا يحذف الأصلي أبداً، لذا لا يزال دفتر الأستاذ يظهر ما حدث ولماذا، وعندها فقط الفترة التي أُفرج عنها، ويرفض التراجع إذا كان أي شخص قد صرف بالفعل أكثر من المبلغ الذي يتم استرداده، وأسماء الذين وكم.

⚠️
وتتطلب الأهلية الحصول على تعليقات متحققة من جانب العملاء، ويمكن أن تكمِّل درجات جودة التنفيذ هذا الحكم دون أن تحل محله أبداً، كما لا يحق لشريك الفريق الذي يُظهر بأنه غير مدرج في القائمة الأساسية أن يكون كل مساهم مؤهلاً.25% فأكثر من نصيبها المتوقع في هذه الفترة، فلا يمكن لشهر واحد كبير جدا أن يستوعب الميزانية بأكملها.
💡
ولا يشارك صاحب الحساب في منح أو مكافآت رمزية، دون تغيير: فهو يأذن بالحد الأقصى الممول وينهي كل مخصصاته، وليس هناك من فوقهم أي شخص يوافق على ما سيدفعونه بأنفسهم، إذ أن عملهم يقاس ويسجل ويصنف على اللوحة تماما مثل أي شخص آخر.

ويشترك الآخرون في التقصير، ومن ضمنهم دليل الفريق وصاحبه، ومن ثم يتركون شخصاً ما يخرج من مناصبهم ويفتحونها في إدارات الأفرقة ويبدلون من خيارات الجوائز والمكافآت، ولا يزال عملهم يسجل ويظهر؛ ويتوقفون عن ترشيحهم من تلك المرحلة، ولا يوجد أي شيء قد تم بالفعل تطرقه.

⚠️
لا أحد يوافق على المال لنفسه لأن الناس الذين يمكنهم المشاركة هم أيضاً الأشخاص الذين يستطيعون الموافقة على الدفعات OpsIQ يرفض دفع مبلغ أو إئتمان في محفظتك، يدفع مطالبتك الخاصة، وينتهي من فترة ستدفع فيها، وينهي جائزة تفوز بها، مدير كامل آخر أو المالك يجب أن يفعلها.

من يستطيع أن يرى ويفعل ما

أداء فريق الرؤية

المجلس، الحالة الحية، القدرة والعرض العام للنوعية في مجال العمل.

أداء فريق إدارة

الأهداف والتحكيم، والصادرات، وسجلات التقييم والتقييمات في مجال الجودة، والتوجيه، والمساعي، والرئاسات التي تحمل بيانات تحدد هوية الزميل مثل تاريخ الحضر وتاريخ منحه.

فريق اليقظة يكافئ المال

الأرصدة والقيم النقدية ومذكرات المطالبة ومراجع الدفع - منفصلة عن أدلة الأداء لأنها من نوع كشوف المرتبات.

مدير كامل فقط

كل انحراف في الأموال: دفع مكافأة أو دفع أو رفض مطالبة، ومنح ميزانية، ووضع الصيغة النهائية لإلغاء أو عكس اتجاه تخصيص ما، وتحديد معدل الطين مقابل العمل، ولا يمكن تفويض هذه المبالغ بمنح إذن.

استخدامه بشكل عادل

ومؤشر الأداء هو دليل الإدارة، وليس قراراً تلقائياً بشأن العمالة، فتح المحادثات المصدرية خلف عدد من المواضيع قبل التصرف فيها، وتقيّد مدى تعقيد الحالات، والجداول الزمنية، والإجازات، والاحتياجات المتعلقة بإمكانية الوصول، ولا يبدو أسبوع واحد صعباً وكأنه نمط مستمر.

الإعدادات

مواقعك (حيز العمل)

المواقع (حيز العمل) تسمح لك بإدارة مواقع متعددة من OpsIQ واحد. كل لديه تتبعه الخاص، الذكاء الاصطناعي، وصلات، وفريق الوصول.

المواقع
مواقعكThe sites screen: a list of workspaces, each with its domain, type, connector, status badge and an Open button, plus Add-new-site.مواقعكمساحة العملمواقعك+ أضف موقعا جديداSshop.acme.comShopify وصلة التجارة الإلكترونيةنشطمفتوحHhost.acme.com:: وصلة WHMCSنشطمفتوحBblog.acme.comلا يوجد موصلالخطواتمفتوح1MULTI-SITEحيز عمل واحد لكل موقع2ISOLATEDالبيانات لا تختلط أبداً3PER-SITEالإعدادات الخاصة بك
الشاشة الحقيقية للمواقع: كل موقع هو حيز عمل معزول خاص به (النطاق الخاص به، والموصلات والإعدادات)، يضاف ويفتح من قائمة واحدة.

إنشاء موقع

1
اذهب إلى المواقع المتصلة

اذهب إلى المواقع المتصلة.

2
إضافة موقع جديد

أدخل الاسم، النطاق والوصف.

3
نسخ مفتاح الموقع

يحصل كل موقع على مفتاح فريد (site_xxx) لقطعة الوحدة.

4
تشكيل مستقل

لكل موقع ذكاءه الاصطناعي الخاص به، ووصلاته وإعداداته.

كم عدد المواقع التي يمكنني الحصول عليها؟+

يعتمد على خطة الترخيص الخاصة بك، تحقق من تفاصيل ترخيصك.

الإعدادات

الترخيص والخطة

ترخيصك OpsIQ يتحكم في الميزات، وحدود الموقع، ورصيد الائتمان للذكاء الاصطناعي.

ترخيص
مركز التراخيصمركز الترخيص OpsIQ: خطة، وشارة حالة نشطة، ومفتاح ترخيص مقنع، وعداد اعتماد الذكاء الاصطناعي، وزناد التحقق من القوة عن بعد.مركز التراخيصمساحة العملOpsIQ مركز التراخيصالخطةعملالحالةنشطالمفتاحOPSIQ-••••-••••-2F9Cأرصدة المساعدة التقنية$68 متبقيةالتحقق من القوة عن بعد1PLAN & STATUSالنشاط، لمحة عامة2KEYمخزن محليا في HMAC3CREDITSتوازن الذكاء الاصطناعي وحدوده
مركز الترخيص الحقيقي: خطتك وحالتك النشطة، المفتاح المقنع، رصيدك الائتماني للذكاء الاصطناعي، ونقرة واحدة لإعادة التحقق من القوة.
مفتاح الترخيص

أدخل في الإعدادات > الترخيص. تم التحقق من صحة الترخص مقارنة بخادوم التراخيص OpsIQ.

معدل ضربات القلب/التحقق من صحة الترخيص

OpsIQ وعادة ما يقرأ مخزن الترخيص المحلي الموقّع الخاص به ويقوم بتجديد عملية التحقق عند الحاجة. DNS, HTTPS أو مشاكل التوقيت في الخادم.

الخطة

يحدد توافر المميزات وحدودها.

حدود الموقع

الحد الأقصى لعدد أماكن العمل.

أرصدة المساعدة التقنية

إذا كنت تستخدم الذكاء الاصطناعي المدار، يظهر رصيدك الائتماني هنا.

تاريخ انتهاء الصلاحية

تجديد قبل انتهاء الصلاحية لتفادي انقطاع الخدمة.

ماذا سيحدث عندما تنتهي صلاحية رخصة القيادة؟+

التعقب، التذاكر،CRMيستمر، ويتوقف التنفيذ إلى حين التجديد، ويتم الحفاظ على البيانات.

الإعدادات

نبذة عن الشخصية وكلمة السر والتحقق من الهوية بعاملين

ويمكن لكل مدير أن يحتفظ بهويته الخاصة، وأفضليات العمل، وكلمة السر والتحقق من الهوية بعاملين.

فرز المنتجات
ملف شخصيوتفصل صفحة الوصف عن التفاصيل الشخصية واللغة/المنطقة الزمنية، وصورة المستخدم/توقيعه، وكلمة السر والتحقق من الهوية بعاملين.ملف شخصيمساحة العملموجزكاملTIMEZONEأوروبا/أثينا2فامفعلعرض الحيز العمليالاسم والبريد الإلكترونيالهوية الشخصيةتحريراللغة والمنطقة الزمنيةالتواريخ والوصلة البينيةتحريرالصورة والتوقيعالردود ووجود الفريقتحريركلمة المرور والتحقق من الهوية مرتينحماية الحساباتآمن1UPDATE PROFILEالهوية والموقع2SECURE LOGINكلمة المرور والتحقق من الهوية مرتين3SAVEتطبيق على هذا المدير
وتفصل صفحة الوصف عن التفاصيل الشخصية واللغة/المنطقة الزمنية، وصورة المستخدم/توقيعه، وكلمة السر والتحقق من الهوية بعاملين.

إن إعدادات الصورة الشخصية تخص المدير المسجل ولا تغير سمة مساحة العمل. استخدم كلمة سر فريدة وسمح بالتحقق من الهوية بعاملين. قد يتطلب تغيير إعداد البريد الإلكتروني أو التحقق من هوية المستخدم إعادة التحقق أو دخول جديد.

الإعدادات

أفضليات الإخطار

وتتحكم أفضليات الإخطار في الأحداث التشغيلية التي تصل إلى مدير النظام في المنتج أو عن طريق البريد الإلكتروني.

فرز المنتجات
أفضليات الإخطاروتوفر صفحة الإخطار خيارات في التطبيق والبريد الإلكتروني لكل حدث بالإضافة إلى قائمة بالإخطارات الأخيرة.أفضليات الإخطارمساحة العملIN-APPمفعلالبريد الإلكترونيانتقائيةUNREAD4عرض الحيز العمليتذكرة مخصصةفي التطبيق وفي البريد الإلكترونيمفعلرد الزبونفي التطبيقمفعلمخاطر SLAفي التطبيق وفي البريد الإلكترونيمفعلموافقة المدير التنفيذيفي التطبيق وفي البريد الإلكترونيمفعل1CHOOSE EVENTSالإشارات المفيدة فقط2CHOOSE CHANNELفي التطبيق أو بالبريد الإلكتروني3الاستعراضالإخطارات الأخيرة
وتوفر صفحة الإخطار خيارات في التطبيق والبريد الإلكتروني لكل حدث بالإضافة إلى قائمة بالإخطارات الأخيرة.

تغطي الأفضليات تعيين التذاكر، ردود العملاء، تحذيرات SLA، نقل الدردشة وأحداث الموافقة على الذكاء الاصطناعي. حافظ على الإشارات التشغيلية العاجلة في مكان ما؛ لا يوقف إطفاء البريد الإلكتروني بالضرورة الإخطار داخل التطبيق.

الإعدادات

لمحة عامة عن الأمن

وتمثل لمحة عامة عن الأمن الشاشة الأولى لتقييم عمليات الحظر، وهجمات الدخول إلى النظام، وجلسات التهديد، والاتجاهات الأمنية، وسلامة الأحداث.

فرز المنتجات
لمحة عامة عن الأمنويجمع استعراض الأمن بين بطاقات المخاطر الحالية، واتجاه 14 يوما، وقائمة بالمهاجمين، وتغذية بالأحداث وحالة السلامة.لمحة عامة عن الأمنمساحة العملACTIVE BLOCKS18FAILED LOGINS42HIGH THREAT3عرض الحيز العمليتلقائيا7المجموع اليومي والمصدرالاتجاهآخر المهاجمينIP، البلد والسببألف - الاستعراضالأحداث الأمنيةالمخاطر ونتائج الإجراءاتالتغذيةسلامة سلسلة البعثرةسلسلة الأحداث الواضحة للتلاعبصحيح1READ HEADLINEالتعرض الحالي2OPEN EVIDENCEالمهاجمون والأحداث3فعلمنع النقل والتحقيق فيه وتصديره
ويجمع استعراض الأمن بين بطاقات المخاطر الحالية، واتجاه 14 يوما، وقائمة بالمهاجمين، وتغذية بالأحداث وحالة السلامة.

استخدم بطاقات العناوين الرئيسية للترتيب، ثم افتح المراجعة ذات الصلة وعمليات الدخول الفاشلة والمقفولة IPs أو JavaScript صفحة الأخطاء للعمل على مستوى السجلات. 14 وينبغي التحقيق في الجلسات التي تنطوي على تهديدات عالية مقارنة بالزوار والطلبات وأدلة التوثيق قبل تطبيق الحظر الدائم.

الإعدادات

سجل مراجعة الحسابات الواضح للتلاعب

ويسجل سجل مراجعة الحسابات من قام بماذا، ومتى، تجاه أي عيب، وبأي مستوى من المخاطر وما إذا كان قد نجح.

فرز المنتجات
مراجعة حسابات الأنشطةوتوفر صفحة مراجعة الحسابات معلومات عن الأنشطة التي يمكن البحث فيها والتي تثبت عدم التلاعب بها، مع بيان الإجراء والجهة الفاعلة والمخاطر والهدف والنتيجة.مراجعة حسابات الأنشطةمساحة العملالأحداث18.2kHIGH RISK21INTEGRITYصحيحعرض الحيز العمليوصلة متاحة[email protected] · Shopifyنجاحتم إلغاء المفتاح API[email protected] المفتاح 19نجاحتغيرت الإعدادات[email protected]نجاحرفض الإذن[email protected] التصديرمجمدة1FILTERالإجراء والمخاطر والجهات الفاعلة2التفتيشالهدف والنتيجة3EXPORTCSVأوJSON
وتوفر صفحة مراجعة الحسابات معلومات عن الأنشطة التي يمكن البحث فيها والتي تثبت عدم التلاعب بها، مع بيان الإجراء والجهة الفاعلة والمخاطر والهدف والنتيجة.

:: تقديم عروض عن طريق العمل، والمخاطرة، والجهات الفاعلة؛ التصديرCSVأوJSONومن أجل إجراء تحقيق، تساعد سلسلة الحشيش على كشف الصفوف المفقودة أو المتغيّرة لمراجعة الحسابات، ولكنها لا تحل محل النسخ الاحتياطية المحمية وقيد الوصول إلى قواعد البيانات، وتعالج صادرات مراجعة الحسابات باعتبارها حساسة لأنها قد تحدد هوية المستخدمين والسجلات والإجراءات الأمنية.

العمليات

التشخيص

التشخيص يحول عمليات التحقق من النظام الفرعي إلى نتائج صحية بسيطة باللغة الإنكليزية ويحدد الإجراءات التالية.

فرز المنتجات
التشخيصالتشخيص يُجمع فحصاً صحياً للمخابرات، و التذاكر، والإدماج، والمخابرة الموقعية، ومهمات المعلومات الأساسية CRM التشغيل الآلي والترخيص والتخزين.التشخيصمساحة العملصحية13WARNING2فشلت1عرض الحيز العمليويدجتنقاط النهاية المرشدة والمتصلة بالدردشةصحيةالمهام الأساسيةتأخر نبض قلب كرونتحذيرالبريد الإلكترونيفشل اختبار الخروجفشلالموصلاتالسجل وتسجيل الأحداثصحية1REFRESHتشغيل عمليات التحقق الحالية2OPEN WARNINGاقرأ الأدلة3FIX AND RETESTتأكيد الاسترداد
التشخيص يُجمع فحصاً صحياً للمخابرات، و التذاكر، والإدماج، والمخابرة الموقعية، ومهمات المعلومات الأساسية CRM التشغيل الآلي والترخيص والتخزين.

وتتحقق الصفحة من سرعة الموقع، والرتبة/الكلمة الرئيسية/الوصلات الشبكية/المحلية، ومدخل العمل، والتذاكر، والزواحف/الألغاز، والإدماج/الأحداث، والمهام الأساسية،CRM(ب) التشغيل الآلي، والرخصة، والخدمات ذات الصلة بالمنتجات، وهي تُبلغ عن عمد عن أسباب قابلة لقراءة المشغلين بدلاً من كشف الأسرار الخام.

بعد التغيير، تجديد وتأكيد النظام الفرعي المتأثر يعود إلى الصحة. صفحة تشخيص خضراء ضرورية ولكنها غير كافية للإطلاق؛ استكمال قائمة التحقق قبل الإطلاق أيضاً.

الإعدادات

الأمن وإمكانية الوصول

OpsIQتشمل طبقات أمنية متعددة لحماية علامتك وبياناتكAPIالدخول

كيف يعمل
الأمن وإمكانية الوصولدرع أمني إلى جانب الضوابط الفعالة: عاملين، OIDC SSO, SCIM 2.0, OAuth2 PKCE، CSRF/CSP، IP جدار ناري، حدود سرعة وخزانة أسرارالتحقق الثنائي (TOTP)تسجيل الدخول الأحادي OIDCSCIM 2.0OAuth2 PKCEإطار الإنجاز الاستراتيجي + خطة التنفيذ القطريةIP جدار حمايةحدود المعدلاتخزانة الأسرار
الأمان

السمات الأمنية

التحقق من هوية المدير

البريد الإلكتروني/كلمة المرور مع خيار التحقق من الهوية مرتين.

إقفال الدخول

قفل مؤقت بعد محاولات فاشلة كثيرة.

IP تعطيل

الكتلة IPs أو CIDR تتراوح من الوصول إلى المواقع المتتبعة.

تصنيف التهديدات

:: تصنيفات التهديدات القائمة على السلوك - يمكن حجب الزوار الذين يشكلون تهديدا كبيرا بشكل آلي.

إنفاذ HTTPS

مطلوب لجميع الاتصالات. HTTP يعيد توجيه إلى HTTPS.

عناوين HSTS

أمن النقل الصارم يمنع الهجمات على تخفيض المستوى.

حماية CSRF

تتضمن جميع نماذج الإدارة رموز CSRF.

حماية XSS

جميع مدخلات المستخدم يتم إخفاؤها.

حماية SSRF

تمنع الوصلات الشبكية الصادرة العناوين الخاصة/الداخلية IP.

التكوين الموصى به

1
Enable 2FA

لجميع حسابات المديرين.

2
كلمات السر القوية

الحد الأدنى 12 حرفاً، مختلط.

3
حسابات الاستعراض

إزالة إمكانية الوصول لأعضاء الفريق السابقين.

4
رصد عمليات الدخول الفاشلة

تحقق أسبوعياً من وجود أنماط مشبوهة.

5
إبقي مستكمل

تطبيق التحديثات على الفور لتحسين الأمن.

الإعدادات

الأدوار والتصاريح

تحكم الوصول القائم على الأدوار يسمح لك بالتحكم في ما يمكن أن يفعله كل عضو من أعضاء الفريق.

الأدوار والحقوق
الأدوار والتصاريحمصفوفة الأدوار حسب القدرات: المالك لديه كل شيء؛ المدير الكامل يفتقر إلى الفواتير ومنطقة الخطر؛ الوكيل لديه فقط تذاكر النطاق.الأدوار والحقوقمساحة العملالمؤسساتإعداد الفواتيرالخطرتذاكرالمالكالإدارة الكاملةالوكالةscoped13 ROLESOwner · Full Admin · Agent2GRANULARلكل صفحة + كل إدارة3DEFAULT-DENYطرق منسية مسدودة
مصفوفة الأدوار بإيجاز: المالك يحصل على كل شيء، والمدير الكامل لكل شيء ما عدا الفواتير ومنطقة الخطر، والوكيل فقط تذاكرهم المحددة النطاق.

الأدوار الافتراضية

المالك

كل شيء بما في ذلك الترخيص، منطقة الخطر وإدارة المنشأة.

الإدارة الكاملة

كل شيء باستثناء الرخصة ومنطقة الخطر يمكنه إدارة الفريق

الوكالة

الرد على تذاكر ودردشات الإدارات المخصصة، والنظر في تحليلات. لا إعدادات أو فريق أو الوصول الأمني.

هل يمكنني إنشاء أدوار مخصصة؟+

لا في الوقت الراهن، ثلاثة أدوار داخلية بالإضافة إلى تعيين الإدارة يعطي التحكم الجزئيات.

الإعدادات

محظور IPs

الإدارة IP عناوين مُحظورة من الوصول إلى مواقعك المتتبعة.

محظور IPs
محظور IPsالشاشة blocked-IPs: نموذج block-an-_IP/CIDR إلى جانب جدول Blocked Addresses مع كل مدخل، والتاريخ، والسبب وزر إزالة الحظر.محظور IPsمساحة العملتعطيل IP /CIDR203.0.113.0/24السبب (اختياري)كتلةالعناوين المحظورة203.0.113.9يونيو 12:: القوة الغاشمةإزالة الحظر45.12.0.0/16حزيران/يونيه 10إزالة الحظر102.89.6.2حزيران/يونيه 9 · إساءة المعاملةإزالة الحظر1حظرIP أو النطاق CIDR2LISTمن ومتى، مع تبرير3UNBLOCKنقرة واحدة
القفل الحقيقي IPs الشاشة:IPأو نطاق مركز البحوث والتطوير، وإدارة القائمة، مع كل من تاريخها وعقلها وفتح صفحة واحدة.

كيف تقوم بالحجب

1
انتقل إلى الأمن > محظور IPs

2
أضف IP أو نطاق CIDR

مثال:203.0.113.42أو203.0.113.0/24

3
أضف سببا

توثيق الأسباب: التهديد، إساءة الاستعمال، الحصول على معلومات من مصادر أخرى، إلخ.

هل يؤثر الحظر على المستخدمين الشرعيين؟+

إذا كان الزبائن يتقاسمون حساباً مؤسسياً.IP أو VPN، ومنع ذلك.IP تمنع الجميع من الوصول إليها، استخدمي حواجز ضيقة.

الإعدادات

عمليات الدخول الفاشلة

جميع محاولات الدخول الفاشلة إلى OpsIQ مديرك.

عمليات الدخول الفاشلة
عمليات الدخول الفاشلةشاشة الدخول الفاشل: جدول حسابات/IPs مع أعداد الفشل، ووقت آخر محاولة، وزناد وقف لكل صف.عمليات الدخول الفاشلةمساحة العملمحاولات دخول فاشلةالحساب IPفشلتآخرإجراء[email protected] · 41.62.10.472 دقيقةكتلة[email protected] · 102.89.6.2318 دقيقةكتلةغير معروفة 45.12.9.71226 دقيقةكتلة[email protected] · 88.21.4.92منذ 1hكتلة1WATCHمحاولات دخول فاشلة2COUNTSلكل حساب IP3فعلكتلة من الصف
الشاشة الحقيقية لقطع الأشجار الفاشلة: كل حساب/IP مع إحصاء الفشل ومحاولة أخيرة، يحجب مصدر قوة فاسدة مباشرة من الصف.

ما يظهره كل بند

التاريخ/الوقت

عندما حدثت المحاولة

البريد الإلكتروني

عنوان البريد الإلكتروني المستخدم.

العنوان IP

مصدر المحاولة.

البلد

الموقع الجغرافي.

سبب

كلمة المرور خاطئة، أو مقفلة، أو غير متاحة.

علامات الإنذار

محاولات عديدة، نفس البريد الإلكتروني

تخمين كلمة المرور، تأكد من أن التحقق المزدوج مفعل

محاولات عديدة، رسائل إلكترونية مختلفة

هجوم آلي، منع المصدر IP.

البلدان غير العادية

إذا كان فريقك محلي، المحاولات الأجنبية هي هجمات محتملة.

الإعدادات

محلل أمان الذكاء الاصطناعي

طبقة محلل اختياري فوق صفحات الأمن: الأحكام، وموجز الحوادث، وملخص يومي، وتحقق أسبوعي من الوضع، وسؤال عن الأمن، 0- سياسات حظر الرموز. لا يجري أبدا في مسار طلب الزائر.

كل صفحة أمنية تسجل ما حدث، ولكن قراءتها لا تزال تتطلب الحكم. يحلل محلل الأمن الذكاء الاصطناعي ذلك الحكم في مكانه، وهو مصمم لإنفاق شيء تقريبا: إنه لا يجلس أبدا في مسار المنارة أو الدخول، والقواعد الحتمية تسوي الحالات الواضحة دون استدعاء الذكاء الصناعي، والأحكام مخزنة في الخزانة، وأفضل ناتج للمحلل هو قاعدة حتموية تفرض بعد ذلك إلى الأبد عند صفر رموز. الإعدادات → الأمن؛ جميعها معطلة بصورة افتراضية.

ماذا تضيف

رقائق الحكم + اشرح

مسدودة IPs وتظهر صفوف الدخول الفاشلة وغير الناجحة شريحة حميدة / مشبوهة / عدائية مع درجة ثقة. يفتح التفسير المنطق، والحقائق المستخدمة، ونقرة واحدة لإجراءات الحظر/الإفراج. 24h, لذلك إعادة النظر في IPمجاني.

ملخصات الحوادث

الأحداث ذات الصلة تتجمع في حادث واحد (موجة الدخول، URL وتُصنف الهجمات الجارية في نفس الحادثة.

الموجز اليومي

لذا، فمن الأفضل أن تقوم بعملية تلخيص واحدة في اليوم: الأمس مقابل خط الأساس الخاص بك، والمتاعب، والحوادث، والشيء الوحيد الذي يجب القيام به. والأيام الهدوء ترسل إشارة "التخلص من كل شيء" الحتمية عند صفر رموز.

تحقق من الوضع الأسبوعي

قائمة مرجعية لتشديد الاثنين (ثغرات التحقق من الهوية مرتين، وعتبة الإغلاق مقابل حجم الهجوم الحقيقي، والإنذارات) مع شدة الجهد والتصحيح الدقيق لكل بند.

اسأل الأمن

صندوق سؤال على نظرة عامة الأمن الذي يرد من وضع الأمن الحي. الأسئلة العميقة الخادم تسلم إلى مهندس الإدارة محادثة بدلا من تخمين.

مقترحات السياسات + المرشد الآلي

يقترح المحلل قواعد كتل ملموسة مثل بطاقات الموافقة / الرفض؛ القواعد المعتمدة تنفذ عند صفر رموز مع عدّاد ضربات حي.

الإعدادات

محلل أمني للذكاء الاصطناعي (security_ai_enabled)

مفتاح التحوّل الرئيسي، يُمكّن من الحصول على رقائق الحكم، ويشرح و يسأل الأمن. IPs اصلي للنموذج، وادخلي في مكالمة واحدة

موجزات الحوادث (security_ai_incidents)

يقوم بتجميع الأحداث إلى حوادث وكتابة كل قصة جديدة. ويعمل على الزمن الأمني القائم في الساعة.

الموجز اليومي (security_ai_digest)

تقرير أمني واحد يومياً على الجرس و العرض العام أيام الهدوء لا تكلف شيئاً

التحقق الأسبوعي من حالة الأمن (security_ai_posture)

قائمة مرجعية لتشديد الاثنين على الاستعراض العام - القائمة المرجعية حاسمة تماما.

نظام القيادة الآلية للسياسات (security_ai_autopilot)

يسمح للمحلل بتفعيل أكثر مقترحاته أماناً دون مراقبة: كتل محدودة الزمن قابلة للعكس فقط، وحيدة IPs أو نطاقات لا تزيد عن /24, لم يسبق تقاسمها/المتنقلة/الخاصة، محدودة 10 في الساعة، دائما مراجعة الحسابات وغير قابل للتراجع.

💡
كل مكالمة تُعلّم أمنياً - نعم مع قبعة شهرية خاصة بها في "آي سيفيغ"→حراسة التكاليف (الحد الأقصى 300 كيلو متر) - إذا ضُربت القبعة، تتدهور سماتها إلى قراءتها المحددة.
العمليات

التشغيل الآلي

OpsIQيستعمل مبرمجاً واحداً للمنتجات لتشغيل الاقتراع البريدي، والتشغيل الآلي للتذكرة، وبدء التحليلات، والاستبقاء، واستدعاء المعلومات، والاستفساراتCRMالعمل، التقارير والوظائف الموصلة.

فرز المنتجات
التشغيل الآلييقوم مدخل واحد من مدخلات كرون المنتج بتوفير نبض القلب؛ ويقرر OpsIQ أي الوظائف الداخلية مستحقة.التشغيل الآليالخادمنبض القلبكل دقيقةRUNNERcron/all.phpHEALTHالإعداداتعرض الحيز العمليقائمة المنتجات الموحدةopsiq/cron/all.phpالمطلوبةصفوف التذاكر والبريد الإلكترونيالعمل المقرر لفترة قصيرةنشطالتحليل والاحتفاظالوتيرة الداخليةمجدولالمشتركون في وصلات الاتصالأحداث كرون المعلنةمحدد1INSTALL ONE LINEتشغيل برنامج تحديد مواعيد المنتجات كل دقيقة2CHECK CRON SETUPتأكيد نبضات القلب CLI3USE DIAGNOSTICSالتحقيق في الأعمال المتأخرة أو الفاشلة
يقوم مدخل واحد من مدخلات كرون المنتج بتوفير نبض القلب؛ ويقرر OpsIQ أي الوظائف الداخلية مستحقة.

قيد البرنامج الزمني للمنتج المطلوب

أضف هذا السطر الوحيد إلى crontab لنفس الخادم وبيئة PHP التي تعمل OpsIQ:

OpsIQ مدخل جدول العمليات المتكررة للمنتج
* * * * * php /path/to/opsiq/opsiq/cron/all.php >> /tmp/opsiq-cron.log 2>&1

يستعاض عن عبارة /path/to/opsiq . استخدم مسار واجهة PHP كاملة عندما يحتاج المضيف إلى واحد، على سبيل المثال /usr/bin/php8.4.

لا تستخدم المستوى الأعلى /cron.php لعمل المنتج. وفي هذا المستودع، ينتمي ذلك المسار إلى خدمة منفصلة غير منتجة خارج هذا الدليل. OpsIQ المنتج الجاري هو opsiq/cron/all.php.

ما الذي يدفع المخطط الموحد

بطاقات السفر وعمليات الطوابير

تجهيز الردود التلقائية المستحقة، والتصعيدات، والموافقات وغيرها من الأعمال المتعلقة بالمنتجات التي توجد في طابور الانتظار.

البريد الإلكتروني الوارد

صناديق البريد المشكّلة للاستفتاء حيث يكون الاستفتاء هو طريقة الدخول المختارة.

التحليلات والدورات

يجمع الدورات ويستكمل المجاميع المقررة عندما يحين موعد استحقاقها.

CRMوالمشاركة

ينفذ مهام التصنيف، والدورة العمرية، وتدفق العمل، والحملة، والتقارير المقررة التي تم تفعيلها.

الاحتفاظ والصيانة

يضطلع بأعمال التنظيف والمحفوظات وانتهاء الصلاحية والتكامل على النحو الواجب.

الموصلات

يرسل المشتركين في موصلات cron ويقوم بالاستفتاء فقط على الموصولات المركبة والممكنة والمشكّلة.

التحقق من cron

  1. مفتوح الإعدادات - إعداد Cron وأكد وجود المنتج الجاري.
  2. الاستخدام اذهب الآن مرة واحدة، ثم تؤكد على تحديث الإدارية واستطلاع نبضات القلب.
  3. تحقق التشخيص لمشكلة تأخر نبض القلب، واجهة PHP CLI، وقاعدة بيانات أو مسار الملف.
  4. تفتيش /tmp/opsiq-cron.log أو مسار السجل الذي اخترته عندما يفشل التشغيل اليدوي.

إبقاء معالجات الموصول قصيرة، وذات قوة متساوية ومحددة بنطاق مساحة العمل. تزامن طويل الدفعة وتخزين مؤشر/نقطة تحقق حتى يمكن للتشغيل التالي أن يستمر بأمان.

🚫
عندما يتوقف المنتج cron، فإن العمل القائم على الوقت OpsIQ يتوقف أو يصبح متأخراً حتى وإن كانت الصفحات الإدارية العادية لا تزال تُحمَّل.
العمليات

عمليات النشر المضيفة

مستضيف OpsIQ ويستخدم النشر نفس شاشات المنتج وتدفقات العمل بينما يدير مشغل الاستضافة طبقة الحاسوب المركزي، أما إجراءات التسجيل التجاري والخطط والفواتير وبوابة الحسابات فهي خارج هذا الدليل.

فرز المنتجات
النشر في البلد المضيفالعمليات المستضافة تغيّر من يتولى صيانة البنية التحتية؛ وهي لا تغير طريقة استخدام العملاء للبنية التحتية OpsIQ.النشر في البلد المضيفمساحة العملPRODUCT UIسامي OpsIQINFRASTRUCTUREيديرها المشغلWORKSPACE DATAمعزولةعرض الحيز العمليوقت تنفيذ التطبيقاتبرنامج برمجة الحاسوب، وخادوم شبكة الويب وقاعدة البياناتمدارةمنتج cronجدولة من قبل المشغل المستضيفتحققالنسخ الاحتياطية والتحديثاتسياسة مقدمي الخدمات والأدلةألف - الاستعراضOpsIQ الإعداداتالمواقع والذكاء الاصطناعي والفريق وأجهزة الاتصالفريقك1OPERATE OPSIQ NORMALLYاستخدام نفس تصفح المنتجات2VERIFY SERVICE HEALTHدال - التشخيص وأدلة الحالة3KNOW RESPONSIBILITYفصل إعدادات المنتج عن أعمال الاستضافة
العمليات المستضافة تغيّر من يتولى صيانة البنية التحتية؛ وهي لا تغير طريقة استخدام العملاء للبنية التحتية OpsIQ.

ما يديرـه مشغل الاستضافة عادة

  • حاسوب خدمة شبكة الويب، وقت التشغيل PHP، خدمة قاعدة البيانات، TLS والتخزين.
  • :: البرنامج الموحد Cron وتسجيلاته على مستوى الخادم.
  • تحديثات التطبيقات، ورصد الهياكل الأساسية، والعملية الاحتياطية المحددة في اتفاق الاستضافة.

ماذا لا يزال مدير OpsIQ يديره

  • المواقع الشبكية وتركيب العناصر، وإعدادات الذكاء الاصطناعي، والمعارف، وصناديق البريد الإلكتروني، وتدفقات العمل لدعم الزبائن.
  • دخول الأفرقة، الإدارات، الضوابط الأمنية API المفاتيح، والموصلات، والتشغيل الآلي وإعدادات الاحتفاظ بالبيانات.
  • التحقق من المنتجات عن طريق التشخيص وسجل مراجعة الحسابات واختبارات التوصيل والتدقيق الحقيقي في جميع المراحل.

الضوابط التشغيلية

لا تفترض أن الخدمة المنظمة تعني أن كل دمج في المنتجات سليم، وتتأكد من أحدث الأدلة الاحتياطية وسياسة الاحتفاظ بها مع متعهد الاستضافة، وتستخدمهاOpsIQالتشخيص بعد التغييراتDNSأو البريد الإلكتروني، أو مقدمي المعلومات، أو المواقع الشبكية أو الموصلات.

ولا يشمل هذا الفرع سوى عمليات المنتجات، ويظل الإدماج التجاري والاشتراكات وإعداد الفواتير وإدارة حسابات العملاء خارج نطاق هذا القسم. OpsIQ دليل.

العمليات

الاستضافة الذاتية OpsIQ

A self-hosted OpsIQ installation runs on infrastructure you control. You are responsible for the runtime, database, TLS, product cron, backups, updates and monitoring.

فرز المنتجات
الاستضافة الذاتيةالاستضافة الذاتية تعطي البنية التحتية التحكم وتجعل فريقك مسؤولا عن كل تبعية التشغيل.الاستضافة الذاتيةالخادمPHP8.4+DATABASEMySQL 5.7+SCHEDULERكل دقيقةعرض الحيز العمليتوسعات وقت التنفيذjsonالمطلوبةالتمديدات الإضافيةxml، openssl، zip، intl، gdالمطلوبةقاعدة بيانات بديلةMariaDB 10.3+ مع InnoDBمدعومةنقلاتصالات HTTPS وخدمات البريد الصادرتحقق1PREPARE THE SERVERمطابقة متطلبات وقت التشغيل2INSTALL AND CONFIGUREاستخدام قاعدة بيانات مخصصة ونظام HTTPS3ADD PRODUCT CRONالركض opsiq/cron/all.php
الاستضافة الذاتية تعطي البنية التحتية التحكم وتجعل فريقك مسؤولا عن كل تبعية التشغيل.

عقد الحد الأدنى من البرمجيات

PHP

بي إتش بي 8.4 الإضافات المطلوبة: curl, pdo_mysql, mbstring, json, xml, openssl, zip, intl و gd.

قاعدة البيانات

MySQL 5.7+ أو MariaDB 10.3+ باستخدام InnoDB - إنشاء قاعدة بيانات مخصصة ومستخدم تطبيق أقل امتيازاً.

حاسوب خدمة الشبكة

أباتشي أو Nginx معدات مخصصة لﻻجتماعات OpsIQ التحكم الأمامي، والأصول الثابتة وإعادة الكتابات المطلوبة.

HTTPS

مطلوبة لجلسات الإدارة، وحركة مرور الأدوات، API المفاتيح، والروابط الشبكية ومكالمات مقدمي الخدمات.

الوصول إلى الخارج

السماح ب DNS و HTTPS الوصول إلى الذكاء الاصطناعي، والبريد الإلكتروني، والموصلات ونقاط نهاية الترخيص التي تمكنها فعلا.

الوصول إلى الملفات

ويجب أن يكون بمقدور مستخدمي الشبكة وواجهة التحكم في الطلب قراءة ملفات التطبيقات والكتابة فقط إلى مواقع وقت التشغيل/التخزين الموثقة.

كرون

أطلقوا النار OpsIQ ويجري تشغيل برنامج تحديد مواعيد المنتجات كل دقيقة بنفس طريقة تشكيل التطبيق وإمكانية الوصول إلى قاعدة البيانات التي تعمل بها العملية الشبكية.

تسلسل التركيب

  1. تحميل الإصدار إلى جذر الوثيقة المقصود والحفاظ على هيكل الدليل المقدم.
  2. إنشاء قاعدة البيانات ومستخدم التطبيق، ثم إدخال قاعدة بيانات، canonical URL وإعدادات الترخيص.
  3. تشغيل عملية التركيب/التثبيت وإنشاء أول حساب للمالك.
  4. تشغيل HTTPS والتحقق من عمليات إعادة التوجيه، وcookies والوسائط العامة/API المسارات.
  5. أضف المنتج الموحد OpsIQ cron:
برنامج cron المستضاف ذاتيا
* * * * * php /path/to/opsiq/opsiq/cron/all.php >> /tmp/opsiq-cron.log 2>&1
  1. افتح Settings - Cron Setup and Diagnostics؛ تشغيل المخطط مرة واحدة وحل كل اعتماد فاشل.
  2. إنشاء النسخ الاحتياطي، واستعادة الاختبارات، والاحتفاظ بالسجلات وإجراءات التحديث قبل إضافة بيانات الإنتاج.

التحديث الآمن

  1. اقرأ ملاحظات الإصدار وتحقق من التوسعات/الإضافات المطلوبة لـ PHP قبل تغيير الملفات.
  2. إنشاء نسخة احتياطية من قاعدة البيانات وملفات التطبيقات/التشكيل، ثم إثبات أن النسخة الاحتياطية يمكن استعادتها في موقع للاختبار.
  3. نشر الملفات الجديدة دون حذف بيانات التشكيل أو وقت التشغيل الخاصة بالتركيب.
  4. تنفيذ عملية الانتقال/التحقق المسبق الموفرة والتحقق من الدخول، وتتبع العناصر، والتذاكر، والبريد الإلكتروني، والذكاء الاصطناعي، والموصلات، والكرون.
  5. إتاحة النسخة السابقة وقاعدة البيانات الاحتياطية لنافذة التراجع الموثقة.
🚫
المستوى الأعلى للمستودع /cron.php ليس هو OpsIQ نقطة التشغيل الآلي للمنتجات فقط عند. opsiq/cron/all.php
⚠️
لا تحذف. schema_cache.json كصيانة روتينية، وإزالته فقط عندما تطلب تعليمات المنتج صراحة إعادة بناء مخطط مخزنة.
العمليات

دليل الإنتاج

قائمة مرجعية وأفضل الممارسات للجري OpsIQ في الإنتاج.

دليل الإنتاج
دليل الإنتاجقائمة مرجعية لبدء التشغيل: المجال المخصص و SSL، تدريب الذكاء الاصطناعي، وصلات الاتصال والكرون، النسخ الاحتياطية والاحتفاظ بها، وأدوار الأفرقة.القائمة المرجعية لبدء العملمساحة العملقبل أن تذهب على الهواءالنطاق المخصص + SSLالذكاء الاصطناعي مدرب على محتوىكاختبار الوصلاتعمليات النسخ الاحتياطي المقررةإسناد أدوار الأفرقة واستعراضها1GO-LIVEقائمة مرجعية سابقة للبدء2التحقق:: النطاق · SSL · النسخ الاحتياطية3CONFIDENTالسفينة عندما تكون خضراء
قائمة مرجعية لبدء التشغيل حتى لا يفوتك شيء: المجال + SSL، الذكاء الاصطناعي المدرب، الموصلات المختبرة والكرون، النسخ الاحتياطية والاحتفاظ، وأدوار الفريق.

قبل التشغيل المباشر

HTTPS تم تشكيله

SSL مركبة، HTTP تحويل، HSTS مفعول.

Cron قيد التشغيل

التحقق من خلال صفحة التشخيص.

اختبار الذكاء الاصطناعي

تحدث مثل العميل، تحقق من الدقة والنبرة

أداة مركبة

على جميع صفحات الموقع، التحقق من العرض المباشر.

تكوين النسخ الاحتياطي

:: إجراء عمليات احتياطية يومية آلية لقواعد البيانات والملفات.

تسجيل الأخطاء

تم تفعيل سجل أخطاء PHP ورصده.

الفريق المدعو

ولجميع الأعضاء حسابات ذات أدوار صحيحة.

تم ملء قاعدة المعارف

على الأقل5-10مقالات

يوميا: تحقق من لوحة التحكم، واختر الصفوف، وتحقق عشوائيا من محادثات الذكاء الاصطناعي.

أسبوعياً: استعراض معلومات الذكاء الاصطناعي، وتحديث قاعدة البيانات، والتحقق من أداء الفريق، واستعراض الأمن.

شهرياً: استعراض اتجاهات التحليل، ومراجعة وصلات الاتصال، وتحديث التدريب على الذكاء الاصطناعي، والتحقق من النسخ الاحتياطية.

العمليات

قائمة مرجعية سابقة للبدء

تشغيل بوابات المصدر وإكمال عمليات التحقق من المنتجات الحقيقية قبل إصدار أو أول إطلاق إنتاجي. إن توافر أمر ما ليس دليلاً على أنه مر في بيئتك.

فرز المنتجات
التحقق من الإفراجيظهر عرض الإطلاق البوابات المطلوبة للتشغيل؛ فهو لا يضع عليها علامة مسبقة على أنها مرشحة.التحقق من الإفراجالخادموقت التنفيذبي إتش بي 8.4SOURCE GATESالتشغيل المحليOUTCOMEقائمة على الأدلةعرض الحيز العمليالتمديدات المطلوبةتحقق قبل الرحلةالبوابةمسح بنية PHPجميع ملفات المشروعالبوابةتقييم الذكاء الاصطناعي ووحدة PHPUnitإطلاق عندما تكون التبعيات موجودةالبوابةعمليات التحقق الثابتة والمتصفحيةإطلاق عند التشكيلالبوابة1RUN THE CHECKSتسجيل الناتج الفعلي2FIX EVERY REQUIRED FAILUREلا تستعيض عن الأدلة بافتراضات3TEST THE PRODUCTالتحقق من رحلات المستخدمين الفعلية
يظهر عرض الإطلاق البوابات المطلوبة للتشغيل؛ فهو لا يضع عليها علامة مسبقة على أنها مرشحة.

بوابات المصدر والإطلاق

تشغيل عمليات التحقق من المستودع من جذر التركيب والاحتفاظ بنتائجها كاملة مع سجل الإصدار.

بوابة التمحيص الأولي قبل الطيران
php tools/preflight.php
بوابة إطلاق ممتدة
php tools/release_gate.php

يقوم الفحص الأولي بفحص وقت تشغيل PHP 8.4 والتوسعات المطلوبة، ويقوم بمسح بنية PHP، وينفذ بوابة AI لتقييم السفينة وحزمة PHPUnit كاملة، ويفحص PHPStan/Node عندما يتم تركيب هذه الأدوات.

تسجيل سبب عدم توافره، وتثبيت التبعية الناقصة أو تشغيلها في بيئة التكامل المتكامل/المرحلة الانتقالية الصحيحة قبل إطلاقها.

عمليات فحص المنتجات

1- التوثيق والأدوار

تسجيل الدخول بكل دور مقصود؛ التحقق من الصفحات/الإجراءات المسموح بها والممنوعة.

2. الوسيلة والتتبع

تحميل موقع حقيقي في متصفح خاص؛ التحقق من حركة المرور، والتغذية الحية، وسجلات الزوار والجلسة.

3. الدردشة والذكاء الاصطناعي

:: طرح أسئلة تمثيلية؛ والتحقق من أساس المعرفة، والسلامة، وتصاعد الإجراءات، وتاريخ الذكاء الاصطناعي.

4. التذاكر

إنشاء الطلبات وتخصيصها والرد عليها وتحويلها إلى مستوى أعلى وإغلاقها وإعادة فتحها من خلال كل مسار تمكيني للاستلام.

5البريد الإلكتروني

اختبار التسليم الصادر وكل صندوق بريد وارد أو مسار شبكي مركب.

6. CRMوالمحللين

إنشاء اتصال/صفقة/تحويل خاضع للرقابة والتحقق من لوحات الإدارة، وقنوات التسويق، والتصنيفات والتقارير.

7. موصلات

إجراء اختبارات للاتصال، واختبار قراءة واحد، وعملية كتابة آمنة/تشغيل جاف واحدة ومسار Webhook/استطلاع لكل وصلة تمكين.

8. API وشبكة الويب

التحقق من النطاقات الضيقة، وحدود المعدل، والمحاولات المتكررة ذات القوة المتساوية، والتوقيعات، ومعالجة الاستنساخ.

9. كرون

تشغيل برنامج تحديد مواعيد المنتجات الموحدة والتأكد من جميع النبضات القلبية المطلوبة في Cron Setup/Diagnostics.

10. الأمان

التحقق من 2FA، CSRF/ضوابط الجلسة، ومراجعة القيود، وإلغاء المفاتيح وعزل مساحة العمل.

11- النسخ الاحتياطي والاستعادة

استعادة نسخة احتياطية حالية في بيئة اختبار منفصلة والتحقق من البيانات وتشكيلها.

12- قابلية الرصد والتراجع

تأكيد السجلات/التنبيهات، والحفاظ على هويات الطلبات وإثبات إجراء الرجوع إلى الوراء.

⚠️
لا ينشر إلا بعد أن تتوفر أدلة حديثة على الإطلاق والبيئة الدقيقين لكل بوابة ورحلة حرجة ضرورية لأداء الأعمال.
المطور

النشر على مواقع أطراف ثالثة

إخطارات دفع الحشد (بما في ذلك الإخطارات)OpsIQ(حملات الدفع) تحتاج إلى عامل خدمة من شركة SAME ORIGIN كصفحة.OpsIQ حمولات من شعرك OpsIQ النشر، لذلك لا يمكن لموقع طرف ثالث أن يسجل OpsIQ يعمل بشكل مباشر، يستضيف ملفاً صغيراً على نطاق الموقع ليتمكن من دفعه إلى هناك

كيف يعمل
الدفع عبر شبكة الإنترنتإشعار دفع على غرار نظام التشغيل فوق بطاقتين من بطاقات طريقة التسليم: VAPID و Pusher Beams.متجركعربتك تنتظر 10% اليومالإنسان في الحلقة من أجل المالمدمجة (VAPID)لا يوجد طرف ثالثاستضافة ملف واحدPusher أعمدةاستخدام حسابكاستضافة العامل
الدفع عبر شبكة الإنترنت

لماذا يلزم ذلك

(بروزرز) سمحوا لصفحة فقط بتسجيل عامل خدمة من أصله الخاص OpsIQ الوزع، لذا لا يمكن أن يُثبت عامل الدفع في موقع عملاء حتى تستضيف العامل من أصل ذلك الموقع OpsIQ حملات الضغط تنشر من خلال الاثنين.

الخيار ألف: فوز على شبكة الإنترنت ذاتياً (VAPID، لا طرف ثالث)

1. تنزيل العامل من نشرك OpsIQ: https://YOUR-OPSIQ/opsiq/opsiq-push-sw.js

2. تحميله على جهازك جذر الشبكة لذا يمكن الوصول إليها في https://yoursite.com/opsiq-push-sw.js. The widget كشف هذا المسار تلقائياً على أصل الصفحة الخاص وسجله، لا حاجة لتغيير الدمى. (يستخدم نطاق ضيق، لذلك لا يحل محل عامل الخدمة الذي تديره بالفعل).

اختياري: إذا كان عليك استضافته في مسار غير عادي، أشير إلى الوحدة الوسيطة إليه قبل القناص، لا تقبل إلا عندما يكون نفس المُنشأة:

:: لا يُعتبر الملف موجوداً إلا إذا كان هذا الملف غير موجود على أساس الإنترنت
<script>window.OpsIQ=window.OpsIQ||{};window.OpsIQ.pushSwUrl="/custom/opsiq-push-sw.js";</script>

3. في OpsIQ، توليد مفاتيح VAPID (الإعدادات → الذكاء الاصطناعي للمحادثة مع العميل → المتقدم → دفع الويب). ثم يطلب الوتد من الزوار إذن الإخطار ويشترك بهم.

وراء قناة Cloudflare تأكدي /opsiq-push-sw.js العودة إلى حزب نمور تحرير شعب الهوتو 200 (ارفع المخبأ إذا كان)404 قبل أن تُحمّل، مخبأ 404(ب) سيمنع التسجيل.

الخيار باء Pusher الحزم (مقدم الخدمات المنظم)

1. في الإعدادات OpsIQ ، أعد مقدم الدفع إلى Pusher أعمدة ودخلوا شعاعكم رقم النموذج و المفتاح السري.

2. استضافة عامل خدمة الحزم على جذر الموقع ك /service-worker.jsنسخة https://YOUR-OPSIQ/opsiq/pusher-beams-service-worker.js, أو دمج هذا السطر في عامل الجذر الخاص بك:

عامل بيام، مضيف في https://yoursite.com/service-worker.js
importScripts("https://js.pusher.com/beams/service-worker.js");

3. هذا كل ما في الأمر، البرنامج يقوم بتحميل الحزمة تلقائياً SDK ويشترك كل زائر في الاهتمام بكل موقع opsiq-site-<your-site-key>لا توجد حاجة إلى أسلاك أخرى.

كيف تحقق الحملات نتائجها

حملات الدفع كلاهما طرق متعددة في وقت واحد: الزوار على VAPID العامل المستضاف ذاتيا يحصلون على Web Push المشفر، والزوار الذين اشتركوا من خلال Pusher Beams يحصلوا على الحزم المنشورة. يتم الوصول إلى كل زائر عبر أي كان الذي اشترك فيه، لذلك يمكنك تشغيل نفس مصدر VAPId على بعض المواقع والحزم المتعددة المصدر على الآخرين.

HTTPS مطلوب صندوق الدردشة الإداري يستخدم بالفعل نفس آلية اهتمامات Beams لإنذارات المشغلين.

العمليات

حل المشاكل

مشاكل شائعة وكيف يمكن حلها.

ألف - معلومات عامة

صفحة فارغة+

تحقق من سجلات أخطاء PHP. الأسباب: PHP القديم (تحتاج إلى 8.4+)، امتداد مفقود، فشل الاتصال بقاعدة البيانات، حقوق الملف الخاطئة.

لوحة التحكم تظهر صفرا+

تحقق: تثبيت الوحدة؟ Cron يعمل؟ نطاق التواريخ صحيحة؟ IP مستبعدة؟

الذكاء الاصطناعي

لم ترد منظمة العفو الدولية على الطلب+

تحقق: مقدم الخدمة تم تشكيله؟ مفتاح API صحيح (استخدام الاتصال التجريبي)؟ نفذت الميزانية؟ تشكيل حيز العمل الذكي صحيح؟

الذكاء الاصطناعي يقدم إجابات خاطئة+

تحقق: هل قاعدة المعارف مستكملة؟ هل الطلب واضح؟ هل يعود البحث عن وصلات البيانات الصحيحة؟ استعراض الحوار في تاريخ الذكاء الاصطناعي.

الذكاء الاصطناعي بطيء+

يعتمد على: مقدم API السرعة، حجم السياق (كيلو بايت كبير = رموز أكثر = أبطأ)، تأخير الشبكة. جرب نموذج أسرع.

تتبع

الوسيلة مفقودة+

تحقق: النص في مصدر الصفحة؟ أخطاء JS في اللعبة؟ منع CSP؟ منع الإعلانات؟

البلد غير معروف+

GeoIP غير مخصص. استخدم Cloudflare (تلقائي) أو قاعدة بيانات MaxMind GeoLite2.

تذاكر

رسائل البريد الإلكتروني التي لا تنشئ تذاكر+

تحقق: صندوق البريد متصل؟ Cron يعمل؟ كلمة سر التطبيق تم تغييرها؟ IMAP هل الإعدادات صحيحة؟

الرد الآلي لا يعمل+

اختبار: تمكين؟ الإدارة المسموح بها؟ الذكاء الاصطناعي معدّل؟ Cron يعمل؟ الإنسان رد أولاً؟

الموصلات

فشل الاتصال+

التحقق: هل وثائق التفويض صحيحة؟ المفتاح انتهت صلاحيته؟ API قاعدة البيانات URL صحيح؟

موصول ولكن لا توجد بيانات+

تحقق: API مفاتيح النطاقات؟ Webhook تزامن معززة؟ Cron تشغيل؟

باء - الأداء

الصفحات البطيئة+

تحقق من: أداء قاعدة البيانات (SHOW PROCESSLIST)، ذاكرة PHP (زيادة إلى 1GB) ، تمكين opcache ، تخفيض فترة اﻻحتفاظ.

العمليات

الوحدة الوسيطة لا تسجل الزيارات

استخدم هذا التحقق المركز عندما لا يتم تحميل الوسيلة بشكل صحيح أو يظل المصدر الحي فارغا.

عندما لا يسجل الوحدة الزيارات, التحقق من مفتاح الموقع, تحميل الصفحة في متصفح خاص, تحقق المتصفح الشبكة / لوحات القيادة لطلبات المنارة أو الوسائط المحجوبة, استعراض المحتوى-أمن-السياسة ومنع الإعلانات, تأكيد أن الموقع نشط في OpsIQ فقاعة المحادثة المرئية لا تثبت في حد ذاتها أن منارة التحليل قد تم قبولها.

مرجع

مسرد

تعاريف المصطلحات المستخدمة في جميع أجزاء OpsIQ.

إجراء

شيء يمكن للذكاء الاصطناعي فعله من خلال وصلة أو المنصة

الوكالة

عضو فريق مع وصول محدود، أو وكيل الذكاء الاصطناعي.

BYOK

أحضر مفتاحك الخاص، و أنت تقدم خاصتك API المفتاح

موصل

ملحق يقوم بدمج منصة خارجية مع OpsIQ.

CSAT

معدل رضا العملاء.

-اتفاق

فرصة للإيراداتCRM.

القسم

فئة من التذاكر لتحديد الطرق ومراقبة الدخول.

التصعيد

نقل تذكرة إلى إدارة مختلفة أو من الذكاء الاصطناعي إلى الإنسان.

GeoIP

كشف موقع الزائر من العنوان IP.

التسليم

نقل محادثة من الذكاء الاصطناعي إلى الإنسان.

رمز الهوية

رمز موقع يحدد هوية زائر الموقع.

قاعدة المعرفة

مقالات تستخدمها الوكالة للإجابة على الأسئلة.

الرصاص

زائر يظهر نية الشراء.

الدرجة الأولى

0-100 عدد يشير إلى احتمال التحويل.

مرحلة دورة الحياة

حيثما يكون العميل: زبون محتمل، عميل محتمل في خطر، عملة معرضة للخطر.

الذكاء الاصطناعي المدارة

المساعدة التقنية المقدمة كجزء من OpsIQ الخطة.

خط الأنابيب

لوح مرئي لمراحل الصفقة.

المكتب الإقليمي لأمريكا الوسطى

مراقبة الدخول على أساس الأدوار.

جلسة

سلسلة من مشاهدات الصفحة في غضون فترة زمنية محددة.

مفتاح الموقع

هوية فريدة للموقع الشبكي الذي تم تتبعه.

SLA

اتفاق مستوى الخدمة، أوقات الاستجابة المستهدفة.

رمز

Unit of AI text. Roughly 4 characters = 1 token.

طبقة الثقة

نظام السلامة الذي يتحكم في استقلالية الذكاء الاصطناعي.

نقطة الاتصال الشبكية

إعادة استدعاء HTTP للإخطارات بالحدث.

ويدجت

JavaScript مدمج في موقعك على شبكة الإنترنت.

مساحة العمل

موقع بنظامه الخاص للتتبع، الذكاء الاصطناعي، الموصلات والفريق نفس الشيء مثل "الموقع"

مرجع

احصل على المزيد من المساعدة

إذا لم تجد في هذه الوثائق إجابة على سؤالك:

إدارة الشؤون الإدارية

انقر على "اسأل OpsIQ" في الإدارية. لديه الوصول إلى هذه الوثائق وبيانات منصةك.

تذكرة الدعم

تضمن: ما جربت، وماذا حدث، وما كنت تتوقعه، وأي رسائل خطأ.

البريد الإلكتروني

بريد إلكتروني الدعم مع مفتاح الترخيص ووصف المسألة.

نصائح بشأن طلبات الدعم الفعالة

يدرج الصفحة

أي صفحة إدارية (URL أو الاسم).

يدرج الإطار

اسم الإعداد الدقيق والقيمة الحالية.

تضمن الخطأ

رسالة خطأ دقيقة مع رموز.

يدرج الخطوات

ماذا فعلت، خطوة بخطوة.

تشمل المتوقع مقابل الفعلي

ماذا يجب أن يحدث مقابل ما حدث

💡
كلما كان طلبك أكثر تحديداً، كانت الإجابة أسرع. "هذا لا يعمل" يتطلب التحقيق. "الضغط على حفظ في تشكيل الذكاء الاصطناعي يعطي رمز الخطأ 502" يحصل على إجابة مباشرة.