OpsIQ מסמך

לבנות, לפעול הרחבה OpsIQ.

זהו התיעוד המלא של OpsIQ הגדר את המוצר, להפעיל תמיכה, להגדיר AI, לנהל CRM, להתקין את widget, לבנות מחברים, להתקשר REST API, קבל Webhooks, יישומי שוק החבילה, ולפעול פריסות מעוגנות עצמית.

מדריך לקוחותמדריך Adminמדריך פיתוחCRMConnectorSDKREST REST APIעוין עצמי
סקוט

סקופ של חוברת היד

הכל OpsIQ עושה, במקום אחד: איך כל מסך עובד, כיצד לחבר את המערכות שלך וכיצד לבנות על גבי זה.התחל בכל מקום, החלקים לעקוב אחר אותו סדר כמו הצד המנהלי.

סקוט
מפת המסמכיםחוברת היד מאורגנת סביב OpsIQ המוצר, לאחר אותו הסדר כמו הצד המנהל.מפת המסמכיםOpsIQ מוצר המוצרAUDIENCEמפעיליבנהמפתחיםRUNמנהלביקורת עבודה WorkSPACEשימוש בשימוש OpsIQמסך המוצר וזרימות העבודההכלולExtendOpsIQקישורים, APIs widgetהכלולאופרה OpsIQאבטחה, קביעות ופריסההכלולתיאורחבילה, API חוזים Webhookהכלול1CHOOSE AUDIENCEהמפעיל או היזם2FOLLOW THE UIתגית: Mirror OpsIQ3USE SOURCE TRUTHמצב בא מבן
חוברת היד מאורגנת סביב OpsIQ המוצר, לאחר אותו הסדר כמו הצד המנהל.
פורטל Studio

השתמש במדריך ייעודי ומנהל מפתח עבור אדריכלות פורטל, דפים, רכיבים, תצוגה מקדימה, מרכז העזרה, זהות, SCIM, הודעות נשלטות, הרחבות, הגירה והסמכת.

פתח את המדריך של Portal Studio

מה יש כאן

להפעיל את המוצר

כל מסך במערכת ההפעלה: ניתוח, צ'אט חי, כרטיסים,CRMבסיס ידע, מודיעין אתרים, מבצעים ופורטל חשבון הלקוחות.מה כל דף עושה, מה המספרים מתכוונים ומה לעשות כאשר הם נראים לא נכונים.

חיבור המערכות שלך

האתר widget, דואר אלקטרוני תיבות, inbound and Outbound webhooks, ואת ספריית המחבר עבור פלטפורמות כמו Shopify, WooCommerce, WHMCS Zendesk, Stripe, Slack ו-Gmail

בנה משלך

The Connector Builder for no-code connectors, Actions & Triggers אם אתה מעדיף לא להשתמש במחברים בכלל, ואת REST API עם כל פעולה, היקף וקוד שגיאה.

תפעילו אותו

תפקידים ורשאות, אבטחה, ערוון, אבחון, גיבויים, וגם פריסה מאוכסנת ומאופקת.

איפה להתחיל

1
אם אתה רץ OpsIQ יום ליום

קראו את קטעי המסך בסדר צדר.כל אחד פותח עם מה שהדף הוא, כך שתוכלו לעצור ברגע שיש לכם את מה שאתם צריכים.

2
אם אתה מנהל את זה

הוסף הגדרות, אבטחה, אבחון, Cron והפקה.אלה הם החלקים שלהחליט אם כל השאר עובדים.

3
אם אתם בונים שילוב

התחל ב- Connectors, ולאחר מכן The Connector Builder, אז REST API קראו את אלה על מנת ותראו כל דרך OpsIQ אפשר לדבר עם מערכת אחרת.

💡
שני דברים משנים את מה שאתה רואה. Permissions להסתיר דפים שהתפקיד שלך לא יכול לפתוח, כך שסעיף המתואר כאן עשוי להיות חסר מן הצד השני שלך.בקש מנהל מערכת כדי לבדוק את התפקיד שלך. ומחברים לשאת תווית בגרות של ייצור, Beta, Preview או תבנית; ה-Runview והמחבר שלה מתבטאת הם הסמכות שבה יש לך, לא דף זה.
התחל כאן

מה OpsIQ עושה עבור העסק שלך

OpsIQ היא פלטפורמה עסקית מלאה של AI-First תפעול.זה מחליף את הניתוח שלך, צ'אט חי, Helpdesk, CRM, SEO Toolkit, אינטגרציית אמצעי זהירות ופלטפורמת מפתח עם מנהל אחד מאוחדת שבו כל כלי חולק את אותו ההקשר של הלקוח במקום תפרים יחד. 8-12 מוצרי SaaS נפרדים, התקנת OpsIQ פעם אחת, להפעיל הכל ממסך אחד.

הפלטפורמה
OpsIQ פלטפורמה מאוחדתמוח בינה מלאכותית מרכזי המחובר לצ'אט חי, CRM, כרטיסים, מודיעין אתרים, מבצעים וניתוחים.צ'אט Live chatקידוםCRM במחשבאתר IntelכרטיסיםאנליטיקהOpsIQמוח.1ONE WORKSPACEכל כלי ב- One admin2SHARED BRAINהקשר בין לקוח3ANYWHEREענן או אירוח עצמי
OpsIQ הוא פלטפורמה אחת עם אחד משותף הקשר של לקוחות, כל כלי להאכיל, והוא מופעל על ידי אותו מוח AI.

הכל OpsIQ • עושה בפירוט

ניתוח אתרים ומודיעין מבקרים

מעקב בזמן אמת

כל עומס דף, לחץ, גלילה ואירוע ניווט נלכדים בזמן אמת.ראו מי נמצא באתר שלכם כרגע, אילו דפים הם צופים, כמה זמן הם מבלים והיכן הגיעו מכל השאר ללא עוגיות צד שלישי.

יומן מבקרים ומפגשים

היסטוריה מלאה של כל מבקר עם מכשיר, דפדפן, מערכת הפעלה, מדינה, עיר, מתייחס, פרמטרים UTM, דף נחיתה ופתרון זהות.עמוד קבוצתי תצוגות לתוך מסעות כך שתוכל לראות את הנתיב כולו המבקר לוקח.

חזרה על סשן

צומת בסגנון Timeline של מפגשים מבקרים שנתפסו.ראה בדיוק מה משתמשים עשו: תנועות עכבר, קליקים, מגילות, מעברי דף וצורה אינטראקציות. השתמש בו כדי לאבחן בעיות UX, להבין נקודות ירידה ולאמת זרימת המרה.

מזון חי

זרם בזמן אמת של פעילות מבקרים כפי שקורה.ראה צפיות בעמוד, צ'אט מתחיל, טופס הגשתאות וסימן כוונה לעדכן כל כמה שניות.פילטר על ידי מדינה, מכשיר או מתייחס להתמקד בפערים ספציפיים.

דפים

דפים מדורגים על ידי ביקורים, זמן מעורבות, קצב קפיצה, המרות ופעילות תמיכה.זהה את התוכן והדפים הגבוהים ביותר שלך הדורשים שיפור.

אינטליגנציה גיאו-גיא

המדינה, העיר ואזור מתמוטטים עם מפות.התקן והפצה של הדפדפן, ניתוח מקור התנועה, מעקב אחר מנוע חיפוש ותובנות חדירה לשוק.

ממזר

אותות הכוונה של מבקר מעקב (ביקורי דף מועדים, החזרה חוזרת, דפוסי גלישה בתיעוד ותמיכה באינטראקציות) כדי לזהות מבקרים שסביר לקנות, צ'ואן או זקוקים לעזרה.

A/B ניסויים

הפעל בדיקות פיצול באתר שלך ישירות OpsIQ ליצור גרסאות, להגדיר הקצאת תנועה, להגדיר מטרות המרה, למדוד את המשמעות הסטטיסטית.אין צורך בכלי בדיקה חיצוני.

JavaScript שגיאה מעקב

לתפוס את הלקוח JavaScript שגיאות מהאתר שלך באופן אוטומטי.ראה הודעות שגיאה, עקבות ערימה, דפדפן מושפע, ספירת תדר, ודפים מעוררים אותם. בעיות חזיתות דביג ללא ניטור שגיאות נפרד.

אירועים Log

כל אירוע עוקב (עמודי נוף, אירועים מותאמים אישית, אינטראקציות צ'אט, הגשת טפסים, רכישות) ב יומן חיפוש וסינון עם metadata מלא.

מכירות והמרות

הזמנות מעקב, הכנסות, החזרים, חידושי מנויים ותכונות המרות למקורות תנועה, קמפיינים ומסעות מבקרים. לוחות נתונים של ההכנסות עם תקופת השוואה וניתוח מגמה.

מוביל

מבקרים בעלי עקביים שזוהו על ידי דפוסי התנהגות.ציון מוביל בהתבסס על ביקורים בעמוד, זמן באתר, החזרה תדירות, תמיכה אינטראקציות וסימנים מותאמים אישית. Feed מובילה ישירות לתוך צינור CRM.

מידע על Site Intelligence (SEO and content Analysis)

אתר סורקים

סריקה אוטומטית של כל אתר האינטרנט שלך כדי לגלות דפים, לזהות קישורים שבורים, למצוא תגי meta חסרים, לבדוק תמונה alt טקסט, אימות canonical URLs, ומפות את מבנה האתר שלך. לוח זמנים זוחל לרוץ מדי יום, שבועי או על הביקוש.

ביקורת SEO

ניתוח טכני מקיף: ציוני מהירות דף, תגובה ניידת, Core Web Vitals, SSL סטטוס תעודה, הפניית שרשראות, גילוי תוכן כפול, ניתוח עומק זחיל ואימות נתונים מובנה.

ביקורת תוכן

להעריך כל דף עבור איכות תוכן, ספירת מילים, ציון קריאה, צפיפות מילות מפתח, מבנה כותרות, יחס קישור פנימי /חיצוני, וטריחות.זהה תוכן דק, דפי כפול, פערי התוכן.

חיפוש AI-מופעל

חיפוש סימנטטי בכל תוכן האתר שלך.שאל שאלות שפה טבעיות על התוכן שלך ולקבל תשובות סינתזה AI עם אזכורי דף מקור.

עקבו אחרי SERP

לעקוב אחר דירוג מנוע החיפוש שלך עבור מילות המפתח היעד ברחבי Google מנועי חיפוש אחרים, לעקוב אחר שינויים במיקום לאורך זמן, להשוות למתחרים ולראות איזה דפים מדורגים עבור אילו מונחים.

מחקר מילות מפתח

גלה אפשרויות מילת מפתח המבוססות על התוכן שלך, ניתוח מתחרה ונתוני נפח החיפוש. קבל הצעות עבור נושאים חדשים תוכן, וריאציות זנב ארוך, מטרות אופטימיזציה של תוכן.

ניתוח Backlink

עקוב אחר פרופיל הקישור הנכנס שלך.ראה אילו אתרים מקשרים לך, לעקוב אחר קישורים חדשים ואבדניים, לנתח הפצת טקסט עוגן, לזהות הזדמנויות לבניית קישור.

רשת SEO

לעסקים עם מיקומים פיזיים: דמיין את החשיפה המקומית שלך על פני רשת גיאוגרפית, ראה כיצד הדירוג שלך משתנה על ידי מיקום, מרחק מהעסק שלך, והכוונה לחיפוש.

Google Business פרופיל

צור קשר עם פרופיל עסקי Google OpsIQ Sync ביקורות, פוסטים, Q&A, תמונות ומידע עסקי. נהל את הרישום ה- GBP שלך מבפנים OpsIQ תגובה לסקירות, פרסום פוסטים ולעקוב אחר תובנות.

דוחות מסודרים

דוחות SEO וניתוח אוטומטיים שנוצרו בלוח הזמנים שלך (מדי שבועי, חודשי) כוללים שינויים בדירוג, מגמות התנועה, בעיות טכניות שנמצאו וביצועים של White-label זמין עבור סוכנויות.

תמיכה מופעלת

צ'אט של לקוח AI

ב.י. עונה על שאלות הלקוחות באתר שלכם. 24/7 משתמש בבסיס הידע שלך, נתוני פלטפורמה מחוברים (הזמנות, חשבונות, מנויים), ודרישות אימון מותאמות אישית. תומך בספקי בינה מלאכותית רבים: Claude (Anthropic), GPT-4o (OpenAI), Gemini (Google), וגרוק (xAI).

עוזר AI

טייס שיתוף AI בתוך לוח הניהול שלך המסייע לך לכתוב תשובות כרטיסי, טיוטת הודעות לקוחות, לנתח מגמות תמיכה, להסתכל על נתוני הלקוחות בפלטפורמות מחוברות ולבצע פעולות באמצעות מערכת המחבר.

ידע AI

AI מוטבעת במאמרי בסיס הידע שלך, הודעות שאלות נפוצות, תיעוד מוצרים ונתונים פלטפורמה מחוברת.זה לא הזיות. זה תשובות מהמידע העסקי בפועל שלך או ההסלמות כאשר אינך בטוח.

יד אוטומטית לבני אדם

כאשר הבינה המלאכותית אינה יכולה לפתור שאלה, לזהות תסכול או שהלקוח מבקש אדם, היא אוטומטית ידה לצוות שלך עם הקשר שיחה מלא.

AI אימון

כתוב הוראות נפרדות עבור AI ו- AI מוצף מנהל מערכת ההפעלה, גבולות, כללי ההסלמה, נושאים אסורים והתנהגות ספציפית עסקי. Per-workspace תצורה נתמך.

היסטוריה של AI וביקורת

כל שיחה AI מתפרסם עם פרטים בקשה / תגובה מלאה, שימוש אסימונים, מעקב עלות, ספק בשימוש וגרסה מודל. Review שיחות כדי לזהות פערי הכשרה ולשפר דיוק בינה מלאכותית.

תובנות בינה מלאכותית

ניתוח אוטומטי של דפוסי שיחה AI.ראה שאלות נפוצות, שיעורי פתרון, תדירות הפסקת יד, שביעות רצון הלקוחות על ידי נושא ותחומים שבהם ה-AI צריך הכשרה טובה יותר.

המונחים: space AI config

כל אתר / סביבת עבודה מקושר יכול להשתמש ספק AI משלו, מודל, טמפרטורה, תקציב אסימונים והדרכה מהירה. חברה SaaS יכולה להשתמש ב- Claude עבור המוצר הראשי GPT-4o עבור מותג משני.

ניהול AI ו BYOK

שני מצבי בינה מלאכותית: ניהול AI (כולל בתוכנית שלך, לא API מפתח הכרחי) או להביא את המפתח שלך (שימוש בעצמך OpenAI/Anthropic Google/xAI API המפתח לשליטה מלאה על בחירת מודלים ועלויות).שניהם הם מחלקה ראשונה, כל תכונה עובדת עם מצב.

תקציבים של AI ובקרת עלויות

הגדר תקציבים אסימונים חודשיים, גבולות הפחתת משקל, ואזהרות בעלות איזון נמוך.המשך הוצאות לכל ספק, למרחב עבודה ולשיחה.מנע עלויות מפלט עם תקרה קשה.

כרטיסים ו- helpdesk

מערכת כרטיסי אשראי Native

מלא עזרה עם מחלקות, סדרי עדיפויות (נמוך / גבוה / חורג), סטטוסים, מעקב SLA, הערות פנימיות, תשובות לקוחות, קבצים מצורפים ושיחות מעוות.

« אימוני AI ו- Auto-reply

AI באופן אוטומטי טריזות נכנס כרטיסים על ידי המחלקה ועדיפות ראשונה.אפשר אוטומטית עבור מחלקות בטוחות.ה-AI טיוטות ושולח תגובה לאחר עיכוב מוגדר (default: 2 דקות) כך שבני האדם יכולים להתערב קודם.

הודעות דואר אלקטרוני

קישור לתיבת דואר (Gmail, IMAP, או ספק ספציפית) כדי ליצור באופן אוטומטי כרטיסים מהודעות דואר אלקטרוני.תשובות לכרטיס הודעות דוא"ל לעדכן את חוט הכרטיס.

פורטל הכרטיסים

דמיין פורטל כרטיס לקוח על האתר שלך.לקוחות יכולים להגיש כרטיסים, להציג את ההיסטוריה שלהם, לענות על כרטיסים פתוחים ובדוק מצב, כל ממונרגים לתכנון שלך.

כרטיס מיזוג

כרטיסים כפולים לתוך חוט יחיד. Mged כרטיסים להראות [ממיזוגed] על קו הנושא.כל ההיסטוריה של השיחה נשמרת בכרטיס הישרדות.

חזרה ל-AI

לאחר סוכן אנושי משתלט על כרטיס, השתמש ב"חזרה לבינה מלאכותית" כדי לאפשר ל-AI לחדש את אוטומטי באופן חיובי בכרטיס זה. שימושי כאשר החלק המבוקש האנושי נפתר אך הלקוח יש שאלות מעקב אחר ה- AI יכול להתמודד איתן.

Inbox Coטייס

ניהול כרטיסים ממבט תיבת הדואר הנכנס של ה- AI מציע תשובות, מסכם את ההיסטוריה השיחה, ממליץ על עדיפות / הקצאות חתימה, ויכול לבצע פעולות בפלטפורמות מחוברות.

צ'אט ותמיכה בזמן אמת

צ'אט ב-Crebox

צ'אט לקוחות בזמן אמת מנוהל מתיבת דואר אלקטרוני מאוחדת.ראו את כל השיחות הפעילים, זהות הלקוחות, היסטוריה של השיחה והצעות AI. סוכנים מרובים יכולים לשתף פעולה על שיחה.

כללי צ'אט יעילים

הודעות צ'אט טריגר המבוססות על התנהגות מבקרים: זמן בעמוד, ספציפי URL ביקר, לגלול עומק, החזרה ספירת הביקור, הכוונה ליציאה או אירועים מותאמים אישית: הצג הודעה לעזרה לאחר מכן. 60 שניות על דף התמחור

צ'אט widget

צ'אט מותאם אישית מטושטש באתר האינטרנט שלך. תומך ב- AI chat, צ'ט סוכן חי, הגשת כרטיסים, חיפוש בסיס ידע וזהות מבקרים. Responsive, נגיש ומיתוג.

סקרים CSAT

לאסוף דירוג שביעות רצון הלקוחות לאחר צ'אט ואינטראקציות כרטיסים. סקרי עיצוב עם השאלות שלך, קשקשים הדירוג, ו- Follow-up הפניות. תוצאות להאכיל בביצועים של צוות ותובנות AI.

סקר דואר אלקטרוני

לאחר צ'אט מסתיים, מבקרים עם דוא"ל ידוע יכולים לקבל דואר אחד ממונרעם עם סיכום AI של מה טופל ולחיצה אחת "היה קל?"כן / לא פעם לחוט, חתם על קישורים חד-פעמיים, כל שלח מחובר, ואת התוצאה לנחות בדף הפידבק כאות משלה לצד הכוכבים בצ'אט.

שיבוש זהות

כל פריט משוב הנושא אדם מראה להם: שם, דוא"ל, קליק דרך למסע הלקוחות המלא שלהם ומגע CRM, ואחד לחץ דואר אלקטרוני או AI-draft תשובות מעומקות בהיסטוריה האמיתית שלהם.

לכתוב AI

עוזר כתיבה בנפרד AI להלחין טיוטות דואר אלקטרוני, תשובות כרטיסים, הודעות ותקשורת לקוחות. השתמש במדריך משלה (לא המוח הצ'אט) עבור כתב עסקי מקצועי.

CRM ראשון AI

מרכז הפיקוד CRM

מסך אחד המציג את כל מצב ה- CRM: ערך הצינור, מהירות העסקה, משימות מתקרבות, עסקאות בסיכון, פעילות הסוכן והמלצות AI.עמוד הבית של CRM הוא נקודת ההתחלה היומית שלך.

אנשי קשר וחברות

לנהל מגעים עם פרופילים מלאים: שם, דוא"ל, טלפון, חברה, תגים, שלב מחזור חיים, היסטוריה של שיחה, היסטוריה כרטיס, היסטוריה רכישה ותחומים מותאמים אישית.קישור קשרים לחברות לניהול יחסי B2B.

חוזים ולוח צינורות

לוח העסקה בסגנון חזותי קאנבן עם שלבים מותאמת אישית.גרור עסקאות בין שלבים, ערכי קבע, להקצות בעלי, לעקוב אחר תאריכים קרובים ולראות ערך צינור בכל שלב.

AI התמודדות

AI מנתח כל עסקה ומספק אימון: אותות סיכון (גונה שקט, מתחרה שהוזכר, דאגות תקציב), המלצות פעולה אחרות, win הסתברות והציע מעקב אחר התזמון.

תחזיות ודיווחים

ההכנסות חיזוי בהתבסס על נתוני צינורות, שיעורי קרב היסטוריים ומהירות העסקה. דוחות כוללים צינור בשלב, על ידי הבעלים, על-ידי מקור, שיעורי המרה, גודל העסקה הממוצע, אורך מחזור המכירות.

סוכן (SDR)

ציפייה מופעלת AI המזההה לקוחות פוטנציאליים מנתוני המבקרים שלך, אותות מובילים ופעילות פלטפורמה מחוברת. מציע מטרות מחוץ לגדר, טיוטות הודעות ראשוניות וציונים להוביל איכות.

עקבו אחרי רצף

רצפי מעקב אוטומטיים של Multi-Step: דואר אלקטרוני, לחכות, דוא"ל, תגובה לבדוק, להסלים. רצף Define עבור מוביל חדש, עסקאות דוכנים, בדיקות שלאחר הטיהור, וקמפיינים חדשים.

מחזור חיים ושימור

מעקב אחר שלבים של מחזור חיי הלקוחות (lead, Chance, לקוח, צ'ווץ) עם מעברים אוטומטיים. סוכן השימור לפקח על אותות צ'ואן ומציע התערבות.

סוכן ניהול נתונים

סוכן AI שמנקה ומעשיר את נתוני ה- CRM שלך: אנשי קשר מדלנים, ממלא שדות חסרים, תוקף הודעות דוא"ל, מאמת את שמות החברה ואת דגלים stale.

בנה את ה- CRM שלי

תצורת שפה טבעית CRM: ספר ל-AI איך תהליך המכירות שלך נראה והוא בונה את השלבים של הצינור, שדות מותאמים אישית, תבניות עסקה ותקנות אוטומציה.

בדיקת בריאות CRM

ביקורת אוטומטית של איכות הנתונים של CRM: קשרים כפולים, עסקאות ללא שלבים הבאים, צינורות מפוספסים, מידע חסר מגע וציון שלמות נתונים.

אמון דיאל

בקרת אוטונומיה של שלוש רמות לכל אחתCRMסוכן בינה מלאכותית: טייס אוטומטי (AI פועל באופן עצמאי), טייס קו (AI מציע, אישורים אנושיים) ומדריך (AI צופה רק) הגדר את השיח לכל סוכן, לסוג פעולה, ולסף ערך העסקה.

4 סוכני AI

ה- CRM מפעיל ארבעה סוכני AI מיוחדים: Steward (איכות נתונים), SDR (הספקט), Retention (מניעה צ'נדרנית) ואנליסט (reporting andתובנות). לכל סוכן יש הגדרה משלו של Trustal Dial.

קישורים ואינטגרציה

מחברים בנויים מראש

מחברים מוכנים לשימוש Shopify, WooCommerce BigCommerce, Magento 2PrestaShop, OpenCart, osCommerce WordPress, WHMCS Zendesk, Stripe, Amazon SES, Postmark, Resend, SendGrid, Mailgun, Gmail IMAP, Slack ו-Google Business פרופיל. כל מחבר מביא פעולות AI ספציפיות פלטפורמה, ידע וסינכרון נתונים.

בונה מחברים

בניית חיבורים מותאם אישית לכל פלטפורמה, ללא קוד, בסיוע בינה מלאכותית או קוד מלא. הבונה תומך בREST ו- GraphQL APIs, OAuth זרימה של קוד אישור, Webhook אוטומטית-רישום עם Stripe ותכניות חתימה פשוטות, דפדפן (הסחה, עמוד, סמן, והכותרת של קישור), רשימה / שגיאות טרנספורמציה, הקשר רב-פעולות, ואריזת השוק.

מחבר AI-Asted Authoring

ConnectorBuilderAI מסייע לך לבנות מחברים: לתאר מה אתה רוצה וזה מציע פעולות, כותב מטפלות בקשה ומפות API תגובות. אימות של Handles, הדמיה וטיפול שגיאות באופן אוטומטי.

OAuth זרימה לכל מחבר

ג'נרי ב-app OAuth זרימת האישורים שעובדת עם כל תמיכה של PKCE, ניהול המדינה באתר, רענון אוטומטי אסימונים. Connectors מגדירים את שלהם OAuth פרמטרים ו OpsIQ מטפל בזרימה.

אוטובוסים (Plaform-wide הרחבה)

מחברים לא רק להוסיף פעולות פלטפורמה. הם יכולים לכפות תכונות הליבה באמצעות יכולת "בוסים" מחבר מכריז על יכולת (calendar, העשרה, esign in CRM; Local_listing, דרגה_data ב- Site Intelligence; Web_analytics ב Analytics; תשלום_provider בתשלומים; דוא"ל_sync ב Mailbox; וידאו מ Comms) וליישם את השיטה הקטנה שלה; להגדיר; להגדיר: OpsIQ מגלה את זה באמצעות Capabilityregistry וחוטים אותו לתוך UI, הלקוח 360 ציר זמן, ופעולות AI. כמה מחברים יכול להציע את אותה יכולת ללא מנעול-in. ראה מחברים / PLATFORM_CONNECTORS.md.

Pre-Coreed לעומת שוק

המחברים חיים באחד משני מחברים שהותקנו מראש (קישורים /) הם הרישום-אקטיבי מחוץ לקופסה, נשמרים רזה רק הפניה חסרת המפתח ואת הספק הנפוץ ביותר ליכולות (למשל לוח שנה של גוגל, Gmail, Google Business פרופיל). משווק קישורים (שיווק_linkors/) ניתן לגלות אך לא מורשה עד מותקנת, eg Microsoft. 365 לוח שנה, Outlook, DocuSign, Stripe, GA4, SerpApi, Zoom. Every Bridge Surfaces a Market list אז UI ו- AI יכולים להוביל "תקנה מהשוק" (לאהתקן) כאשר אין יכולת לספק מוכן, אף פעם לא כפתור שבור.

שוק מחובר

בלבלו את המחברים שלכם OpsIQ שוק.חבילה מתחבר עם פרופיל json ידע.json, זרימת עבודה_recipes.json, וחתומה ארכיוןs. Marketplace תומכת במחברים חופשיים ומשולמים עם אישורי קוד רב-מקור.

חתימה

כל המחברים חתומה באופן קריפטוגרפי על אימות השלמות. Signing נבדקת בעת ההתקנה. השתמש בכלי ה-_all_linkors להתפטר כדי לחתום מחדש לאחר עדכונים.

SmartLookup

מערכת מטושטשת ברורה של פעולות לחבר. Define Lookup Rules and Define OpsIQ תואם את שאילתות המשתמש לגופים פלטפורמה באמצעות אלגוריתמים fuzzyScore ו-SmartRank.דוגמה: מצא_מדינה ("ger") מתאים לגרמניה עם אלגוריתמיה 88.9% ביטחון.

חוזים

הגנרלOpsIQ APIמפרסם כל רשומהJSONפעולה כפעולת התגלות בשם פעולה. השתמש במטה.פעולות עבור החוזים הכוללים והמדוייקים; חבילות המחבר מכריזות על פעולות הספק שלהם באמצעות מבצע הפעולה המאוחדת.

מתכונים מחוברים

מתכונים של יצירת עבודה מוקדמת המשלבים מספר פעולות מחבר לתוך זרימת העבודה העסקית המשותפת: "כאשר הזמנה חדשה מגיעה על אודות. Shopify ליצור כרטיס, לעדכן את ה- CRM ולשלוח הודעת Slack".

ידע מסנכר

מחברים מכריזים על נושאי ידע המסנכרנים לבסיס הידע של AI.מאמרים ספציפיים בפלטפורמה, מדריכי ההתקנה ופעולות לפתרון בעיות זמינים באופן אוטומטי ל-AI ללא כניסה ידנית של ידע.

פלטפורמת פיתוח Developer Platform

REST REST API

שמו. JSON API מכסה כל מנהל רשום. JSON פעולה עם APIאימות מפתח, בידוד חלל עבודה, תחומים, הגבלת קצב, כתיבה אידימפוטנטית, OpenAPI ו- Postman אוסף.

ווב הוקים

Outbound Webhooks עבור כל האירועים העיקריים: הזמנות, חשבוניות, מנויים, כרטיסים, צ'אטים, מוביל, רישום משתמשים ונטישת עגלות. Async משלוח באמצעות תור עבודה, החזר אקספוננציאלי, הגנת SSRF, ו- auto-disable לאחר השלמת אוטומטי לאחר ניכוי לאחר הלידה. 15 כישלונות רצופים

חתימה Webhook

כל Webhook מחובר עם HMAC-SHA256. לבדוק חתימות על קצה קבלתך כדי להבטיח אותנטיות של Webhok. אירוע אפשרי_id לעיבוד בלתי מוגבל.

WidgetSDK

JavaScript SDK עבור מעקב widget עם תעודת זהות, מעקב אירוע מותאם אישית, בקרת צ'אט matic ותצורה ספציפית דף. Install מתכונים ל React, Vue, Next.js, הבא.jS, WordPress, Shopify סטטית ו HTML.

Plugins ו- SDKs

Server-side SDKs ותוספים למסגרות נפוצות. WordPress תוסף, WHMCS מודול, וגנרית PHP / Node.js אינטגרציה ספריות.

אירועים API

לדחוף אירועים מותאמים אישית OpsIQ מהגיבוי שלך: רכישות, חותמות, שימוש בתכונות, שגיאות או כל אירוע עסקי.אירועים מופיעים בציר זמן המבקרים והזנת לתוך הקשר אנליטית ו- AI.

טריגר ספרים

בנה זרמי עבודה אוטומטיים המופעלים על ידי אירועים: כרטיס חדש, צ'אט התחיל, מבקר מזוהה, שלב העסקה השתנה או אירוע מותאם אישית. טריגר מבצעים פעולות חיבור, שלח webhooks, עדכון רשומות, או להודיע לצוות שלך.

API בונה

חזותי API בונה Webhook בתוך מנהל המערכת. נקודות קצה, בקשות מבחן, לבדוק תשובות ושילובי debug מבלי לעזוב OpsIQ.

צוות וממשל

בקרת גישה מבוססת תפקידים

שלושה תפקידים: בעל (גישה מלאה, חיוב, אזור סכנה), מלא אדמין (כל הפעולות למעט חיוב ואזור סכנה), וסוכנת (רק מחלקות שהוקצו, אין גישה להגדרות) כל הדפים הרגישים מופרכים על ידי תפקיד.

ביצועי צוות

בעלים ומלוחם מלא רק אדמין המציג את זמני הרזולוציה, חלוקת עומס העבודה, עומק, התמוטטות ערוצים, ניתוח מגמה, תאימות SLA, CSAT על ידי סוכן, שערי פתיחה מחדש, רולס קבוצתי ושעות העמוסות ביותר.

נוכחות Admin וגלישה מקוונת

בזמן אמת מי-is-online widget בניווט הניהולי.זיהוי נוכחות מבוסס פעימות הלב (Balbeat)60 השני ping, 300- השני מורחב, אוטו-פרוון לאחר 120 ימים) ראו אילו מנהלי מנהלים פעילים כיום ובאיזה דפים.

המונחים: Per-workspace

לכל אתר מחובר (מרחב עבודה) יכול להיות תצורה של AI משלו, הגדרות המחבר, מחלקות כרטיסים, מיתוג וכללים תפעוליים.גלובלי ברירת מחדל CScade כדי מקומות עבודה שאינם מעלים אותם.

ניהול רב-אתר

ניהול אתרים מרובים מאחד OpsIQ מנהל.כל אתר יש מעקב משלו snippet, נתוני מבקרים ותצורה. Switch בין אתרים מהניווט המנהלי.

מערכת תבנית דואר אלקטרוני

תבניות דואר אלקטרוני מונחות הרשמה לכל התקשורת האוטומטית: הודעות כרטיסים, תמליל צ'אט, מיילים מוזמנים, איפוס סיסמה ואזהרות מערכת. HTML תבניות עם תצוגה מקדימה חיה, צ'יפס משתנה ({{customer_name}}, {{ticket_id}} שליטה על הפריסה העולמית.

יבוא וייצוא

ייבוא אנשי קשר, כרטיסים ומאמרים של ידע CSV/JSON נתוני מבקר יצוא, דוחות ניתוח ו- CRM מתעדים את יכולת העברת הנתונים בין המערכות.

אבטחה, ציות ופעולות

אנטרפרייז SSO

OIDC (OpenID קישור) אחד עם במשרה מלאה: גילוי, אישור, Callback, JWKS אימות חתימה אימות, משתמשinfo, דומיין המאפשר רשימה, JIT מתן ומשמר סטטוס. SAML תמיכה בתצורה

GDPR ציות נתונים

נבנה-in DSAR (בקשת גישה לנושא נתונים) טיפול: ייצוא ומחיקת נתוני לקוחות בכל המערכות.מידע ברמה של יצירת קשר עם קביעת מפגשים, כרטיסים, צ'אטים, רשומות CRM, והודעות דוא"ל.

IP חסימת והגנה על כוח-כוח

בלוק ספציפי IPs או טווחים של גישה לאתר שלך או למנהל המערכת. מנעול אוטומטי לאחר ניסיונות כניסה כושלים תצורה.IP, פעמיםטאמפ וסוכן המשתמש.

ראשי התיבות HSTS ו- Security Headers

HTTP Strict Transport Security, Permissions-Policy Headers ותצורה בטוחה של קבצי Cookie. פריסות עופות עצמית יכולות להוסיף ראשי CSP באמצעות הגדרות שרת.

אינטרנט מהיר: Harding

משמר SSRF חוסם את ה-webhooks לפרטי/מטאדאטה IP טווחים. Async משלוח מונע נקודות קצה איטיות לחסום את היישום שלך. Auto-disable לאחר 15 כישלונות רצופים מונעים פסולת משאבים על נקודות קצה מתות.

בידוד סביבת העבודה

בידוד נתונים מורכב בין מבקרים מרחבי עבודה., כרטיסים, צ'אטים, רשומות CRM ושיחות AI מופרשים למרחב העבודה שלהם. דליפות מידע על חלל-סביבה מונעות בשכבה השאילתה.

ניהול מחזור

תמיכה חודשית, רבעונית, חצי שנתית, דו-שנתית ומחזורי זמן שלמים של חיוב מטבע נורמליזציה עבור שערי מטבעות רבים. FX המרה על קבלת תשלום עבור דיווח הכנסות מדויקות.

Cron ואוטומציה מתוכננת

מערכת גולגולת בנויה למשימות מתוכננות: דור דו"ח, ניקוי נתונים, חידושים מנויים, עדכוני AI הכשרה, מסנכרנים מחבר ו retries. Health אבחון עם אינדיקטורים אזהרה.

מדיניות שמירת נתונים

להבין כמה זמן מפגשים מבקרים, תמליל צ'אט, היסטוריה של שיחה מלאכותית ו יומני אירועים נשמרים.לנקה אוטומטית של נתונים בגילאים כדי לנהל אחסון ולעמוד במדיניות שימור.

אבחון ובריאות

לוח המחוונים של מערכת הבריאות מראה מצב גולגולת, קישוריות מסד נתונים, מצב ספק AI, בריאות המחברת, שיעורי משלוח Webhook ושימוש באחסון.אזהרות לבעיות הגדרות וצוואר בקבוק ביצועים.

מי OpsIQ עבור

חנויות מסחר אלקטרוני

חנויות

לעקוב אחר כל מבקר מנחיה לרכישתה, תן ל-AI לענות "איפה ההזמנה שלי?"Shopify/WooCommerce• BigCommerce Data. Manage תומך בכרטיסים עם AI אוטומטי-reply. להפעיל צינור עסקה עבור סיטונאי ו B2B מוביל. Attribute הכנסות למקורות תנועה וקמפיינים.עקוב אחר נטישה עם זרימות עבודה התאוששות.

SaaS וחברות תוכנה

SaaS

פיקוח על הרשמות לניסוי ואימוץ של פונקציות עם שידור מחדש של השהייה. מעקב אחר דפי התעודה שממוחשבים. תמיכה אוטומטית עם בינה מלאכותית המבוססת במערכת שלך API תנהל הכנסות מנוי ועסקאות הרחבה במערכת CRM, תחבר את פלטפורמת התשלום שלך (Stripe, WHMCS השתמשו בסוכן מחזור החיים של CRM כדי לזהות ולמנוע ירידה במכירות.

סוכנויות ופרילנסרים

סוכנות

להציע ניתוח לבן-label ותמיכה פורטלים ללקוחות. Track מוביל באתרי לקוחות מרובים ממנהל אחד. השתמש צינור CRM כדי לנהל סיכויי ופרויקט מוביל. בנה מחברים מותאמים אישית עבור פלטפורמות הלקוח באמצעות בונה Connector. ליצור דוחות SEO ממושמע עם יישומית של Site Intelligence. Resell Market מתחבר כשירותי ערך מוסף.

אירוח ותשתית

אירוח

עמוק עמוק WHMCS אינטגרציה עם 80 פעולות AI עבור חיפוש הזמנות, ניהול שירות, DNS,ומתן אפשרות אוטומטית לעריכת שאלות נפוצות בתחום האירוח באמצעות מאמרים בבסיס ידע.לעקוב אחר אחריות דף השרתים.לנהל כרטיסים תמיכה טכנית עם AI triage. השתמש בסולם מחזור החיוב לחודש באמצעות תוכניות אירוח חיים.

עסקים בעלי הון

תמיכה

Deflect 40-70% של שאלות חוזרות ונשנות עם צ 'אט AI מעומק בבסיס הידע שלך.עבור כרטיסים למחלקה הנכונה עם AI triage. לעקוב אחר ביצועי צוות עם זמני רזולוציה, תאימות SLA ו CSAT על ידי הסוכן. השתמש ב-AI בכתב עבור תגובה מקצועית טיוטה. Monitor לתמוך מגמות עם תובנות בינה מלאכותית.

שיווק וצוותי SEO

אתר האינטרנט הרשמי של מיזם "שיווק

חבילת מודיעין אתר מלא: זוחלים, ביקורת SEO טכנית, ניתוח תוכן, SERP דירוג מעקב, מילות מפתח מחקר, ניטור קישורים אחורי ורשת SEO מקומית. Google Business פרופיל ניהול. תזמון דוחות לבן-על עבור לקוחות. A / B בדיקות שנבנו לתוך המעקב widget. Campaign attribution בכל הערוצים.

מייסדים וקבוצות קטנות

סטארט-אפים

התחל עם רק מעקב וצ'אט, חינם להוסיף. ולאחר מכן להוסיף כרטיסים כאשר אתה מקבל נפח תמיכה הפעל על ה- CRM בעת תחילת המכירה. Connect פלטפורמות כפי שאתה מאמץ אותם. OpsIQ קנה מידה של אדם אחד עושה הכל 50- צוות פעולות אדם עם RBAC, מחלקות, ו ניטור ביצועים חד-מנטליים.

Enterprise and Multi-brand

ארגוני

אנטרפרייז SSO עם OIDC עבור אימות מרכזי. Multi-workspace בידוד עבור מותגים נפרדים או חטיבות. Per-Workspace AI תצורה עם ספקים ומודלים שונים. Custom Connector Development with Market Distribution. GDPR כלי ציות ומדיניות שמירת נתונים.

מה OpsIQ להחליף

Google Analytics+ Hotjar + Plausible

ניתוח אתר מלא עם מעקב מבקרים, הפעל מחדש, דירוג דפים, אינטליגנציה גיאוגרפית, כינורות כוונה, גיור attribution, אירועים, A / B ניסויים, ו- JS שגיאות מעקב, כל ידידותי לפרטיות, הכל בפלטפורמה אחת.

Intercom + Drift + Tidio

צ'אט לקוחות מופעל בינה מלאכותית עם ידע מעומק, תמיכה AI רב-ספקית, יד אוטומטית לבני אדם, כללי צ'ט אקטיביים, היסטוריה שיחה, סקרי CSAT ויצירת כרטיסים בצ'אט.

Zendesk + Freshdesk+ Help Scout

מערכת כרטיסי Native עם מחלקות, סדרי עדיפויות, SLA, AI triage, אוטומטי-reply עם עיכוב חדיר, אינצ'טים דואר אלקטרוני, טעת כרטיסים, מיזוג כרטיס, טייס תיבת הדואר הנכנס, וחזרה ליכולות AI.

HubSpot + Pipedrive + Salesforce

AI-First CRM עם ארבעה סוכני AI מיוחדים (Steward, SDR, Retention, Analyst), אמון דיאל אוטונומיה שליטה, לוח צינורות, אימון, תחזית, רצפים, ניהול מחזור חיים ותצורה טבעית של מערכת CRM.

תגית: SEMrush + Moz

מודיעין אתר עם זחילות אוטומטיות, ביקורת SEO טכנית, ניתוח תוכן, חיפוש ב-AI, SERP מעקב אחר דירוגים, מחקר מילות מפתח, ניתוח קישורים אחורי, רשת SEO מקומית ודיווחי לבן-label.

Zapier + Make + תוכנה בינארית מותאמת אישית

חיבור SDK עם 25+ מחוברים מראש, בונה Connector (אין קוד / AI- סיוע / קוד מלא), OAuth זרימה, Webhook אוטו-רישום, קטלוג גדול של הגדרות פעולה חיבורים שהופכים לבצעיים רק כאשר החיבור הרלוונטי מותקן, מאפשר, מוגדר ומאושר, SmartLookup, שוק, וחבילות חתומות.

Google Business פרופיל מנהל

מחבר מלא GBP: ניהול ביקורת, פרסום פוסט, Q&A ניהול, העלאה תמונות, מידע עסקי מסנכרן, תובנות מעקב ותשובות סקירה מופעלות על ידי AI, הכל מבפנים OpsIQ.

כלים נפרדים של תבנית דואר אלקטרוני

תבניות דואר אלקטרוני מונחות הרשמה עם עורך חזותי, חי תצוגה מקדימה, שבבי משתנה, בקרת פריסה גלובלית, והתאמה אישית לכל התקשורת האוטומטית.

ניהול צוות

ביצועים של צוות בנוי: זמני החלטה, עומס עבודה, תאימות SLA, CSAT על ידי הסוכן, שערי פתיחה מחדש, שעות העמוסות ביותר, מעקב בזמן אמת והתמוטטות השתתפות.

GDPR כלים

אינדיאני DSAR טיפול, מחיקת נתונים בכל המערכות, ניהול הסכמה, מדיניות שימור ודרכי ביקורת, שנבנה לתוך הפלטפורמה, לא תקוע.

שתי מהדורות

פריסה

OpsIQ פועל על תשתיות מנוהלות.מבצע מוצר זהה: תשתיות, עדכונים וגיבויים מטופלים על ידי מפעיל האחסון.ספר זה מתעד את הפנקס הזה.OpsIQ זמן ריצה במקום שיווק או זרמי חשבון מסחריים.

מודול מארח עצמי

התקנת התקן OpsIQ בשרת שלך לשליטה מלאה על נתונים, מיתוג, עדכונים ושילובים. 8.4+, MySQL 5.7+ או MariaDB 10.3 HTTPS, וה-OpsIQ תמיכה מאוחדת WHMCS שילוב כמודול תוספת.ריבונות נתונים מלאה

הזמנת קריאה מומלצת

1
התחלה מהירה

עקבו אחרי 30- דקות עיצוב מדריך כדי לעקוב, צ'אט ו- AI בסיסי עובד באתר שלך.

2
דשורד וניתוח

למד כיצד לקרוא את נתוני המבקרים שלך, להגדיר מחדש הפעלה, לזהות מוביל ולהבין דפוסי תנועה.

3
מודיעין אתר

הפעל את ה- SEO הראשון שלך לסרוק, לבדוק את הבריאות הטכנית שלך ולהגדיר מעקב אחר מילות המפתח של המטרה שלך.

4
כרטיסים ותמיכה

הגדר מחלקות, להגדיר אוטומטי-reply עם AI, לחבר את הדחיסות של דואר אלקטרוני ול להכשיר את הבינה המלאכותית שלך כדי להתמודד עם שאלות נפוצות.

5
אתר האינטרנט הרשמי של CRM

ארגנו אנשי קשר, בנו את הצינור שלכם, קבעו את סוכני הבינה המלאכותית, הציבו רמות של אמון דיאל ותנו ל-AI לאמן את העסקאות שלכם.

6
חיבורים וכלי מפתח

התחברו לפלטפורמת המסחר האלקטרוני/billing שלכם, בנו מחברים מותאמים אישית, הקימו את webhooks ושילוב באמצעות REST API.

💡
חדש OpsIQ התחל עם מדריך Quick Start למטה, אתה יכול לעקוב אחר צ'אט AI בסיסי פועל תחת 30 דקות.
התחל כאן

התחלה מהירה 30 דקות

עקבו אחר הצעדים האלה כדי להגיע OpsIQ כל צעד בונה על השלב הקודם עד הסוף, יהיה לך מעקב אחר מבקרים, צ'אט AI ותמיכה בסיסית בכרטיסים.

התקנה
Quick Start Checklistבדיקת התקנה מודרך המציגה את ההתקנה של widget, חיבור פלטפורמה, AI הדרכה, צוות להזמין ולחיות, עם חיים. 60 אחוזי התקדמות בר.התחלsetupהתקן את OpsIQ widgetלבדצור פלטפורמה (WHMCS, Shopify...)לבדלאמן את ה-AI שלך על התוכן שלךלבדהזמינו את הצוות שלכםבדוק וללכת לחיותהתקדמות ההתקנה3 של 5 · 60%1STEP 1התקן את widget2STEP 2חיבור ורכבת AI3STEP 3להזמין ולחיות
The The 30- דרך דקות: להתקין את widget, לחבר פלטפורמה, להכשיר את AI שלך, להזמין את הצוות, ואז לחיות.

The The 30- דקות ההתקנה

1
הפעילו את הרישיון

הכנס את מפתח הרישיון שלך ב OpsIQ ניהול.Go להגדרות, הזן את מפתח הרישיון המסופק עבור ההתקנה הזו, ולחץ על הפעלת לחץ עליך לראות תג ירוק "Active".

2
הגדרת זהות העסק שלך

היכנס להגדרות ומלא בשם העסק שלך, בתעשייה, ב-Timezone, במטבע ברירת מחדל ותמיכה שעות.מידע זה משמש על ידי AI בעת מענה לשאלות של לקוחות ועל ידי ניתוח עבור דוחות זמן של Uber-מודעה.

3
בחר ספק AI

לכו להגדרות AI ובחרו את הספק שלכם. אפשרויות: Claude (Anthropic), GPT-4o (OpenAI), Gemini (Google), או Grok (xAI). הזן את הסיסמה שלך: API מפתח אם אתה משתמש במפתח שלך, או השתמש ב- AI מנוהל אם הוא זמין בתוכנית שלך. לחץ על "בדוק חיבור" כדי לאמת.

4
התקן את widget

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, או פלטפורמה תומכת אחרת, ללכת לחבר, למצוא את הפלטפורמה שלך, להזין אישורים ולחץ על חיבור מבחן.זה נותן גישה AI כדי להזמין נתונים, פרופילי לקוחות, ולתמוך בהקשר.

6
הזמינו את הצוות שלכם

היכנס לצוות, לחץ על הזמנת, הזן את הדואר האלקטרוני ואת תפקידם (Owner, Full Admin או Agent) סוכנים יכולים רק לגשת מחלקות שאתה מקצה אותם.בעלים ו-Admins מלאים רואים הכל.

הדרך המהירה ביותר האפשרית (5 דקות)

שלב צעד 1התקן widget

העתק את החטיפה מאתרים מחוברים ודבק אותו באתר האינטרנט שלך.זה נותן לך לעקוב באופן מיידי.

שלב צעד 2תגית: Enable AI

היכנס ל- AI Configuration, בחר ספק, הזן את המפתח שלך ושמור. צ'אט AI פעיל כעת באתר האינטרנט שלך.

נעשה

עכשיו יש לך מעקב אחר מבקרים וצ'אט AI. You יכול להוסיף כרטיסים, CRM ומחברים מאוחר יותר.

יום היום 2לעשות את זה מועיל

הוסף ידע

עקבו אחרי Knowledge Base ולהוסיף 5-10 מאמרים על השאלות הנפוצות ביותר שלך.ה-AI משתמש בהם כדי לענות ללקוחות באופן מדויק.

יצירת מחלקות

לכו לכרטיסים וצרו לפחות 2 מחלקות (למשל, "Support" ו-"Supפורט") חברי צוות אסימונים לכל אחד.

כתוב את AI שלך

היכנס ל- AI Training וכתוב את הודעת ה-AI של הלקוח המתארת את כללי העסק, הטון וההסלמה שלך.

בדוק שיחה

פתח את האתר שלך בדפדפן פרטי וצ'אט עם AI כלקוח.בדוק שהתשובות מדויקות וטון נכון.

שבוע שבוע 1בנה את הפעולות שלך

חיבור דואר אלקטרוני

הגדר תיבת דואר (Gmail, IMAP, או מחבר ספק) כך הודעות דוא"ל של לקוחות באופן אוטומטי ליצור כרטיסים.

הגדרת רכב-reply

כרטיס נגיש למחלקות בטוחות 2עיכוב של דקות, כך שבני אדם יכולים להתערב קודם.

ביקורת Analytics

בדוק את לוח הבקרה מדי יום.עיין בספירת המבקרים, קצב הסימון, דפי העליון ומכירות אם המעקב מחובר.

התחל את ה- CRM שלך

Open AI CRM ותן OpsIQ לייבא אנשי קשר מהפלטפורמות המחוברות שלך.עיין בלוח הצינור.

חודש החודש 1תגית: Optimize

ביקורת AI History

בדוק את ההיסטוריה של AI שבועי.חפש תשובות לא נכונות, פספסו שאלות והזדמנויות להוסיף ידע.

הוסף כללים יזום

יצירת כלל: אם מבקר הוא על דף התמחור 60 שניות, הצג הודעת צ'אט לשאול אם הם זקוקים לעזרה.

לבנות מחבר

אם אתה משתמש פלטפורמה שאין לה מחבר מובנה, השתמש ב- Connector Builder כדי ליצור אחד.

עקבו אחרי webhooks

חיבור OpsIQ לכלים הפנימיים שלך באמצעות Webhooks עבור כרטיסים, צ'אט ואירועי מכירות.

האם אפשר לדלג על AI ולהשתמש במעקב?+

ספק AI הוא אופציונלי. OpsIQ פועל כפלטפורמת ניתוח טהורה וכרטיסים ללא AI.You יכול לאפשר ל-AI מאוחר יותר כאשר אתה מוכן.

האם אני יכול לדלג על מחברים ולוסיף אותם מאוחר יותר?+

כן. Connectors להעשיר את AI עם נתונים ספציפיים פלטפורמה, אבל OpsIQ עובד בלעדיהם.התחל עם מעקב וצ'אט, ולאחר מכן לחבר פלטפורמות במידת הצורך.

מה אם עדיין אין לי אתר אינטרנט?+

אתה עדיין יכול להשתמש OpsIQ עבור כרטיסים, CRM ושיתוף פעולה צוות.ה widget המעקב הוא אופציונלי.להוסיף אותו כאשר האתר שלך מוכן.

איך אני יודע אם ה-Widget מותקן נכון?+

בקר באתר שלך בדפדפן פרטי / Incognito. OpsIQ Live Feed: You Should See Your Visit יופיע בתוך 15 אם לא, בדוק: (1(ב) הוא עבר נכון, (2(1) הוא מפתח האתר הנכון (3הם חוסמי מודעה או ראשי CSP לחסום את התסריט.

התחל כאן

מפה מוצר מלאה

OpsIQ זה לא תכונה אחת.זה מפעיל מנהל, אתר widget, שכבת תמיכה ב-AI, מערכת כרטיס / עזרה, CRM מלא עם ארבעה סוכני AI, חבילת מודיעין האתר, פלטפורמת המחבר עם השוק, ואת משטח מפתח.כאן כל רכיב שהוא מכיל.

המפעיל admin

דשורד, חי להאכיל, יומן מבקרים, מפגשים, הפעלות, דפי העליון, מודיעין גיאומטרי, משפך מכוון, אירועים יומני, A / B ניסויים, JS שגיאות מעקב, מכירות והמרות, מוביל, AI CRM (מרכז ריכוז, אנשי קשר, חברות, עסקאות, לוח צינורות, אימון, חוזה, חיזוי, הסיכויים, רצפים, מחזור חיים, נתונים, בניית ה-CRM שלי, מערכת CRM, בריאות, CRM, CRM. API), כרטיסים, צ'אט בתיבת דואר אלקטרוני, כללים פרואקטיביים, סקרי CSAT, טיוטות דוא"ל, תיבות דואר אלקטרוני תצורה AI, הדרכה AI, היסטוריה של בינה מלאכותית, תובנות AI, בסיס ידע, מחברים, בונה Connector, שוק, אתרים מחוברים, ניהול צוות, ביצועי צוות, הגדרות, בחינות, אבחון ורישיון.

פני השטח של הלקוח

אתר מעקב widget (אנליטיקות משואות + צ'אט + כרטיס להטביע + חיפוש בסיס ידע), צ 'אט של לקוח AI, פורטל הגשת כרטיסים, טיפול בסימון זהות המבקר, העלאת קבצים, widetto סקר CSAT ומרכז העזרה הפונה ללקוח.

CRM ראשון AI

מרכז הפיקוד, אנשי קשר, חברות, עסקאות, לוח צינורות עם גרור-and-drop, AI דיל אימון (סימנים סיכון, זיהוי הבא הטוב ביותר, win הסתברות), הכנסות הצפויות, סוכן מעקב אוטומטי (SDR), רצף מעקב אוטומטיים, מחזור חיים וניהול שימור, סוכן ניהול נתונים (edup, העשרה, אימות), בניית ה-CRM שלי (הגדרה טבעית), CRM, מערכת בריאות, בדיקת אבטחה, דיפלומה (ADR / סוכן הפעלה) וטייס קרבי CIRDVal DRAOSTRICOS/OLITOCREC (צוות ייעודי), ארבעה סוכנים מיוחדים, טייסים), כלי רכב), צוות מיקוד (ACC (AGNOC). API עם Webhooks.

חבילת מודיעין

אתר אוטומטי זוחל, ביקורת SEO טכנית (מהירות, ניידת, Core Web Vitals, SSL הפניות, נתונים מובנים, ביקורת תוכן (מילה ספירה, קריאה, צפיפות מילות מפתח, מבנה כותרות), חיפושים ב- AI המופעל על ידי Smantic, SERP דירוג מעקב אחר מנועים, מחקר מילות מפתח עם ציון הזדמנויות, ניתוח קישורים אחורי ו ניטור, הדמיה ברשת SEO מקומית, Google Business Register סינכרון (reviews, פוסטים, Q&A, תמונות, תובנות), דוחות מתוכננים (ד / שבועי / שבועית) ו/שבוע), לבן-בלי-לבן. PDF תפוקה לסוכנויות

AI ואוטומציה

צ'אט בינה מלאכותית לקוח (multi-Provider: Claude, GPT-4o) Gemini, Grok), מנהל AI עוזר, AI ידע מקרקע, אוטומטי ידוף עם חזרה חד פעמית, להגדרה של בינה מלאכותית, ניהול AI ו-AI BYOK מצבים, תקציבים אסימונים ובקרות עלות, מסלול ביקורת של היסטוריית AI, ניתוח תובנות בינה מלאכותית, כרטיסי AI triage, כרטיס אוטומטי עם עיכוב, כתיבת AI (זרימה נפרדת), ומנהל בתיבת הדואר הנכנס טייס משותף.

קישורים ואינטגרציה

25+ מחברים שנבנו מראש Shopify, WooCommerce BigCommerce, Magento2PrestaShop, OpenCart, osCommerce WordPress, WHMCS Zendesk, Stripe, Amazon SES, Postmark, Resend, SendGrid, Mailgun, Gmail IMAP Slack, Google Business פרופיל, Connector Builder (ללא קוד / AI-assisted/ Full-code) OAuth זרימה עם PKCE, שוק המחבר עם הפצה בתשלום, חיבור ואימות, Smart Lookup fuzzy תואם, קטלוג גדול של הגדרות פעולה HTTP אשר זמינותו תלויה בהתקנה המחברת, התצורה וההסתימות, הסינכרון ידע ומתכונים לזרימה עבודה.

פלטפורמת פיתוח Developer Platform

RESTAPI(מבקרים, אירועים, כרטיסים, אנשי קשר, הגדרות, מחברים), OpenAPI spec.API ניהול מפתח, webhooks Outbound (async, חתום, retried, SSRF-guarded, Auto-disable) אירועיםAPI עבור ingestion אירוע מותאם אישית, widget SDKעם רזולוציה זהות, טריגר ספר בישול, חוזים פעולה, מחבר SDK, אריזה בשוק, SDKs בצד השרת (PHP, Node.js), WordPress תוסף, ו WHMCS מודול.

הגדרות ופעולות

זהות עסקית, תצורת בינה מלאכותית למרחב עבודה, הגדרות מעקב, אבטחה (HSTS, Permissions-Policy, Permisss-policy IP חסימת, הגנה מפני כוח גולמי, RBAC (Owner / Full Admin/Agent), ניהול צוות הזמנות, לוח המחוונים של ביצועי הצוות, מעקב אחר נוכחות אדמיניסטרטיבית (העורך החזותי המופעל על ידי רגולציה, העורך החזותי, השבבים המשתנים), מעצב סקר, ידע דומיין, תצורת כרטיסים, מיתוג, מדיניות שמירת נתונים, ניהול מחזור חיוב (חודשיים דרך חיים), נורמליזציה, יבוא / אקסטיזציה, יבוא וספורט, סכנות, אוטומציה, אבטחה, שטח אבחון.

אבטחה וציות

אנטרפרייז SSO (OIDC עם JWKS אימות, JIT Givinging) SAML תצורה, GDPR/DSAR טיפול (export ומחק בכל המערכות), קביעת נתונים ליצירת קשר, ניהול הסכמה, בידוד חלל עבודה (מפרק שאילתות מוגבל), שבילי ביקורת, מעקב לא מוצלח, IP חסימת, משמרת ה-SSRF של Webhook ומדיניות שמירת נתונים.

גשר

AI מנוהל באמצעות OpsIQ ספק URL ספק מודיעין האתר קורא, אימות רישיון, דוחות בריאות, PDF אספקת, ויצוא נתונים, הכל נצמד דרך נקודת הקצה של ספק מוגדר, לא הספק הישיר API שיחות מהשרת שלך.

כל דף ניהול

לוח הבקרה

מרכז

מרכז הפיקוד היומי: סקירה של תנועה, ספירת מבקרים חיים, סיכום מכירות, עומק תור תמיכה, פעילות AI ערנות וקיצורי דרך מהירים.

מזון חי

אנליטיקה

זרם מבקרים בזמן אמת: תצוגות דף, צ'אט מתחיל, טופס הגשת אותות והכוונה מתעדים כל כמה שניות עם המדינה, המכשיר ומסננים מתייחס.

יומן מבקרים

אנליטיקה

רשומות ביקור שלמות: מכשיר, דפדפן, OS, מדינה, עיר, מתייחס, צינורות UTM, דף נחיתה, זהות והיסטוריית תצוגת עמוד מלאה.

ישיבות

אנליטיקה

תצוגת מסע-קבוצה: דף זרימה, זמן בעמוד, עומק גלילה, נתיב המרה ועמוד היציאה לכל מפגש מבקרים.

חזרה על סשן

אנליטיקה

פעימה של אירועים שנתפסו: תנועת עכברים, קליקים, גלילים, מעברי דף והתנהגויות ליצירת אבחון UX.

דפים

אנליטיקה

דירוג ביצועי עמוד: ביקורים, זמן מעורבות, קצב קפיצה, המרות, תמיכה אינטראקציות וכיוון מגמה.

אינטליגנציה גיאו-גיא

אנליטיקה

דוחות גיאוגרפיים: המדינה / עיר התמוטטות עם מפות, הפצה למכשיר, נתח דפדפן, מקורות תנועה וחדירה לשוק.

ממזר

אנליטיקה

מעקב התנהגותי: ביקורים במחירים, תדירות החזרה, גלישה ב- doc, תמיכה אינטראקציות וסימנים מותאמים אישית עם ההסתברות המרה.

אירועים Log

אנליטיקה

היסטוריה של אירוע חיפוש: תצוגות דף, אירועים מותאמים אישית, צ'אטים, רכישות, טופס הגשתי טפסים עם metadata מלא סינון.

A/B ניסויים

אנליטיקה

בדיקת פיצול: ליצור גרסאות, להקצות תנועה, להגדיר מטרות, למדוד משמעות ולהכריז על מנצחים, כולם מבפנים OpsIQ.

שגיאות JS

אנליטיקה

לכידת שגיאה Frontend: הודעות, עקבות ערימות, דפדפן מושפע, תדירות, דפים מושפעים ועיבוד מגמה.

מכירות המכירות

מכירות המכירות

לוח המחוונים של ההכנסות: הזמנות, חידושים, החזרים, פיצוי על ידי מקור, ביצועי מסע פרסום, השוואה תקופתית וניתוח מגמה.

מוביל

מכירות המכירות

ניהול מוביל: ניקוד, מקור תגמול, מצב CRM, פרטי מגע, אותות התנהגותיים וצנרת.

CRM במחשב

אתר האינטרנט הרשמי של CRM

Full CRM: מרכז הפיקוד, אנשי קשר, חברות, עסקאות, לוח צינורות, אימון, תחזית, רצף, מחזור חיים, ניהול נתונים ובריאות.

כרטיסים

תמיכה

תמיכה בתיבת דואר: מחלקות, סדרי עדיפויות, מעקב SLA, AI triage, הערות פנימיות, קבצים מצורפים, מיזוג וניהול סטטוס.

צ'אט ב-Crebox

תמיכה

שיחות חיות: בינה מלאכותית וצ'אט אנושי, ידוף, שיתוף פעולה, היסטוריה של שיחה, זהות לקוחות ואוסף CSAT.

טיוטות אימייל

תמיכה

ניהול דואר אלקטרוני: דואר נכנס לכרטיסים, AI-Asted Responseקומפוזיציה, בחירת תבנית ותצורת תיבת דואר.

הגדרות AI

אהה.

הגדרות ספק: בחר Claude-כן, כן.Geminiגרוק, היכנס. API מפתח או הפעלת בינה מלאכותית מנוהלת, קביעת מודל, טמפרטורה ותקציבי סימן לכל חלל עבודה.

AI אימון

אהה.

Prompt Authoring: לקוחות מקיפים ומנהלים, כללי ההסלמה, הנחיות טון, נושאים אסורים ותצורה של גבול.

היסטוריה של בינה מלאכותית

אהה.

ביקורת שיחה: יומני בקשה / תגובה מלאה, שימוש אסימונים, עלות לשיחה, ספק, גירסה מודל ותוצאות החלטה.

תובנות בינה מלאכותית

אהה.

ניתוח דפוס: שאלות נפוצות, שיעורי רזולוציה, תדירות הפסקת יד, שביעות רצון על ידי נושא וזיהוי פער אימון.

בסיס ידע

אהה.

תוכן אימון AI: מאמרים, ערכים שאלות, רכיבי מוצר, ידע מחבר וערכים מותאמים אישית. Smantic ו מילת מפתח חיפוש עבור AI מעומקת.

מחברים (Connectors)

אינטגרציות

מרכז אינטגרציה: מחברים מותקנים, מצב בריאות, מלאי פעולה, ניהול חיוני, דפדפן שוק ו- Connector Builder.

אתרים מחוברים

הגדרות

ניהול האתר: מעקב אחר snippet, מפתח אתר, תצורה widget, הגדרות דומיין ובודדת חלל העבודה באתר.

צוות

הגדרות

ניהול משתמשים: הזמנת חברים, להקצות תפקידים (Owner / מלא Admin/Agent), גישה מחלקתית קבועה ולנהל הרשאות.

ביצועי צוות

הגדרות

מדדי Ops: זמני החלטה, עומס עבודה, תאימות SLA, CSAT על ידי הסוכן, שערי פתיחה מחדש, שעות העמוסות ביותר וניתוח מגמה.

הגדרות

הגדרות

סודיות: זהות עסקית, AI ההתקנה, מעקב, אבטחה, מיתוג, שמירה, תבניות דואר אלקטרוני, חיוב, יבוא / ספורט, אבחון ואזור סכנה.

רישיון

הגדרות

ניהול התוכנית: מעמד רישיון, תכונות תוכנית, מדדי שימוש, תאריך חידוש ואפשרויות שדרוג / הורדת.

התחל כאן

מדריך עלboarding

מסע העלייה הופך למתקן חדש לתוך עבודה OpsIQ מרחב עבודה וניתן להשאירו ולהתחדש מבלי לאבד את ההתקדמות.

מסך המוצר
כניסהעל הסיפון מראה כל אזור ההתקנה, המדינה הנוכחית שלה ואת הפעולה הבאה כדי להשלים.כניסהסביבת העבודהPROGRESS60%COMPLETED6הבאתכונהביקורת עבודה WorkSPACEרישיוןאימות רישיון המוצרנעשהספק AIספק ומפתח מבחןנעשהמותג Brandזהות עסקית וטוןנעשהאתר אינטרנטהוסף אתר ולהתקין widgetהבא1COMPLETE BASICSרישיון, מותג, AI2CONNECT DATAאתר ומתקשר3VERIFY LAUNCHצוות, דואר אלקטרוני, בדיקות
על הסיפון מראה כל אזור ההתקנה, המדינה הנוכחית שלה ואת הפעולה הבאה כדי להשלים.

רצף מומלץ

  1. רישיון: לאמת את הרישיון ולאשר את סביבת העבודה היא פעילה.
  2. ספק AI: בחר את הספק / מודל, הזן אישורים ולהפעיל את מבחן החיבור. AI ניתן לדלג אם סביבת העבודה תתחיל להשתמש בניתוח וכרטיסים בלבד.
  3. זהות עסקית: להגדיר את השם, התעשייה, התיאור, הטון והפרטי המותג של הלקוח בשימוש על ידי widget ו- AI.
  4. מחבר: לאפשר פלטפורמה חיצונית אחת לפחות כאשר OpsIQ צריך הזמנות, לקוחות, כרטיסים, דוא"ל או קונטקסט פלטפורמה אחר.
  5. אתר ו-Widget: ליצור את האתר / סביבת העבודה, להעתיק מפתח אתר לאמת ביקור פרטי בהזנת Live.
  6. צוות ויציאה: מזמינים מנהלי / אנטנים, ליצור מחלקות, להגדיר הודעות דוא"ל רוטינג ולאשר העדפות הודעה.
  7. בדיקות חיים: צ'אט מבחן, כרטיס, מחבר מסנכרן, cron, דואר אלקטרוני בשפע, webhooks וראשי אבטחה.

המסע מאחסן את השלמתו למרחב העבודה.חזרה לאונדרינג צריכה להראות שלבים שלמים ולא לכפות הפעלה מחדש.

התחל כאן

ניווט ורשות

The The OpsIQ צדר הוא אישור-מודעה.מפה זו מסבירה היכן כל אזור תפעולי חי ומדוע דף לא יכול להיות גלוי לכל מנהל.

מסך המוצר
OpsIQ ניווט ניווטקבוצות הצד OpsIQ על ידי אזור עבודה; קישורים בודדים מופיעים רק כאשר התפקיד הנוכחי יכול להשתמש בהם.OpsIQ ניווט ניווטסביבת העבודהGROUPS8דפיםמבוסס על רשותSEARCHזמיןביקורת עבודה WorkSPACEתמיכהכרטיסים, דוא"ל, CSAT, ידעפתוחאתר האינטרנט הרשמי של CRMאנשי קשר, צינורות, עסקאות, ציפיותפתוחאוטומציהזרימות עבודה, כללים, מטרותפתוחאבטחה ופרטיותביקורת, הסכמה, בלוקיםמנהל1PICK A GROUPעקבו אחרי the sidebar2CHECK ROLEהמונחים: closed3USE PAGE HELPפתח את סעיף ההתאמה
קבוצות הצד OpsIQ על ידי אזור עבודה; קישורים בודדים מופיעים רק כאשר התפקיד הנוכחי יכול להשתמש בהם.
תמיכה

כרטיסים, פלטפורמת הדואר האלקטרוני של הצוות, CSAT, מרכז העזרה וזרימי צ'אטבוט.

אתר האינטרנט הרשמי של CRM

פני השטח של מכירות יומיות: CRM בית, מרכז הפיקוד, אנשי קשר, צינורות, תחזית, מחזור חיים, ציפיות, פלחים, ראש לוח, אישורי עסקה, ניהול נתונים, כלי צמיחה וזרם הפעילות.

אוטומציה

זרימות עבודה מונחות אירועים, כללי מחזור חיים ומטרות המרה.

אתר האינטרנט הרשמי של מיזם "שיווק

הודעות אקטיביות, הודעות פרואקטיביות והודעות, קידום סטודיו, סקר Studio, קמפיינים וסיורים מודרכים.

אנליטיקה

דו"ח משטחים ראשונים - Analytics Hub, תובנות AI, מכירות, לקוחות, מוביל, משפך, A / B בדיקות, הפעל מחדש, לוחיות מותאמות אישית ודיווחים מתוכננים - עם המבקר הגולמי, הפגישה, עמוד, גיאוגרפיה ו יומני אירועים בפרשת נתונים של Raw.

דפי Standalone

מודיעין אתרים, ביצועי צוות ו- Feedback יושבים מחוץ לקבוצות כשמות ישירים.

אינטגרציות

קישורים, פעולות וטריגרים, תיבות דואר, טיוטות, הגדרות דוא"ל, נקודות קצה בשפע, webhooks וAPIמפתחות

אבטחה ופרטיות

סקירה של אבטחה, פרטיות וציות, הסכמה בעוגיות, פעילות ביקורת, כניסות כושלות, חסומותIPsוJavaScriptשגיאות.

הגדרות

יסודות סביבת העבודה (כלל, צוות, אתרים, שפות), ולאחר מכן תת-מחלקה מקוצרת: AI Brain (ההוראהים, תצורות, הערכה, היסטוריה), CRM (Builder, שדות מותאמים אישית, ניקוד מוביל, בריאות), נתונים ובריאות (אבחון, יצוא) והתחל (על גביירת, עזרה).

דפים שתפקידם אינו יכול לפתוח נסתרים מהצד השני.עמודי התוכנית הנוכחית אינה כוללת פתיחות עם נוכחות שדרוג תג ופותח מסך שדרוג בתוך האפליקציה.

מסלולים ישירים עדיין נבדקים בצד השרת, שמירה על קישור צד אינו הגבול הביטחוני: כל פעולה מוגנת חייבת להעביר את רשותה ואת בדיקות סביבת העבודה.

אנליטיקה

מרכז Analytics

מרכז Analytics מביא תמיכה, צ'אט, AI, מבקר וסוכנת דיווח לתוך סביבת עבודה חד פעמית עם תוצאות לייצאות.

מסך המוצר
מרכז AnalyticsAnalytics Hub מראה טווח תאריכים, כרטיסי metric וכרטיסיות לתמיכה, צ'אט, AI, מבקר וביצועים הסוכן.מרכז Analyticsסביבת העבודהכרטיסים184AI RESOLVE63%CSAT4.7ביקורת עבודה WorkSPACEתמיכהנוצר, סגור, ending, SLAטאבצ'אט צ'אטתוצאות AI / אנושיות ולנהל זמןטאבאהה.אמון, משוב, שימוש בסימוןטאבהסוכןנפח, מהירות וסיפוקטאב1CHOOSE DATESPreset או מותאם אישית2CHANGE TABתמיכה בסוכנת3EXPORTהורד Download CSV
Analytics Hub מראה טווח תאריכים, כרטיסי metric וכרטיסיות לתמיכה, צ'אט, AI, מבקר וביצועים הסוכן.

פילטרים ובקרות

  • השתמש ב-Preset או מותאם אישית מ- / to טווח, לאחר מכן מרעננים כדי לבנות מחדש כל כרטיס וטבלה לתקופה דומה.
  • יצוא היצוא CSV הייצוא של תצוגת אנליטית פעילה ולא צילום מסך.
  • צנרת חלל העבודה היא אוטומטית; שינויים באתרים משנים את תחילת הנתונים הבסיסית.

מה כל כרטיסה

  • תמיכה: כרטיסים שנוצרו / סגורים, תגובה ראשונה, החלטה, פתרון מגע ראשון, SLA ועדיפות / התמוטטות / סטטוס.
  • צ'אט: הפעלות החלו, החלטות בינה מלאכותית, הסלמה, נטישה, ניהול זמן, הודעות לכל ישיבה ו-AI/human/all CSAT.
  • AI: ביטחון ממוצע, שיעור אבטחה נמוך, דיוק טריג, משוב, ידע השתקפות, שימוש אסימונים / קאשה, ואת הפריטים הדרושים סקירה.
  • מבקר: מגמות התנועה והמעורבות לתקופה שנבחרה.
  • סוכן: עומס עבודה חד-משמעי, מהירות, סגירה ושביעות רצון.

השתמש ב- Analytics Hub for cross-team Review; השתמש במבקרים ייעודיים, כרטיסים, CSAT, AI History ו- Team Performance דפים בעת צורך בחקירה ברמת שיא.

אנליטיקה

לוח האש

לוח הבקרה הוא מרכז הפיקוד היומי שלך.זה מראה תנועה, מכירות, עומס תמיכה, פעילות AI ואינדיקטורים המרה בזווית אחת. פתח אותו בכל בוקר כדי להבין מה קרה בין לילה לבין מה צריך תשומת לב היום.

לוח הבקרה
לוח המחוונים של סיכוםמסך הסקירה הוביל על ידי OpsIQ לוח אינטליגנציה בינה מלאכותית (עם מדי יום קצר, התראות חכמות, תחזיות), KPI widget אריחים ו- 7 ימים תנועה widito, בתוספת בקרת פריסת איפוס.סקירהסביבת העבודהOPSIQ INTELLUREבחרו ניתוח ו OpsIQ כותב את זהיום יומי קצראזהרות חכמותתחזיתאיפוסעו"ד היום2,481+12%ReVENUE$8 2k+5%כרטיסים פתוחים143 SLAאחרון 7 ימים1AI-FIRSTOpsIQ לוח המודיעין2WIDGETSKPI אריחים שאתה מסדר3שלךאיפוס בכל עת
מסך הסקירה האמיתי: OpsIQ לוח אינטליגנציה למעלה (צילום: ניתוח והוא כותב את זה) מעל ה-KPI widgets אתה מסדר את עצמך.

כרטיסי לוח הסביר

מבקרים Live

מספר האנשים באתר שלך כרגע.זה מעדכן כל אחד 15 שניות (ההגדרה) מבקר הוא "אקטיבי" אם הם טעונים דף בתוך הסף הפעיל (default: 90 שניות).

מבקרים ייחודיים

כמה אנשים שונים ביקרו באתר שלך בטווח התאריך שנבחר. OpsIQ מזהה את המבקרים על ידי שילוב של טביעת אצבע דפדפן, קובצי Cookie ו (אם זמין) זהות אותנטית.

חדש נגד החזרה

מבקרים חדשים רואים את האתר שלך בפעם הראשונה.המבקרים חוזרים כבר ראו לפני כן, יחס חוזר גבוה פירושו שהתוכן שלך מחזיר אנשים בחזרה.יחס נמוך מאוד חוזר עשוי להיות אומר שאתה לא שומר על עניין.

שיעור ה-Bobnce Rate

אחוז המבקרים שעזבו לאחר צפייה בעמוד אחד בלבד.קצב קפיצה למעלה 70% בדפי הנחיתה בדרך כלל אומר הדף אינו עומד בציפיות של מבקרים, תוכן לא נכון, עומס איטי או ניסיון נייד גרוע.

זמן ממוצע בעמוד

כמה זמן מבקרים מבלים בכל דף בממוצע. 10 שניות על דפי תוכן מציעות שהתוכן אינו מרתק.פעמים ארוכות מאוד בדפי הסימון עשויים להצביע על בלבול.

איומים חסומים

IPכתובות אשר OpsIQ מזוהה כמו זדוני מבוסס על ניקוד איומים, ניסיונות כוח רוטט או בלוקים ידניים. IPs רשימה.

מכירות היום / השבוע / החודש

הכנסות ממקורות מכירות קשורים (Shopify, WooCommerce, Stripeאם המכירות מראות אפס, בדוק כי מחבר הפלטפורמה שלך מחובר וסינכרון.

טרנד תרשים

גרף קו המציג את המבקרים ספירת טווח התאריך שנבחר.חפש תבניות: ספייק תנועה (קמפוסים, אזכורי עיתונות), דיפוס (עונות שבוע, חגים) ומגמות מתמשך.

מקורות

מאיפה מגיעים המבקרים שלך: ישירות, Google, מדיה חברתית, קמפיינים בדוא" ל, אתרי הפניות. השתמש בזה כדי להבין אילו ערוצים של שיווק פועלים.

דפדפנים

Chrome, Safari, Firefox, Edge ואחרים.אם לדפדפן יש קצב קפיצה גבוה באופן יוצא דופן, ייתכן שיהיה לך שיעור קופץ גבוה. CSS או JavaScript סוגיה תאימות

מפת חום שעה

רשת המציגה פעילות מבקרים בשעות היום ויום השבוע. השתמשי בזה כדי להחליט מתי לקבוע את משמרות התמיכה, בעת שליחת הודעות וכאשר לנהל מבצעים.

מבקרים אחרונים

המבקרים האחרונים עם המדינה, דף, מכשיר ומקור. שימושי עבור בדיקות מיקום מהיר במהלך קמפיינים.

שימוש ב- date Range filter

לחץ על הסימון בצד הימני העליון של לוח הדשינט: היום, אתמול, אחרון 7 ימים אחרונים 30 ימים, החודש שעבר, טווח המכס.כל כרטיסי לוח המחוונים ועדכונים כאשר אתה משנה את הטווח.טווח התאריך נמצא באזור הזמן המוגדר שלך (ההתחלה בהגדרות).

דוגמאות עובדות

חקירת ה-Bobnce Rate

סקורסארי:
קצב הקפיצות שלך זינק מ 45% To to 78% השבוע, מה קרה?
מה לעשות:

תגית: (1האם דף נחיתה ספציפי משתנה?Go to Top Pages ו-מיין על ידי העלאה של שער.2האם מסע פרסום שלח תנועה אל הדף הלא נכון? בדוק מקורות לקוראים חדשים.3האם האתר נשבר בנייד? בדוק את התפלגות הדפדפן עבור שיעור הסימון הנייד.4האם זו תנועה בוטת? בדוק את פרטי הנגד והמבקרים של דפוסים חשודים.

Zero מבקרים ב-Clock

סקורסארי:
תצוגות לוח המחוונים 0 מבקרים חיים למרות שהאתר שלך מקבל תנועה.
מה לעשות:

תגית: (1האם ה-Widget המעקב מותקנים? View your Website Source Code and Search for the OpsIQ תסריט (2האם מפתח האתר נכון? השוו את מפתח הנתונים בתסריט עם המפתח באתרי Connected.3האם CDN או cache משרת דף מפוספס ללא התסריט? Clear your CDN cache.4האם מנהל מודעה או CSP חוסם את התסריט? בדוק את קונסולת הדפדפן עבור בקשות חסומות.

קריאה במפת חום שעה

סקורסארי:
מפת החום שלך מראה פעילות כבדה בין השעות 10:00-2 בערב, אך לא בסופי שבוע.
מה לעשות:

זהו דפוס תעבורת B2B. המבקרים שלך עובדים גלישה בשעות עסקיות. Implications: ((1צוות התמיכה של לוח זמנים במשך שעות עסקיות שבועיות.2שלח הודעות דוא"ל ביום שלישי - יום שישי בבוקר.3חלונות תחזוקה של סוף השבוע בטוחים.4(שים לב המציע צ'אט חי רק בשעות השיא.

עלייה של מוצרים ממקור לא ידוע

סקורסארי:
אתה רואה את הספיייק הפתאומי של 500 מבקרים בשעה אחת מהקורא הלא ידוע.
מה לעשות:

ללכת למבקרים ולמסנן על ידי חלון הזמן.בדוק:1האם הם מבקרים אמיתיים או בוטים?עיין במשך הפגישה, דפים שנצפו וגיוון הדפדפן.2אם באמת, באיזה דף הם נחתים?3(הופנה מהדף URL מישהו אולי היה קשור אליך מ- Reddit, Hacker News או בלוג פופולרי.4(אם זו תנועת בוטים, בדוק איומים ולשקול לחסום את התנועה IP טווח.

מדוע ספירת המבקרים שלי שונה Google Analytics?+

OpsIQ ספירת מבקרים באופן שונה.זה משתמש טביעת אצבע ועוגיות דפדפן, בעוד ש- GA משתמשת במודל cookie אחר.Bo filtering, שיעורי חוסם מודעה וסדר טעינה תסריט יכול גם לגרום להבדלים. 10-20% השחלות היא נורמלית.

האם ניתן להטמיע את לוח המחוונים בכלי אחר?+

לוח המחוונים נועד עבור OpsIQ ניהול מידע חיצוני, השתמש REST API כדי למשוך מידע ניתוח ולהציג אותו בלוח המחוונים או בכלי ה-BI שלך.

מה פירוש ה"תחילות"?+

זה נחשב IP כתובות אשר OpsIQ הוא מעוגן או חסם על בסיס ניקוד איומים, כניסות כושלות חוזרות ונשנות, או בלוקים ידניים. לחץ על הדלפק כדי לראות פרטים ולנהל בלוקים.

אנליטיקה

יומן מבקרים

ה-Sing Log מראה כל ביקור באתרי האינטרנט שלך.כל שורה היא אחד דף עומס של מבקר אחד. השתמש בו כדי לחקור התנהגות מבקרים בודדים, למצוא תנועה בקמפיין ואבחון בעיות.

יומן מבקרים
יומן מבקריםשולחן מבקרים עם בר סינון (עודכן, חיפוש IP/ דוא"ל/עיר, מקור, מכשיר) ועמודות עבור IP/ דוא"ל, מיקום, מקור, מכשיר וזמן, עם שורת איומים מרופדת.יומן מבקריםyoursite.com7 ימיםחיפוש חיפוש IP דואר אלקטרוני, עיר...מקור Source▾התקן ▾IP EMAILמיקוםמקורהתקןמתי[email protected]ניו יורקgoogleשולחן עבודה241.62.10.4לונדוןdirectנייד6[email protected]ברליןתגית:adsנייד14203.0.113.9NG) לאגוסreferralשולחן עבודהthreat1–25 של 3,402ישיבת ישיבה→1FILTERתאריך · חיפוש · מקור · מכשיר2REAL COLUMNSIP/email · location · device · threat3DRILL INפתח את הישיבה המלאה
Log: סינון עד תאריך, חיפוש ומכשיר, ולאחר מכן לקרוא כל ביקור על ידי IP/ דואר אלקטרוני, מיקום, מקור, מכשיר וזמן, איומים מעוותים באדום.

מה שכל שורה מציגה

IP כתובת הכתובת

המבקר IP כתובת: Anonymized if IP אנונימיזציה מופעלת בהגדרות. Click כדי לראות את כל הביקורים מזה IP.

ארץ ועיר

התרחק מןIP כתובת: GeoIP Data. Requires MaxMind GeoLite2 Cloudflare ראשי התיבות של Geoheaders. Shows "Unknown" אם GeoIP אינו מוגדר.

עמוד Page URL

העמוד שהמבקר טעון.לחצו לראות את המלא URLLong. URLs הם תקועים בתצוגת השולחן.

מקשר

מהיכן הגיע המבקר לפני הנחיתה באתר שלך "Direct" פירושו לא מתייחס (הערות ספרים, הקלדה URLs כמה קישורים לאפליקציות).

התקן ודפדפן

סוג המכשיר של המבקר (desktop, Mobile, Tablet) ודפדפן (Chrome, Safari, Firefox וכו '). Parsed from the User-Agent Header.

תאריך וזמן

כאשר הדף היה טעון, באזור הזמן המפוגדר שלך.

זהות הלקוח

אם המבקר מזוהה (באמצעות אות זהות או כניסה), השם או הדואר האלקטרוני שלהם מופיעים אחרת כאנונימיות.

פילטרים

טווח תאריך

פילטר מבקר בתקופה מסוימת. Default: Last 7 ימים.

חיפוש

חיפוש על IP כתובת, דף URL, מתייחס, מדינה או אימייל לקוחות.

מקור Source

מקור סינון: Direct, Organic, Social, Referral, בתשלום, דואר אלקטרוני.

התקן

פילטר על ידי Desktop, Mobile או Tablet.

חדש רק

הראו רק מבקרים ראשונים שלא נראו מעולם.

דוגמאות עובדות

מצא מבקרים מקמפיין ספציפי

סקורסארי:
השקתם קמפיין של גוגל פרסומות עם הפרמטר UTM utm_source=google&utm_medium=cpc&utn_campaign=summer-sale. איך אתם מוצאים את המבקרים האלה?
מה לעשות:

ב- Visitor Log, השתמש שדה החיפוש וסוג "summer-sale" המחאות החיפוש מתייחסות URLs עמוד URLs כך שפרמטרי UTM יתאימו.You יכולים גם לסנן על ידי מקור = בתשלום כדי לצמצם עוד יותר.

מצא לקוח שדיווח על בעיה

סקורסארי:
לקוח אמר: "דף הסימון שלך נשבר אתמול בסביבות השעה 3:00?"
מה לעשות:

חיפוש על ידי כתובת הדואר האלקטרוני שלהם ב Log.If הם נרשמו, הזהות שלהם תופיע. הגדר את טווח התאריך עד אתמול.חפש ביקורים כדי לבדוק דפים בסביבות השעה 3:00. JavaScript שגיאות.

מחיקת לולאה או גרוט

סקורסארי:
אתה מבחין IP הכתובת 500 ביקורים תוך שעה אחת, הכל לאותו דף.
מה לעשות:

זה כנראה בוט, מגרד או תסריט שבור.לך אל המבקר Log וחיפוש על ידי זה IP.בדק: (1האם כל הביקורים באותו דף?2האם סוכן המשתמש הוא בוט ידוע?3• האם משך הפגישה תמיד 0 שניות?If Recognized as abot, go to Security and block the IP.

יומן מבקרים לעומת סכיחות נגד מזון חי

יומן מבקרים

דף רול נטען.שורה אחת בתצוגת העמודים: Best for: Investigation דפים ספציפיים, מציאת תנועה ממקורות ספציפיים, אבחון בעיות מעקב.

ישיבות

דף קבוצות מציג מסעים.שורה אחת לפגישת ביקור.הטוב ביותר: הבנת זרימת משתמשים, מדידה משך הפגישה, זיהוי מסלולי המרה.

מזון חי

פעילות בזמן אמת.הצגת מבקרים באתר שלך כיום: ניטור קמפיינים בהתקדמות, איתור מבקרים בעלי עקביים גבוהים, צפייה הזדמנויות תמיכה.

למה אני רואה את הביקורים שלי בקובץ?+

OpsIQ לעקוב אחר כל הביקורים כברירת מחדל.כדי לא לכלול את התנועה שלך, להוסיף לך IPכתובת: Thelude IPs רשימה בהגדרות > מעקב

מדוע מבקר מציג מדינה "לא ידועה"?+

בדיקת גיאו-IP דורשת Cloudflare ראשים גיאומטריים (automatic if use)Cloudflare(או קובץ מסד נתונים של MaxMind GeoLite2. Check Settings > GeoIP Path כדי להבטיח שקובץ מסד הנתונים קיים וניתן לקריאה.

כמה זמן נשמר נתוני המבקרים?+

נתוני המבקרים נשמרים לתקופת השימור המוגדרת בהגדרות (default: 90 ימים (לאחר מכן, רשומות ישנות מנוקות באופן אוטומטי על ידי העבודה לשימור קרוון.

אנליטיקה

ישיבות

קבוצות של תצוגות דף מרובות מאותו אדם למסע יחיד.בעוד ש-Color מראה עומסי עמוד בודדים, סכינס להראות לך איך אנשים עוברים דרך האתר שלך מפלט ליציאה.

ישיבות
ישיבותשולחן המפגש עם IP, מדינה, מכשיר, מקור, משך ועמודי עמודים, ושורה של איום מעומקת.ישיבותyoursite.comארץ (NG)יומן פעילותIP(S)נסיעה COUNUTINGהתקןמקורמשך זמןדפים41.62.10.4בריטניהשולחן עבודהgoogle3m12s6102.89.6.2נגניידdirect1 05s388.21.4.9אהה.שולחן עבודהתגית:ads7m48s11203.0.113.9ארה"בניידreferral0 42s21SESSION LOGמסעות2COLUMNSמדינה · מכשיר · מקור · זמן3THREATמפגשים מסוכנים
מצגת: כל אורח יוצא כשורה (באנגלית)IP מדינה, מכשיר, מקור, משך ודפים) עם מפגשים מסוכנים שהוטבעו באדום.

כיצד מפגשים עובדים

מפגש מתחיל כאשר מבקר מבסס את הדף הראשון שלו.זה ממשיך בזמן שהם לנווט ליותר דפים.פגישה מסתיימת כאשר המבקר אינו פעיל לתקופת זמן הפגישה (default: 30 דקות) או סוגר את הדפדפן שלהם, אותו אדם שחוזר לאחר שהשעה יוצרת מפגש חדש.

מה שכל מפגש מראה

דף ראשון

דף הנחיתה, שבו המבקר נכנס לאתר שלך.זה אומר לך איזה תוכן מושך אנשים.

דף אחרון

דף היציאה, שבו המבקר עזב.אם דף היציאה הוא לעתים קרובות דף התמחור, המבקרים עשויים להשוות אותך עם מתחרים.

ספירת Page Count

כמה דפים המבקר ראה בפגישה זו.דפים נוספים בדרך כלל יותר מעורבות, אבל זה יכול גם אומר שהמבקר אבד.

משך

זמן מלא מעומס בעמוד הראשון לפעילות אחרונה. 0 שניות הן קפיצה (ראיית דף, לא אינטראקציה נוספת).

מקור Source

מקור התנועה לפגישה זו (Direct, Google, Social,פניות וכו').

מדינה

המדינה המרשימה של המבקר IP כתובת.

בוונצ'נס

בין אם המבקר נשאר לאחר צפייה בעמוד אחד בלבד.פגישות בונצ'ד יש אינדיקטור אדום.

שכנוע

בין אם המבקר השלים אירוע המרה עוקב (purchase, Signup, טופס הגשת) במהלך הפגישה זו.

פילטרים

חיפוש

חיפוש על IP דואר אלקטרוני, דף URL או מתייחס בתוך מפגשים.

סוג

מסנן על ידי מבקרים חדשים (פגישה ראשונה אי פעם) או החזרת המבקרים.

מקור Source

מסנן על ידי מקור התנועה

מדינה

מסנן לפי מדינה כדי לראות מפגשים מאזור מסוים.

איומים / מחבלים

מסנן כדי להראות רק מפגשים או פגישות מופצים כאיומים.

דוגמאות עובדות

פרופיל לקוח בעל ערך גבוה

סקורסארי:
לקוח פשוט עשה רכישה גדולה, אתה רוצה להבין את המסע לפני הקנייה.
מה לעשות:

חפש את הדואר האלקטרוני שלהם במושבות.עיין בכל המפגשים: (1כמה פעמים הם ביקרו לפני הקנייה?2אילו דפים הם ראו?3האם הם משתמשים בצ'אט או פותחים כרטיס?4מה היה הזמן הכולל מביקור ראשון ברכישה?זה אומר לך את מסע הקנייה הטיפוסי ללקוחות בעלי ערך גבוה.

כניסה של Detect ממקום חדש

סקורסארי:
לקוח בדרך כלל נכנס לניגריה, אך אתה רואה מפגש מרוסיה.
מה לעשות:

חפש את הודעת הדואר האלקטרוני של הלקוח במושבות.שוואת מדינת המפגשים האחרונים.אם פגישה מופיעה לפתע ממדינה יוצאת דופן, היא יכולה להיות נסיעות לגיטימיות או חשבון נפגע.1האם היה ניסיון כניסה כושל לפני המוצלח?2) Did The IP שינוי באותה פגישה? - פלאג אותו על מנת לבדוק אם הוא חשוד.

מה ההבדל בין ביקור לבין מבקר?+

מבקר הוא אדם (או דפדפן) מפגש הוא ביקור אחד מאדם זה.המבקר יכול לקבל הרבה מפגשים לאורך זמן.

איך עושים OpsIQ מזהים מבקרים חוזרים?+

OpsIQ משתמשים בשילוב של עוגיות, טביעות אצבע דפדפן ו אסימוני זהות אותנטיים.אם מבקר מנקה את העוגיות שלהם ואינו מחובר פנימה, הם יופיעו כמבקר חדש.

אנליטיקה

מזון חי

ה- Live Feed מראה למבקרים באתר שלך בזמן אמת.זה מעדכן באופן אוטומטי את כל העדכונים באופן אוטומטי. 15 שניות (אפשרות) להשתמש בו במהלך קמפיינים, שיגורי מוצרים ותקופות תמיכה עסוקות כדי לראות מה קורה כרגע.

מזון חי
מזון חיזרם פעילות בזמן אמת המציג ספירת מבקרים באינטרנט חיה והזנת פעולות מבקר האחרונות על ידי המדינה.מזון חיyoursite.com37מבקרים באינטרנט עכשיופעילות חיהעכשיוצפייה /pricing2sבריטניה - התחילה צ'אט5sתגית: cart9sהמונחים: closed signup1RIGHT NOWמי נמצא באתר2AUTO-REFRESHעדכונים כל 15s3עובדלקפוץ לתוך צ'אט חי
ראה מי נמצא באתר שלך השני ומה הם עושים, מרענן באופן אוטומטי כל אחד מהם. 15 שניות.

איך זה עובד

Live Feed סוקר את השרת שלך במרווחת הרענון המפוגדרת.כל שורה מציגה מבקר באתר האינטרנט שלך: הדף הנוכחי, המדינה, המכשיר, המקור, משך הפגישה וספירת העמודים. מדגישה פעילות חדשה מאז הרענן האחרון. לחץ על כל שורה של מבקרים כדי לראות את פרטי המפגש המלא שלהם.

הגדרות

מרווחים

באיזו תדירות העדכונים של מזון חי 15 ערכים נמוכים יותר (5-10s• לתת עדכונים מהירים יותר אך השתמש במשאבים נוספים של השרת.30-60s קל יותר לשרת אבל פחות בזמן אמת.

סף פעיל

כמה זמן מבקר נחשב "פעיל" לאחר עומס העמוד האחרון שלו: Default: 90 אם מבקר טוען דף ולאחר מכן קורא אותו עבור 2 דקות ללא לחיצה, הם נעלמים מן האכילה החיה לאחר הסף.

כפתור Puse

לחץ על Pause כדי לעצור את אוטומטי-refresh. שימושי כאשר אתה רוצה לקרוא פרטים ללא עדכון הרשימה.לחץ על Resume כדי לחדש מחדש.

דוגמאות עובדות

לתפוס את הראש החם במהלך מסע

סקורסארי:
אתה מפעיל שיגור מוצר.מבקר פשוט צפה בעמוד הבית שלך, ולאחר מכן תכונות, ואז תמחור ועכשיו על דף הסימון.
מה לעשות:

זוהי התנהגות גבוהה מאוד.אכילה חיה: (1לחץ על המבקר כדי לראות את הפגישה שלו.2אם הם יתחילו צ'אט, ל-AI יהיה את ההקשר המלא שלהם.3אם הם יוצאים ללא קנייה, הם הופכים לעופרת בעמוד הראשי.4· שקול יצירת כלל פרואקטיבי כדי להציג הודעת צ'אט כאשר המבקרים מגיעים לבדיקה.

יותר מדי מבקרים מאותו דבר IP

סקורסארי:
אתה רואה 20 מבקרים מאותו דבר IP כתובת: הכל על דפים שונים.
מה לעשות:

זה יכול להיות: (1משרד עם אינטרנט משותף, בדוק אם הביקורים נראים כמו בני אדם אמיתיים (דפים אחרים, זמני ישיבה סבירים).2• בוט או גרוטב. לבדוק אם המפגשים קצרים מאוד (0-1שניות) או דפי פגיעה באופן שיטתי.3• בדיקת עומס.אם אתה מפעיל בדיקות אוטומטיות, לא לכלול את IP מתוך מעקב.

מדוע המופע של מזון חי 0 המבקרים באתר שלי יש תנועה?+

תגית: (1האם התסריט של widget מותקן באתר שלך?2האם מפתח האתר נכון?3האם הסף הפעיל עבר? (4האם המבקרים משתמשים ב חוסמי מודעה אגרסיביים שחוסמים את תסריט המעקב?

האם ניתן לסינון מזון חי לפי מדינה או מכשיר?+

להאכיל החי מראה את כל המבקרים הפעילים.עבור צפיות מסוננות, להשתמש בדפי המבקר Log או סשנס עם אפשרויות המסנן שלהם.ההזנת החיה היא פשוטה בכוונה עבור ניטור בזמן אמת.

אנליטיקה

דפים

דפים Top מראה אילו דפים באתר שלך מקבלים את התנועה ביותר.זה מדרג דפים על ידי ביקורים, מעורבות, המרות ותמיכה פעילות. השתמש בו כדי לזהות את התוכן הטוב ביותר שלך, למצוא דפי מידע, וגלו עמודים שיוצרים שאלות תמיכה.

דפים
דפיםרשימה מדורגת של הדפים הכי ויזואליים עם ברים ביקור אופקי וספירות.דפיםyoursite.comרוב העמודים/pricing3,402/2,910/docs1,740/blog/seo-guide980/signup6401RANKEDרוב העמודים2SIGNALSביקורים & המרות3FINDדפים שמניעים כרטיסים
הדפים שלך מדורגים על ידי תנועה ומעורבות, כך שתוכל לזהות תוכן העליון ואת דפים שיוצרים תמיכה.

מה שכל דף מציג

עמוד Page URL

המלא URL דפים דומים (למשל, גרסאות מוצר) מקובצים אם קבוצה מופעלת.

תצוגות

מספר שלם של פעמים דף זה היה טעון בטווח התאריך שנבחר.

מבקרים ייחודיים

כמה אנשים שונים ראו דף זה (אדם שרואה את אותו הדף פעמיים נחשב כמו 1 ייחודי).

שיעור ה-Bobnce Rate

אחוז המבקרים שעזבו את האתר לאחר צפייה רק בעמוד זה.הקפיצה גבוהה על דפי נחיתה = בעיה. קפוץ גבוה על "תודה" דפים = נורמלי.

זמן ממוצע

כמה זמן מבקרים מבלים בדף זה בממוצע.קצר מאוד= לא קוראים.

צ'אט מתחיל

כמה שיחות צ'אט החלו בדף זה.צ'אט גבוה מתחיל בעמוד מוצר פירושו תיאור המוצר עשוי להיות לא ברור.

כרטיסים לתמיכה

כמה כרטיסי תמיכה נוצרו על ידי מבקרים שהיו בדף זה. High ticket ספירת כרטיס = בעיה פוטנציאלי UX או תוכן.

דוגמאות עובדות

מצא דפים שמניעים שאלות

סקורסארי:
צוות התמיכה שלך ממשיך לקבל שאלות על המשלוח, איזה דף נכשל?
מה לעשות:

דפי Top של "כרטיסי תצוגה" או "התחל" יורד.חפש מוצרים או משלוח דפים עם ספירות גבוהות.העמוד עם השאלות הכי הרבה תמיכה כנראה לא ברור מידע.פתור את התוכן ולעקוב אחר השאלה אם שאלות התמיכה פוחתות.

מצא דפים עם קצב יציאה גבוה

סקורסארי:
אתה רוצה לדעת לאן אנשים עוזבים את האתר שלך לעתים קרובות.
מה לעשות:

סוג של על ידי הורדת קצב ההורדה.התעלמות מדפים שהם באופן טבעי נקודות יציאה (תודה לדפי אישורים, דפי אישור) להתמקד בדפים שצריכים לשמור על מבקרים מעורבים: דפי מוצר, מחירים, תכונות.אלה צריכים שיחות טובות יותר לפעולה או תוכן ברור יותר.

למה הצג דף 0 האם אני יודע שזה מקבל תנועה?+

תגית: (1האם ה-Widget המעקב מותקנים בדף הספציפי הזה?אפליקציות בעמוד יחיד עשויות לא לירות תצוגות דף על שינויים בתוואי.2האם הדף נכלל בהגדרות מעקב?3האם CDN משרת גרסה מכוונת ללא תסריט מעקב?

אנליטיקה

אינטליגנציה גיאו-גיא

גיאו-מודיעין מראה מהיכן מגיעים המבקרים שלך ממדינה, עיר, מכשיר ומקור. השתמש בו כדי להבין את השווקים הגיאוגרפיים שלך, להחליט על תמיכה בשפה, לתכנן שיווק אזורי ולזהות דפוסי תנועה חשודים.

גיאווג
אינטליגנציה גיאו-גיאמפה של מקומות מבקרים ליד דירוג בר מדינה.אינטליגנציה גיאו-גיאyoursite.comמבקרים לפי מיקוםארה"בבריטניהאהה.תאריךנג1MARKETSעיר, מכשיר2PLANשפה ואזורים3WATCHתנועה מוזרה
מאיפה המבקרים שלך מגיעים (במדינה, עיר ומכשיר) לשווקים בגודל ולאתר תנועה יוצאת דופן.

מה אתה רואה

Top מדינות בר תרשים

המדינות המובילות מדורגות על ידי ספירת המבקרים. לחץ על מדינה כדי לקדוח נתונים ברמה העיר.

המדינה דוגוז

התמוטטות חזותית של תנועה לפי מדינה. Hover עבור אחוזים.

שולחן מלא

כל מדינה עם מבקרים בתקופה שנבחרה, מראה ספירת המבקרים, ספירת ישיבות, קצב קפיצה וקצב המרות.

City קידוח-down

לחץ על מדינה כדי לראות אילו ערים במדינה יש את המבקרים ביותר.

כיצד GeoIP גילוי עובד

OpsIQ מזהה את מיקום המבקרים בשתי דרכים: (1) Cloudflare אם האתר שלך עומד מאחורי Cloudflare גילוי המדינה הוא אוטומטי ומדויק (2• MaxMind GeoLite2 מסד נתונים להורדה למסד הנתונים החופשי ולהגדיר את הנתיב בהגדרות. זיהוי ברמה העירונית דורש מסד הנתונים GeoLit2-City, לא רק מסד הנתונים של המדינה.

VPN ו- Proxy

המבקרים באמצעות VPNs יופיעו ממקום שרת ה-VPN, ולא המיקום האמיתי שלהם. OpsIQ לא יכול ולא צריך לנסות לעקוף VPNs.אם אתה רואה דפוסי מדינה יוצאי דופן, שקול כי 10-20% המבקרים עשויים להשתמש ב-VPN.

דוגמאות עובדות

תנועה בלתי צפויה

סקורסארי:
אתה מנהל עסק רק בארה"ב, אבל 30% התנועה היא מהודו.
מה לעשות:

תגית: (1האם המבקרים האמיתיים האלה?להתבונן בזמן הפגישה ובדפים שנצפו בהם, מפגשים קצרים מאוד עם קפיצה גבוהה - סביר להניח שבוטים.2האם הם מוצאים אותך דרך Google? בדוק את המפנה.3האם הם יכולים להיות לקוחות פוטנציאליים בשוק חדש?אם התנועה היא אמיתית ועוסקת, לשקול הוספת מחירים ספציפיים להודו או תוכן.

ירידה בתמיכה בשפה

סקורסארי:
אתה רוצה לדעת אם אתה צריך לתרגם את האתר שלך לספרדית.
מה לעשות:

ראו את דף הביון הגיאולוגי, אם מדינות דוברות ספרדית (ספרד, מקסיקו, קולומביה, ארגנטינה וכו ') יחד מייצגות יותר מאשר 10% מהתנועה שלך עם קצבי ריצוף נמוכים, התרגום שווה גם לבדוק: האם המבקרים ממדינות אלה להמיר בשיעורים דומים לשוק הראשי שלך?

תכנון שינוי תמיכה אזורי

סקורסארי:
אתה צריך להחליט שעות תמיכה עבור אזורי זמן שונים.
מה לעשות:

השתמש במפת חום של שעה (על לוח דשורד) בשילוב עם אינטליגנציה גיאומית. 40% התנועה שלכם היא מאירופה ומאירופה. 35% מארה"ב, אתה צריך כיסוי עבור שני אזורי זמן.מפת החום מראה בדיוק כאשר כל אזור הוא פעיל ביותר.

מדינה עם ביקורים, אך אין פקודות

סקורסארי:
גרמניה מראה 500 מבקרים החודש, אבל אפס מכירות.
מה לעשות:

מחקר: (1האם הם קופצים על דף התמחור?ייתכן שהמחירים שלך אינם תחרותיים עבור השוק הזה.2האם אתה שולח לגרמניה? בדוק אם דף המשלוח שלך מזכיר את גרמניה.3האם הסימון שלך זמין ב EUR? מטבע לא מתאים גורם בדיקות נטושות.4האם מבקרים אלה ממקור יחיד שעשוי להיות תנועה לא עקבית?

מדוע מבקר מציג מדינה "לא ידועה"?+

GeoIP אינו מוגדר. Cloudflare (אשר מוסיף ראשי גיאו באופן אוטומטי) או להוריד את מסד הנתונים GeoLite2 MaxMind ולהגדיר את נתיב הקובץ בהגדרות > GeoIP Path.

האם ניתן לחסום את התנועה ממדינות מסוימות?+

OpsIQ לא לחסום על ידי המדינה. השתמש שרת האינטרנט שלך או Cloudflare חוקי חומת אש לבלוק מבוסס מדינה.OpsIQ מתמקדת בחשיפה, לא בקרת גישה ברמת הרשת.

אנליטיקה

ממזר

הפטרייה הבלתי עקבית מגדירה את הביקורים של מה שהם מנסים לעשות: לגלוש, מחקר, השוואה, רכישה, לקבל תמיכה או לעזוב. השתמש בו כדי להבין את האיזון של הכוונה באתר שלך לזהות היכן המבקרים יורדים.

ממזר
ממזרמשפך מבורוזה למחקר כדי להשוות בין רכישת ספירות, בתוספת תמיכה ויציאה צ'יפס.ממזרyoursite.comBrowse 8,200מחקר) 4,100השוואה) 1,650קנה) 520תמיכה 6%לעזוב 11%1CLASSIFYמה המבקרים רוצים2STAGES« להקפיא לקנות3תיקוןמצא את ה-Fast-off
ישיבות מסווגות על ידי כוונה (ברוטאות, מחקר, השוואה, רכישה) כך שתוכל לראות בדיוק היכן אנשים נופלים.

קטגוריות עקביות

בורחים

מבקרים באופן מקרי מסתכל סביב מפגשים קצרים, כמה דפים, שום מטרה ספציפית לא מזוהה.

מחקר

מבקרים קוראים דפי מוצר / feature, docs או תוכן בלוג. Longer זמן על דף, מספר דפים של תוכן.

השוואת

מבקרים צופים בתמחור, השוואת תוכניות או טבלאות תכונה לעתים קרובות מחזירים אורחים.

קניית קניות

מבקרים בסימון, עגלות או דפי הרשמה.כוונות גבוהות.אלה הזדמנויות ההמרה שלך.

תמיכה-Seeking

מבקרים בדפים לעזרה, דפי מגע או החל צ'אט.הם זקוקים לסיוע.

קופצת.

מבקרים שעזבו לאחר דף אחד. מעורבות נמוכה

איך לקרוא את המלצה

עקבו אחרי funnel

סקורסארי:
1,000 המבקרים ראו מחיר. 270 פתח צ'אט 92 התחילו לבדוק. 64 משלמים. 18 פתח כרטיסי תמיכה
מה לעשות:

דף התמחור חזק מספיק כדי ליצור כוונה. צ'אט חשוב בדרך הקנייה: 27% המבקרים בתמחור לעסוק בצ'אט לפני קניית כרטיסים תמיכה לאחר בדיקת מידע עשוי להצביע על הפעלה או בלבול תשלום.1• ודא ש- AI צ'אט תשובות לשאלות מחירים טובות.2· חקרו את 18 כרטיסים ל-Post-checkout לתמיכה בנושאים משותפים.

פילטרים Time

השתמש בפילטר טווח התאריך כדי להשוות דפוסים הכוונה לאורך תקופות.לדוגמה, להשוות את שבוע שחור לשבוע רגיל.אתה צריך לראות עלייה ב"קניית" כוונה ואולי "לקבלה-מחקרית" אם המבצעים שלך יצרו בלבול.

איך עושים OpsIQ לסווג את הכוונה?+

OpsIQ מבט בעמוד URLs התנהגות של ישיבה ודפוסי זמן. דפי תמחור אות הכוונה להשוואה.דפים של Checkout איתותים על רכישת כוונה. help / דפי מגע אות תמיכה בכוונות התמיכה.הסיומנט הוא מבוסס על-ידי היוריסטי, לא על ידי AI.

האם אני יכול להתאים את קטגוריות הכוונות?+

לא כיום, הקטגוריות בנויות על סמך דפוסי התנהגות נפוצים באינטרנט.סיווג כוונות מכס הוא על מפת הדרכים.

אנליטיקה

תהלוכות, שימור ודרכים

בנה מסעות מותאמים אישית מעמוד או מדרגות אירוע, למדוד את שימור הקבוצתי וגלו את הנתיבים המבקרים בדרך כלל לעבור דרך אתר.

מסך המוצר
« פטריותמשפך מותאם אישית מציג כל דף / אפילו צעד, את שאר המבקרים ואת אחוז ההמרה.« פטריותסביבת העבודהSTEPS4CONVERSION28.4%WINDOW72hביקורת עבודה WorkSPACEמחירים שרואים1,420 מבקרים100%תוכנית שנבחרה780 מבקרים54.9%תחילת הבדיקה530 מבקרים37.3%הסדר הושלם403 מבקרים28.4%1DEFINEבחר לבחור 2–8 צעדים2מציאותחלון המרה3המונחים:מצא את הירידה הגדולה ביותר
משפך מותאם אישית מציג כל דף / אפילו צעד, את שאר המבקרים ואת אחוז ההמרה.

« פטריות

צור שם עם 2 To to 8 דף או מדרגות אירוע.קבע את חלון ההמרה בשעות; מבקר נחשב רק כאשר השלבים הצויינים מתרחשים בתוך החלון הזה. השתמש בירידה בין צעדים לבחירה, היכן לבדוק מחדש, שגיאות, מהירות העמוד או הודעות.

שמירה

קבוצות קשבות מבקרים בקבוצות שבועיות ומראה כמה החזרה. 6, 8 או 12 אופק שבועי שמור על הגדרת ה-Comy יציבה בעת השוואת הודעות או קמפיינים.

נתיבים

Paths מפרט את רצפי העמוד הנפוצים ביותר.בחר אורך נתיב ממרחק 2 To to 5 דפים כדי לשמור על התוצאה לקרוא. השתמש בו כדי למצוא detours בלתי צפויים, יציאות נפוצות ותכנים כי שוב ושוב לפני המרה.

פטריות מכס הן הגדרות אנליטיות, לא אוטומציה. להגיב לשלב הושלם, ליצור מטרה המרה, פלח, גורם או זרימת עבודה.

אנליטיקה

חזרה על סשן

סשן Replay מאפשר לך לצפות בקו זמן של מה המבקר עשה באתר שלך: אילו אלמנטים הם לחצו, איך הם לגלול, איפה הם מרחפים, ומה הם מקלידו (עם שדות רגישים המסומנים) להשתמש בו כדי לאבחן בעיות UX, לאמת דוחות באגים ולהבין בלבול לקוחות.

חזרה על סשן
חזרה על סשןנגן חזרות המראה חלון תצוגה של דף עם סמן, לוח מידע על ההפעלה ומסנן קו זמן.חזרה על סשןyoursite.comקנה עכשיוסדנהמשך 3m 12s14 קליקיםשולחן העבודהChrome1241WATCHClicks, Scel, הקלד2MASKEDשדות רגישים חבויים3DIAGNOSEבדוק דוחות באג
החל בדיוק מה שמבקר עשה: קליקים, גלילים, הקלדה (שדות רגישים המסומנים), על ציר זמן.

מציאת המפגש הנכון

בדף ה-Sashs, חפש פגישות עם בעיות דיווח, דף גבוה נחשב ללא המרה או מפגשים מלקוחות שהגישו כרטיסי תמיכה. לחץ על הסמל Replay כדי לפתוח את תצוגת לוח הזמנים.

מה מראה Replay

זמן

בר אופקי המציג אירועים לאורך זמן. לחץ בכל מקום על ציר הזמן לקפוץ לרגע זה.

ניווט Page

כל עומס דף מופיע כקטע על ציר הזמן, אתה יכול לראות את הנתיב המדויק שהמבקר לקח.

לחיצות

אירועי לחיצה מוצגים כנקודות על ציר הזמן וכ מדגישים בשחזור העמוד.

גילוח

עומק Scroll הוא לעקוב כך שתוכל לראות כמה רחוק קורא המבקר.

אינטראקציה

ארועי מיקוד שדה ועיבוד אירועים רשומים.קלט טקסט בסיסמאות ובתחומים רגישים הוא מסוקרן כברירת מחדל.

פרטיות ומסכות

הפעל מחדש את המסכות הרגישות שדות צורה על ידי ברירת מחדל של סיסמאות, קלטי כרטיס אשראי ושדות המסומנים עם נתונים-opsiq-מסק לעולם לא נרשם.אתה יכול להגדיר כללים מסיכה נוספים בהגדרות > מעקב, אם מדיניות הציות שלך דורשת זאת, אתה יכול להשבית את המשחק כולו.

אבחון של בדיקת שבורה

סקורסארי:
לקוח אומר: "ניסיתי לקנות, אבל הכפתור לא עשה כלום".
מה לעשות:

מצא את הפגישה שלהם בדף ה-Sashs (מחקר על ידי דוא"ל) פתח את ה-Replay. Watch את קטע העמוד של Checkout.חפש:1האם הם לחצו על הכפתור הנכון?2(ד) JavaScript טעות מתרחשת? (עיין בדף השגיאות של JS באותו זמן).3האם הדף גרף או הראה הודעת שגיאה?4היה שדה נדרש ריק?המשחק מראה בדיוק מה קרה.

כמה אחסון יש להשתמש ב-Replay?+

נתוני Replay גדלים עם נפח התנועה. השתמש הגדרות שמירה כדי לנקות באופן אוטומטי נתונים ישנים יותר. עבור אתרים הטראגיים גבוהים, לשקול תקופת שימור מחדש קצרה יותר (למשל, 30 ימים) לנהל אחסון.

האם המבקרים יכולים לבחור מתוך משחק מחדש?+

אם "Respect Do Not Track" ניתן בהגדרות, המבקרים עם ראשי DNT אינם רשומים. You יכול גם להוציא דפים ספציפיים מ- replay בהגדרות המעקב.

אנליטיקה

אירועים Log

המופעים מראים כל אירוע OpsIQ נרשמת: תצוגות דף, קליקים, צ'אט מתחיל, יצירת כרטיסים, מכירות ואירועים מותאמים אישית. השתמש בו כדי debug אינטגרציה, לאמת משלוח Webhook ולהבין את רצפי הפעולות.

אירועים Log
אירועים Logיומן אירוע כרונולוגי עם תגים מסוג קוד צבע: דף, צ'אט, מכירה, Webhook והתאמה אישית.אירועים Logyoursite.compageviewארה"ב /pricing12:04:01chat.startבריטניה - widget12:04:09מכירה למכירה$49.00 סדר #104212:05:22WEBhookpayment.succeeded12:05:23customdemo_booked12:06:101EVERYTHINGכל אירוע2DEBUGבדוק את משלוח Webhook3ORDERראה את הרצף המדויק
ציר זמן של הכל OpsIQ רשומות (עמודי עמודים, צ'אטים, מכירות, webhooks, אירועים מותאמים אישית) עבור debugging וביקורת.

אירועים בנויים (automatic)

⚠️
אלה events-log שמות - מהOpsIQרשומות על ציר הזמן של המבקר עבור ניתוח, bugging וביקורת.הם אוצר מילים שונה מן אוצר המילים אחר מן אתר אינטרנט אירועים שאתה מנוי על נקודת קצה: אם אתה בונה מקלט Webhook, השתמש ברשימה בסעיף Webhooks או להתקשר webhooks.events.list; תת-השם מהשולחן הזה לא יספק שום דבר.

כל שורה מציגה את השם שאתה שלח שם הקנוניהOpsIQ חנויות כמו כן, שניהם רשומים: השם הגולמי ששלחת והקניוני שהוא ממפה, כך דו"ח שנכתב נגד הונומיה הקנטוןית ממשיך לעבוד על מי שבכלל משתמשים בעוקב.

pageview page.viewed

עומסי דף עוקבים.URLשם, כינוי ו-Timestamp. page_view ו view הם מתקבלים בדיוק כמו אותו הדבר.

chat_open support.chat_opened

מבקר פותח את צ'אט widget.

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.

Signup conversion.signup

מבקר משלים חותם. Aעופרת היא lead, מאוחסנים כמו conversion.lead.

js_error error.js

A AJavaScriptטעות נלכדת בדף מעקב.

💡
שם אירוע שאתה שולח כי הוא לא אחד של אלה כינויים עדיין רשומים פועלי-אין דבר שפל.זה פשוט אין מיפוי קנוני, כך שהוא לא יתגלגל לדיווחים המבוססים על מס.

אירועים

באפשרותך לשלוח אירועים מותאמים אישית מהאתר או לשרת שלך OpsIQ אירועי Custom שימושיים למעקב אחר פעולות ספציפיות לעסק שלך: לחיצות כפתור, שימוש בתכונות, משחקי וידאו, הורדות וכו '.

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);

אירועים מסננים

אירוע

מסנן על ידי שמות אירועים ספציפיים: דף תצוגה, צ'אט. started, הכרטיס שנוצר וכו '

טווח תאריך

הצג אירועים מתקופת זמן מסוימת.

חיפוש

מידע על אירועים באמצעות מילת מפתח URL דואר אלקטרוני, ערכי רכוש אירועים).

כמה זמן נשמרו האירועים?+

אירועים עוקבים אחר מדיניות השימור שנקבעה בהגדרות: Default: 90 ניתן להגדיר אירועים בעלי ערך גבוה (טיהורים, אירועי אבטחה) עם שמירה ארוכה יותר.

האם ניתן להשתמש ב-A/B בניסויים?+

כן, בעת יצירת ניסוי, אתה בוחר אירוע המרה.כל אירוע מובנה או מותאם אישית יכול לשמש כמטרה המרה

אנליטיקה

A/B ניסויים

ניסויים מאפשרים לך לבחון שתי גרסאות של דף או תכונה ומדידה אשר מבצעים ביצועים טובים יותר. OpsIQ התרשמות, המרות וחשיבות סטטיסטית.

A/B ניסויים
A/B ניסוייםשני כרטיסי גרסאות השוואת שיעורי המרה, עם תג מנצח ומשמעות על הגירסה המובילה.A/B ניסוייםyoursite.comמשתנה A4.2%המרה 1,020 השקפותהמונחים Bמנצח6.8%המרה 1,005 השקפות+62% מעלית) 96% משמעותי1בדיקהשתי גרסאות ראשיות-to-head2מציאותניגודים ומשמעות3החלטתי.לשחרר מנצח
הפעל שתי גרסאות, לצפות בהמרות ובחשיבות סטטיסטית, ולהכריז על הזוכה.

כיצד ניסויים עובדים

1
ליצור ניסוי

תן לזה שם, להגדיר את הפרמטר הראשי שלך (אירוע הסחה), ולהגדיר את הגרסאות (שליטה ומבחן).

2
לרוץ It

OpsIQ באופן אקראי מקצה מבקרים לגרסאות ולעקוב אחר התנהגותם.אל תשנה את הניסוי בזמן שהוא פועל.

3
קרא את התוצאות

לאחר איסוף מספיק נתונים, בדוק את רמת האמון.95% ביטחון פירושו שאתה יכול להיות 95% ברור שהבדל הוא אמיתי, לא מקרי.

מדינות ניסוי

טיוטה

נוצר אך עדיין לא התחיל.אתה יכול לערוך גרסאות ומדיקים.

ריצה

הקצאת מבקרים באופן פעיל לגרסאות.אל תערוך בעת ריצה.

שלם

חשיבות סטטיסטית או הופסקה באופן ידני.תוצאות הן סופיות.

ct

תוצאות נבדקו והניסוי כבר לא נחוץ ברשימה הפעילה.

שיטות הטוב ביותר

Define Your metric Before ההשקה

להחליט מה אתה מודד לפני תחילת בחירת מדד לאחר שתוצאות מראות הטיה.

מנעו תנועה פנימית

הוסף את הקבוצה שלך IP כתובות לרשימת ההדרה, כך שביקורי הצוות אינם תוצאות של skew.

לרוץ מספיק זמן

אל תעצור את הניסוי לאחר 100 אתה צריך מאות או אלפי מבקרים לגרסה אמינה.

מבחן אחד שינוי בזמן

אם תשנה את הכותרת ואת צבע הכפתור, לא תדע איזה שינוי גרם לשיפור.

להקליט את ההחלטה שלך

לאחר סיום הניסוי, שימו לב איזו גרסה ניצחת ומדוע בחרתם ליישם אותה.

כמה מבקרים אני צריך לניסוי תקף?+

זה תלוי קצב ההמרה הבסיסי ואת גודל ההשפעה שאתה רוצה לזהות. ככלל של אצבע: לפחות 500 מבקרים לגרסה 20% עבור אפקטים קטנים יותר, אתה צריך אלפי.

האם ניתן להפעיל ניסויים רבים במקביל?+

כן, אבל היזהרו אם שני ניסויים משפיעים על אותו דף, התוצאות שלהם עלולות אינטראקציה.זה בטוח יותר להפעיל ניסויים על דפים שונים או תכונות בו זמנית.

אנליטיקה

JavaScript טעויות שגיאות

JavaScript שגיאות אוספים שגיאות בצד הלקוח ממבקרי האתר שלך API התקשר, או משאב חסר מופיע כאן. השתמש בו כדי למצוא ולתקן באגים המשפיעים על לקוחות אמיתיים.

שגיאות JS
JavaScript טעויות שגיאותרשימה של שגיאות קדמית שנתפסו עם חומריות, קובץ מקור, דפדפן וספירת אירועים.JavaScript טעויות שגיאותyoursite.comטעויות אחרונותסוג: לא יכול לקרוא x של un מוגדרתגית:js:42 Chrome×214404 טעינה /assets/app.cssהמונחים: Safari×88Uncaught (בהבטחת) NetworkErrorapi.js:17 Firefox×51אזהרה: אירוע לא נטעןיצרן: Edge×331CAPTUREשגיאות בצד הלקוח2IMPACTספירות ודפדפנים3תיקוןבאגים אמיתיים
מבקרים אמיתיים להכות משטח קוד שבור כאן (מסגיל, מקור, דפדפן וכמה פעמים) כך שתוכל לתקן את מה שחשוב.

מה שכל טעות מראה

הודעת שגיאה

The The JavaScript טקסט שגיאה (למשל, "TypeError: Cannot Read Properties of un מוגדר").

עמוד Page URL

איזה דף קרה הטעות.

דפדפן ומכשיר

איזה דפדפן וסוג המכשיר ראו את השגיאה. חלק מהטעויות הן ספציפיות לדפדפן.

עקבות

מיקום הקוד שבו התרחשה השגיאה. Click כדי להרחיב את עקבות ערימה מלאה.

קודם ראה

כשטעות זו הופיעה לראשונה.

ראיתי לאחרונה

כשטעות זו התרחשה לאחרונה.

סכום

כמה פעמים השגיאה הזו כבר הוקלטה.

מפגשים משפיעים

כמה מפגשים שונים חוו טעות זו.

כוונון שגיאות

לא הכל JavaScript שגיאות זקוקות לתשומת לב מיידית: (1שגיאות על דפים קריטיים (בדיקה, הרשמה, כניסה)2שגיאות עם ספירת ישיבה גבוהה (3שגיאות שהופיעו לאחרונה (העברה בלתי אפשרית משינוי קוד)4שגיאות על הקוד שלך (לא תסריטים של צד שלישי).

תיקון כפתור הצצה שבור

סקורסארי:
דף השגיאות של JS מציג את "TypeError: Cannot Read Properties of un מוגדר (קריאה)" על /checkout, השפעה 45 מפגשים השבוע.
מה לעשות:

פירוש הדבר 45 לקוחות אמיתיים לא יכלו להשלים את הבדיקות:1פתח את הדף באותו שילוב דפדפן / שכפול.2קונסולת הדפדפן הפתוחה ומשכפלה את השגיאה.3בדוק את עקבות הערימה כדי למצוא את השורה המדויקת של הקוד.4לתקן את באג, לפרוס ולעקוב אחר ספירת השגיאה הולכת לאפס.

עושה OpsIQ לכידת שגיאות מתסריטי צד שלישי?+

כן, OpsIQ ללכוד את כל JavaScript שגיאות בדף, כולל טעויות מתסריטי ניתוח, צ'אט widgets ו- ad Scripts. URL בערימה של עקבות להתמקד בקוד שלך.

איך אני לא יכול למנוע שגיאות בלתי מזיקות?+

אי אפשר לדכא שגיאות ספציפיות OpsIQ אבל אתה יכול לסנן את הרשימה על ידי דף URL או הודעת שגיאה.תקן או להתעלם מטעויות של הרחבות הדפדפן (לעתים קרובות הן מראות שגיאות ממקורות לא ידועים).

מכירות המכירות

מכירות והמרות

מעקב אחר מכירות מחבר את פלטפורמת החנות או החיוב שלך OpsIQ כך שתוכלו לראות הכנסות לצד התנהגות המבקרים.כל רכישה מיוחסת למסע מבקרים, כך שאתם יודעים אילו דפים, קמפיינים וערוצים מניעים הכנסות.

מכירות המכירות
מכירות המכירותמסך המכירות: הכנסות הכוללות בקרת זמן כל הזמן, חיפוש ושולחן רכישה עדכני (date, לקוח, פלטפורמה, כמות, מקור).מכירות המכירותyoursite.comReVENUE$42,180+18%כל הזמן ▾חיפוש דואר אלקטרוני, IP תגית: Order IDרכישות אחרונותשונאתלקוחפלטפורמהסכוםמקורג'ון 3[email protected]Shopify$49googleג'ון 3[email protected]WooCommerce$129directג'ון 2[email protected]Stripe$480מודעות1ReVENUEהזמנות וחידושים2RECENT PURCHASESתאריך · לקוחות · סכום3ATTRIBUTEDמקור התנועה
מסך המכירות האמיתי, ההכנסות למעלה, ולאחר מכן רכישות אחרונות (date, לקוח, פלטפורמה, כמות), כל אחד מהם מיוחס למקור התנועה שלו.

לוח המחוונים של Sales

המכירות של היום

ההכנסות מהזמנות שהושלמו היום.מדנו עם כל אירוע הזמנה חדש מהפלטפורמה המקושרת שלכם.

השבוע / החודש הזה / Total

ההכנסות המצטברות לאורך התקופה. החזרים ממושכים מהכללים האלה.

טרנד תרשים

גרף קו המציג הכנסות יומיות על טווח התאריך שנבחר.חפש ספייקים (בעיות, קמפיינים) ודיפוסים (רשימות, עונתי).

מקורות המריגה

מקורות תנועה המובילים לקונים ביותר. "Direct" קונים לעתים קרובות מסמנים את האתר שלך. "Google" הקונים מצאו אותך באמצעות חיפוש.

רכישות אחרונות

ההוראות האחרונות עם דואר אלקטרוני של לקוחות, סכום, מטבע ופריטים שנרכשו.

רכישות לא מאומתות (מסע לקוחות)

כאשר המנטר רואה מבקר מגיע אישור רכישה בדפדפן, אך לא פלטפורמה מחוברת דיווחה כי מכירה עדיין, מסע הלקוחות מראה שורה של קנייה (לא מוכוונת) עם תג אבר.זה אף פעם לא נחשב להכנסות.כאשר הפלטפורמה מאשרת את המכירה, הרכישה אישרה מחליפה אותו.

פיוס.

נותני מכירות אינם תלויים בסימן אחד של Webhook.כל אות תשלום שהפלטפורמה שולחת יכול לפתוח את המכירה, וחיבור חוזים 2.3 קורא מחדש את רשימת המכירות המושלמות של הפלטפורמה בלוח הזמנים (default Hour per Workspace) כך שפלטפורמת האינטרנט מעולם לא נמסרה אינה יכולה לאבד מכירה. המפעילים יכולים להפעיל אותה על דרישה מקו הפקודה עם כלים /sales_reconcile.php.

מדריכי ההתקנה Platform

Shopify

לחצו על Connectors >Shopify צור אפליקציה אישית ב- שלך Shopify ניהול (Settings > Apps וערוצי מכירות > פיתוח יישומים) טווחי גרנט: קורא_orders, Read_users, לקרוא_products. להעתיק את Admin API כניסה ל-In OpsIQ הזן את מתחם החנות שלך (למשל, your-store.myshopify.com) ו- Access token. Click Test Connection.If מוצלח, מאפשר לסנכרון Webhook עבור הודעות הזמנה בזמן אמת.

WooCommerce

לחצו על Connectors >WooCommerce בתוך שלך WordPress מנהל, לכו WooCommerce> הגדרות > Advanced > REST API צור מפתח עם אישור Read/Write, העתק את המפתח הצרכני ואת סוד הצרכנים. OpsIQ היכנס לאתר שלך URL מפתח צרכנים וסוד הצרכנים.לחצו על Test Connection

BigCommerce

היכנסו ל- Connectors > BigCommerce.In Your BigCommerce Manager, לכו אל הגדרות מתקדמות >API יצירת V2/V3 API חשבון עם היקף קריאה עבור הזמנות, לקוחות ומוצרים. העתק את אסימונים הגישה, מזהה הלקוח, וכן API היכנסו אליהם פנימה OpsIQ ומבחן.

Magento2

לכו אל Connectors > Magento. in your Magenetto admin, go to System > אינטגרציה. צור שילוב חדש עם API גישה למשאב למכירות, לקוחות וקטלוג. להפעיל את האינטגרציה ולהעתיק את אסימוני הגישה. הזן אותו ב- Enter it in OpsIQ בסיס Magento שלך URL.

PrestaShop

היכנסו אל Connectors > PrestaShop.In your Prestashop admin, לכו ל Parameters מתקדם > Webservice ויצור מפתח חדש.Gant גישה הזמנות, לקוחות ומוצרים. העתק את המפתח ולהזין אותו בתוך שירות זה. OpsIQ עם החנות שלך URL.

OpenCart

עקבו אחרי OpenCart API אישורים של לוח הניהול OpenCart שלך API URL שם משתמש ומפתח OpsIQ המחבר משתמש ב- OpenCart's REST API עבור סדר ונתוני לקוחות.

osCommerce

Go to Connectors > osCommerce. Conform Database Access או API האישורים כפי שמתועדים בהגדרות המחברות.שילוב osCommerce בדרך כלל דורש גישה ישירה של מסד נתונים או מותאם אישית API מודול.

Stripe

Go to Connectors > Stripe. copy your Stripe Limited API מפתח ה- Stripe Dashboard (Developers)API המפתח צריך לקרוא גישה ללקוחות, חיובים, חשבוניות ומנויים. OpsIQ מצגת Webhook נקודות סוף לאירועים בזמן אמת.

Custom / פלטפורמות אחרות

שימוש ב- REST API או Webhooks לשלוח אירועי מכירות מכל פלטפורמה. שלח סדר אירועים שלמים עם דואר אלקטרוני של לקוחות, כמות, מטבע ופריטים.API סעיף לתבנית המטען.

הבנת המשפך המכירות שלך

מקורות המריגה

מראה איזה ערוצים מובילים לקוחות שמשלמים. אם Google מביא 1000 מבקרים ו 50 מכירות, זה. 5% אם דואר אלקטרוני מביא 200 מבקרים ו 30 מכירות, שזה. 15%דוא"ל הוא יותר יעיל עבור כל מבקר.

החזרים

הזמנות חוזרות מתבצעות בנפרד.הם להפחית את סך ההכנסות הנקיות שלך.אם קצב ההחזר גבוה ממקור ספציפי, התנועה עשויה להיות באיכות נמוכה.

ניהול מטבע

OpsIQ מאחסנת את מטבע העסקה המקורי ואת כמות.עסקים רב מטבעות לראות הכנסות בכל מטבע.דיווח רגיל משתמש בתעריף החליפין מוגדר.

דוגמאות עובדות

100 מבקרים, אפס מכירות

סקורסארי:
דף התמחור שלך מקבל 100 מבקרים ביום אבל אפס המרות.
מה לעשות:

מחקר: (1השתמש ב-Switch Replay על המבקרים בדף התמחור, צפה כיצד הם מתקשרים עם שולחן התמחור.2בדוק את העמודים המובילים עבור דף התמחור קפיצות ושעה על דפי (.)3בדוק שיחות צ'אט ממבקרי דף התמחור.מה שאלות הם שואלים?4השוו את דף התמחור שלכם למתחרים.5נסו ניסוי A/B עם פריסות מחירים שונות.

« תגמול לקמפיין שיווקי

סקורסארי:
שלחה קמפיין דואר אלקטרוני עם תגי UTM, איך מודדים את השפעת ההכנסות?
מה לעשות:

עבור אל המכירות והסנן על ידי מקור.חפש את פרמטר הקמפיין UTM.You will see:1כמה מבקרים הגיעו מהדואר.2כמה מהם הפכו למכירות.(3סך ההכנסות המיוחסות לקמפיין.4(בהשוואה לאותה תקופה לפני הקמפיין.

למה המכירות לא מראות אפס למרות שהחנות שלי יש פקודות?+

תגית: (1(הופנה מהדף מחובר ובריא?Go to Connectors ובדוק את הסטטוס.)2האם סינכרון של Webhook מופעל? אם משתמשים בסקר, האם העבודה עלון פועל?3(המחבר הוא הנכון) API טווחים? Shopify אתה צריך לקרוא_orders.

איך עושים OpsIQ מייחס מכירה למבקרים?+

כאשר הזמנה מגיעה דרך המחבר, OpsIQ תואם את הודעת הדואר האלקטרוני של הלקוח למבקר ידוע.אם המבקר היה במעקב לפני הרכישה, המכירה מיוחסת למסע המבקרים שלהם, כולל מקור התנועה, דף הנחיתה והיסטוריית הישיבה.

האם אפשר להוסיף מכירות באופן ידני?+

ניתן לשלוח אירועי מכירות באמצעות REST API או webhooks מכל מערכת.תבנית האירוע מתועדת באירועים API סעיף.

מסחר

בנה, להפעיל ולהפעיל את ה- Native Storefront

החנות היאOpsIQחנות Native למוצרים, דפים, חוברות מבט, לוחות קידום מכירות, צ'קאאוט, חשבונות לקוחות ו- AI-assisted למכור בצ'אט הלקוחות ונתמך בערוצים חברתיים.

התחל בשיווק→החנותfront

1
בחרו את סביבת העבודה

לאשר את האתר שאתה configuring. מוצרים, הגדרות, דפים, הזמנות וניתוח מבודדים למרחב העבודה הזה.

2
מסחר אלקטרוני וחנותfront

הגדרות כלליות→מסחר אלקטרוני הוא סמכות ההורה. Storefront פרסום, יצירת הזמנה ותשלומים נותרים נפרדים כך שתוכל לצפות בקטלוג בבטחה.

3
מוצרים מלאים

הגדר סוג מוצר, מחיר, מטבע, מלאי, גרסאות / אווטיפים, מדיה והגשמה. להציג את המוצר ואת אפשרויות בדיקת לפני פרסום.

4
טופס תשלום והגשמה

חיבור שער או הוספת העברה בנקאית, מזומנים או תשלום נגד.מוצרים פיזיים זקוקים לאזורי משלוח או לאיסוף; מוצרים דיגיטליים צריכים קבצים מוגנים או קודים.

5
הפעל מחדש Readiness

לתקן כל חוסם ולבחון את כל האזהרה, ולאחר מכן להשלים הזמנה של ארגז חול מהחנות הציבורית.

התחל על ותוכן מדיניות

חנויות חדשות ומשדרגות מקבלות טקסט ממתאם ל-Exter אודות us, תנאים ותנאים, פרטיות הפרטיותו החזרים ותשואות כאשר שדות אלה ריקים.העתק המסחרי הקיים אינו נכתב יתר על המידה.

  • להחליף כל [Add …] מהיר ו « כוכבי הלכת TEMPLATE הודעה לפני ההשקה
  • השתמש בשם המשפטי האמיתי, נתיב מגע, הבטחות סיפוק, חוקי החזרה, נהלי נתונים, תקופות שמירה ושווקים שירתו.
  • ייעוץ אובססיבי למוצרים ולמדינות שאתה משרת.המתחיל הוא הדרכה מבצעית, לא ייעוץ משפטי.

עיצוב, דפים וקידומים

ערכת נושא ועיצוב דף

בחר נושא צבע וקומפוזיציה, ואז כוון את הטיפוגרפיה, מילוי/שינויים בגובה, צורות, רוחב, תנועה, הקפצה והתנהגותיות בהירה/כהה. הצג תצוגה מקדימה של שולחן העבודה והטלפון לפני שומרם.

אודות, Contact, Showcase/Seebook and Account

בנה כל דף מבלוקים הניתנים לסידור מחדש.כל בלוק יש גרסאות עיצוב פרימיום. שמור על בלוקים של תביעות כגון סטטיסטיקה, צוות, פרסים או ציטוטים עד התוכן שלהם הוא נכון.

דפי מכס

שם הסרטון: Slug, Hero SEO ומכשולים מסודרים; בתצוגה מקדימה, ולאחר מכן לפרסם את נתיבי החנות השמורים כגון עגלות, בדיקה, חשבון ומדיניות לא ניתן להשתמש בהם מחדש.

חבילות נופש ופאנלים צדדיים

צור דף מודולי עם לפחות בלוק אחד. בחר עיצוב פרימיום, מרכז / ימין / מיקום קידוד, עומס / עיכוב / לחץ / ללחוץ, רקע, תנועה, רוחב, קופונים והתנהגות פעם-per-visitor.

תפריטים ו Footer

קישור לדפים, מוצרים, אוספים, מדיניות, חשבון / עזרה / פעולות, מודולים חיים או בטוח חיצוניURLsפריטים ראשיים תומכים ברמת ירידה אחת / מאגה-מנדו.

צ'אט לקוחות והזמנות חברתיות

לאחר מכן, לקוחות פוטנציאליים צ'אט מוכר, בחרו היכן הלקוחות עשויים לרכוש.העזר מחפש את הקטלוג ומבקש מהשרת לצטט סמכותי; השרת – לא המודל - יוצר כרטיס ההזמנה חתום קורה רק באמצעות אותו הכרטיס באינטרנט או אינטראקציה מאומתת בערוץ החברתי.

WhatsApp, Messenger, Instagram, Telegram, LINE, SMS ו- X משתמשים בחשבון הערוץ המאומת על ידי הספק כזהות ערוץ. דואר אלקטרוני עדיין נאסף עבור קבלות. הזמנה של חיבור שומרת על החוזה האוניברסלי שלה וחוזה הסוחר הרשמי; ההגדרות של Storefront לא משנות את החוזה הזה.

ניתוח מודיעין

סקירה מבקרים ייחודיים, תצוגות מוצר, תוספות עגלות, התחל / abandons / שותפים, המרה, הזמנות מאושרות, הכנסות מטבע, רכישה, מכשירים, מדינות / אקלים, מוצרים העליון, התאוששות ואזהרות באיכות נתונים. ניגוד משתמש במפורש מתויגת אירועים ציבוריים-Store; מטבעות אינם משולבים באופן שקט. A dash פירושו הטווח שנבחר אינו יכול לענות על השאלה - לא אפס אחוז.

גנרל כלליOpsIQ API

השתמש מפתח דוב עם commerce.read; analytics.read כמו כן, מעניק את תמונת הניתוח.מרחב העבודה הכרוך של המפתח הוא סמכותי.

Type Storefront
{ "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 } }

חזית החנות מחזירה הגדרה בטוחה לציבור, URLקטלוג חנות מחזיר כל נושא, עיצוב דף, סוג בלוקים, הרכב בלוקים וצלחת פרמיום לקידום כך שבונים מרחוקים לא יקודדו בחירות. רשימת עמודים מחזירה את הדפים המותאמים אישית ואת מודל הפרימיום. ניתוח מחזירים אגרסים ללא זהויות של לקוחות. מוכנות חוזרת על בדיקות הפעלה פועלות. OpenAPI ו Postman להשתמש באותם חוזים.

כונן טרום-המראה האחרון

  1. שולחן העבודה והטלפון: בית, חיפוש, מוצר / השחלות, עגלת, אימות צ'ק, חשבון, מעקב, הורדות, על, מגע, מדיניות, תיאורים, דפים, תפריטים וכל קידום חי.
  2. שלם תשלום ארגז חול אחד ולוודא מעמד סדר, קבלה, מלאי והגשמה.
  3. להציב הזמנה אחת של צ'אט לקוח וצו אחד של ספק-סנדפסה על כל ערוץ חברתי אפשרי.
  4. ודא כי אירועים אלה מופיעים מתחת לפני השטח הנכון ואת המטבע ב-Creative Intelligence.
⚠️
טקסט מדיניות Starter הופך חנות ללא חנינה, אבל זה לא עושה את העותק המשפטי נבדק. Launch Readness ממשיך להזהיר עד שכל פריט מוחלף.
מכירות המכירות

מוביל

מובילים הם מבקרים או לקוחות המציגים רכישה או תמיכה בכוונות. OpsIQ באופן אוטומטי לזהות מוביל מבוסס על התנהגות: ביקורים בעמוד התמחור, ביקורי החזרה, אינטראקציות צ'אט, מתחיל לבדוק, ומעורבות גבוהה. השתמש בדף הראשי כדי לאשר מעקב ולהזין את צינורות CRM שלך.

מוביל
מובילמסך העופרת: שולחן חיפוש עם IP/ דוא"ל, מיקום, מכשיר, מקור ועמודות בזמן באתר, ומקור עליון ומדינה.מובילyoursite.comחיפוש חיפוש IP עיר, מדינה...מקור: google- Top Country: USIP EMAILמיקוםהתקןמקורזמן41.62.10.4לונדוןניידgoogle4m12s[email protected]ניו יורקשולחן עבודהdirect7m02s[email protected]ברליןניידתגית:ads5 40s203.0.113.9CA) טורונטושולחן עבודהgoogle3m28s1DETECTEDמבקרים בעלי ערך גבוה2TOPמקורות מובילים ומדינות3ENRICHEDIP מיקום, מכשיר, זמן
מסך העופרת האמיתי, מבקרים בעלי עקביות גבוהה כשולחן חיפוש (IP_</email, Location, Device, Source, Time on Site) עם מקורות ומדינות.

מה הופך את המוביל

ביקורי דף

מבקרים שרואים את התמחור או דף התוכניות שלך שוקלים באופן פעיל רכישה.

ביקורים חוזרים

מבקרים שחזרו מספר פעמים עוסקים אך עדיין לא מומרים.

צ'אט אינטראקציות

מבקרים שמתחילים צ'אט מחפשים עזרה באופן פעיל, או לפני טיהור או פוסט-פורצ'ה.

תחילת Checkout

מבקרים המגיעים לדף הסימון, אך אינם משלימים את הרכישה.

טופס

מבקרים אשר להגיש טופס מגע, בקשה להדגמה או טופס ההרשמה.

מעורבות בעמוד גבוה

מבקרים שרואים דפים רבים עם משך ישיבה ארוך הם מחקר מעמיק.

לוח פרטיות מוביל

לחץ על כל גורם כדי לראות את הפרופיל המלא שלו:

זהות

שם, דוא"ל, חברה אם ידוע. Anonymous מוביל המופע IP המיקום.

ישיבות

כל המפגשים מעופרת זו עם זרימת דף, משך זמן ומקור.

דפים צפו

כל דף שביקרו, הורה על ידי פתיחות.

מקור Source

איך הם מצאו אותך: אורגני, בתשלום, חברתי, הפניה, ישיר.

תוצאות

A A0-100 ציון מבוסס על עוצמת התנהגות, פתיחות וכוונות דף.

מצב CRM

בין אם זה מוביל ל-CRM כמגע או עסקה.

טיפ המכירות

הצעה מגובשת על מה לעשות בהמשך (למשל, "מחירים אלימים"3 פעמים) לשקול OUTRECHTERCTION

תגים מובילים

מוביל עם ציון למעלה 80 קבלו תג "ערך גבוה" - אלה הם הסיכויים החמים ביותר שלכם.תעדו אותם ל- Outreach, צ'אט פרואקטיבי או כניסה לצינור של CRM.

דוגמאות עובדות

עבודה עם מוביל חם

סקורסארי:
ראשי > תוצאות חיפוש דף התמחור שלך 3 פעמים 2 ימים התחילו צ'אט שואל על תוכניות ארגוניות, אך לא נרכש.
מה לעשות:

זהו מוביל גבוה.צעדים: (1בדוק את הפרטים המובילים שלהם עבור החברה ומידע על תפקיד.2סקירה על תמליל הצ'אט לצרכים ואובייקטים ספציפיים.3• יצירת עסקה ב- CRM עם המידע שנאסף.4(כ) המשימה של חבר צוות מכירות.5אם הם חוזרים לדף התמחור, כלל הצ'אט הפרואקטיבי יכול לעורר הודעה אישית.

המרת מטרות אנונימיות לאנשי קשר של CRM

סקורסארי:
יש לך 50 אנונימי מוביל עם ציונים גבוהים אבל אין כתובת דוא"ל.
מה לעשות:

אפשרויות: (1) ליצור חוק פרואקטיבי המציע הנחה או הורדה משאבים בתמורה לדואר אלקטרוני על דפים בעלי ערך גבוה.2השתמש בצ'אט widget כדי לבקש דוא"ל כאשר מבקרים אנונימיים מתחילים שיחה.3הוסף אות זהות לדפי הכניסה/החתימה שלך כך שמבקרים חוזרים זוהו באופן אוטומטי.

איך הציון המוביל מחושב?+

הציון רואה: פתיחות של ביקורים (עלייה = גבוה יותר), תדירות הביקורים (יותר=גבוה), דפים שנצפו (pricing / Checkout=גבוה יותר), משך הפגישה (ארוך = גבוה), אינטראקציות צ'אט (מעובד = גבוה) וחזרו לביקורים (פגישות גיל = גבוה).

האם אני יכול להתאים אישית את חוקי הסימון?+

כן, ב- CRM Configuration, באפשרותך להוסיף כללים מובילים המגבירים את הציון בהתבסס על מילות מפתח ספציפיות, אירועים, מקורות או תבניות דף.

אתר האינטרנט הרשמי של CRM

ה-CRM שלך מתחיל כאן

OpsIQ ספינות CRM מלא AI-First שלוכדות את האמת של הלקוח, מנקה נתונים, ציונים מוביל, מאמנים עסקאות, חוזים הכנסות, ופועלים, עם מודיעין באתר, תמיכה, כרטיסים, מוצרים ותשלומים כאחד חי גרף. כל פעולה בבינה מלאכותית מקורו, מסביר, ניתן לשנות ולשליטה באישור.

CRM במחשב
AI CRM סקירהאמון דיאל מוגדר לטייס קו ליד ארבעה כרטיסי סוכן AI: Steward, Prospector, Retention and Analyst.CRM במחשבסביבת העבודהאמון דיאלידניטייס Coטייס אוטומטיכמה בינה מלאכותית עושה בכוחות עצמהDSDSסטיוארט.דודופ, העשרה,אימות נתוניםSDRפרוספקטורמצא & ציוןעסקים חדשיםתרגילשמירהחתיכה,חידושיםאהה.אנליסטתחזית &הסבר מספר מספרים1AI-FIRSTארבעה סוכנים מקצועיים2YOU DECIDEאמון באוטונומיה דיאל3TRUSTEDמקור & reversible
CRM ראשון AI מנוהל על ידי ארבעה סוכנים מומחים, ואמון דיאל מחליט כמה הם עושים בעצמם.

CRMדפים סקירה

AI CRM (מרכז משותף)

התחל כאן

מסך הבית היומי שלך: דופק הכנסות, מה AI מצא, מה הוא עשה, תור אישור, מהלכים הבאים, בריאות הסוכן ו-ROI.

אנשי קשר

מרכז

אנשים וחברות ב- CRM שלך.חיפוש, סינון, ציון ולנהל פרופילים.

צינור

מרכז

לוח פעולה חזותי עם שלבים של גרגור-אנדרופ, זוכה בהסתברות ואימון בינה מלאכותית.

תחזית ודיווחים

מרכז

תחזית ברמת מועצת המנהלים: מחויבת, סביר להניח, במקרה הטוב ביותר, עם מרווחי ביטחון ועיבוד דיוק.

מחזור חיים

מרכז

כאשר כל לקוח עומד: פעיל, בסיכון, הרחבה מוכן, חידוש עקב או כרע.

בנה את ה- CRM שלי

קונפדיג

תאר את ההתקנה של ה- CRM שלך באנגלית. OpsIQ הוא יוצר תוכנית הפוכה ומיישם אותה על אישור.

CRM בריאות

אופוס

דף בדיקה עצמית: סכמה, סוכנים, מסלולים, פעולות AI וספירת נתונים חיה.

איך OpsIQ שומר אותך בטוח

שאל לפני משחק

הצעות בינה מלאכותית מגיעות לתור האישור.אתה מאשר, לערוך או לדחות כל אחד מהם.שום דבר לא קורה ללא המילים שלך.

לעולם אל תכתבו

כאשר AI מציע שינוי, הוא מראה את הערך הנוכחי ואת הערך המוצע.

הכל הופך

כל פעולה של בינה מלאכותית רשומה בכתב העת, אתה יכול לבטל שינוי עם לחיצה אחת.

להסביר

כל המלצה של בינה מלאכותית מראה את ההגיון שלה ואת מקורות הנתונים שבהם השתמש.

מותג חדש?התחל כאן

1
CRM פתוח AI

לחץ על AI CRM בניווט השמאלי.מרכז הפיקוד מראה את המדינה הנוכחית שלך.

2
בדיקת CRM בריאות

Open CRM Health כדי לאמת את ה-schema, סוכנים וכבישים מוכנים.

3
יבוא אנשי קשר

אם מחבר פעיל (Shopify, WHMCS וכו '), מגעים מיובאים באופן אוטומטי. CSV או ליצור באופן ידני.

4
ליצור צינור

לכו לצנרת וליצור את הצינור הראשון שלכם עם שלבים (למשל, להוביל, Qualified, Proposal, מו"מ, ווון).

5
הוסף את העסקה הראשונה שלך

יצירת עסקה ממגע, להגדיר את הסכום והשלב ולתת מאמן העסקה להנחות אותך.

האם אני צריך להשתמש ב- CRM?+

ה-CRM הוא אופציונלי. OpsIQ עובד בצורה מושלמת כפלטפורמת מעקב + תמיכה ב-AI ללא ה- CRM.אפשר לעשות זאת כאשר אתם מוכנים לנהל מערכות יחסים של מכירות ולקוחות.

האם CRM יכול לעבוד ללא מחברים?+

כן, אתה יכול ליצור קשרים ועסקאות באופן ידני. Connectors להעשיר את ה- CRM עם נתונים פלטפורמה (סדרים, מנויים, כרטיסים) אבל לא נדרשים.

מהו שכבת האמון?+

שכבת האמון היא מערכת הבטיחות השולטת במה ש-AI יכול לעשות. Coפיילוט מצב (default): AI מציע, אדם מאשר את מצב טייס אוטומטי (opt-in): בינה מלאכותית פועלת באופן אוטומטי על פעולות בסיכון נמוך וניתוק.

אתר האינטרנט הרשמי של CRM

מסך הבית של AI CRM

מרכז הפיקוד הוא הקיצור היומי שלך, פתח אותו כל בוקר כדי לראות מה קרה, מה צריך תשומת לב ומה לעשות בהמשך.

מרכז הפיקוד
מרכז הפיקוד CRMה- CRM הביתה עם תחזיות / פסגות / פילין, KPI במשקל, ו תור הצעה AI עם Aprov and Dismiss על כל שורה.מרכז הפיקוד CRMסביבת העבודהתחזיתשיעור ניצחוןצינורראשי > חדשות > This Q74 אלף דולר.87%הצעות AI - אישור תוריצירת הסכם - Acme $ 24kמתוך צ'אט עם הקונהשיפורטירונותהזיז Nimbus→הצעת הצעהתגובה חיובית מזוההשיפורטירונותעקבו אחרי Peakאין פעילות 7 ימיםשיפורטירונות1TOGGLEForecast · Win rate · Pipeline2AI PROPOSESעסקאות, שלבים, משימות3YOU DECIDEשיפור או דיסכי
מרכז הפיקוד האמיתי: מתג בין חיזוי, קצב ופירליין, ולעבוד תור ההצעה של AI, לאשר או לבטל את העסקאות, שלב נע ומשימות שהוא מציע.

מה מרכז הפיקוד מראה

המספרים של היום

ערך פיפירי, עסקאות ניצח/הפסדים, מובילות חדשות, עסקאות פעילות ומגמה של הכנסות, צילום המדינה הנוכחית שלך.

מה OpsIQ נמצאו

תובנות מבוססות בינה מלאכותית: עסקאות דוכננות, חשבונות בסיכון, הזדמנויות חדשות, בעיות איכות נתונים וסימנים בשוק.

מה OpsIQ עשה

פעולות הבינה המלאכותית (בטייס אוטומטי) או הוצעו (ב-Co-פיילוט): התקדמות שלב, עדכונים, העשרה מגע ויצירת משימה.

צריך אישור

בעקבות הצעות בינה מלאכותית המתינו להחלטתכם, כל אחד מהם מראה את הפעולה המוצעת, ההיגיון והראיות. Aprov, Edit orדחייה.

מהלכים הבאים

רשימת AI-ranked 10 הדבר החשוב ביותר לעשות היום: לעקוב אחר עסקה חמה, לבדוק חשבון בסיכון, מחקר מוביל חדש וכו '.

סטטוס עזרה

בריאות סוכני AI: ללכוד, Data Steward, Deal Intelligence, Deal Coach, SDR, Retention. Green=ריצה, amber = זקוק לתשומת לב, אדום = טעות.

תוצאות

מעקב ROI: עסקאות המושפעות מ-AI, זמן שנשמר, דיוק התחזיות והשוואה לעבודה ידנית של CRM.

בוקר קצרת עבודה

1
קרא את המספרים של היום

בדוק את בריאות ההזנה ואת תחזית ההכנסות של צינורות, האם אתה עוקב החודש?

2
המונחים: theאישור

בדוק כל הצעה של AI.פרו פעולות בטוחות, לערוך במידת הצורך, לדחות הצעות רעות.

3
בדוק מה OpsIQ נמצאו

האם יש בעיות ב-AI?האם קיימות הזדמנויות חדשות?

4
עבודה ברשימת המהלכים הבאים

התחל עם העדיפות העליונה. AI מדורגת אלה על ידי דחיפות ואפקטים פוטנציאליים.

לתפוס אחרי זמן

סקורסארי:
היית בחוץ שבוע, מה קרה כשנעלמת?
מה לעשות:

פתח את מרכז הפיקוד ובדוק:1מה)OpsIQ"עשו" מראה את כל פעולות הבינה המלאכותית במהלך היעדרותו.2(האישור של אישורים) מראה הצעות המתנה לסקירה שלך.3מה)OpsIQ נמצא" מדגיש פריטים דחופים.4הגדר את טווח תאריך לוח המחוונים לתקופה היעדרות כדי לראות את המגמה.

אתר האינטרנט הרשמי של CRM

אנשי קשר, חברות ועסקאות

ה- CRM מארגן את מערכות היחסים העסקיות שלך לארבעה אובייקטים: אנשי קשר (אנשים), חברות (ארגונים), עסקאות (הזדמנויות נוספות) ומשימות (פעולות מעקב).

CRM אובייקטים
CRM אובייקטיםרישום מגע הקשור לחברה, Deal and Task Objects in a Connect גרפן.CRM אובייקטיםסביבת העבודהצור קשראדם · דוא" ל · טלפוןחברהaccountsהסכםהזדמנותמשימותפעולה שלאחר מכן1OBJECTSאנשי קשר, חברות, עסקאות2LINKEDגרף מחובר3TASKSהודעות מעקב הצטרפו
ארבעה אובייקטים מרכזיים (מגעים, חברות, עסקאות ומשימות) מקושרים לגרף לקוח מחובר אחד.

אנשי קשר

מה זה מגע

אדם ב- CRM שלך.הם עשויים להיות לקוח, הזדמנות, שותף או מוביל אנשי קשר יש דוא"ל, שם, חברה, תגים, שלב מחזור חיים וציון חום.

מציאת אנשי קשר

השתמש בבר החיפוש כדי למצוא על ידי שם, דוא"ל, חברה או תגים. השתמש מסננים: שלב מחזור חיים, ציון מוביל, מקור, מדינה, תאריך פעילות אחרון, בעלים מוקצה.

פרופיל מגע

לחץ על מגע כדי לראות את הפרופיל המלא שלהם: מידע אישי, חברה, עסקאות, כרטיסים, צ'אטים, ביקורים באתר, ציון מוביל ותובנות AI.

תוצאות חמות

A A0-100 ציון מחושב אותות התנהגות: ביקורים באתר, מעורבות דואר אלקטרוני, אינטראקציות צ'אט, היסטוריה רכישה ותיקון. גבוה = חם יותר.

חברות

עוד כרטיסים...
קישור ליצירת קשר

אנשי קשר קשורים לחברות על ידי תחום דואר אלקטרוני או משימה ידנית.חברה אחת יכולה להיות בעלת קשרים רבים.

עסקאות

מה זה הסכם

הזדמנות להכנסות. Deals יש כותרת, כמות, צינורות, שלב, הסתברות לנצח, תאריך קרוב, בעלים מוקצה וקשרי קשר / שותפים.

הסתברות

סיכוי של אחוז לזכות בעסקה.קבע באופן ידני או מחושב על ידי AI בהתבסס על נתוני הניצחון ההיסטוריים שלך.

התמודדות עם הבריאות

ירוק (בריא), אמבר (בסיכון), או אדום (המבוסס על רצף פעילות, משך שלב וסימנים של מעורבות.

משימות

מהי משימה

פעולה מעקב שהוקצה לאדם.משימות יש כותרת, תאריך מראש, סוג (כתובת, דוא"ל, פגישה, אחר), וקשר/עסק מקושר.

משימות AI-generated

AI יוצר משימות באופן אוטומטי כאשר הוא מזהה משהו זקוק לתשומת לב: לעקוב אחר עסקה דוועת, להגיב לחשבון בסיכון, מחקר חדש.

מציאת מוביל חם

סקורסארי:
אתה רוצה לראות את כל אנשי הקשר הגבוהים בבריטניה שלא התקשרו אליהם לאחרונה.
מה לעשות:

עבור אנשי קשר: ציון מוביל > 80 מדינה = בריטניה, פעילות אחרונה > 7 לפני ימים.מיין על ידי הציון המוביל יורד, אלה הם מובילי ההזנחה החמים ביותר שלך, עדיפות החוצה.

יצירת עסקה ממגע

סקורסארי:
מגע רק הביע עניין בתוכנית הארגונית שלך במהלך צ'אט.
מה לעשות:

פתח את פרופיל המגע.לחץ על "עסקת חירום" להיכנס לכותרת העסקה (למשל, "Acme Corp - Enterprise Plan"), כמות, צינורות ושלב (לדוגמה, "Qualified") לקבוע את התאריך הקרוב ולהקצות אותו לעצמך.מאמן דיל יתחיל לעקוב אחר ההזדמנות הזו.

אתר האינטרנט הרשמי של CRM

לוח העסקה שלך (מועצת העסקה שלך)

הפישוט הוא לוח חזותי שבו עסקאות לעבור דרך שלבים משמאל ימינה.דרדר וכרטיסים טיפות כדי לקדם עסקאות.כל כרטיס מראה את סכום העסקה, לזכות בהסתברות ובמצב הבריאות.

צינור
צינורות CRMמסך הצינור עם Open-deals, Open-value, משקל-forecast ו- Attributed-deales סטטינים, כפתור חדש של New-deal, תור AI Aprovation, ואת לוח מוביל/המכונה / Won.צינורסביבת העבודהעסקאות פתוחות23ערך פתוח128 אלף דולר.תחזית משקל74 אלף דולר.עסקאות מותאמות12+ הסכם חדשהמונחים: mitance תור2 ביקורתעופרתוולט Inc4kאש6kמוכשרנימבוס.30kשיא Peak9kניצחוןאוביט48k1LIVE STATSערך פתוח וחיזוי משקל2AI QUEUEהצעות נוספות לעסקאות3BOARDעסקאות על ידי שלב
מסך הצינור האמיתי: סטטינים חיים (ערך פתוח, תחזית מואצת), תור AI Aprov for Pro Deals המוצע, ולוח הגרור-and-drop.

שימוש ב-צנרת

1
ראה את העסקאות שלך

הצינור מראה את כל העסקאות הפעילות ככרטיסים מסודרים בעמודות (שלבים) כל כותרת טור מציגה את הערך הכולל של עסקאות בשלב זה.

2
לדחוף קדימה

גרור כרטיס לשלב הבא.הסיכוי הזוכה ועדכון מיידי אם המהלך נכשל (טעות אימות), הכרטיס חוזר לעמדתו המקורית.

3
תגית: Card tags

תג ירוק = פעילות בריאה (פעילות מוגברת, במסלול) אמבר = בסיכון (ירידה, צריכה תשומת לב). Red= דוכנים (אין פעילות במשך זמן רב מדי).

4
לחץ לפרטים

לחץ על כרטיס כדי לפתוח את לוח פרטי העסקה עם אנשי קשר, פעילויות, קצר המאמן דיל ופעולות מהירות.

תור האישור

הצעות בינה מלאכותית מופיעות בתור האישור בחלק העליון של דף הצינור.כל הצעה מראה מה ה-AI רוצה לעשות, למה והראיות.

שיפור

קבלו את ההצעה כ-is.הפעולה עוברת דרך שכבת האמון ומוקלטת בכתב העת.

Editעריכה

לשנות את ההצעה לפני אישור.לדוגמה, לשנות את השלב המוצע או להתאים את הסכום.

דחייה

ההחלטה: הבינה המלאכותית לומדת מדחייה כדי להציע הצעות טובות יותר בעתיד.

הסתברות הסביר

ניתן להגדיר הסתברות Win באופן ידני או מחושב על ידי AI.כאשר בינה מלאכותית מחשבת אותו, היא משתמשת במודל מאומן בעסקאות סגורות משלך (וון והפסד) אם אין לך מספיק נתונים היסטוריים, ה-AI משתמש בהסתברות של שלב ברירת המחדל. $10,000 הסכם 30% ההסתברות תורמת $3,000 תחזית "כמו"

להעביר עסקה למנצח

סקורסארי:
לקוח חתם על החוזה ושילם.
מה לעשות:

הזיזו את כרטיס העסקה לשלב "Won". OpsIQ תגית: (1(ב) מארק העסקה כסגורה.2(עדכון התחזית)3הוסף פעילות "Won" לציר הזמן.4(אם נקבע, גרור אירוע Webhook (קריב).5• עדכון שלב מחזור החיים ליצירת קשר ל- "Customer".

עסקאות תקועות

סקורסארי:
אתה רוצה למצוא עסקאות שהיו באותו שלב במשך זמן.
מה לעשות:

חפש תגים אדומים (התערומים) על לוח הצינור.עסקאות אלה לא היו פעילות יותר מאשר סף רוטט מוגדר (set in CRM Configuration > Pipelines). לחץ על כל עסקה דו-צדדית כדי לראות את המלצת המאמן של Deal להפעלה.

האם אפשר לקבל מספר צינורות?+

כן, היכנס ל-CRM Configuration > Pipelines כדי ליצור צינורות נוספים.מקרים של שימוש משותף: צינורות נפרדים לעסקים חדשים לעומת חידושים, או למוצרים / שירותים שונים.

מה קורה כשדוחקים עסקה ל"אבודים"?+

העסקה מסומנת כסגורה. תתבקשו מסיבה אובדן.העסקה מוסרת מהדירקטוריון הפעיל, אך ניתן למצוא במסנן העסקאות סגורות.CRM.

אתר האינטרנט הרשמי של CRM

אימון

מאמן דיל מנתח כל עסקה ונותן לך קצר עם מצב בריאות, אותות סיכון, אנשים מרכזיים, רשימת כישורים, מפגש מראש, ומציע פעולות הבאות.הכל מקורו.המאמן מראה איזה כרטיס, צ'אט או פעילות תביעה מגיעה.

מאמן דיל
מאמן דילכרטיס העסקה מציג אותות סיכון של AI עם מקורות ראיות, לצד המלצה ב-AI ולחיצת כפתור דואר אלקטרוני.מאמן דילסביבת העבודהAcme Corp $24,000שלב: הצעה 60% ניצחון מנצחסימני סיכוןאין תשובה 10 ימים ימיםאלוף הלך שקטתחרותית שהוזכרה בצ'אטSources: ticket #482 · chat 6/12 · email threadAI ממליץמחדש את הכלכלהקונה עם ROI recapו 7תוכנית קרובה של יום.כתב את הדוא" ל1SIGNALSמדוע עסקה עלולה לחמוק2SOURCEDכל תביעה מציינת ראיות3אקשן.One-click Next
המאמן דגל מדוע עסקה עשויה להחליק (כל אות מצטט את מקורו) ולכפות לך את הצעד הבא.

מה המאמן אומר לך

הסבר בריאות

מדוע העסקה בריאה, בסיכון או דוכנים אותות ספציפיים: ימים בשלב, תאריך מגע אחרון, תדירות פעילות, אזכורי מתחרים, דפוסים התנגדות.

אותות

ל: התנגדות שהועלו, אזכורי מתחרים, דיונים תמחור, תמיכה באינדיקטורים סיכון, אותות חידוש / ירידה.כל אות קישור למקור שלה (טלפון תמליל, כרטיס, דוא"ל, פעילות).

אלוף ומפת בלוק

מי עוזר לעסקה (מדגם) ומי מתנגד (blocker) בהתבסס על ניתוח אינטראקציה ותפקידי מגע.

רשימת בדיקה

MEDDICC או BANT Checklist (התראות) מראה אילו קריטריונים של הסמכה הם נפגשו ואשר נעדרים.דרגה: A, B, C, D או F.

מפגש לפני

לפני פגישה מתוכננת, המאמן יוצר קצר: סדר היום, נקודות מפתח כדי לכסות, שאלות לשאול, סיכונים לכתובת וחומרים להתכונן.

תגובה ותכניות קריאה

מסר או התקשר לתסריט מבוסס על מצב העסקה הנוכחי ואינטראקציות האחרונות.

המונחים: timeline

כל תביעה שהמאמן עושה קישורים למקור: מספר כרטיס, מזהה צ'אט, תאריך פעילות או ביקור באתר.

איך להשתמש במאמן

1
קרא את הקצר

פתח כל עסקה וגלול למחלקת מאמן דיל.קרא את מצב הבריאות ואת אותות המפתח.

2
פערים מקצועיים

בדוק את רשימת הכישורים: אם "הלקוח האוטונומי" חסר, מתכנן לזהות ולעסוק בבעל התקציב.

3
לפעול על הצעות

המאמן מציע פעולות קונקרטיות הבאות.לחצו כדי ליצור משימה, לנסח אימייל או לקבוע פגישה, כל הנצמד באמצעות תור האישור.

להתכונן לפגישה גדולה

סקורסארי:
יש לך פגישה עם הזדמנות מחר $50,000 העסקה.
מה לעשות:

פתח את העסקה וקרא את הפרק "הכנת פגישות".1נקודות דיון חשובות בהתבסס על אינטראקציה אחרונה.2התנגדויות שהם העלו בצ'אט בשבוע שעבר.3מתחרה שהם הזכירו בכרטיס תמיכה.4שאלות לשאול על קווי הזמן שלהם.5גורמי סיכון להתמודדות אקטיבית, השתמשו במסמך הזה כדי להכין סדר יום ממוקד ומבוססת ראיות.

להבין מדוע עסקה בסכנה

סקורסארי:
הצינור מראה תג אדום על עסקה שחשבת שהיא הולכת טוב.
מה לעשות:

לחצו על העסקה וקראו את הסבר בריאות המאמן של ה- Deal Coach. It עשוי לומר: "העסקה הזו הייתה בשלב הצעתי עבורה. 22 ימים (הסתר: 14 מגע אחרון היה 11 לפני ימים פתח הקשר העיקרי כרטיס תמיכה על חששות הגירה נתונים 5 לפני ימים (כרטיס #T-892(הופנה מהדף דאגה הגירה ותזמן שיחת מעקב "עכשיו אתה יודע בדיוק מה לתקן.

אתר האינטרנט הרשמי של CRM

תחזיות ודיווחים

תחזית ברמת מועצת המנהלים עם מגוון עצום, הסברים לשינוי ברמה של הסכם, מעקב דיוק כך שתוכל להוכיח ולהסביר את המספרים שלך.

תחזית
תחזיתמספר תחזית רבעון עם Commit, הטוב ביותר להקות פיפיר והערה דיוק.תחזיתסביבת העבודהראשי > תוצאות חיפוש > This QUARTER312k87% המטרהמחויבותהמקרה הטוב ביותרצינורדיוק של בינה מלאכותית על ידי התמודדות עם בריאות והיסטוריה1תגית: CATEGORמחויבות לצינור2AI-WEIGHTEDעל ידי התמודדות עם בריאות3PROVABLEדיוק עקוב
מחויבות, הטוב ביותר וצנרת במבט לאחור, AI-משקל על ידי טיפול בבריאות, עם דיוק מעקב כך שתוכל להגן עליה.

קטגוריות חיזוי

התחייבות

עסקאות עם 80% או הסתברות גבוהה יותר לנצח, אלה הם הרווחים שלך ביותר.זה צריך להיות ההכנסה המינימלית הצפויה שלך.

סביר להניח ש-AI

כל עסקאות פתוחות מועלות על ידי ההסתברות שלהם להשגה AI.זהו התחזית הכי מציאותית של מה שאתה קרוב אליו.

המקרה הטוב ביותר

כל עסקאות פתוחות בעלות ערך מלא.זהו ההכנסות האפשריות ביותר אם הכל הולך בצורה מושלמת (רק לעתים רחוקות).

מרווח אמון

An An 80% לדוגמה, הלהקה ההסתברותית מציגה את הטווח האמיתי: "סביר להניח שתסגרו בין השאר. $45,000 ו $72,000 הרובע הזה".

מה השתנה ומדוע

התחזית כוללת שינוי של שבוע-יתר בשבוע, כאשר התחזיות שלך יורדות על ידי $15,000 הדו"ח מסביר בדיוק אילו עסקאות גרמו לשינוי: "דהאל A ירד לרבעון הבא (Deal A Went to Next Quarter)$8,000« דיל B אבוד ($5,000 cc C מופחת ערך ($2,000)."

מעקב אחרי

חיזוי MAPE

טעות של אחוז מוחלט: כמה רחוק מהתחזיות שלך כבר היסטורית.נמוך יותר.15% פירוש הדבר שהתחזיות שלך בדרך כלל בתוך 15% של תוצאות בפועל.

המונחים: olibration

בריינר מודדת כמה טוב סיכויי זכייה מתאימים לתוצאות בפועל.70% ההסתברות מנצחת 70% הזמן, הקללה היא טובה.

תמונות שבועיות

OpsIQ לוכד תמונה של התחזית שלך בכל שבוע (באמצעות cron) לאורך זמן, אתה יכול לראות איך הדיוק החיזוי שלך משתפר.

רולקס ואזהרות

ההפך של כל שלב

כמה עסקאות נעות מכל שלב לשלב הבא. 80% לעבור מ- Qualified להצעה, אך רק 20% מתוך הצעה למשא ומתן, ההצעות שלך עשויות להיות זקוקות לעבודה.

שיעור הזכייה של Per-source

מקורות מובילים מייצרים את הניצחונות ביותר. להשקיע יותר במקורות גבוהים של צמיחה.

ביצועים של הבעלים

איך כל אחד מחברי צוות המכירות מבצע: עסקאות זכו, ערך צינורות, גודל העסקה הממוצע, קצב הניצחון.

אזהרות

חולבנד (ההסתברות נמוכה לא מציאותית), overcommitting (גבוה באופן בלתי ריאליסטי), וסיכון מחויב (עסקאות בעלות יכולת גבוהה המציגות אותות דוכנים).

הבנת נפילה

סקורסארי:
התחזית הרבעונית שלך צנחה $180,000 To to $155,000 מאז השבוע שעבר.
מה לעשות:

פתח את הדף ובדוק "מה השתנה".הדו"ח מראה: "עסקת חברת Acme (Acme Corp Deal)$15,000(הופנה מהדף Lost, המתחרה שנבחר. Beta Inc)$8,000 תאריך קרוב נדחה לרבעון הבא.עסקה חדשה עם Gamma LLC $3,000"השינוי הנקי הוא -$20,000 + $3,000 = -$17,000 הסבר על הירידה מ-180K ל-163K (עם ה- 8K הנותרים הסבירו באמצעות התאמות אפשריות בעסקאות אחרות).

אתר האינטרנט הרשמי של CRM

מציאת עסקים חדשים

הסוכן הפוטנציאלי עוזר לך למצוא ולחקור לקוחות פוטנציאליים.לרשום את הלקוח האידיאלי שלך, להוסיף חברות יעד ולתת למחקר AI, ציון ו טיוטת OUTRET ראשון.

אפשרויות
אפשרויותרשימה של חברות אפשרויות AI-found עם הערות מתאימות, ציונים ולחיצת כפתור כל אחד.אפשרויותסביבת העבודהאפשרויות ל-SDRצפון-wind LtdSaaS · 50 צוות · השכרת תמיכה88ד"ר OUTRECHקובלט Mfgייצור 200 צוות העובדים74ד"ר OUTRECHאתר האינטרנט הרשמי של מסהמסחר אלקטרוני 30 צוות העובדים69ד"ר OUTRECHגבה בריאותבריאות) 80 צוות העובדים63ד"ר OUTRECH1FINDמקורות AI היעד2תוצאהFit & הכוונה מדורג3DRAFTהמשקפיים הראשונים שכתבת בשבילך
סוכן SDR מוצא חברות יעד, מעלה אותן על התאמה, ומגייס את ה- First-touch Outreach עבור הביקורת שלך.

One-Time ההתקנה

1
תאר את הלקוח האידיאלי שלך

היכנס ל-CRM Configuration > Prospecting. Describe your אידיאלי Customer פרופיל (ICP): תעשיות מטרות, גדלים חברה, כותרות עבודה, מיקוד גיאוגרפי, תנאי התאמה למוצר וציון מינימלי: "B2B SaaS חברות עם חברת B2B עם חברות SaaS עם יכולות של B2 B2b, עם גודל החברה, כותרי העבודה, מיקוד גאוגרפי, מיקוד הגיאוגרפי, תנאים של המוצר, וציון מתאים מינימום.50-500 עובדים בארה"ב / בריטניה, מוכרים כלי מפתח, עם VP של מכירות או ראש הצמיחה כמגע העיקרי".

2
הוסף לחברות היעד

הזן תחומי חברה או שמות שאתה רוצה לחקור.אתה יכול גם לתת ל-AI להציע חברות המבוססות על ICP שלך.

3
תוצאות מחקר

AI מעשיר כל חברה עם נתונים זמינים: גודל, תעשייה, ערימה טכנולוגית, חדשות אחרונות וציון מתאים עם הסבר.

4
« שיפור

עבור חברות טובות, AI טיוטה הודעה אישית ראשונה על ידי שימוש. Review ואישור בתור.

הבקיע Fit

כל סיכוי מקבל0-100 ציון מתאים מבוסס על חמישה גורמים:

ICP מתאים

כמה טוב החברה תתאים לפרופיל הלקוחות האידיאלי שלך (תעשייתיות, גודל, מיקום).

אותות התחדשות

האם יש ראיות לכך שהם צריכים את המוצר שלך עכשיו? - פרסום עבודה, שינויים טכנולוגיים, תלונות על המתחרים.

תקציב Proxy

גודל החברה, שלב מימון ואינדיקטורים הכנסה מציעים זמינות תקציב.

משחק המוצר

כמה רלוונטי המוצר שלך לעסק שלהם מבוסס על תעשייה וטכנולוגיה.

תמיכה מתאימה

בין אם אתה יכול לשרת את הלקוח הזה (זמן, שפה, מורכבות).

מחקר חברת מטרות

סקורסארי:
אתה רוצה להעריך אם acme.com שווה לרדוף.
מה לעשות:

הוסף acme.com The AI מחזיר: Fit Score 78/100 סיבה טובה: B2B SaaS, 120 עובדים, המבוססים על ארה"ב, שכרו לאחרונה VP של מכירות (סימן עקבי), משתמשים ב-Multer X (תאימת המוצר): ביקרו בדף התמחור שלכם פעמיים בחודש שעבר (מעקב אחר אתר). [email protected] (VP of Sales) Drafted Opener מזכיר את הביקורים האחרונים שלהם בגיוס ותמחור.

אתר האינטרנט הרשמי של CRM

רצף מעקב אוטומטי

מעקב אחר מספר השלבים: תערובת של דואר אלקטרוני, המתנה, משימה, שיחה וצעדי Webhook לרוץ באופן אוטומטי לאחר אישור ההודעה הראשונית.

רצפים
עקבו אחרי רצףזרימת רצף אופקית: דואר אלקטרוני, לחכות שלושה ימים, דוא"ל, ולאחר מכן משימה, עם זיהוי תגובה.עקבו אחרי רצףסביבת העבודהלאחר שתאשר את ההודעה הראשונה→דואר אלקטרוניכניסהחכה לחכות3 ימיםדואר אלקטרונימעקבמשימותתתקשר.צעדים יכולים להיות דואר אלקטרוני, לחכות, משימה או Webhook. A תשובה עוצרת את הרצף.1AUTOMATEMulti-Step Follow-up2STEPSדוא" ל · לחכות · משימה · webhook3YOU APPROVEהמשלוח הראשון הוא שער
מעקב אוטומטי רב-שלבי (דואר, לחכות, דוא"ל, משימה) שאתה מאשר ראשון ותשובה מפסיק באופן אוטומטי.

כיצד רצפים עובדים

1
ליצור רצף

Define the Steps: דוא"ל, חכו 3 ימים, דואר אלקטרוני, חכה 5 ימים, משימה (אם אין תשובה), דואר אלקטרוני לכל צעד בדוא"ל יש תבנית שאתה יכול להתאים אישית.

2
קשרים

הוסף אנשי קשר לרצף.ה-AI עשוי גם להציע הרשמה מתוצאות החיזוי.

3
ביצוע אוטומטי

צעדים לרוץ באופן אוטומטי על לוח הזמנים.אם מגע עונה בכל נקודה, הרצף נעצר באופן אוטומטי.

4
תוצאות Track

ראה שערי פתיחה, שיעורי תגובה, שיעורי המרה, ו unsubscribes לכל שלב. השתמש זה כדי לייעל את הרצף שלך.

הבנה

כאשר איש קשר עונה, ה-AI מגדיר את התשובה:

חיובי

מעוניין, רוצה לדבר.פסקות של תמימות, משימה שנוצרה עבור מעקב.

התנגדות

יש חששות אך לא לדחות.הפסקות, משימה שנוצרה עם פרטים מנוגדים.

הודעה חדשה

רוצה להפסיק לקבל הודעות.מגע מודחק לצמיתות.

לא עכשיו

מעניין אבל התזמון לא בסדר.הפסקות של תמימות, המשימה הננוזה שנוצרה.

אדם לא נכון

לא מגע נכון.הקיימות מפסיק, צור קשר עם מוקרן לסקירה.

תמיכה

שאלה תומכת, לא תגובה של מכירות.פסקות , הכרטיס שנוצר.

הגנה אנטי-ספאם

טיפול ב- Opt-out

בקשות לא מבוססות זכו לכבוד מיידי, והמגע מודחק מכל הרצף העתידי.

« משלוח יומי

הגבלת יום יומית ברמת סביבת העבודה (default: 1,000 הודעות דוא"ל (מניעה מסה שולחת את זה גורם לסננים ספאם.

המונחים: noise Limit

מקסימום 1 הודעה לכל מגע ביום, מונעת מאנשים בודדים גדולים.

Over-cap Management

צעדים שעולים על הקופה היומית מופרכים ליום שלמחרת, הם לעולם לא נשרו או מדלגים.

מה קורה אם איש קשר פותח כרטיס תמיכה במהלך רצף?+

הרצף נעצר באופן אוטומטי.התמיכה לוקחת עדיפות על פני בחוץ.ניתן לחדש את הרצף באופן ידני לאחר שהבעיה נפתרה.

האם ניתן לבצע רצף מבחן A/B?+

לא ישירות בתוך רצף, אבל אתה יכול ליצור שני רצפים עם הודעות שונות ולהשוות את התוצאות שלהם.

אתר האינטרנט הרשמי של CRM

כלי צמיחה

דף אחד תחת CRM שמחזיק את מנוע הצמיחה: הכנסות חוזרות ונשנות (MRR/ARR), קטלוג המוצר, צורות של יכולת עופרת, קישורי הזמנה ויציאה.הכל כאן כותב ישר לתוך ה-CRM, כך הגשת צורה או קריאה מודפסת הוא מגע עם היסטוריה, לא שורה בגליון מתפשט.

מה גר בעמוד

החזרת הכנסות

הכנסות

MRR ו- ARR הוצעו מהמנהלים האמיתיים שלך.מנויים מחולקים מתשלומים לפלטפורמה, מחזור חיוב הוא מופרש פערי תשלום, וניתוק מנויים כאשר התשלום הוא overdue עבר בעבר 1.5 פעמים מחזור הלקוחות שלה קישור לאנשי קשר של CRM באופן אוטומטי כאשר ה-Moderger נושא את הדואר האלקטרוני שלהם.

קטלוג מוצרים

קטלוג

מקור אחד של אמת עבור מה שאתה מוכר.ציטוטים מושכים את השם ואת מחיר הרשימה מן הקטלוג, וציטוטים מקובלים מתגלגלים לתוך הכנסות על ידי מוצר.

צורות מובילות

לכידת

כל צורה מקבלת דף מתאר בתוספת קוד הטמעת iframe עבור האתר שלך. הרשאות הופכות לאנשי קשר, הבעלים מקבל הודעה, ואת כללי ההסתה שלך להקצות את ההובלה.

קישורי Booking קישורים

לוח זמנים

שתפו קישור, תנו לסיכויים לבחור מזל בחינם.לכבד את שעות העבודה של המארגן, אזור זמן ומפגשים קיימים.זמנה יוצרת את הפגישה, הודעות דוא"ל את האפשרות אישור ולאמצת את המארגן.

עופרת

« רוסטינג

כללים שטחיים לרוץ ראשון, אז חוקי שדה (תואמים תחום כגון מדינה או מקור), ולאחר מכן עגול על פני בריכת ה- rep שלך. It Pathways CONTACTS ו- DEALS זהה, כל מה שמעמד העסקה: עסקה מנצחת עדיין צריך בעלים עבור עמלה ב-Retribution, אחריות ועקביות, וכן בחוקי הבעלים או מצב של צוות לא מוכר הוא בלתי נראה לכולם אבל מנהל תקליטים שנוצרו על ידי אוטומציה (או מכירה, לא נשמרים) כבר לא נותרים על ידי תאשים, אלא אם כן, לא עומדים על ידי בעלים אינטראקטיביים, ולא ממשיכים להיות תמיד, לא רצופים.

ליצור את הטופס הראשון שלך

1
כלי צמיחה פתוחים

היכנס ל- CRM, ואז כלי צמיחה, ולאחר מכן את החלק של צורות העופרת.

2
שם ובחירת שדות

הקלד שם ורשימת שדה נפרדת, למשל שם, דוא"ל, טלפון, הודעות דואר אלקטרוני נדרש תמיד.

3
שתף או להטביע

העתק את הקישור המארח לשתף אותו בכל מקום, או להעתיק את הקוד ההטמיע ולהדביק אותו לכל דף באתר שלך.

4
צפו ב-Res ההגעה

כל הגשת היא יצירת קשר של CRM עם פעילות מסוימת, הודעה לבעלים וניתוק אוטומטי.

💡
דפי לכידת ציבוריים משתמשים בכתובת של סביבת העבודה שלך.ענן Workspaces להשתמש subdomain שהוקצה להם (company).opsiq עזרה, כך שהקישור תמיד פותר את הנתונים הנכונים.

הגנה מובנה

בוטים רואים הצלחה, אתה לא רואה כלום

שדה דבש חבוי מסלק באופן שקט את ההגשה של בוטים.

שיעור מוגבל

10 הצעות לשעה IP כתובת על פני טפסים והזמנות.

הסכמה נשארת כנה

הגשת טופס אינה מעניקה הסכמת שיווק.רק תיבת בדיקה מפורשת עושה.

לא הזמנה כפולה

מזל הוא revalidated נגד בדיקת זמינות חדשה ברגע ההזמנה.

מאיפה מגיעים נתוני ההכנסות החוזרים?+

מאותו מסחר הוביל את דף המכירות שלך משתמש, ניזון על ידי מחברים חיוב. השתמש Re-sync מחיוב לאחר חיבור פלטפורמה חדשה.

האם ניתן להשתמש בצורות ללא אתר אינטרנט?+

כן, לכל צורה יש דף מתארח על הכתובת שלך שעובדת עמידה, עם או בלי. JavaScript.

אתר האינטרנט הרשמי של CRM

Messaging Hub (SMS & WhatsApp)

מחבר אחד, עד עשרים שערים.חבר את ספקי ה-SMS ו-WhatsApp שאתה משתמש בהם בפועל, לסמן אחד כברירת מחדל, ולבחור כל אחד מהם בעת כתיבת קשר.CRMלפני ששער כלשהו יוצר קשר.

הגדר אותו

1
לאפשר למחבר

בדף Connectors, Open Messaging Hub (SMS ו-WhatsApp) ומאפשר לו.

2
הוסף ספק

באותה מגירה, או ב-CRM Growth Tools, בחר שער מהירידה (Twilio, Vonage, Termii, Meta WhatsApp Cloud, Infobip ועוד), מדביק את שעריו. API האישורים והחיבור ניתן להוסיף מספר, כולל אותו שער פעמיים עם חשבונות שונים.

3
תגית: The Webhook

כל ספק מקבל אתר אינטרנט משלו URL עם כפתור עותק. להדביק אותו לתוך המסירה של השער ו הגדרות inbound-mesage כדי לקבל מעמד משלוח ולהגיב בחזרה לתוך הכניסה OpsIQ.

4
שלח ממגע

פתח מגע ולהשתמש בלחיצת SMS או WhatsApp.אם יותר מספק אחד תומך הערוץ, בוחר מאפשר לך לבחור; אחרת ברירת המחדל משמשת.

הסכמה ראשונה

הסכמה רק

הסכמה לא ידועה אינה הסכמה. לשלוח מסרב אלא אם כן הסכמת SMS ניתנת במפורש. 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":"..."}.

השפעות

דוחות משלוח חותמים את השורה המובילה החוצה, הנושאת את הודעת הספק id כפי שנמסר או מופץ. הודעות Inbound להתאים את הקשר על ידי מספר הטלפון בתוך סביבת העבודה, קרקע כמסר.קבלה הודעה, וסמן את השיחה ענה.

מצב כישלון

תשובות לא נכונות או חסרות 403 מטענים לא ידועים נחשבים ותעלמו מהם, אף פעם לא קטלניים, כך שער שלא ניתן לשבור את נקודת הקצה.

אילו השערים נתמכות?+

Twilio, Vonage, Plivo, MessageBird, S אינץ ', Infobip, Telnyx, ClickSend, Termii, אפריקה מדברת, BulkSMS, Textlocal, WhatsApp Cloud, 360dialog, SMSAPI, GupshupshUp, Kaleyra, D7 Networks, Hubtel ו- HTTPS מותאם אישית Webhook עבור כל דבר אחר.

האם האישורים בטוחים?+

Credentials מוצפנים בהגדרות המחברות ולעולם לא מהדהדים בחזרה לדפדפן. Editing כניסה עם סוד ריק שומר את האחד המאוחסן.

האם ה-AI יכול לשלוח הודעות?+

כן, באמצעות פעולות רשומות הדורשות אישור ולנהל את אותו שער הסכמה.ה-AI יכול גם לרשום ספקים מחוברים כדי להסביר מה זמין.

אתר האינטרנט הרשמי של CRM

שמירה ולהגדיל לקוחות

ניהול מחזור חיים עוזר לך להגן על ההכנסות הקיימות.כל חשבון מקבל ציון סיכון צ'ואן, ציון בריאות, דירוג הרחבה ומדריך הצלחה מומלץ.

מחזור חיים
לוח החייםלוח מחזור חיים של לקוחות (עלboarding, Active, At-סיכון, התחדשות) עם ברים בריאותיים על כל כרטיס חשבון.מחזור חייםסביבת העבודהעל בוזאקמי.בריאות הבריאות 40פעילגלובקסבריאות הבריאות 88אנליזהבריאות הבריאות 76ב-RISKסויבריאות הבריאות 28חידושאוברהחידושים ב-12הרחבה + $8k1STAGESעל הסיפון להתחדשות2SCOREDבריאות והתרחבות3PLAYBOOKהצעד הבא
לקוחות עוברים על הסיפון, פעיל, בסיכון והתחדשות, כל אחד מהם הבקיע לבריאות וההתרחבות עם חוברת משחקים.

לוח מחזור החיים

המפה שלב

לוח חזותי מראה היכן כל חשבון עומד: מוביל, הזדמנות, לקוחות, התרחבות, חידוש, בסיכון, צ'ורינג.

חשבונות בסיכון

חשבונות משוטפים עם סיכון גבוה צ'כיה.כל אחד מראה את הנהג העליון (הספיק תומך, חוסר פעילות, כשל תשלום) ואת משחק החיסכון המומלץ.

אפשרויות הרחבה

חשבונות המציגים אותות של מוכנות לקנות יותר: שימוש גבוה, בקשות תכונה, תוכניות שאלות.

חידושים עקב

חשבונות עם תאריכי התחדשות המתקרבים, המיומנים על ידי רמת הסיכון ושווי ההכנסות.

איך OpsIQ גילוי סיכון צ'ואן

הסיכון של צ'ורן מחושב ממספר אותות הממוזגים יחדיו:

אותות CRM

התמודדות עם בריאות, חוסר פעילות, הפסדים אחרונים, ירידה במעורבות.

אותות תמיכה

ספירת כרטיסים פתוחה, ספייק נפח הכרטיסים, רגשות שליליים, הסלמה.

מעורבות מוצרים

כניסה תדירות, שימוש תכונה, ביקורים בעמוד API שיחות.

אותות בילינג

תשלומים כושלים, חשבוניות מופרזות, בקשות מופחתות, ביקורים בעמוד ביטול.

ספרי משחק

Save Play

עבור חשבונות בסיכון: להגיע באופן יזום, לטפל בדאגה, להציע תמיכה, להסלים אם יש צורך.

משחק חידוש

לחידושים הבאים: לאשר שביעות רצון, סקירה על השימוש, ערך נוכחי, להציע תמריץ אם מתאים.

משחק הרחבה

עבור חשבונות מוכנים-לגדול: אפשרויות שדרוג נוכחיות, לשתף סיפורי הצלחה, להפגין את ROI.

משחק אימוץ

עבור חשבונות underutilizing: להציע הכשרה, לשתף את שיטות הטובות ביותר, לאפשר תכונות שהם לא משתמשים.

« צ'ואן לפני שזה קורה

סקורסארי:
לקוח שבדרך כלל נכנס ליום לא נרשם. 2 שבועות, והם נפתחו 3 תמכו כרטיסים החודש.
מה לעשות:

לוח מחזור החיים דגל את החשבון הזה כ"בסיכון" עם נהגים: חוסר פעילות (inactivity)14 ימים מאז הכניסה האחרונה) ותמיכה בספייק (3x נפח כרטיס רגיל) משחק מומלץ: קריאה פרואקטיבית של יציאה כדי להבין מה קורה, האם יש בעיה של מוצר?האם הם מעריכים מתחרים? התערבות מוקדמת יכולה להציל את החשבון.

אתר האינטרנט הרשמי של CRM

לשמור על הנתונים שלך נקיים

סוכן Data Steward מוצא באופן אוטומטי ותיקון בעיות איכות נתונים: לשכפלות, שדות חסרים, חוסר עקביות, רשומות stale.

Dataer
Dataerרשימה של בעיות באיכות נתונים (דפל, חסר, מפוספס, פורמט), כל אחד עם פעולה אחת של תיקון לחץ.Dataerסביבת העבודהנתונים אודות סוכן Stewardכפילה[email protected] ו [email protected]מריגחסר12 לאנשי קשר אין חברהעשירסטלה38 הצעות ל 90+ ימיםסקירהפורמטמספרי טלפון במספר 4 פורמטיםלתקן את הכל1CATCHESDupes, פערים, stale2EXPLAINSלמה הוא חטף כל אחד3FIXESעל האישור שלך
סוכן Steward שומר על CRM נקי, מציאת משוכפלים, פערים, רשומות מפוספסות ופורמטים רעים, תיקון לאישור.

מה הוא תופס

מגעים Duplicate

רשומות מרובות לאותו אדם (למשל, [email protected] ו [email protected] העורך מציע למזג אותם.

נתונים חסרים

אנשי קשר ללא דואר אלקטרוני, עסקאות ללא כמויות, חברות ללא תחומים.הצעות מילוי מקורות זמינים.

רשומות ללא קישורים

עסקאות ללא מגעים קשורים, אנשי קשר ללא חברות. Pro מניחה קישור מבוסס על תחום והקשר של דואר אלקטרוני.

אי- עקביות

עסקה בשלב "Won"20% הסתברות, מגע המסומן "Customer" ללא עסקאות, חברה עם תעשייה לא מתאימה.

שלבים לא נכונים

עסקאות שהיו באותו שלב במשך זמן רב מדי או מגעים ששלב מחזור החיים שלהם אינו תואם את הפעילות שלהם.

כיצד להשתמש

1
פתח את רשימת הדירקטורים

היכנס ל- CRM ולמצוא את סעיף ה- Data Steward (או לפתוח אותו מ-CRM Health).

2
שיפור תיקונים בטוחים

פריטים ירוקים בטוחים: לשכפלות ברורות, נתונים חסרים ברורים.

3
ביקורת השאר

פריטי אמבר זקוקים לשיפוט שלכם: לשכפלות אפשריות עם הבדלים קלים, שינויים במה המוצעים, החברה המקשרת.

ניקוי קשרים כפולים

סקורסארי:
ג'ון סמית (John Smith)[email protected] ג'יי סמית (J. Smith)[email protected]"אות דואר אלקטרוני, שמות תצוגה שונים.
מה לעשות:

הדילר מציע מיזוג: שמור את השיא עם פעילות נוספת, למזג את העסקאות והפעילויות של הרשומה האחרת.עיין בהצעה, להתאים את שם התצוגה השורד במידת הצורך ולהאשר את ההיסטוריה של שני האלבומים נשמרים במגע הממוזג.

אתר האינטרנט הרשמי של CRM

בנה את ה- CRM שלי

בנה את ה- CRM שלי מאפשר לך לתאר את מערכת ה-CRM שלך באנגלית פשוטה. OpsIQ יוצר תוכנית מאומתת, הפוכה ומתחולמת בה על אישור.לא קידוד, שום תצורות ידניות לא לוחצים.

בנה את ה- CRM שלי
בנה את ה- CRM שליתיאור טבעי בשפה משמאל מייצר תוכנית CRM שנוצרת של שלבים, שדות ופערים מימין.בנה את ה- CRM שליסביבת העבודהתאר את העסק שלךאנחנו סוכנות עיצוב אינטרנטמכירת שומר חודשיפרויקט חד פעמי לקטןעסקים.בנה את ה- CRM שליתוכנית מייצרתתגית: Lead→Retainerסוגי עסקאות: שומר, פרויקטשדה: ערך חודשיהמונחים: SMB, Agencyהמונחים: onboardingשיפור ויישומים1DESCRIBEאנגלית פשוטה2AI PLANSשדות, תחומים,3APPROVEהמונחים: no coding
תאר את העסק שלך באנגלית פשוטה; OpsIQ טיוטות כל ה- CRM (שלבים, שדות, פלחים) ומחלימים אותו על אישור.

איך זה עובד

1
תאר מה אתה רוצה

הקלד תיאור אנגלי-ברור של מערכת CRM שלך.דוגמה: "לתקן צינור חידוש עם שלבים: קרב, מגע, משא ומתן, רנה, ציון אבוד מוביל גבוה יותר כאשר הם רואים מחירים פעמיים."

2
בדוק את התוכנית

OpsIQ מראה תצוגה מקדימה של מה זה יהיה ליצור: צינורות, שלבים, פרצות שלב, כללי ניקוד, חוקי מחזור חיים.

3
החלת

לחץ על החל לבצע את התוכנית.כל שינוי נרשם כחבילה שאתה יכול לבטל לחיצה אחת.

4
חזור אם צריך

אם משהו לא בסדר, לחץ על Undo להחזיר את כל החבילה.ה-CRM שלך חוזר למצב הקודם שלו.

מה אתה יכול לבנות

קווי צינור ושלבים

ליצור צינורות עם שלבים מותאמים אישית, פרכוסים ברירת מחדל, ו סף רוטט.

חוקי סקופ

תוצאות מובילות המבוססות על התנהגות: "גבוה יותר כאשר הם רואים תמחור", "נמוך יותר כשהם מבקרים בדף קריירה".

חוקי מחזור חיים

שלב מחזור חיים מתקדם אוטומטית: "Move to SQL כאשר הם מבקשים הדגמה, "מוו ללקוח כאשר העסקה תזכה".

שדות המכס

הוסף שדות לאנשי קשר, עסקאות או חברות: טקסט, מספר, תאריך, בחר, Checkbox, URL דואר אלקטרוני.

רשימת בדיקה

Define the mDDICC או BANT Checklist The Deal Coach הציוניs Against.

הקמת צינור חידוש

סקורסארי:
אתה מנהל מנויי SaaS ודרוש צינור לחידושים.
מה לעשות:

סוג: "להציל צינור חידוש.שלבים: 90 ימים בחוץ (10%), 60 ימים בחוץ (25% צור קשר (40% משא ומתן (60% רנה (Rineed)100%(ב) צ'ונדרן (0%(הופנה מהדף The Turningסף to 14 ימים". OpsIQ יוצר את התוכנית, אתה סוקר אותו, ולחץ על החל.הצנרת מופיעה בדף פיפיר שלך מיד.

מה אם אני מתאר משהו שאינו אפשרי?+

בונה רק יוצר פעולות שהוא יודע כיצד לאמת.אם אתה מבקש משהו מחוץ ליכולותיו (למשל, "לשלב עם המנהג שלי"API היא תדחה את הבקשה ותסביר מה היא יכולה לעשות במקום זאת.

האם אני יכול לשנות את השינויים?+

כן, כל אחד בונה את פעולת ה- CRM שלי נתפס כחבילה הפוכה.לך אל בריאות ה-CRM > שינוי ההיסטוריה כדי לראות את כל הלהקות ולא לעשות אף אחת מהן.

אתר האינטרנט הרשמי של CRM

הקמת ה- CRM שלך בדרך

תצורת CRM ידנית עבור צוותים המעדיפים ללחוץ על הקלדה.כל ההגדרות שייצור ה-CRM שלי יכול ליצור זמינות גם כתחומים מסורתיים של צורה.

קווי צינור ושלבים

יצירה, שם מחדש, תיקון ומחיקת צינורות ושלבים.קבע ברירת מחדל מנצחת הסתברות לשלב. הגדר את סף הרקב (ימים ללא פעילות לפני העסקה מסומן "מזועזע").

שדות המכס

הוסף שדות לעסקאות, אנשי קשר או חברות. סוגי שדה: טקסט, מספר, תאריך, בחר (הופנה מהדף אפשרויות מוגדרות מראש), Checkbox, URL שדות דואר אלקטרוני. Custom מופיעים בפרופיל האובייקט ובמסננים.

רשימת בדיקה

Define the Checklist המאמן משתמש כדי להעריך עסקאות.בחר mDDICC, BANT או קבוצה אישית של קריטריונים.כל פריט ניתן לסימן הנדרש או אופציונלי.

המונחים: lifecycle

שינוי שלב אוטומטי Define: כאשר מגע פוגש מצב (המחירים, מגיש טופס, עושה רכישה), שלב מחזור החיים שלהם מתקדם באופן אוטומטי.

כללי תיקון

Boost או להפחית ציונים מובילים המבוססים על התנהגות.דוגמאות: "עמוד התמחור המשוער = + +15 נקודות "Downloaded whitepaper= +10 נקודות "Visited Career page = -5ניתן להגדיר את הספירה המינימלית (למשל, "לעמוד בתמחור תצוגה" לפחות 2 פעמים").

« דעות מצילות

יצירת שילובים מסנן+sort עבור אנשי קשר, עסקאות או חברות.שתף צפיות עם הצוות שלך. הגדר תצוגה ברירת מחדל לסוג אובייקט.

הוספת הכללת ניקוד

סקורסארי:
אתה רוצה אנשי קשר שמצביעים על דף התמחור שלך פעמיים או יותר כדי לקבל ציון גבוה יותר.
מה לעשות:

היכנס ל-CRM Configuration > Lead Scoring Rules. Click Add Rule. Set: Event = "Pageview"URL מכיל = "/pricing"ספירה מינימלית =2פסקול: +20 בפעם הבאה שהציון רץ, אנשי קשר שתואמים את הכלל הזה יקבלו +20 לציון הראשי שלהם.

אתר האינטרנט הרשמי של CRM

בדיקת בריאות CRM

בריאות CRM היא דף אבחון עצמי המאמת את ה-CRM שלך מוגדר כראוי ופועל בצורה חלקה.

בדיקת בריאות
בדיקת בריאות CRMטבעת ציון בריאות 92 לצד בדיקה של בדיקות תצורה חולפות ואזהרות.בדיקת בריאות CRMסביבת העבודה92אמתשלבים פיפיריים שנקבעוחיבור וייבואסוכני AI!אין רצף מעקב פעיל!12 אנשי קשר חסרים1ביקורתמחיקת ההתקנה שלך2FLAGSמה חסר3תוצאהמספר כולל
ביקורת של CRM בעמוד אחד: ציון בריאות כולל בתוספת רשימה של מה מוגדר נכון ומה עדיין צריך תשומת לב.

מה זה בודק

שמט

שולחנות מסד נתונים קיימים ויש להם את העמודות הנכונות.אם הגירה החמיצו, בריאות CRM תעניש אותו.

סוכני AI

כל סוכני CRM (Capture, Data Steward, Deal Intelligence וכו ') רשומים ובריאים. ירוק = ריצה, amber= זקוק לתשומת לב, אדום = טעות.

כבישים

CRM API מסלולים ונקודות קצה AJAX רשומים וניתן להתקשר אליהם.

פעולות AI

קטלוג הפעולה של CRM רשום ברישום פעולה.אם פעולות חסרות, מטרות בריאות ה-CRM על ידי החזרתן מחדש.

נתונים חיים

מגעים מלאים, חברות, עסקאות, משימות, פעילויות ואירועים.שימושיים כדי לאמת יבוא ולכידת נתונים מתמשכת.

לאחר ההתקנה לבדוק

לאחר ההתקנה של CRM במשרה ראשונה, פתוח CRM בריאות לאמת את כל המחאות הם ירוק.אם יש אמבר או אדום, לחץ על הפריט עבור הסבר אבחון והצעת תיקון.

באיזו תדירות כדאי לבדוק את בריאות ה- CRM?+

בדוק לאחר ההתקנה הראשונית, לאחר עדכונים גדולים, ובכל פעם שהתנהגות CRM נראית שגויה.הבריאות של CRM לבריאות עצמי - מטרות רבות (כמו רישום פעולה חסר) רק על ידי פתיחת הדף.

אתר האינטרנט הרשמי של CRM

חיבורי CRM למפתחים

ה-CRM חושף קהל שלם API ו-webhooks בשפע כך שהוא מתאים לכל ערימה ללא הייצוא ידני.

API נקודות קצה

אימות

API מפתח (Authorization: Bearer Opq_...) עם היקף crm.read או cm.write /api/v1.php עם פעולה ואתר_key.

אנשי קשר

crm. Contacts. list (מחקר + מסנן), crm

עסקאות

crm. deals. list, crm

פעילויות

crm. activities. list (זמן ליצירת קשר/עסק), קריקטטיבציות.הקלטה (log a new Activity).

אירועים

crm. events. list (הזרמת שינויים מתמשכים עם סמן since_id), crm,events,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
}

אירועים Webhook

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

כאשר נוצרת משימה חדשה (מדומה או AI-generated).

email.replied

הוא האשים כאשר איש קשר מגיב לדואר אלקטרוני.

email.bounced

הוא פוטר כאשר אימייל חיצוני קופץ.

💡
תתקשר. webhooks.events.list עבור מערכת הסמכות על ההתקנה שלך, עם תשלום של כל אירוע.זה נוצר מקוד המשלוח עצמו, כך שהוא לעולם לא יכול להסכים עם מה באמת מגיע. הרשימה המלאה מופיעה גם בסעיף Webhooks.

כל האירועים של Webhook הם HMAC-signed ו retried על כשלון.מנוי_ URL > בהגדרות > Webhooks, או סקריפי . events. list עם מאז_id עבור מזון לשינוי מתמשך.

Syncing CRM מגעים ל-Google Sheets

סקורסארי:
אתה רוצה שכל מגע חדש של CRM יופיע ב-Google Sheet עבור צוות השיווק שלך.
מה לעשות:

הפעל מנוי Webhook עבור opsiq.contact.upsert, הכוונו אותו ל- Google אפליקציית אינטרנט או Zapier Webhook URLהמטען כולל את שם הקשר, דוא"ל, החברה, ציון מוביל ומקור התסריט שלך מצטרף שורה ל- Google דף עבור כל קשר חדש.

אתר האינטרנט הרשמי של CRM

קטעים

ה- Segments לחסוך מסננים מגע הניתנים לחזרה עבור תצוגות CRM, בחוץ, מבצעים וכלים אחרים של מודעות קהל.

מסך המוצר
קטעיםעורך Segment משלב תנאים, מראה את ספירת המשחק בשידור חי ומאפשר למפעיל לבחור מסנן חי או תמונה מלוטשת.קטעיםסביבת העבודהמצבחיLOGICהכלMATCHES1,248ביקורת עבודה WorkSPACEשלב הלקוחשווה לקוחות פעיליםחוקפעילות אחרונהבפנים 30 ימיםחוקמדינהשווה בריטניהחוקכוונות גבוהותציון לפחות 70חוק1CHOOSE MODEחי או צילום2ADD RULESהכל או כל דבר3REUSEקמפיינים ו- CRM
עורך Segment משלב תנאים, מראה את ספירת המשחק בשידור חי ומאפשר למפעיל לבחור מסנן חי או תמונה מלוטשת.

A מגזר חי חישובים מחדש של נתונים עדכניים בכל פעם שהוא משמש. צילום: SINE הקפאה של הרשימה הנוכחית, אשר מועילה כאשר קהל מחוץ לבית לא צריך להשתנות לאחר אישור.

בחר הכל כאשר כל מצב חייב להתאים או כל דבר כאשר מצב אחד מספיק.עיין בספירת החיים לפני שמירת מגזרי המערכת ניתן לראות אך מוגן מפני עריכה רגילה.

אתר האינטרנט הרשמי של CRM

הבקיע

כללים מובילים להובלת התנהגות ופרופיל הופכים את אותות הפרופיל לציון עקבי שהמכירות והאוטומציה יכולים להשתמש בו.

מסך המוצר
הבקיעהבקיע מוביל מציג כללים פעילים, חלון מתגלגל ואת הציון החיובי או שלילי שינוי כל כלל חל.הבקיעסביבת העבודהחוקים12SCORED8,412HOT LEADS286ביקורת עבודה WorkSPACEפעילות המחירים3+ ביקורים ב 14 ימים+20קניית מילת מפתחמכיל הגירה או מפעל+15תמיכה בסיכוןאירוע תלונה 30 ימים-10מקור אמיןשותף להמלצה+121DESCRIBE RULEשימוש באנגלית2REVIEW FIELDSאות, חלון, נקודות3RESCOREהחל על סביבת העבודה
הבקיע מוביל מציג כללים פעילים, חלון מתגלגל ואת הציון החיובי או שלילי שינוי כל כלל חל.

בונה שלטון AI יכול להפוך הוראה אנגלית פשוטה לכלל מובנה.כל כלל צריך עדיין להיבדק לפני ההפעלה: לאשר את הפעילות או מילת מפתח, ספירה מינימלית, חלון מתגלגל וציון שינוי.

כללים חיוביים ושליליים יכולים לפעול באופן קולקטיבי. Recore Workspace לאחר שינויים בטבע החומרי, כך שמגעים קיימים מוערכים תחת המודל החדש.ציונים יכולים להאכיל פלחי, גילוח, ציפיות ומצבי זרימת עבודה.

אתר האינטרנט הרשמי של CRM

מנהל המכירות

המנהיג משווה נציגים באמצעות quotacontainment, זכה בהכנסות, עמלה וצנרת פתוחה לחודש שנבחר.

מסך המוצר
מנהל המכירותהמנהיג החודשי מדרג את נציגי המכירות תוך שמירה על הכנסות, עמלה וצנרת פתוחה גלויות.מנהל המכירותסביבת העבודהPERIODיולי ביוליTEAM QUOTA82%ניצחון184kביקורת עבודה WorkSPACEאמינה.104% £62k זוכהראשוןבן88% £51k זוכההשניריטה.76% ממוצע · £43k זכהשלישיצינור פתוח312K ברחבי הקבוצהסקירה1CHOOSE MONTHהשוואה לתקופה אחת2CHECK QUOTAהשגה על ידי rep3COACHהשתמש ב-צנרת
המנהיג החודשי מדרג את נציגי המכירות תוך שמירה על הכנסות, עמלה וצנרת פתוחה גלויות.

השגת Quota היא בעלת משמעות רק כאשר לכל נציג יש מכסה נוכחית ועסקאות יש הבעלים הנכונים, כמות, מטבע ומעמד קרוב. השתמש במנהיג האימון וההכרה, לא כמדד האיכותי היחיד; זוגו עם בריאות העסקה, פעילות דיוק תחזית.

אתר האינטרנט הרשמי של CRM

אישורים

אישורי העסקה דורשים את ההרשמה למנהל לפני שניתן יהיה לבצע עסקאות בעלות ערך גבוה.

מסך המוצר
אישוריםמדיניות האישור מגדירה שתי סף ערך והתור מראה החלטות מועדות, מאושרות ודחייה.אישוריםסביבת העבודהPOLICYמופעלWAITING6OLDEST3hביקורת עבודה WorkSPACEרמה 1עסקאות £10,000מנהל ניהולרמה 2עסקאות £50,000בכירחידוש ארגוני£72,000 מבוקש על ידי בן« endingפרוייקט הגירה£18,500 מבוקש על ידי ריטהאושר1SET THRESHOLDS0 דיסוציא AEST2REQUESTה-Resend שולח את העסקה3החלטתי.דחייה או התנגדות
מדיניות האישור מגדירה שתי סף ערך והתור מראה החלטות מועדות, מאושרות ודחייה.

לאפשר את המדיניות ולהגדיר רמה 1 רמה 2 סף 0 דיסוציאציות שעדיין לא-מנהל מנסה לזכות בעסקה או מעל סף, OpsIQ יצירת בקשה לאישור במקום לשנות את הבמה.

מנהלים ומנהלים מלאים אינם חסומים על ידי המדיניות.כל החלטה צריכה לשמור על המבקש, לאשרר, זמן והסיבה לביקורת.

אתר האינטרנט הרשמי של CRM

חוקי מחזור חיים

חוקי מחזור חיים באופן אוטומטי להעביר מגעים בין שלבים כאשר הנתונים הנוכחיים שלהם מתאימים למצב שנשמר.

מסך המוצר
חוקי מחזור חייםכללי מחזור חיים מוערכים על ידי עדיפות; הכלל הראשון תואם משנה את שלב המגע.חוקי מחזור חייםסביבת העבודהפעיל7RUNSלילהPRIORITYהראשוןביקורת עבודה WorkSPACEמוביל→המונחיםציון ≥ 60 ופעילות אחרונהעדיפות 100המונחים→לקוחאירוע רכישה קייםעדיפות 90לקוח→סיכוןאין פעילות 60 ימיםעדיפות 70סיכון→לקוחרכישה חדשה או תגובהעדיפות 601PICK STAGESמ- to2DEFINE FILTERהמונחים-style JSON3ORDER RULESהמשחק הראשון מנצח
כללי מחזור חיים מוערכים על ידי עדיפות; הכלל הראשון תואם משנה את שלב המגע.

לכל כלל יש שלב מקור, שלב יעד, דגל פעיל, עדיפות וסנן בסגנון פלח.תפקיד מחזור החיים המתוכנן מעריך סדרי עדיפויות גבוהים יותר תחילה ומפסיק לאחר המשחק הראשון ליצירת קשר.

כללים צריכים להיות מובן הדדית.הימנע משתי כללים פעילים שיכולים להעביר את אותו מגע בכיוונים מנוגדים במהלך אותה ריצה. לבדוק את המסנן נגד פלח לפני הפעלתו.

אתר האינטרנט הרשמי של CRM

פעילות CRM

זרם הפעילות של סביבת העבודה משלב בין לקוחות ואירועים תפעוליים כך שצוותים יכולים לחקור מה קרה ללא פתיחת כל מודול.

מסך המוצר
פעילות CRMזרם הפעילות משלב צ'אט, כרטיס, דוא"ל, Webhook, המרת ואירועים אנומליים עם מסננים ודמיון.פעילות CRMסביבת העבודהאירועים2,804CUSTOMERS1,126ANOMALIES14ביקורת עבודה WorkSPACEצ'אטים נפתרים[email protected] • AIעכשיו ועכשיוכרטיס ענהT-_1048 > בילינג4אירוע Inboundsubscription.upgraded12שכנועסדר #7788 · £149191FILTERאירוע ולקוח2OPEN CONTEXTלקפוץ להקלטה3PAGE RESULTSהמשך חקירות
זרם הפעילות משלב צ'אט, כרטיס, דוא"ל, Webhook, המרת ואירועים אנומליים עם מסננים ודמיון.

מסנן על ידי סוג אירוע, תאריך, מגע או מצב לקוחות (כולל לקוחות משלמים) הזין הוא מודל קריאה של פעילות רשומה; זה לא תחליף כרטיס המקור, שיחה, עסקה או רישום המחבר.פתח את הרשומה המקושרת לפני ביצוע פעולה רגישה.

אתר האינטרנט הרשמי של CRM

זרימת עבודה

זרימות עבודה מגיבות לאירוע ומבצעות סדרה מסודרת של פעולות, כולל שלבים מתעכבים שהתחדשו על ידי קרוון.

מסך המוצר
זרימת עבודהריצה של זרימת עבודה מראה את ההדק, ביצוע הפעולות, עיכוב המתנה וצעד הבא.זרימת עבודהסביבת העבודהפעיל9RUNNING42נכשלה1ביקורת עבודה WorkSPACEטריגרcontact.createdהתחל להתחילשלב צעד 1שלח דואר אלקטרונינעשהעיכובחכה לחכות 2 ימיםמחכה לחכותשלב צעד 2יצירת משימת מכירותהבא1CHOOSE TRIGGERאירוע מתחיל את הריצה2ORDER STEPSפעולות ועיכובים3MONITORהמונחים: cron
ריצה של זרימת עבודה מראה את ההדק, ביצוע הפעולות, עיכוב המתנה וצעד הבא.

יצירת זרימת עבודה על ידי בחירת ההדק, הוספת שלבים כדי ומאפשרת לו. עיכובים מאוחסנים, לא מוחזק על ידי בקשה לדפדפן; הקרון המאוחד חוזר בעקבות זרימת העבודה.

תבניות פתיחה בנויות כוללות קבלת פנים לאחר ההרשמה, לאחר ה- post-purchaseתודה לך והדגמה אישור. Clone תבנית, להחליף את הנמענים / התוכן שלה, ולאחר מכן לבדוק עם תיעוד מבוקר לפני הפעלה רחבה.

פעולות עיצוב להיות idempotent. a retry לא חייב לשלוח בקשות הסרת כסף כפול או ליצור רשומות משוכפלות.

תמיכה

כרטיסים

כרטיסים הם ערוץ התמיכה הרשמי שלך.יש להם מחלקות, סדרי עדיפויות, מטרות SLA, קבצים מצורפים, הערות פנימיות ושיחות מלאות חוטי שיחה יכולים להגיע מהכרטיסים. OpsIQ admin, טופס כרטיס / Embed, ingestion דואר אלקטרוני, הסלמה צ'אט, מחבר או API.

כרטיסים
פרטי כרטיסכרטיס עם מטבול צדbar (פרטיות, המחלקה, SLA, מעמד), חוט השיחה ו- AI טיוטה ופעולות החזר.כרטיס הכרטיססביבת העבודהT-_12345עדיפותגבוההמחלקהבילינגSLA3h 12 מטרים שמאלהסטטוספתוחאני מואשם פעמיים עלהמנוי ביוני 3.אהה.אישור לשכפלתשלום, עיבוד החזר.AI טיוטת תגובההחזרת כספים1THREADEDשיחה מלאה + הערות2SLA & ROUTINGעדיפות, pt, Timers3AI DRAFTתגובה שנכתבה עבורך
כל כרטיס נושא את העדיפות שלו, המחלקה, SLA Timer ו-Wish מלא, והבינה המלאכותית יכולה לנסח את התשובה עבורך.

איך כרטיס זורם

1
כרטיס מגיע

לקוח שולח הודעה באמצעות דואר אלקטרוני, הסלמה בצ'אט, אחסון כרטיסים או מנהל המערכת יוצר אחד.הכרטיס מקבל מזהה ייחודי (למשל T 12345_).

2
הטריוג

ב' קורא את הנושא והגוף, מחלק עדיפות (נמוכה/נורמלית/גבוהה/דחופה), מציעה מחלקה וזוכה לרגשות. זה קורה אוטומטית אם יש אפשרות להגדיר דרגה.

3
תשובה

סוכן פותח את הכרטיס, קורא את ההקשר (פרופיל הלקוח, נתוני פלטפורמה ממחברים, כרטיסים קודמים), וכותב תשובה. AI יכול לנסח את התשובה ואת הסוכן לערוך לפני שליחתם.

4
סגור

כאשר הבעיה נפתרה, הסוכן סגור את התעודה. הלקוח מקבל הודעת תזכורת. אם הלקוח עונה לאחר סיום, התעודת פתוחה מחדש באופן אוטומטי.

פעולות Per-ticket

שינוי המחלקה

להעביר את הכרטיס למחלקה אחרת (למשל, מ גנרל ועד בילינג) שימושי כאשר ההסתה הראשונית הייתה שגויה.

סימן לסוכן

החתום על הכרטיס לחבר צוות מסוים.הסוכן המוקצה רואה את הכרטיס בתצוגת "כרטיסי" שלהם.

הוסף הודעה פנימית

כתוב פתק גלוי רק לצוות.שימוש: ממצאי חקירה, סיבות החזר, הקשר הנדסי, התחייבויות קודמות.הערות פנימיות לא מופיעות ללקוחות.

כרטיסים לMERG

שילוב כרטיסים משוכפלים מאותו לקוח.נושא הכרטיס הממוזג מקבל תג [מרו"ד], כל ההודעות משני הכרטיסים נשמרות בכרטיס שורדים.

תגובה משומשת

הכנס תבנית תגובה כתובה מראש. Variables {{customer_name}} ו {{ticket_id}} הם מוחלפים באופן אוטומטי.

AI לכתוב מחדש

תן ל- AI לשפר את תשובת הטיוטה שלך: להתאים את הטון, לקצר / אורכין, לתקן דקדוק או לתרגם.אתה סוקר את התוצאה לפני שליחת.

שינוי עדיפות

הגדר לנמוך, רגיל, גבוה או דחוף עדיפות משפיעה על זמני 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.

מחלקות

יצירת מחלקות בהגדרות > כרטיסים > מחלקות. Common: כללי, בילינג, טכני, מכירות, התעללות, על הסיפון.כל מחלקה יכולה להיות כללים שונים באופן אוטומטי, ידע AI ומשימות צוות.

תגובות

יצירת תבניות תגובה ניתנות לחזרה בהגדרות > כרטיסים > תשובות אפשריות: תגובות משומרות טובות כוללות:

דוגמה: תבנית תגובה
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}}

רכישת כרטיסים

כאשר לקוח שולח את אותה שאלה מספר פעמים (באמצעות דואר אלקטרוני וצ'אט, או שני הודעות דוא"ל נפרדות), אתה יכול למזג את השופלים.לך אל הכרטיס, לחץ על מארג', לבחור את הכרטיס השני כדי להתמזג.כרטיס ההישרדות מקבל את כל ההודעות משני הכרטיסים.

פלטפורמות מחוברות עוקבות אחר המיזוג. כאשר הכרטיסים נמצאים גם על פלטפורמה מחוברת (WHMCS, Zendeskפורטל לקוחות SaaS, המיזוג קורה גם שם: הפלטפורמה מתמזגת את העותקים שלה, כך הכרטיס שאתה ממשיך להציג את ההודעה הראשונה של כרטיס ה-SaaS ותשובות. כרטיס ממוזג שמעולם לא היה על פלטפורמה זו הוסיף לכרטיס הפלטפורמה המוחזק כהערה צוות פרטי, אף פעם לא כתשובה הלקוח מקבל דוא"ל. A מתמזג בתוך הפלטפורמה (לדוגמה בפלטפורמה זו, למשל בתוך הפלטפורמה WHMCS) ממזג את OpsIQ כרטיסים באותה הדרך.

עדיפות ו-SLA

נמוך

שאלות לא מתוחכמות, בקשות תכונה, משוב כללי.תגובה ראשונה: 24 שעות.

נורמלי

שאלות תמיכה סטנדרטיות.תגובה ראשונה: 8 שעות.

גבוה

השפעה על העסק של הלקוח.תגובה ראשונה: 4 שעות.

דחוף

שירות למטה, תקרית אבטחה, אובדן נתונים, טעות חיוב. 1 שעה.

טיימרים SLA מתחילים כאשר הכרטיס נוצר ועצור כאשר הסטטוס "המתנה ללקוח" אם יעד SLA מפספס, הכרטיס הוא מודגש והסלים באופן אופציונלי.

האם לקוחות יכולים לראות הערות פנימיות?+

לעולם אין הערות פנימיות הן רק צוות בלבד.הן אינן מופיעות בפורטל כרטיס הלקוח, הודעות דוא"ל או כל משטח מול לקוחות.

מה קורה כאשר כרטיס סגור הוא ענה?+

הכרטיס נפתח מחדש באופן אוטומטי וחוזר לשורה הפעילה.הקבוצה משמיעה את התשובה החדשה.

האם ניתן לנעול כרטיס כדי למנוע תשובות נוספות?+

כן, השתמש באפשרות 'קישור נעול' כדי למנוע הן הלקוח והן מ-AI להוסיף תשובות חדשות. שימושיות לסכסוכים פתורים או חקירות סגורות.

תמיכה

שירות סטודיו: SLA, מצב זרימת איכות

חדר הבקרה לאופן פעולת התמיכה שלך מתנהג: מדיניות SLA עם מדרגות הסלמה, לוחות שנה של עסקים שעות, זרימת מעמד מאוישת, הגדרות CSAT ואת מתגי הפיצ'ר.פתחו אותו מעמוד הכרטיסים (הלחיצת סטודיו השירות בבר המבצעים).

מדיניות SLA

כל כרטיס חדש מקבל מועד ראשון ופתרון של מדיניות פעילה ספציפית ביותר: המחלקה + עדיפות מנצחת מחלקה, מכים בראש סדר העדיפויות, לנצח את ברירת המחדל. Deadlines באופן אוטומטי בזמן הכרטיס יושב ב- Pending או על אחזקה.

מדרגות ההסלמה

במקום פעולה של הפרת אחת, מדיניות יכולה להגדיר עד שישה שלבים: לדוגמה להזהיר את הסימון. 75% החלון, אזהרות מנהלים 100% התפטרות לסוכן בשם 150% כל צעד יורה בדיוק פעם אחת בכרטיס.

שעות עסקיות ולוח השנה

עם שעות עסקיות על, שעונים SLA רק נשרף במהלך זמן העבודה, כך כרטיס נפתח יום שישי בערב לא נשבר בשבת. שם לוחות שנה (זמןזון, ימים, שעות, חגים) יכול להיות מחובר למדיניות אישית עבור קבוצות באזורים שונים.

זרימת מצב

מ / למטריקס להגביל אילו שינויים בהנהלה המצב עשויים לעשות, עם טרום מוקדם בסגנון Zendesk. אוטומציה, דואר אלקטרוני בשפע ותשובות כרטיס מותנות לקוח הם תמיד פטורים, כך מטריצה קפדנית לא יכול לעולם לפקוע את הצינור.

אישורים

סוכנים מבקשים חתימה על כרטיס (מימון מעל סף, חריגים מדיניות) A או כל מנהל מלא מחליט עם פתק; מבקשים לעולם לא יכולים לאשר את בקשתם שלהם.

קשרי כרטיסים

קישור כרטיסים כקשור, כפול, הורה / ילד או חסום; הפיצול עונה לכרטיס חדש מקושר (ההפך של מיזוג, ללא דואר אלקטרוני ללקוח); בצע כרטיסים עבור הודעות בתוך האפליקציה, וכתובת דוא"ל מעקב CCאופציונלית על תשובות גלויות.

Live inbox and Clashs

עם תיבת הדואר הנכנס בזמן אמת, כרטיסים חדשים ותשובות מופיעים עבור סוכנים בתוך שניות דרך זרם ההודעות הקיים.על כרטיס, סוכנים רואים מי עוד צופה ומקבל כרזות אזהרה כאשר חבר צוות כבר כותב תשובה. כפתור תביעה חד-לחץ אחד להקצות את הכרטיס לעצמך.

AI-Aware routing

חוקי משיכת יכולים להתאים לסימנים של AI: עדיפות, קטגוריה, רגש וסיכון ההסלמה, בתוספת ערכי שדה מותאם אישית מתצורת בקשת הפורטל שלך.כללים באמצעות תנאים אלה נשארים רדום עד שהתכונה מופעלת.

💡
כל מפעל מחליף ספינות באופן מיידי, הופך אחד ל- Service Studio→איכות ואוטומציה היא ה- Opt-in; השארת התנהגות זהה לפני השדרוג.
מדוע לקוח עדיין יכול לפתוח מחדש כרטיס סגור כאשר המטריקס שלי אוסר לסגור→פתוח?+

הממטריקס רק שולט בפעולות ADMIN.תשובות מותנות ללקוח, תשובות דוא"ל ואוטומציה פטורות במכוון כך שמדיניות קפדנית לעולם לא תוכל לנעול לקוחות או לשבור את הצינור.

האם מדרגות SLA מחליפות את פעולת ההפרה הישנה?+

מדיניות שנשמרה עם פעולה אחת של הפרתית ממשיכה לפעול ללא שינוי.סולם מחליף את הפעולה היחידה רק על מדיניות שבה אתה מגדיר צעדים.

תמיכה

כרטיס אוטומטי והסלמה

אוטומטי-reply מאפשר ל- AI להגיב כרטיסים חדשים באופן אוטומטי. Escalation מעביר כרטיסים למחלקה אחרת כאשר ה-AI מזהה צרכים מיוחדים.שני התכונות פועלות מעבר לכרטיסים מקומיים וכרטיסי דואר אלקטרוני שנוצרו.

אוטומטי-reply
מענה אוטומטי לכרטיסיםזרימה: כרטיס חדש, עיכוב של שתי דקות, תגובה מלאכותית מהידע וההקשר, ולאחר מכן נשלח או ניצל כטיוטה.אוטומטי-replyסביבת העבודהכאשר כרטיס חדש מגיעכרטיס חדשכל מקורעיכוב2 minתגובות AIKB +הודעהאו טיוטהאם אדם מגיב במהלך העיכוב, אוטומטי הוא בוטל.לא עקבי יכול להסלים מחלקה אחרת קודם לכן.1DELAYבני האדם מקבלים הזדמנות ראשונה2AI REPLIESמתוך KB +הקשר3OR ESCALATEדרך כוונה
כרטיסים חדשים מקבלים עיכוב קצר (כדי שבני אדם יוכלו לקפוץ), ולאחר מכן תגובה של בינה מלאכותית מהידע שלך, שנשלח או תורו כטיוטה.

איך אוטומטי עובד

1
הכרטיס מופיע

כרטיס חדש נוצר מכל מקור (דואר, צ'אט, פורטל, API).

2
לוח תגובה

OpsIQ מחכה לעיכוב מוגדר (default: 2 זה נותן לסוכני אנוש הזדמנות ראשונה להגיב.

3
התשובה הראשונה מנצחת

אם סוכן אנושי מגיב במהלך העיכוב, אוטומטי בוטל.אם לא, AI מייצרת תשובה.

4
ליצור ולשלוח

AI קורא את הכרטיס, בודק בסיס ידע, חיבור המחבר והיסטוריית הלקוחות, ולאחר מכן כותב תשובה.התשובה נשלחת (או בתור טיוטה לסקירה, בהתאם להגדרות).

כיצד ההסלמה עובדת

1
מחלקות

לקבוע אילו מחלקות יכולות לקבל הסלמה (למשל, בילינג יכול להיות מוסלם מן הגנרל, טכני ניתן להסלים מהכלל).

2
מסווג את הכרטיס

לפני הפסקת אוטומטי, AI מגדיר את כוונת הכרטיס: חיוב, טכני, החזר, התעללות וכו '.

3
נע אם צריך

אם הכוונה בכרטיס מתאימה למחלקת ההסלמה, הכרטיס נע.הערה פנימית מסבירה מדוע.

4
ליצור בקול חדש

התשובה נוצרת באמצעות הידע של מחלקת היעד ואימון בינה מלאכותית.

הגדרות

Auto-reply

מתג מאסטר מופעל כדי לאפשר AI אוטומטי עבור כרטיסים.

מחלקות מותרות

אילו מחלקות יכולות לקבל תגמולים אוטומטי.התחל עם מחלקות בסיכון נמוך (כללי, מכירות) לפני מתן הצעת חוק.

עיכוב

כמה זמן לחכות לפני ש-AI משיב (תוך שניות). 120 שניות (2דקות) Set to0תשובות מיידיות.

לוח הזמנים

באופן אופציונלי הציבו עיכובים שונים לשעות עסקיות לעומת שעות.

עצור בתגובה למנהל

אם סוכן אנושי עונה קודם, לבטל את הרכב באופן פתאומי:

ההסלמה מאפשרת

המחלקה האוטומטית הניתנת לצמצום בהתבסס על כוונת הכרטיסים.

מחלקות

אילו כרטיסים ניתן להגדיל.

מעמד ההסלמה

איזה מעמד לקבוע כאשר הסלמה (למשל, פתוח, פנס).

הערה על המשך ההתקדמות.

בין אם להוסיף הערה פנימית המסבירה את הסיבה להסלמה.

כרטיסים ליצירת דואר אלקטרוני

כרטיסים שנוצרו מדואר אלקטרוני (באמצעות דואר אלקטרוני או משלוח MX-piped) לעקוב אחר אותם כללים אוטומטי והסלמה.התשובה AI נשלחת כתגובה דוא"ל ללקוח. טיוטות דואר אלקטרוני ללכת תור הטיוטה לבדיקה אם נקבע.

האם ה-AI יהיה באופן אוטומטי לנסח שאלות?+

רק אם אתה מאפשר אוטומטית עבור מחלקת בילינג. אנו ממליצים להתחיל עם אוטומטי-reply כבוי לחיוב ומאפשרת את זה רק לאחר שאימון AI עם ידע מקיף חיוב נבדק ביסודיות.

מה אם ה-AI נותן תשובה שגויה?+

אם לקוח עונה שהתשובה הייתה שגויה, סוכן אנושי צריך להתערב.לבדוק את ההיסטוריה של AI כדי להבין מדוע הבינה המלאכותית נתנה תשובה לא נכונה, ולאחר מכן לעדכן את בסיס הידע או הכשרת בינה מלאכותית כדי למנוע ממנו לקרות שוב.

האם ניתן לבדוק את החיוב לפני שהם נשלחים?+

כן, הגדר את מצב המשלוח ל"דפט" במקום "סוף אוטומטי" טיוטות אוטומטית יופיעו בתור Drafts לבדיקה אנושית לפני שליחת.

תמיכה

פורטל הכרטיסים

הטמעת פורטל הכרטיסים מאפשרת לך להוסיף ממשק ניהול כרטיסים לכל אתר אינטרנט.לקוחות יכולים להציג את הכרטיסים שלהם, ליצור חדשים ולהגיב, הכל מבלי להיכנס אל תוך הכניסה. OpsIQ מנהל.

איך זה עובד
פורטל הכרטיסיםפורטל תמיכה מוטבע באתר המציג לקוח כרטיסים משלו ולחיצת כפתור חדש.yoursite.com/supportמרכז תמיכהכרטיס חדשה-TiCKETS שלך#1042 _>שאלת החזרפתוח#1038 _>>ההגדרה עזרהנפתר#1031 · תגית: copy« ending1EMBEDהוסף לכל אתר2SELF-SERVEלקוחות רואים את הכרטיסים3NO LOGINזהות מטופלת באופן מאובטח
פורטל הכרטיסים

3 טעמים

Inline

Renders את פורטל הכרטיס בתוך מגוון בדף שלך.הפורטל לוקח רוחב מלא של מיכל שלה.

תגית: 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: כל ספריה של JWAT עובדת.

PHP - יצירת זהות
<?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, ליצור אסימונים זהות
// 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 });
}

תכונות Widget

רשימת הכרטיסים

רשימת ה-CDC: "Awaiting You" מדגישה את הכרטיסים שהצוות ענה.

שיחה

מבט מלא לשיחה עם טקסט עשיר, החזקות וזמנים.

עקבו אחרי Draft Autosaving

תשובות לגיוס לקוחות הן אוטו-מרוצה, כך שהן לא מאבדות עבודה אם הן מנווטות.

Live סקר

סקרי ה-Widget עבור תשובות חדשות לכל 12 שניות.

פתרון / חידוש

לקוחות יכולים לפתור או לפתוח מחדש את הכרטיסים שלהם עם לחיצה אחת.

הערות צוות פנימיות לעולם לא מוצגות ללקוחות בהטמעת הכרטיס.זהו גבול אבטחה קשה.
תמיכה

צ'אט ב-Crebox

תיבת הצ'אט היא המקום שבו הצוות שלך מנהל שיחות לקוחות חיות.זה מראה צ'אטים פעילים, שיחות מוקצה AI, צ'טים ממונעים יד ביד והיסטוריה ארכיון.

צ'אט ב-Crebox
צ'אט ב-Creboxתיבת צ'אט של שלושה-פכין: רשימת שיחה, השיחה החיה עם שבב טיוטת AI ופאנל ההקשר המבקר/CRM.צ'אט ב-Creboxסביבת העבודהJDג'ייןאיפה ההזמנה שליMOMOמנסשאלותתרגילריטה.AI מטופלאיפה ההזמנה שלי?היום: UPSAI טיוטה מוכןתגובה...עו"דג'יין דוChrome3 פקודות העברLTV$480אתר האינטרנט הרשמי של CRMשלב: הלקוח1UNIFIEDכל צ'אט חי2CONTEXTפאנל + CRM3AI ASSISTדאף וטקס
תיבת דואר אחת לכל צ'אט חי, רשימת שיחה, החוט עם AI טיוטה על הקש, וקשר מלא של מבקרים + CRM.

ניהול שיחות

צ'אטים פעילים

שיחות כרגע התקדמות. גרין דוט = לקוח הוא הקלדה או פעיל לאחרונה.

AI-Desled

שיחות שבו AI מגיב. You יכול לקחת בכל עת על ידי לחיצה על "ג'ואן".

חתום לי

שיחות שהוקצו לך במיוחד.

מחכה לחכות

שיחות שהלקוח מחכה לתשובה.

ארכיון Archive

שיחות מלאות.חיפוש באמצעות מילת מפתח, תאריך ולקוח

עקבו אחרי AI to Human

כאשר אתה לוקח שיחה מ-AI, בצע את שלושת הכללים האלה:

1
גרטה אישית

"היי, זו שרה מצוות התמיכה".

2
הקשר

"אני יכול לראות ששאלת את מצב ההזמנה שלך."

3
להציב ציפיות

"אני מחפש את זה עכשיו, ויש לי תשובה בשבילך בעוד כמה דקות".

החלפת AI על / off לשיחה

השתמש ב- AI כדי להגיע לראש כל שיחה.כאשר בינה מלאכותית נמצאת, ה-AI מייצר תשובות.כאשר כבויים, רק סוכנים אנושיים יכולים לענות.הבינה המלאכותית זוכרת את הקשר השיחה גם כאשר הוא כבוי וחזר הלאה.

מצב רחוק / Out of Hours

הגדרת שעות עבודה בהגדרות. מחוץ לשעות העבודה, AI יכול: (1להמשיך לענות ללקוחות,2להראות הודעה של "לא נמצא" ולייצר כרטיס למעקב, או3הפעל את הצ' אט לחלוטין והציג את טופס התעודה בחר את ההתנהגות המתאימה למודל התמיכה שלך.

שיחות קשות

1
תישאר רגוע

אל תתאים לעוצמה הרגשית של הלקוח.לדעת את התסכול שלהם מבלי להיות מגוננים.

2
איסוף עובדות

לפני להגיב, לאסוף את המידע הרלוונטי: פרטי סדר, סטטוס חשבון, כרטיסים קודמים.

3
הסלמה מוקדם

אם המצב כרוך החזרים, איומים משפטיים, התעללות או אבטחה, להסלים חבר צוות בכיר במקום לנסות לטפל בו לבד.

האם אפשר לשוחח עם צ'אט קבוצתי (מרוץ לסוכן)?+

כן, השתמש בהערות פנימיות בתוך שיחה כדי לתקשר עם סוכנים אחרים.ההערות האלה אינן גלויות ללקוח.

מה קורה כשסגור צ'אט?+

השיחה עוברת לארכיון.אם הלקוח שולח הודעה חדשה לאחר מכן, נוצר שיחה חדשה.

תמיכה

ערוצים

התחבר WhatsApp, Facebook Messenger, Instagram ד.מ. Telegram ו-LINE כך שההודעות שלקוחות כבר שולחים לך מגיעות לאותו דואר פנימי כמו צ'אט האתר שלך, עונות על ידי אותו עוזר בינה מלאכותית.

כל ערוץ מתנהג זהה פעם מחובר: הודעת לקוח הופכת לשיחה בתיבת הדואר הנכנס של צ'אט, עוזר ה-AI שלך עונה לו באמצעות אותו ידע והוראות כמו צ'ט האינטרנט שלך, וכל סוכן יכול לקחת על עצמו.

מה שקשר נראה כמו

Facebook Messenger &Instagram

תגית: Open Connectors→Facebook Messenger & Instagram DM, לחץ על Connect, היכנס עם חשבון פייסבוק שמנהל את הדף שלך, ובחר בעמוד. Instagram מגיע עם זה כאשר הדף שלך יש חשבון מקצועי אינסטגרם מקושר.

WhatsApp

לחץ אחד שבו הספק שלך מציע את זה: לפתוח מחבר Messaging Hub ולהשתמש Connect WhatsApp, ולאחר מכן לעקוב אחר ההרשמה המודרך של Meta כדי לבחור או ליצור מספר עסקי WhatsApp שלך.20שערות

Telegram

שתי דקות. Telegram, לשלוח /newbot, בחר שם ושם משתמש שמסתיים ב"בוט", והדבק את התג שהוא נותן לך לתוך Telegram חיבור. OpsIQ רשומה את ה-webhook בשבילך.

קו

ליצור מסיינגAPIערוץ במפתחים.line.biz, להדביק את סוד הערוץ ואת הגישה לסימון, ולאחר מכן להעתיק את האינטרנטhookURLמוצג בOpsIQלתוך LINE ולעבור את ה- Auto-replies שלו.

הודעות טקסט

הוסף ספק (Twilio, Vonage, Termii ואחרים) ב-Meting Hub עם האישורים שלו ומספר השולח.

כל מחבר מראה הוראות צעד אחר צעד בתוך המגירה, כולל בדיוק מה להעתיק והיכן.אתה אף פעם לא צריך אישורי מפתח עבור אפשרויות לחץ אחד.

סובב ערוץ

חיבור ערוץ לא מתחיל את זה.לך הגדרות הגדרות → לקוח chat → מתקדם → ערוציםלעבור על המתפתל אדן ולאחר מכן ערוץ בודד.לכל ערוץ יש מתג אוטומטי AI משלו, כך שתוכל טייס אחד לפני פתיחת השאר.

1
חיבור הערוץ

ב Connectors, באמצעות ההוראות במגירת המחבר.

2
בדוק את הקשר

לחץ על Test.זה עושה שיחה אמיתית לספק ואומר לך מה לא בסדר אם הכל.

3
ערוצים

הגדרות הגדרות→לקוח chat→הזיזו את מתג המאסטר, ואז הערוץ.

4
שלח לעצמך הודעה

מחשבון אחר, הודעה בעמוד שלך, מספר או בוט.זה צריך להופיע בתיבת הצ'אט בתוך שניות ולקבל תגובה AI.

חלונות תגובה

פלטפורמות מגרות מגבילות כמה זמן העסק יכול לענות לאחר שלקוח כותב.OpsIQזה הזמן שנותר בכל שיחה ואוכף את הכלל עבורך.

WhatsApp

24שעות מהמסר האחרון של הלקוח לאחר מכן תוכל לשלוח רק תבנית מאושרת, אשר אתה מגדיר באותה הכרטיסיה מתקדמת.

Messenger &Instagram

24שעות לתשובות רגילות; סוכנים עשויים לענות עד7ימים לאחר מכן תחת קצבה אנושית של מטא.

Telegram, קו, SMS

אין חלון מגובש.

⚠️
אם תשובה נכשלת כי החלון נסגר, השיחה מראה מדוע.OpsIQגבול.

שאלות נפוצות

האם הלקוחות רואים ש-AI ענה?+

רק אם אתה אומר להם: התשובה מגיעה מהעמוד שלך, מספר או בוט בדיוק כמו תגובה אנושית, הוראות הבינה המלאכותית שלך שולטות בטון והאם הוא מזהה את עצמו.

האם סוכן יכול לקחת את ההפרעה באמצע?+

כן, פתח את השיחה בתיבת Inbox ולחץ על הצטרפותה. AI מפסיק, אתה מקליד והלקוח רואה חוט מתמשך בצד שלהם.

מה אם אני נתק ערוץ?+

השתמש ב Disconnect on the connector. Message History נשמר; הודעות חדשות פשוט מפסיקות להגיע, והפלטפורמה מתבקשת להפסיק לשלוח אותם.

האם שני מרחבי עבודה יכולים להשתמש באותו דף Facebook?+

דף שייך למרחב עבודה אחד בזמן.חיבורו במקום אחר נע בו, ומרחב העבודה הראשון מפסיק לקבל הודעות, כל כך מנותק בכוונה ולא להתחבר למקום אחר.

תמיכה

שיחות צ'אט אמיתיות

דוגמאות אלה מראות כיצד בינה מלאכותית של לקוח מאומנים היטב צריכה להתמודד עם תרחישים משותפים. השתמש בהם כדי לבדוק את אימון ה-AI שלך לזהות פערים.

10 דוגמאות שיחה

1להחזיר את הלקוח לשאול על הסדר

סקורסארי:
לקוח: Hi, I Put A Order3לפני ימים ולא קיבלה הודעה על משלוח.מסדר #ORD-5523.
מה לעשות:

AI צריך: (1ראה סדר #ORD 5523 דרך המחבר (2• דיווח על הסטטוס הנוכחי והעקב אחר מידע אם זמין.3(אם ההזמנה מתעכבת, הכר בעיכוב ולספק ציר זמן משוער.)4אל תמציאו מעמד משלוח אם למחבר אין מצב אחד.

2אפשרויות ל: Prospect Ask Aboutתמחור

סקורסארי:
לקוח: כמה עולה תוכנית Pro שלך?האם אתה מציע הצעת חוק שנתית?
מה לעשות:

הבי.איי צריך: (1תשובה מבסיס הידע עם מחירון הנוכחי.2הסביר את ההבדל בין חשבונות חודשיים ושנתיים.3אם התשובה לא נמצאת בבסיס הידע, תגיד את זה והציעי לחבר אותם למכירות.4) אל תמציא את המחיר שלא נמצא בבסיס הידע.

3לקוח כועס דורש החזר

סקורסארי:
לקוח: זה מגוחך!המוצר שלך לא עובד ואני רוצה את הכסף שלי בחזרה עכשיו.
מה לעשות:

AI צריך: (1) להכיר את התסכול בשלווה.2בקש מספר ההזמנה או חשבון דוא"ל.3(הסבר את תהליך ההחזר.)4• יצירת כרטיס תמיכה או להסלים לסוכן אנושי.5אל תבטיח החזר, זה דורש אישור אנושי.

4המונחים: Double lawing Edge

סקורסארי:
לקוח: אני מואשם פעמיים בחודש הזה, הבנק שלי מראה שתי תביעות של $29.99.
מה לעשות:

AI צריך: (1(ב) הכרה בדאגה.2• לאסוף את הפרטים הרלוונטיים (דואר, תאריכים של חיובים).3הסבר כי סוגיות חיוב דורשות ביקורת אנושית.4• יצירת כרטיס למחלקת בילינג עם הפרטים.5(הופנה מהדף High.

5לקוח רב-לשוני

סקורסארי:
לקוח: בונזה, יהודייה סעודת אחים בצרפת?
מה לעשות:

AI צריך: (1תגובה בשפת הלקוח אם שפה זו נתמכות.2תשובה לשאלה על משלוח לצרפת מבסיס הידע.3(אם השפה אינה נתמכת, תגובה בשפת ברירת המחדל והזכירה אילו שפות זמינות.

6אחרי שעות שיחה

סקורסארי:
לקוח: שלום, מישהו שם?
מה לעשות:

AI צריך: (1(אם נקבעת ל-AI לאחר שעות, תגובה ועזרה)2אם אחרי שעות יוצר כרטיסים, אמר: "הצוות שלנו כרגע לא מקוון.אני יצרתי כרטיס תמיכה בשבילך ומישהו יעקוב אחר השעות העסקיות".3) לספק את מספר הכרטיס.

7חנות ההשוואה Pre-purchase

סקורסארי:
לקוח: איך המוצר שלך משווה ל-Competitor X?
מה לעשות:

AI צריך: (1(לרשום את נקודות החוזק של המוצר שלך באופן עובדתי.)2אל תטעמו את המתחרה (3אם יש דף השוואה בבסיס הידע, קישור אליו.4אם הלקוח שואל על תכונות שאין לך, תהיה כנה.

8הלקוח רוצה המלצה

סקורסארי:
לקוח: אני מנהל חנות מקוונת קטנה עם 100 איזה תוכנית מתאימה לי בחודש?
מה לעשות:

AI צריך: (1שאל שאלות אם יש צורך (למשל, אילו תכונות חשובות ביותר).2• מומלץ על תוכנית המבוססת על בסיס הידע.3הסבר מדוע התוכנית מתאימה לצרכים שלהם.4(רמז כי הם יכולים להתחיל עם תוכנית קטנה יותר ולשדרג מאוחר יותר.

9לקוח מנסה לקבל הנחה לא מורשית

סקורסארי:
לקוח: ראיתי באינטרנט שאתה נותן 50% האם אפשר לקבל אחד?
מה לעשות:

AI צריך: (1פוליט מסביר את המבצעים הנוכחיים אם בכלל קיים.2(לא ליצור או להבטיח הנחות שאינן בבסיס הידע.)3אם הלקוח ממשיך, להציע לחבר אותם עם צוות המכירות.

10 הלקוח זקוק לעזרה עם תכונה

סקורסארי:
לקוח: איך אני ייצוא את הנתונים שלי?אני לא יכול למצוא את כפתור היצוא.
מה לעשות:

AI צריך: (1(1) לספק הוראות צעד אחר שלב מבסיס הידע.2(כולל את מסלול העמוד המדויק ואת מיקום הכפתור).3אם התכונה דורשת תוכנית מסוימת, הזכיר זאת.4אם התכונה לא קיימת, להיות כנה ולהציע חלופות.

תמיכה

צ'אט רוטינג והסלמה

כאשר צ'אט חי זקוק לאדם אמיתי, ה-AI עונה לשתי שאלות: אילו צוות הבעלים של השיחה הזו, ומי צריך להיאמר לו.שניהם מוגדרים בהגדרות, צ'ט לקוחות, תמיכה בתזרים, תחת מחלקות AI.

בחירת אילו מחלקות ה-AI עשוי להשתמש

שתי הקופסאות על לוח זה הן מחלקות לבן.מחלקות נעות ימינה הם היחידים ש-AI יכול לסלול או לפתוח כרטיסים פנימה. כל דבר שנשאר משמאל הוא בלתי נראה לו, גם אם המחלקה קיימת והוא ממונה.התחל צר ולהוסיף מחלקות כפי שאתה עובד אותם.

💡
אם שום מחלקה בכלל לא זמינה, OpsIQ נופל חזרה למורשת הנתיחה בכל מחלקה שהיא יכולה למצוא. לטפל בזה כרשת בטיחות, לא בחירה של תצורה.

מי מקבל את ההסלמה

זהו החלק שרוב האנשים מצפים להגדרה ולא צריך.כאשר ה-AI ממיר צ'אט, OpsIQ הודעות דוא"ל האנשים המצורפים למחלקה זו.You לנהל את הרשימה פעם אחת, בדף הצוות והמחלקות, ושניהם הסלמה בכרטיסים והסלמה בצ'אט לעקוב אחריה.

חברי צוות

כל מנהל פעיל המחובר למחלקה מקבל עותק משלהם.חשבונות מוגבלים ומוגבלים מלגלגזים.

מנהל ניהול ראשי

בשימוש כאשר אין חברי צוות מחוברים, כך שהסלמה עדיין מגיעה למישהו.

אף אחד לא מחובר

המשלוח אינו אפשרי.הפאנל המתפתל מציין כי המחלקה באדום והבינה המלאכותית אינה אומרת למבקר אדם לא נמסר.

⚠️
כתובת הדואר האלקטרוני של המחלקה עצמה אינה משמשת במכוון כנמען.כתובת זו היא תיבת הכרטיסים הנכנסת של המחלקה, דואר נכנס אחד תואמת נגד כרטיסים פתוחים. הסלמה שנשלחה יש לעבור בחזרה בתור כרטיס חדש ולא להגיע לאדם.

מחלקת התפוסה

בדיוק מחלקה אחת נושאת את הסימן של קליט.זה מקבל צ'אטים AI לא יכול היה להציב בביטחון, וזה אתר נופש אחרון ולא דרך נורמלית.

1
אותות ברורים מנצחים

מילת בילינג הולכת למחלקת חיוב, אירוח וטעייה שמילתים לטכניקה, קונה מילים למכירות.

2
מקבץ ה-AI מנסה בהמשך

אם מילות מפתח אינן חד משמעיות, המודל קורא את השיחה ובחירת המחלקות המורשות.

3
ואז התפס-All

רק כאשר שניהם באים ריק, המחלקה כולה מקבלת את הצ'אט.

4
שומר המכירות

אם התפוסה היא מחלקת מכירות והמבקר לא הראה אות קנייה, OpsIQ מחפש תמיכה או מחלקה טכנית במקום זאת, כך ששאלות תמיכה רגילות אינן מצטברות במכירה.

מה אומרים המבקר

אם הודעת הדואר האלקטרוני ההסלמה יוצאת, הבינה המלאכותית מספרת למבקר שהצוות הודיע לו: אם לא יוכל לצאת, AI אומר משהו כנה ומזמין אותם לעזוב את ההודעה בצ'אט במקום.זה לא יטען כי אדם לא יועמד כאשר שום אימייל לא נשלח.

הפאנל אומר "אף אחד לא יודיע" למחלקה+

אף אחד לא מחובר אליו. Open Team and Departments, מצמיד לפחות מנהל פעיל אחד, ולאחר מכן לנסח מחדש את דף ההגדרות.הפאנל קורא לחיות.

האם הסלמה בצ'אט יכולה להגיע למקום אחר מאשר לקבוצה?+

כן, כתובת אישית שנשמרה בעבר עבור מחלקה עדיין מתעלמת מרשימת הצוות.הגדרות חדשות צריכות לצרף אנשים במחלקה במקום זאת, כך שיש מקום אחד לשמור עליו.

למה כל המלכוד שלי היה משוחרר?+

בדוק אם מדובר במחלקת מכירות.אם זה, והמבקר לא הראה שום אות רכישה. OpsIQ נתיבים לתמיכה או למחלקה טכנית בכוונה.

תמיכה

דואר אלקטרוני תיבות ו טיוטות

OpsIQ יכול להתחבר לתיבת דואר אלקטרוני כדי ליצור אוטומטית כרטיסים מדואר הנכנס ולשלוח תשובות כדואר אלקטרוני.זה גם מספק תגובות AI-drafted לבדיקה אנושית.

דואר אלקטרוני
דואר אלקטרוני לכרטיסAn An IMAP תיבת דואר אלקטרוני בצד שמאל הזנה הודעות דוא"ל לתוך כרטיס מקושט עם תגובה AI-drafted מימין.דואר אלקטרוניסביבת העבודה[email protected] · IMAPבקשה להחזר[email protected]לא יכול להיכנס[email protected]תגית: copy[email protected]כרטיס #1042מתוך דואר אלקטרוני - Billingאני רוצה החזר עלתשלום כפול...AI טיוטהביקורת ו- Send1INGESTIMAP קדימה2TO TICKETSנמחק באופן אוטומטי3AI DRAFTSתשובות לסקירה
משוך דואר אלקטרוני למעלה IMAP (או קדימה), להפוך כל אחד לכרטיס מפוספס, ולתת ל-AI טיוטת התשובה לבדיקה.

חיבור תיבת דואר

פרוטוקול

IMAP (רוב הספקים), Gmail API (Google Workspace) או Microsoft Graph (Outlook) 365).

הגדרות דרושים

מארח, נמל, הצפנה (SSL/TLS שם משתמש, סיסמה או סיסמא אפליקציה, תיקיה (בדרך כלל ב-Box).

מחלקת מיפוי

ממפה את תיבת הדואר למחלקת כרטיסים.דואר אלקטרוני [email protected] יצירת כרטיסים במחלקת "הספורט"

Gmail ההתקנה (צעד אחר צעד)

1
אפשרות 2שלב ותיקון

היכנס לחשבון Google > אבטחה 2שלב וריאציות ומאפשר זאת.

2
יצירת סיסמה App

היכנס ל-Google Account > Security > App סיסמאות. בחר "דואר" ו-"אחר (להלן)OpsIQ"תעתק את 16 סיסמה character

3
להיכנס OpsIQ

היכנס לדואר > Mailboxes > Add. Set Host: imap.gmail.com נמל: 993 הצפנה: SSL שם משתמש: [email protected] סיסמה: הסיסמה של האפליקציה.

4
מבחן

לחץ על Test Connection OpsIQ יתחיל לבדוק הודעות דוא"ל חדשות במרווח שנקבע.

Outlook 365 ההתקנה

1
בדוק לבדוק IMAP ניתן

בהגדרות Outlook > דואר אלקטרוני Sync, ודאגו IMAP הוא מופעל.

2
השתמש ב- appmat או מודרני

אם MFA מופעל, ליצור סיסמה אפליקציה אחרת, השתמש בסיסמה הרגילה שלך.

3
להיכנס OpsIQ

עו"ד: outlook.office365.com נמל: 993 הצפנה: SSL שם משתמש: [email protected].

cPanel webmail ההתקנה

1
מצא Find IMAP הגדרות

In In cPanel > חשבונות דואר אלקטרוני, לחץ על חשבון הדואר האלקטרוני שלך IMAP הגדרות.

2
להיכנס OpsIQ

מנחה: בדרך כלל mail.yourdomain.com או שם השרת שלך, נמל: 993 (SSL) או 143 (STARTTLS), שם המשתמש: כתובת דואר אלקטרוני מלאה.

דואר אלקטרוני AI

כאשר אוטומטי-reply מוגדר למצב "Draft", AI יוצר טיוטות תגובה המופיעות בתור Drafts. You יכול:

סקירה

קראו את הטיוטה ובדקו דיוק.

Editעריכה

לשנות את הטקסט, הטון או התוכן לפני שליחת.

שלח

תעודדו את הטיוטה ושלחו אותה כתשובה דואר אלקטרוני.

תצלום: Discard

מחיקת הטיוטה אם היא לא מתאימה.

שולחים אוטומטית

אם הביטחון הוא גבוה מספיק וניתן לתקן אוטומטי, טיוטות נשלחות באופן אוטומטי לאחר עיכוב חד-משמעי.

למה הודעות דוא"ל לא מומרות לכרטיסים?+

תגית: (1(א) האם תיבת הדואר מחוברת ובריאה?חפש מצב ירוק בדואר אלקטרוני > Mailboxes.2האם העבודה של קרוון פועל? סקרי דואר אלקטרוני דורשים עיפרון.3האם הדואר האלקטרוני מסונן או מועבר לתיקיה אחרת מאשר ב-Atbox?

האם ניתן להשתמש בתיבת דואר מרובות?+

כן, כל תיבת דואר יכולה להיות ממומנת למחלקה אחרת. [email protected] הולך לתמיכה, [email protected] הולך ל בילינג.

תמיכה

שביעות רצון הלקוחות (CSAT)

CSAT מודד כרטיס וסיפוק צ'אט, מעל פני השטח תגובות לא מאושרות ומשווה בינה מלאכותית ותוצאות אנושיות.

מסך המוצר
שביעות רצון הלקוחותדף CSAT משלב כרטיסים ציון, מעקב אחר Detractor, הערות, מחלקת וסוכן התמוטטות, משוב צ'אט.שביעות רצון הלקוחותסביבת העבודהתשובות386AVERAGE4.6POSITIVE91%ביקורת עבודה WorkSPACEעקבו אחרי Detractor12 תשובות מדורגות1–2סקירהסקרי הכרטיסיםSent 24h אחרי קרובאוטומטימשוב צ'אטבינה מלאכותית 4.5 • אדם 4.7השוואהסיקורציון וספירת תגובהמאמן המאמן1WATCH AVERAGEשימוש במגמה, לא ציון אחד2FOLLOW DETRACTORSקרא את ההערה3COMPARE FAIRLYבינה מלאכותית ואנושיים
דף CSAT משלב כרטיסים ציון, מעקב אחר Detractor, הערות, מחלקת וסוכן התמוטטות, משוב צ'אט.

סקרי הכרטיסים מתוכננים לאחר הסגר (בדרך כלל) 24 שעות לאחר מכן) תגובה חיובית היא ציון4או 5השתמש תור detractor עבור עשרות 1 או2לקרוא את הכרטיס / ההשתתפות לפני יצירת קשר עם הלקוח.

משוב צ'אט דווח בנפרד לשיחות AI-resolved ו אנושי ידה.גדלים מדגם נמוך לא צריך לשמש כדי לדרג סוכנים או מודלים.

תמיכה

הודעות דואר אלקטרוני של Team

דף ה-Mail Platform מאפשר למפעיל מורשה לשלוח הודעה חד פעמית לכל סוכני הפעילים, סוכנים נבחרים או מחלקה וביקורת על ההיסטוריה.

מסך המוצר
פלטפורמת דואר אלקטרונימלחין הדואר האלקטרוני של הצוות מראה לקהל, לנושא, הודעה והיסטוריית המשלוחים האחרונים.פלטפורמת דואר אלקטרוניסביבת העבודהמקבלים12DELIVERED11נכשלה1ביקורת עבודה WorkSPACEקהל הקהלכל סוכני הסוכנים הפעיליםנבחרנושאתמיכה ב-Rreaמוכןהודעהלוח זמנים והערות הסלמהמוכןהיסטוריהשידורים קודמים ותוצאהתצוגה1CHOOSE PEOPLEהכל, נבחר או צוות2WRITE CLEARLYנושא ומסר3REVIEW HISTORYתוצאות
מלחין הדואר האלקטרוני של הצוות מראה לקהל, לנושא, הודעה והיסטוריית המשלוחים האחרונים.

דף זה מיועד להודעות תפעוליות פנימיות, לא שיווק לקוחות.בחר את הקהל הקטן ביותר הנכון, שמות וכתובות תצוגה מקדימה, ולאחר מכן שלח.משלוח משתמש בנתיב הדואר האלקטרוני המתואם ומקליט את התוצאה.

תמיכה

Mailboxs, משלוח ודואר אלקטרוני

איך להבין כיצד OpsIQ שלח דוא"ל, הופך מסרים נכנסים לכרטיסים ומגלה שתחום המשלוח מוכן.

מסך המוצר
הגדרות דואר אלקטרוניהגדרות דואר אלקטרוני משלבות את routing, מזהות, בעיטות תיבת הדואר, בדיקות יכולת ודואר אלקטרוני בדיקה.הגדרות דואר אלקטרוניסביבת העבודהיוצאתSMTPMAILBOXES3כן,מעברביקורת עבודה WorkSPACEמחבר מועדףSMTP / ספק מחברהוגדרזהותSupport <[email protected]>מוכןIMAP תיבת דואר[email protected] • ב-BOXזיהוםיכולתSPF · DKIM · DMARCמעבר1CHOOSE OUTBOUNDקשר או SMTP2CONNECT INBOXIMAP או צינורות3בדיקהשלח ולוודא
הגדרות דואר אלקטרוני משלבות את routing, מזהות, בעיטות תיבת הדואר, בדיקות יכולת ודואר אלקטרוני בדיקה.

דואר אלקטרוני

מנהלים מלאים יכולים לבחור את מחבר הדואר האלקטרוני המועדף; OpsIQ נופל בחזרה להגדרה SMTP משלוח בדואר כאשר מתאים.קבע אישור מהשם/כתובת, שלח מבחן ובדוק את 24 שעות הצלחה / מדדים קפואים

Mailboxs

An An IMAP תיבת דואר צריכה שם, כתובת דוא"ל, מחלקת מטרה, מארחת, נמל, מצב אבטחה, שם משתמש, סיסמה, תיקיה, בדיקת המדינה ובחירת אימות תעודה. עכשיו פול כדי לאמת את הדחיסות לפני ההמתנה לקביעות.

המונחים: instant piping

באותו שרת, צינור דואר יכול להעביר את המסר RFC822 הגולמי ישירות.שרת דואר מרחוק יכול למקד את ההודעה הגולמית לנקודת הקצה המוגן באמצעות אסיקן שלה.שני הנתיבים נכנסים לאותו שכפול, חוטף וכרטיס-Frontruting צינורות.

יכולת

בדיקת SPF/DKIM / DMARC היא עדות מייעצת להגדרה של התחום.בדיקה ירוקה אינה מבטיחה מיקום תיבת דואר זבל, אך יש לתקן כשל לפני שליחת הודעות ייצור.

תמיכה

פורטל תמיכה

תמיכה בעיצובים של פורטל סטודיו ומפרסם את חוויית התמיכה הפונה ללקוח מבלי לדרוש נכסים חיצוניים.

מסך המוצר
פורטל תמיכהפורטל סטודיו מראה תצוגה מקדימה תגובה לצד נושא, ניווט, ידע, כרטיס, עוזר, טופס, Footer ו CSS בקרה.פורטל תמיכהסביבת העבודהTEMPLATEמודרניביקורתשולחן עבודהשנאהטיוטהביקורת עבודה WorkSPACEנושאצבעים וטיפוגרפיהEditעריכהניווטידע, כרטיסים, עוזרEditעריכהטופס כרטיסשדות, גילוח ומעתיקEditעריכהפרסםלתקן ולעשות חייםסקירה1CHOOSE TEMPLATEהתחל מהמבנה2PREVIEW SIZESשולחן עבודה לנייד3PUBLISH SAFELYביקורת ואז שחרור
פורטל סטודיו מראה תצוגה מקדימה תגובה לצד נושא, ניווט, ידע, כרטיס, עוזר, טופס, Footer ו CSS בקרה.

השתמש בתבנית כנקודת התחלה, ולאחר מכן להגדיר ערכת נושא, פריסה, ניווט, חיפוש ידע, טופס כרטיסים, עוזר, Footer, מותג, התנהגות כרטיס, מותאם אישית CSS הגדרות כלליות. Preview שולחן עבודה, טאבלט ונייד לפני פרסום.

תמיכה

פערים ידע

תור הידע-גאפ אוסף שאלות של לקוחות, AI לא יכול לענות בביטחון כך שהצוות יוכל לשפר את הכיסוי.

מסך המוצר
פערים ידעתור הפער החמיץ או שאלות אבטחה נמוכות ועוקב אחר השאלה אם הצוות פתר אותם.פערים ידעסביבת העבודהOPEN GAPS28REPEATED9RESOLVED116ביקורת עבודה WorkSPACEגבולות הגירהשאלה 14 פעמיםגבוהסוף השבוע תמיכהשאלה 8 פעמיםבינוני Mediumתזמון החזרשאלה 6 פעמיםבינוני MediumAPI האזור האזורישאלה 3 פעמיםנמוך1REVIEW QUESTIONראה שיחה2CHOOSE FIXסעיף או הוראות3RESOLVEבדוק את התשובה הבאה
תור הפער החמיץ או שאלות אבטחה נמוכות ועוקב אחר השאלה אם הצוות פתר אותם.

פתח פער לקריאה את השאלה המקורית והשיחה הסמוכה, ולאחר מכן בחר את התיקון הנכון: לעדכן מאמר קיים, ליצור מאמר ידע חדש, להוסיף עובדה עסקית, לתקן נתוני המחבר או לשנות הוראות הסלמה.

תמיכה

ניהול דף

דף ניהול הסטטוס מתקשר לבריאות השירות ותקריות באמצעות רכיבים, מדינות ועדכונים נוכחיים.

מסך המוצר
ניהול סטטוסניהול סטטוס מפרט רכיבים ותקריות כך שהמפעילים יכולים לפרסם מידע שירות ברור, זמן-מעודכן.ניהול סטטוססביבת העבודהOVERALLתפעולירכיבים7INCIDENTS1ביקורת עבודה WorkSPACEאתר אינטרנטתפעוליירוקAPIביצועים מזעזעיםצפייההודעות דואר אלקטרוניתפעוליירוקהאירוע הנוכחיAPI חקירת שקיפותפתוח1UPDATE COMPONENTבחר מדינה ברורה2POST INCIDENTעדכונים בזמן3RESOLVEסגור עם סיכום
ניהול סטטוס מפרט רכיבים ותקריות כך שהמפעילים יכולים לפרסם מידע שירות ברור, זמן-מעודכן.

השתמש במדינות רכיב באופן עקבי.כאשר אירוע משפיע על הלקוחות, לפרסם הודעה ראשונית, להוסיף עדכונים בזמן כפי שעובדות משתנות, וסגור עם סיכום החלטה תמציתי.אל תשתמש בדף הסטטוס כלוג פנימי; אבחון רגיש שייך במקרים של הדבקה פנימית; OpsIQ יומני השרת.

אהה.

הגדר את AI

הגדרת בינה מלאכותית היא היכן שאתה בוחר את ספק הבינה המלאכותי שלך, מודל ובקרה עלויות. OpsIQ תומך בספקים רבים: Claude (Anthropic), GPT-4o (OpenAI), Gemini (Googleאתה יכול להשתמש בעצמך. API מקש (BYOK) או בינה מלאכותית מבוקרת אם זמין על התוכנית שלך.

להגדיר AI
תצורה של AIלוח הגדרות AI: A Managed-AI BYOK ספק toggle, a Model Optor ו-Autoken-budget מטר חודשי.תצורה של AIסביבת העבודהתצורה של AIספקAI מנוהלהמפתח שלך (BYOK)מודלהמונחים: מאוזנתתקציב בינה מלאכותית62%1TWO MODESניהול AI או BYOK2PICK A MODELמהירות לעומת עומק3BUDGETSגבולות של סימנים ושליטה בעלות
בחר ניהול AI או מפתח משלך, לבחור מודל למהירות לעומת עומק, ולהרוויח את ההוצאות החודשיות עם תקציב אסימונים.

בחירת ספק

Claude (Anthropic)

חשיבה חזקה, זהירה עם העובדות, טובה בביצוע הוראות מורכבות.4-20250514 קלוד.3.5-סונטה, הטוב ביותר ל: שיחות תמיכה, שאלות טכניות, ניתוח מפורט.

GPT-4o OpenAI)

ידע מהיר, יצירתי, כללי טוב.מודלים: gpt-4o, gpt 4o-mini. Best for: תגובות מהירות, כתיבה יצירתית, שאלות ידע רחב.

Gemini(Google)

טוב בשאלות עובדתיות, תמיכה רב-לשונית.מודלים:gemini-2.0« פסקול,gemini-1.5 הטוב ביותר עבור: תמיכה רב-לשונית, חיפושים עובדתיים.

צהוב (xAI)

תגובה מהירה, concise. Models: grok3_<-mini-fast

BYOK עקבו אחרי AI

BYOK(Bring Your Own Key)

אתה מספק משלך API מפתח מהספק.אתה משלם את הספק ישירות.שליטה מלאה על בחירת מודלים ושימוש.

AI מנוהל

AI מסופק כחלק שלך OpsIQ תוכנית API מפתח נדרש.שימוש הוא מטר נגד מאזן האשראי של ה-AI של התוכנית שלך.

שלב אחר-שלב ההתקנה

1
עקבו אחרי AI Configuration

בתוך OpsIQ מנהל, לנווט להגדרות > AI Configuration.

2
ספק נבחר

בחרו את ספק ה-AI שלכם מהירידה.

3
Enter API מפתח המפתח

אם משתמשים BYOK היכנסו ל- API עבור ניהול AI, זה מטופל באופן אוטומטי.

4
בחרו מודל

בחרו את המודל הספציפי לשימוש.מודלים קטנים יותר מהירים וזולים יותר, מודלים גדולים יותר נותנים תשובות איכותיות טובות יותר.

5
מבחן חיבור

לחץ על "Test Connection" כדי לאמת את API מפתח ומודל עובדים.סימון ירוק פירושו הצלחה.

6
להציל

לחץ על מנת להפעיל את תצורת ה-AI שלך.

עלויות בקרה

תקציב חודשי

הגדר מבלה חודשית מקסימלית על אסימוני AI.כאשר התקציב מגיע, AI תכונות בחסד (תשובות קצרות יותר, ללא תגובה אוטומטית) ולא לעצור לחלוטין.

המונחים: Per-conversation

אסימונים מקסימליים לשיחה אחת, מונעים שיחות מבריחה מצריכת אשראי מופרז.

איזון נמוך התראה

כאשר מאזן האשראי של בינה מלאכותית יורד מתחת לסף (default: 50,000 אסימונים, אזהרה מופיעה ב- admin. Set This in AI Configuration.

המונחים: Per-workspace

תצורה של AI היא שטח עבודה.אם אתה מנהל אתרים מרובים, כל סביבת העבודה יכולה להשתמש ספק אחר, מודל ותקציב.מרחב העבודה יורש ברירת מחדל גלובלית אלא אם כן יתר על המידה.כדי להגדיר את המרחב העבודה: לעבור למרחב העבודה, ואז ללכת ל-AI Configuration ולהציל הגדרות שם.

מקבל API מפתחות

Anthropic(Claude)

ללכת console.anthropic.com > API מפתח > יצירת Key. העתק את המפתח החל מ- "sk-ant".

OpenAI(GPT)

ללכת platform.openai.com > API מפתח > יצירת מפתח סודי חדש, העתק את המפתח החל "sk-".

Google (Gemini)

ללכת aistudio.google.com > Get> API מפתח: יצירת מפתח לפרויקט שלך. העתק את המפתח

XAI (Grok)

ללכת console.x.ai > API מפתחות, ליצור ולהעתיק את המפתח שלך.

בדיקת ההתקנה של AI

סקורסארי:
לאחר כניסה API מפתח, לחץ על "קשר בולט" אתה צריך לראות סימון ירוק ותגובה מדגם של AI.
מה לעשות:

אם המבחן נכשל: (1בדוק את זה API המפתח הוא הנכון (אין מרחבים נוספים).2בדוק כי החשבון שלך יש חיוב להגדיר עם הספק.3בדוק כי שם המודל הוא בתוקף.4(אם משתמשים ב-AI מנוהל, ודא שהרישיון שלך פעיל.

איזה ספק הוא הכי טוב?+

אין ספק אחד הטוב ביותר. Claude הוא מעולה לשיחות תמיכה. GPT-4o הוא מהיר ורב תכליתי. Gemini מטפל מספר שפות היטב. נסה כל אחד ולראות מה מייצר את התוצאות הטובות ביותר עבור מקרה השימוש הספציפי שלך.

האם אני יכול להחליף ספקים מאוחר יותר?+

כן, לשנות את הספק API מפתח בכל עת.היסטוריית השיחות הקיימות נשמר, AI ישתמש בספק החדש לכל שיחות עתידיות.

מה קורה כשאנו מוציאים קרדיטים?+

AI מידרדר בחסד: התגובות הופכות לעיכובים קצרים יותר, אוטומטית, והמנהל מראה התראה של איזון נמוך. מעקב מהיר, כרטיסים ו- CRM ממשיכים לעבוד ללא בינה מלאכותית.

אהה.

חכם וזול יותר צ'אט לקוחות

קבוצה של בקרה אופטימלית שהופכת את הלקוח שלך צ'אט חכם יותר (סיבות על חשבון לקוח כמו סוכן אנושי) או זול יותר (זה שולח את AI פחות, או תשובות בפחות שלבים). כל שליטה היא ללא ברירת מחדל ועצמאית, הופכת אחת על אף פעם לא משנה התנהגות אחרת.רוב חיה תחת הגדרות > צ'ט > התנהגות; כמה מהם עומדים להגדיר את הבינה המלאכותית והרכבת בינה מלאכותית שלך.

תשובות חכמות יותר (מצב חכם)

צ'אט רגיל עונה על שאלה אחת ממבט אחד. מצב הסוכן על כך, עוזר יכול לעשות כמה בדיקות חשבון קוראות רק בתור אחד וסידורי הצלב שלהם, למשל "האם יש לי כרטיסים פתוחים, והוא האיזון שלי מספיק להתחדשות הבאה שלי?", הוא עונה אחת עם המתמטיקה נעשה.זה רק עוסק ללקוחות מאומתים על חשבון או החזר שאלות; כל דבר אחר מפעיל את הנתיב הרגיל של תשובה.

מצב הסוכן

עד כמה חיפושים לקריאה בלבד בתורו, חצויים לפני שענו. הפעל כאשר יש לך פלטפורמה מחוברת (WHMCS, Shopify, Stripe, Zendesk וכו ') Off = התנהגות של היום-מראה יחיד, ללא שינוי.

חשיבה לעומק תשובות הסוכן

כמה קשה המודל סיבות על תפנית מורכבת (נמוך / בינוני) להתחיל בנמוך; רוב השאלות התמיכה מטופלים היטב שם.

מודל הסוכן

Pins מודל חזק יותר רק עבור סוכן מורכב פונה, כך צ'אט יומיומי נשאר על אור, זול דגם ורק את התפנית הקשה לשלם עבור עומק. Blank = המודל הרגיל שלך של לקוח.

תוכנית קדימה: תשובות חד-צדדיות (beta)

צעד תכנון זעיר מחליט אילו מתבוננים למשוך והאם יש צורך בבסיס הידע, ואז תשובות לקריאה אחת עיקרית במקום כמה שלבים. תת-מגרש תחת מצב הסוכן.לא ניתן להשתמש בו אלא אם כן המצב של הסוכן הוא על איכות התשובה, פחות שיחות על שאלות מרובות-חלקיות.

שיחה והבנה

זיכרון ארוך (beta)

שמור על סיכום קצר של הודעות ישנות יותר (שמות, מספרי כרטיס / חשבונית, כמויות, החלטות) כך עוזר נשאר עקבי על פני צ'אטים ארוכים מאוד מבלי לחזור על כל ה- תמליל.הטוב ביותר לתמיכה, חוטים ארוכים; זוגות עם מצב הסוכן.

סובלנות

קרא טיפו קטן ("כרטיסי הפתוח שלי", "לא משולם בvocies") כמילים המיועדות כך שהמידע הנכון נמצא במקום להחמיץ.עבודה עם כל פלטפורמה מחוברת כברירת מחדל; שימושית עבור צ'אט נייד-כבד.

הקשר של חשבון Lean

רק מצמיד את תמונת החשבון של הלקוח כאשר השאלה היא למעשה על חשבון (מאזן, חשבוניות, כרטיסים, שירותים), לדלג עליה בשאלות כלליות.

חיסכון בעלויות

דלג ידע בחיפוש אחר ברכות (בטה)

"שלום", "תודה" ו-"ok" לא מעוררים חיפוש בסיסי ידע, התשובות האלה לעולם אינן משתמשות בו.כל הודעה עם תוכן אמיתי עדיין מחפשת כרגיל.

תשובה ארוכה יותר מותרת (הכוללים)

כמה זמן יכול להיות אורך תגובה אחד.תשובה הוא החלק היקר ביותר של שיחה, כך כובע הגיוני (סביבה) 500 עבור תמיכה) הוא בקרת עלות צ'אט יעילה ביותר רק מורידה את הגבול הגלובלי שלך, לעולם לא מעלה אותו.

על מנת להגדיר את AI

חשיבה לעומק (טלפון סלולרי וניהול)

כמה המודל חושב לפני עונה (מינימום לגבוה) שמור על צ'אט לקוחות במינימום / נמוך למהירות; מילואים הגדרות גבוהות יותר לניתוח וטייס ההפעלה של מנהל.

מודל Per-AI (per Job)

כל משטח AI (צ'אט חי, טיוטות כרטיסים, סיכומים, ניתוח, טייס הפעלה אדמיניסטרטיבי, מבצעים, מודיעין אתרים ועוד) יכול לרוץ על המודל שלו עצמו. Light שבו מהירות חשובה, חזק איפה איכות העניינים. Blank על פני השטח = ברירת מחדל עבור עבודה זו.

עלויות צ'אט Admin

טייסת העבודה של המנהל יכולה לשמור על זיכרון עבודה מוגבל ולהטעים רק את הכלים הדרושים לשאלה (כלי רכב) במקום כל כלי.

על הרכבת AI

הוראות קומפרס

ההוראות שלך נשלחות על כל סיבוב, כך שהאורך שלהם הוא עלות חוזרת.הלחיצת כפתור קומפרס כותבת מזל כדי לומר את אותו הדבר בפחות מילים. {variable} או שלטון, ודיווח על מה שהוא מוגן, כך שמעולם לא שינה משמעות שקטה.

"מה כבר במוח" (צילום: יח)

להראות מה OpsIQ כבר יודע על העסק שלך לחריץ, אז אתה יכול למחוק כל דבר שחזרת על עצמך בהוראות משלך.

💡
לאן הולך הכסף? לקבלת תמיכה קצרה צ'אט קלט (הוראות + נתונים + היסטוריה, שלח כל סיבוב) בדרך כלל עולה יותר מאשר התשובה הקצרה, דחיסה וחיבור רזה לעזור ביותר שם.עבור תוכן שנוצר ארוך הפלט שולט.כובע באורך התגובה ואת עומק חשיבה נמוך לשלם משם. ראה את AI שלך כדי להמשיך לדחוף, מה שהופך את החלק הגדול של כל הפוך זול.
האם זה משנה איך הפטפט כבר עונה?+

כל שליטה היא ללא הפסקות מחדל ועצמאית, והופכת את האדם רק למוסיפה את התנהגותו; מה שהופך אותו מחזיר את הצ'אט בדיוק איך זה עבד לפני כן.

איזה סדר אני צריך לסובב אותם?+

הפעל צ'אט יומיומי על מודל אור וסמן מודל סוכן חזק יותר, אז, אם יש לך פלטפורמה מחוברת, לאפשר מצב הסוכן, ולאחר מכן לתכנן קדימה, ולאחר זמן ארוך-conversation Memory. ואז חיבור רזה, לדלג-KB-for-greetings, ואת כובע תשובה לבסוף דחוס ההוראות שלך.

ערכת סוכני Admin: חיפוש באינטרנט, חוברות, משימות, העברת קבצים

צ'אט AI Admin הוא מהנדס עבודה, לא רק תיבת שאלה.זה יכול לחקור תיקונים באינטרנט, לשמור על ספריית נהלי התפעול שלך, סיור השרתים שלך בלוח הזמנים, ולהעביר קבצים.רוב זה מונע על ידי בקשה עבור זה בצ 'אט; הדבר האחד שאתה להגדיר חזית הוא אשר ספק החיפוש האינטרנט הוא משתמש, על הגדר דף הבינה המלאכותית שלך.

חיפוש באינטרנט

נבנה

הסוכן מחפש את האינטרנט עבור docs, הודעות שגיאה ומידע עדכני בזמן שהוא עובד.מחוץ לקופסא זה משתמש DuckDuckGo, אשר לא צריך מפתח ולא התקנה.

ספרי תהליכים

בצ'אט

ספריית הצלה של ההליכים שלך ("איך אנחנו עושים X כאן") הסוכן כותב אחד למטה לאחר שכותב עבודה מסובכת ומעקב אחר זה בפעם הבאה, כך שהידע שורד את סוף הצ'אט.

משימות

לוח זמנים

סיורים לקריאה בלבד: "בכל בוקר, לבדוק את שטח הדיסק ואת יומני השגיאה ולומר לי."

העברה

בצ'אט

בקש קובץ יומן ולקבל קישור להורדה פרטי, או שיש קובץ אחד מועתק מן שרת מחובר אחד למשנהו.שניהם קפצו ב 5 MB.

חיפוש באינטרנט של סוכן (על הגדרת AI)

ספק החיפוש

מה המשתמש בחיפוש האינטרנט של הסוכן.ה ברירת המחדל היא DuckDuckGo: ללא מפתח, חופשי, עובד על כל התקנה. Brave Search, Tavily ו-Tavily and Tavially Serper.dev (תוצאות Google) בדרך כלל מחזירות תוצאות טובות יותר, אך כל אחד צריך API מפתח מהספק הזה.אם ספק מפתח נכשל מסיבה כלשהי (מפתח רע, מכסת המשמש, בעיות רשת), כי החיפוש נופל בחזרה DuckDuckGo באופן אוטומטי, אז חיפוש אף פעם לא הולך חשוך.

חיפוש חיפוש API מפתח המפתח

המפתח לספק הנבחר שלך, רק צריך עבור Brave, Tavily או Serper. פעם הציל אותו הוא מסוקרן ולא מוצג שוב בעמוד; להדביק אחד חדש להחליף אותו. ספק מפתח הופך פעיל רק כאשר הספק ומפתחו נשמרים.

ספרי תהליכים

כאשר הסוכן פשוט עבד באמצעות עבודה, אתה רוצה לעשות את אותו הדבר שוב, אומר "להוכיח כי כמדריך שנקרא Nightly-cleanup."מאחר כך על זה רואה את הספר על ידי שם בכל ישיבה, וכאשר תבקשו את העבודה בשם (או לתאר אותה) הוא מושך את השלבים ועוקב אחריהם.אתה יכול לבקש ממנו רשימה, לעדכן או למחוק כל עת.

💡
חוברת ריצה היא הדרכה, לא מעבר חופשי.כאשר הסוכן עוקב אחר אחד, כל צעד שישנה שרת עדיין עובר דרך מצב ההרשאה הנוכחי שלך ומראה את כרטיסי האישור הרגילים. A רץ לעולם לא יכול לעקוף אישור.

משימות

משימה היא עבודה חוזרת הסוכן פועל על עצמו: שעה, מדי יום בשעה קבועה, או שבועי ביום מוגדר.מיסיונרים קוראים רק באמצעות עיצוב.הם יכולים לקרוא שרתים, נתונים ורשת, אבל הם לא יכולים לשנות שום דבר; הם חוקרים ודו"ח. כאשר שליחות מסתיימת, הממצאים כהודעה על לוח הבקרה שלך.

⚠️
המשימה בורחת OpsIQ כרון, לכן יש להגדיר אותו (ראה Cron ואוטומציה) A One-off "run It Now" מהצ'אט עובד גם בין cron רץ על רוב השרתים.

העברת קבצים

בקש קובץ ("תקבל לי יומן השגיאה של היום משרת האינטרנט") ואת השלבים הסוכן זה וענה עם קישור להורדה פרטית.הקישור עובד רק עבור מנהלים חתומות ומתפוגג לאחר יום אחד. 5 MB עבור כל דבר גדול יותר, בקש מהסוכן לדחוס או לקצץ אותו בשרת תחילה.

הסוכן יכול גם להעתיק קובץ אחד בין שני שרתים מחוברים, שוב עד 5 MB_.הכתיבה על היעד מטופלת כמו כל שינוי אחר זה עושה: במצב שאתה מקבל כרטיס אישור ראשון, הקובץ הקיים הוא מגבה, ואת העותק הוא ניתוק.לבטיחות, תוכן הקובץ נקרא מחדש מן המקור ברגע העותק מוחל, לא נלקח מן הצ'אט.

אהה.

רכבת AI

אימון בינה מלאכותית הוא המקום שבו אתה מלמד OpsIQ איך להתנהג.אתה כותב הנחיות המגדירות אישיות, גבולות, מיקוד ידע ותקנות הסלמה.חשבו על זה ככתב מדריך הדרכה עבור סוכן תמיכה חדש.

רכבת AI
רכבת AIעורך הוראות AI עם כרטיסיות לקוח / אדם וטון אנגלי פשוט, תמיד ולעולם לא כללים.רכבת AIסביבת העבודהלקוח AIAIטונהידידותי, תמציתי, לעולם לא לדחוף.תמידלהציע יד אנושית לסכסוכים.לעולם לא לעולם אף פעםהבטחת החזר ללא בדיקת החשבון.1TWO MANUALSלקוח וניהול AI2PLAIN ENGLISHטונה, תמיד, לעולם3GROUNDEDבנוסף לבסיס הידע שלך
לאמן את AI כמו השכרת חדש, לקוח ומדריכים אדומים שנכתבו באנגלית פשוטה (טון, תמיד, אף פעם), מעומקים ב- KB שלך.

שני אזורי אימון

לקוח AI

שליטה כיצד בינה מלאכותית מדברת אל הלקוחות שלך ב-Chelep widget.זהו הדבר החשוב ביותר לקבל את הזכות הנכונה.

Admin AI - בימוי

בקרה כיצד AI מסייע לצוות הניהול שלך בלוח המחוונים של המפעיל.זה מטפל בשאילתות פנימיות ובביצוע פעולה.

כתיבת לקוח גדול AI

הלקוח שלך AI צריך לכסות את התחומים האלה:

1
זהות

מי הוא ה-AI? Give It a Name, Role and האישיות: "אתה לונה, עוזר ידידותי ובעל ידע של תמיכת לקוחות בחנות Acme".

2
טונה וסטייל

איך זה צריך לתקשר?דוגמה: "להיות מקצועי אבל חם.לנצל שפה פשוטה.2-3 פסקאות מקס".

3
גבולות ידע

מה צריך לדעת ולא לדעת?דוגמה: "אתה יודע על המוצרים, התמחור, המשלוח והמדיניות ההחזרה שלנו. You לא יודעים על מוצרים מתחרות או החלטות החברה הפנימית".

4
כללי ההסלמה

מתי זה צריך למסור דוגמה אנושית?: "לעבור לסוכן אנושי כאשר: הלקוח מבקש החזר, מזכיר את הפעולה המשפטית, מדווח על סוגיה ביטחונית או שואל אותה שאלה שלוש פעמים".

5
דברים שלעולם לא לעשות

"לעולם אל תבטיח החזרים.לעולם אל תשתף בנוסחאות מחירים פנימיות" לעולם אל תמציאו תכונות מוצר שאינן קיימות.לעולם לא תיתן ייעוץ רפואי, משפטי או פיננסי".

דוגמה

דוגמה: לקוחות AI Drive - חנות מקוונת
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 Quick * אירוח החברה
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
ביקורת: AI History Weekly

קראו שיחות שבהן הבינה המלאכותית נתנה תשובות שגויות או חתומות.

3
עדכון מהיר

הוסף כללים ספציפיים לבעיות חוזרות ונשנות: אם AI שומר החזרים מבטיח, להוסיף "לעולם אל תבטיח החזר.אמר כי אתה תסלם לצוות חיוב".

4
הוסף ידע

אם ה-AI אינו יכול לענות על שאלה, להוסיף את התשובה לבסיס הידע ולא לנסות להתאים הכל.

⚠️
שמור את המהירות שלך מתחת 2,000 מילים, יתר על כן, יכולות לבלבל את AI ולהגביר עלויות אסימונים. לשים מידע מפורט בבסיס הידע במקום זאת.
מה ההבדל בין הדחף לבין בסיס הידע?+

ההנחיות מגדירות אישיות, גבולות וכללים.בסיס הידע מספק מידע עובדתי (פרטים למוצר, תמחור, מדיניות) AI קורא הן, אך ההתנהגות המהירה בזמן שה- KB מספק תשובות.

האם ניתן לקבל הצעות שונות למחלקות שונות?+

המהירות היא מרחב עבודה.אם אתה צריך התנהגות בינה מלאכותית שונה עבור מחלקות שונות, השתמש בבסיס הידע כדי לספק מידע ספציפי המחלקה ולזכיר את ההקשר של המחלקה במדריך שלך.

אהה.

היסטוריה של בינה מלאכותית

היסטוריית בינה מלאכותית מראה לכל שיחה של-AI יש עם לקוחות ומנהלי מערכת. השתמש בה כדי לבדוק את ביצועי AI, למצוא תשובות שגויות וזיהוי פערים באימונים.

היסטוריה של בינה מלאכותית
היסטוריה של בינה מלאכותיתיומן של בינה מלאכותית פונה עם תגים מסוג, השאלה והתשובה, זמן תגובה ותוצאה.היסטוריה של בינה מלאכותיתסביבת העבודהכל ספין-א-אינטלי, נרשםצ'אט צ'אטש: איפה ההזמנה שלי?A: נשלח היום, מעקב אחר UPS0.9sענהכרטיס הכרטיסתגובה ל-T 12345_החזר כספי טיוטה1.4sdraftedניהולקבלו כרטיסים השבוע12 המונחים: line back2.1sעשהצ'אט צ'אטש: ביטול התכניתמועבר לאדם0.7sescalated1EVERY TURNתגובה, פעולה2SEARCHABLEפילטר & יצוא3OWNER-ONLYמסלול ביקורת מלא
כל AI פונה (chat, טיוטת כרטיסים, פעולת ניהול) מחובר עם המהירות המדויקת, תגובה, משך ותוצאה.

מה שכל שיחה מראה

תאריך וזמן

כששיחה קרה.

זהות הלקוח

שם ודואר אלקטרוני אם הם ידועים, אחרת IP מדינה.

ערוץ ערוצים

צ'אט widget, כרטיס אוטומטי, טיוטת דואר אלקטרוני או מנהל AI.

הודעות

תמליל מלא של השיחה: הודעות לקוח ו- AI.

שימוש ב- ken

כמה אסימונים השיחה שצרכו.שימוש בסימון גבוה עשויים להצביע על AI נותן תשובות מבולות יתר או שהשיחה הלכה במעגלים.

פעולות שננקטו

כל פעולות שבצעה AI במהלך השיחה (ראו סדר, יצרו כרטיסים וכו ').

דירוג הדירוג

אם CSAT מופעל, דירוג שביעות הרצון של הלקוח לשיחה זו.

מציאת בעיות

חיפוש באמצעות מילת מפתח

חפש נושאים ספציפיים כדי לראות כיצד AI מטפל בהם.דוגמה: חיפוש אחר "מימון" לבדוק אם ה-AI עוקב אחרי מדיניות ההחזר שלך.

פילטר byדירוג

הצג רק שיחות בעלות נמוכה להתמקד בלקוחות לא מרוצים.

פילטר by Channel

הצג רק כרטיס אוטומטי compplies כדי לבדוק תגובות אוטומטיות בנפרד מ צ'אט.

המונחים: token use

שיחות גבוהות עשויות להצביע על בעיות: ה-AI rambling, הולך במעגלים או לא לענות על השאלה.

ביקורת שבועית

1
בדוק שיחות בעלות נמוכה

קראו את התמליל המלא: מה השתבש?

2
בדוק שיחות בעלות גבוהה

האם ה-AI חזר על עצמו?האם הוא לא הבין את השאלה?

3
עדכון אימון

עבור פערי ידע, להוסיף מאמרים לבסיס הידע.עבור בעיות התנהגות, לעדכן את AI.לתשובות שגויות חוזרות ונשנות, להוסיף כללי תיקון מפורשים.

מציאת פערי ידע

סקורסארי:
You Search AI History for "התקנה"15 שיחות עם בינה מלאכותית אמרו: "אין לי הוראות התקנה ספציפיות למוצר הזה".
מה לעשות:

משמעות הדבר היא שבסיס הידע שלך חסר מדריכי התקנה. צור מאמרים בבסיס ידע עבור כל צעדי ההתקנה של המוצר לאחר הוספתם, בדיקה על ידי שאלת שאלות ההתקנה AI.

אהה.

תובנות בינה מלאכותית

תובנות בינה מלאכותית מנתחות באופן אוטומטי דפוסי שיחה וממצאים ניתנים לפעולה: שאלות נפוצות, מגמות שביעות רצון, פערי ידע ודפוסי ההסלמה.

תובנות בינה מלאכותית
תובנות בינה מלאכותית (Intelligence Hub)The Intelligence Hub: A AI Today's brief, Smart Alerts, a Score-a-Lead / Analyse-a Page Tool ו-A-Page 14- יום תעבורת דפוס תרשיםתובנות בינה מלאכותיתסביבת העבודההיום ה- BRIEFתעבורה 12%; 3 מוביל חם;2העסקאות צריכות מעקב.התראות חכמותשגיאות בדיקהקומו על /pricingחדש מוביל חם מארצות הבריתהכנסות לפני שבוע שעברראשי > Analyse a PageIP או URL…רוץ!14- Day Traffic Pattern1היום ה- BRIEFAI כותב את סיכום הבוקר2SMART ALERTS« Anomas Surfaceed3ON DEMANDציון מוביל - לנתח דף
The Real Intelligence Hub: A AI-נכתב היום קצר, התראות חכמות עבור אנומליות, על פי דרישה הבקיע וניתוח הדף, ואת ניתוח העמודים, וכן 14 דפוס התנועה של היום

אילו תובנות מראות

שאלות מובילות

השאלות הנפוצות ביותר: "איך אני לאפס את הסיסמה שלי?", הוא #1_._, בסיס הידע שלך צריך מדריך בולט של איפוס סיסמה.

מגמות שביעות רצון

CSATהאם שביעות הרצון של בינה מלאכותית משתפרת או יורדת? טיפות סודדן עשויות להצביע על שינוי בסיס ידע ששבר משהו.

שיעור ההחלטות

איזה אחוז שיחות יש לבינה מלאכותית ללא התערבות אנושית? 70% טוב למטה 50% כלומר, AI צריך יותר אימון.

סיבות להסלמה

מדוע שיחות מועברות לבני אדם.סיבות נפוצות: הלקוח המבוקש אנושי, בינה מלאכותית לא יכול לענות על נושא רגיש ונושא חיוב.

פערים ידע

נושאים שבהם AI אומר לעתים קרובות "אני לא יודע" או נותן תשובות אבטחה נמוכות.

אורך השיחה הממוצע

כמה הודעות לשיחות ארוכות מאוד (10 הודעות+ עשויות להצביע על כך שה-AI אינו מבין את השאלה.

שימוש בתובנות לשיפור

סקורסארי:
תובנות בינה מלאכותית מראות כי 23% ההסלמה היא "לקוח נשאל על אחריות" ו-AI לא יכול לענות.
מה לעשות:

זהו פער ידע ברור: (צעדים):1) לכתוב מאמר אחריות מקיף בבסיס הידע המכסה את כל תנאי האחריות, תהליך תביעה והדרה.2(עדכון ה-AI מאפשר התייחסות למידע על אחריות.)3מעקב אחר תובנות AI בשבוע הבא כדי לראות אם ההסלמה באחריות יורדת.

אהה.

Admin AI Playbook

Admin AI (Ask)OpsIQ עוזר לקבוצה שלך לנהל OpsIQ מתוך לוח המחוונים של מנהל המערכת, באפשרותך לבקש ממנו לבחון נתונים, להסביר תכונות, לסכם כרטיסים ולבצע פעולות פלטפורמה.

AI
Admin AI Playbookשאל-OpsIQ תיבת פקודה עם כרטיס פעולה פלטפורמה AI-proposed מראה פרמטרים ומאשר / Cancel.שאל לשאול OpsIQסביבת העבודהשאל לשאול OpsIQלשלם את השירות עבור חשבון overdue #4821אהה.פעולה: השעיה_serviceתגית: #4821 (המשך $120)פלטפורמה: WHMCS · הופכת · מעודכנתאישורביטול1ASK ANYTHINGפקודות אנגלית- Plain2PROPOSE FIRSTפעולה המוצגת לפני שהיא3YOU CONFIRMסקופד & ביקורת
ספר למנהל AI מה שאתה רוצה באנגלית פשוטה; הוא מציע את הפעולה המדויקת (המפופסת, הפוכה, ביקורת) ומחכה לאישור שלך.

מה יכול מנהל AI לעשות

עקבו אחרי data

שאל: "תראה לי את כל הכרטיסים [email protected] או "מהו מעמדו של הסדר #ORD-5523?"

סיכום

שאל: "תפסיקו אחרונים 10 כרטיסים או "מה הם בעיות התמיכה העיקריות השבוע?"

תכונות להסביר

שאל: "איך אני מגדיר אוטומטית?", או "מה משמעות כרטיס הקופה?

פעולות הוצאה

שאל: "לרשום כרטיס [email protected] על חיוב או "כרטיס קלוז 12345"

שאילתות פלטפורמה

שאל: "כמה מבקרים קיבלנו אתמול?"

דוגמה לשיחות

מבט על לקוח

סקורסארי:
אדמין שואל: "מצא לקוח [email protected] להראות לי את הפעילות האחרונה שלהם".
מה לעשות:

AI מסתכל על הלקוח בכל מקורות נתונים מחוברים: מפגשים מבקרים, כרטיסים, שיחות צ'אט, הזמנות ו- CRM אנשי קשר.זה מחזיר סיכום של פעילות עדכנית עם קישורים לכל פריט.

קבלת סיכום יומי

סקורסארי:
אדמין שואל: "מה קרה היום?"
מה לעשות:

ה-AI מסכם: "היום היית 245 מבקרים (up 12%), 8כרטיסים חדשים (3 נפתרה על ידי AI)2פקודות חדשות בסך $198 ו1צ'אט הסלמה בעיכוב משלוח".

ביצוע פעולה

סקורסארי:
אדמין שואל: "החלפת כרטיס T 5523 _עדיפות ל- Urgent"
מה לעשות:

הב'אי אישר: "אני אשנה את עדיפות הכרטיס T-5523 מנורמלי לדחוף. זה ישפיע על שעון הSLA. אישור?" אתה מאשר, והפעולה מבוצעת.

💡
ה- Admin AI מבצע רק פעולות שנרשמו במרשם הפעולה, הוא אינו יכול להמציא פעולות או מערכות גישה מחוץ למערכת חיצונית. OpsIQ.
אהה.

תרחישים של Customer AI

סעיף זה מכסה תרחישים AI נפוצים של לקוחות עם התנהגות צפויה ועצות הדרכה.

לקוח AI
תרחישים של Customer AIספריית שאלות לקוחות מוזגת עם התנהגות AI צפויה ותגי תוצאות עבור כל אחד.תרחישים של Customer AIסביבת העבודהספריית סקרנריו - צפויה התנהגות מלאכותית"איפה ההזמנה שלי?"ראה את ההזמנה באמצעות מחבר, תן מעקבפתרון"אני רוצה החזר"ידע, לעולם אל תבטיחו – יד לאדםיד"האם השירות יורד?"בדוק את המצב, לדווח על המדינה הנוכחיתסטטוס"אפשר למחוק את החשבון שלי"אישור, אחר כך כוון לאדםאישור1SCENARIOSשאלות נפוצות2EXPECTEDכיצד בינה מלאכותית צריכה לענות3בדיקהמצא פערי אימון
ספריית שאלות לקוחות אמיתיות ובדיוק איך ה-AI צריך לטפל בכל אחד, כדי לבדוק את האימונים ולמצוא פערים.

ספריית Scenario

המונחים: Status Exploration

סקורסארי:
לקוח: "Where Is My Order #12345_>
מה לעשות:

התנהגות בינה מלאכותית צפויה: (1חפש את ההזמנה דרך חיבור הפלטפורמה.2) דווח על המצב הנוכחי (עיצוב, נשלח, מועבר).3כולל מספר מעקב אם קיים.4אם ההזמנה נדחתה, להודות ולספק לוח זמנים מתוכנן.5לעולם לא להמציא מידע מעקב.

בקשה ל-Fitret

סקורסארי:
לקוח: "שכחתי את הסיסמה שלי ולא יכולתי להיכנס"
מה לעשות:

התנהגות מלאכותית צפויה: (1(1) לספק את הסיסמה לאפסת צעדים מבסיס הידע.2(כולל קישור לאפסה או דרך דף).3(הופנה מהדף איפוס עשוי לקחת כמה דקות.)4• מציע בדיקת תיקיית ספאם (Samsing cookies).5אם הלקוח עדיין לא יכול ליישב, להסלים לאדם.

בקשה

סקורסארי:
לקוח: "אפשר להוסיף מצב אפל לאפליקציית הפלאפון?"
מה לעשות:

התנהגות מלאכותית צפויה: (1תודה רבה על ההצעה.2להסביר כיצד בקשות תכונה מטופלות (מוצק, נבדק, preitized).3אל תבטיחו שהתכונה תיבנה.4אם קיימת תכונה דומה, הזכירו אותה.

מחלוקת

סקורסארי:
לקוח: "אני מואשם, אבל השירות שלי לא עובד"
מה לעשות:

התנהגות מלאכותית צפויה: (1) להכיר את התסכול.2בדוק את מצב השירות במידת האפשר.3(הופנה מהדף מחלקת החיוב עם כל הפרטים).4אל תבטיח החזר (5• לקבוע עדיפות לכרטיס גבוה.

שאלה מחוץ לעליון

סקורסארי:
לקוח: "מה מזג האוויר כמו בלונדון היום?"
מה לעשות:

התנהגות מלאכותית צפויה: (1"אני עוזר התמיכה שלך ואני יכול לעזור עם שאלות על המוצרים והשירותים שלנו.2שאל אם יש לך שאלה של מוצר.

איך בודקים התנהגות של בינה מלאכותית?+

פתח את האתר שלך בדפדפן פרטי / אינקוגניטו וצ'אט עם AI כלקוח. נסה שאלות נפוצות, מקרים קצה ותרחישים יריבים.בדוק כי ה-AI עוקב אחר הכללים הבאים שלך ומשתמשת תוכן בסיס ידע נכון.

אהה.

בסיס הידע

בסיס הידע הוא ספריית מאמרים שהבינה המלאכותית משתמשת לענות על שאלות.כאשר לקוח שואל משהו, AI מחפשת את הבסיס ידע למאמרים רלוונטיים ומשתמש בהם כדי ליצור תגובה מדויקת ומועילה.

בסיס ידע
בסיס ידעמקורות מזינים לתוך חנות ידע, אז AI מייצרת תשובה מואצת וצוטטה.בסיס ידעסביבת העבודהמקורותאתר אינטרנטזחלעזרה מאמריםשאלות נפוצותייבוא docsידעמילת מפתח +אהה.תשובה מבוססתעם מקור צוטט."הכספים לוקחים 3–5ימי עסקים".1INGESTCrawl, שאלות ותשובות2RETRIEVEמילת מפתח +3GROUNDEDתשובות מהתוכן שלך
לכופף את האתר שלך ובוא דוקס בבסיס הידע; AI משחזר את החלקים הנכונים ואת התשובות, מעומק וממצוטט.

איך זה עובד

1
הלקוח שואל שאלה

"מה מדיניות ההחזר שלך?"

2
AI מחפשת את בסיס הידע

OpsIQ מצא את המאמר "מדיניות החזרה" על ידי התאמת מילות מפתח ומשמעות סמנטית.

3
AI יוצר תגובה

AI קורא את המאמר וכותב תשובה בשפה טבעית המבוססת על תוכן המאמר.

4
הלקוח מקבל תשובה מדויקת

התגובה מבוססת במדיניות שלך, לא נתוני האימון הכללי של AI.

יצירת מאמרים טובים

נושא אחד למאמר

כתוב מאמר נפרד לכל נושא: מדיניות החזרה, שערי המשלוח, הגדרת החשבון, איפוס סיסמה.אל תשלב נושאים לא קשורים.

לכתוב כמו שאלות

התחל עם השאלה לקוחות לשאול, ולאחר מכן לספק את התשובה.זה עוזר ל- AI להתאים שאלות למאמרים.

להיות ספציפי

"יש להתחיל מחדש בתוך 30 ימים של משלוחים טובים יותר מ"יש לנו מדיניות החזרה".

מקרים בודדים

מה לגבי מוצרים דיגיטליים?מה עם מוצרים דיגיטליים ? What About פריטים שנרכשו למכירה?

שמור על זה הנוכחי

בדוק מאמרים ברבעון.מחק מידע מיושן.עדכון מחירים, מדיניות והליכים כאשר הם משתנים.

מאמרים מתחילים שכדאי לכתוב

משלוח ומשלוח

עלויות המשלוח, זמני המשלוח, מעקב, משלוח בינלאומי ועיכובים בטיפול.

החזרים וחזרים

חלון החזרה, תנאים, תהליך, החזר זמן ו חריגים.

ניהול חשבון

איפוס סיסמה, שינוי דואר אלקטרוני, מחיקת חשבון ויצוא נתונים.

מחיר וחיוב

תיאורים של התוכנית, מחזור חיוב, שיטות תשלום, חשבוניות ומטבע.

מדריכי מוצר

כיצד להשתמש בכל מוצר או תכונה.שלב הוראות עם צילומי מסך

פתרון בעיות

בעיות נפוצות ופתרונות. הודעות שגיאה ותקנון שלהם

מידע ליצירת קשר

שעות עסקיות, ערוצי תמיכה, זמני תגובה ונתיבי הסלמה.

חוקי וציות

מדיניות פרטיות, תנאי סיכום שירות, GDPR בקשות נתונים.

ידע משותף

כל מחבר יכול לתרום ידע ל- AI.כאשר מחבר מופעל, מאמרים הידע המובנה שלה (קטלוג מוצרים, שאלות נפוצות, פתרון בעיות ספציפיות פלטפורמה) זמינים באופן אוטומטי לבינה מלאכותית.אתה יכול להתחבר או לצאת לחבר בהגדרות Connector.

תקציב Token

בסיס הידע יש תקרה אסימונית (default: 32,000 אסימונים) השולטים כמה הקשר ידע נשלח ל-AI לכל שיחה.אם בסיס הידע שלך גדול מאוד, AI בוחר את המאמרים הרלוונטיים ביותר בתקציב זה.להגדיל את התקרה אם ה-AI אינו מוצא מאמרים רלוונטיים; להקטין אותו אם ברצונך להפחית עלויות אסימוניות.

כמה מאמרים צריך להיות?+

התחל עם5-10 מאמרים המכסים את השאלות הנפוצות ביותר שלך, הוסף יותר כפי שאתה מזהה פערים באמצעות היסטוריית AI ותובנות בינה מלאכותית. רוב העסקים צריכים 20-50 מאמרים לכיסוי מקיף.

האם ניתן לייבא מאמרים ממערכת אחרת?+

כיום, מאמרים נוצרים באופן ידני. OpsIQ אתה יכול להעתיק תכנים משאלות נפוצות קיימות, מרכזי עזרה או מסמכים.

איזה פורמט צריך להיות מאמרים?+

טקסט רגיל עובד בצורה הטובה ביותר.הבינה המלאכותית מבינה שפה טבעית יותר מאשר מובנה HTML לכתוב או לסמן, כפי שתסביר ללקוח.

אהה.

הערכה מלאכותית ו- Watchtower

הערכת קבוצות הופכת את השאלות הקריטיות של לקוחות לבדיקות חוזרות על איכות התשובה, ציטוטים, הסלמה ובטיחות הפעולה.

מסך המוצר
הערכה מלאכותיתהערכת AI מציינת מקרים של מבחן זהב, התנהגויות דורשות, תוצאות אחרונות ומופעי Watchtower.הערכה מלאכותיתסביבת העבודהSETS6CASES84PASS RATE96%ביקורת עבודה WorkSPACEמדיניות המשלוחcytation נדרשמעברבקשה להחזראישור אנושי נדרשמעברתביעה בלתי נתמכותפעולה אסורהמעברשאלה הגירהמקור: Missingלהיכשל1CREATE CASESזהב קלט וכללים2RUN SAFELYריצה יבשה או חיה3WATCHלוח זמנים יומי או שבועי
הערכת AI מציינת מקרים של מבחן זהב, התנהגויות דורשות, תוצאות אחרונות ומופעי Watchtower.

מנהלי מערכת מלאה יכולים ליצור ערכות הערכה עם תוויות קוד מהירות, צפויות, ציטוטים נדרשים, כללי אישור אנושי, ציפיות ההסלמה ופעולות אסורות. להפעיל סט ישיר, יבשה, או לשחזר היסטוריה שנבחרה.

שער לוח זמנים יומי או שבועי בדיקות דרך cron ורץ מספר מוגבל של מקרים (עד שמונה לכל מעבר מתוכנן) סקירת כישלונות לצד ספק / מודל, גרסה מהירה, גרסת ידע, פעולות המוצעות ועלות לפני שינוי התנהגות הייצור.

אהה.

שפות ותרגום

שפות מצליחות לתרגם טקסט מוצף לקוח וההתנהגות בשימוש כאשר OpsIQ עקבו אחרי שפת הלקוח

מסך המוצר
שפותדף השפות מציג את שפת המקור, שפות מתורגמות, טיוטה / חיים המדינה והתנהגות שפה של לקוחות.שפותסביבת העבודהמקוראנגליתLANGUAGES4חיים לחיות3ביקורת עבודה WorkSPACEצרפתיתNameממשק ותכניםחיגרמניה גרמניתממשק ותכניםחיספרדיתתרגום לעבריתטיוטהעקבו אחרי הלקוחתגובה בשפה מזוההעל On1SET SOURCEשפת המפעילה המקורית2ADD LANGUAGEתרגום ברקע3PUBLISHחי או Draft
דף השפות מציג את שפת המקור, שפות מתורגמות, טיוטה / חיים המדינה והתנהגות שפה של לקוחות.

OpsIQ לתרגם טקסט ממוקד לקוחות. הגדרת שפת המקור נכון לפני יצירת תרגומים, להוסיף שפות יעד, ולאחר מכן לסקור טיוטות לפני פרסום "עקב שפה של הלקוח" שולטת בשפת התגובה; תרגום ממשק widget שולט על הכפתורים שלו, תוויות וטקסט מערכתי.

היקף התרגום יכול להיות טיוטה בלבד או לחיות.אל תסמוך על תרגום מכונה עבור משפטי, החזר, אבטחה או טקסט בטיחות ללא ביקורת אנושית.

כל מקום שמחזיק את מילתך משלך מופיע עם ספירת ההודעות שלה: הודעות צ'אט לקוחות, מבצעים, הודעות יזום, זרמי צ'ט, סיורים מודרכים, הודעות, בועות תה ו סקרים וצורותמשטח הסקר מכסה כל סקר שפורסם לחלוטין: הכותרת, כל שאלה, כל אפשרות תשובה, כפתורים, קבלת פנים ותודה עותק, דף chrome ועמודי תוצאות. Keys קשורים ל- ID של השאלה ואת ערך האפשרות, כך תיקון שאלות או אפשרויות לעולם לא מאבד תרגום, ותיקון הודעה אחת מחדש רק הודעות אלה פורסמו מחקרים מוצעים על ידי ברירת מחדל; טיוטות כאשר אתה הרחב היקף.

סקר הדואר האלקטרוני שלאחר צ'אט עוקב אחר השפה המבקר למעשה צוטט, בתנאי ששפה היא אחת שאתה מציע כאן; אחרת זה משתמש בשפת המערכת שלך.שש שדות העריכה שלה מתורגם גם בדף זה, וההתנהגות יש מתג משלה בהגדרות צ'ט לקוחות.

כרטיסי והודעות פורטל מכסה את הסוג קבוע של מפעילי הטקסט פעם וכל לקוח מקבל באותה שפה אחת: אישור הכרטיס, פתח, סגור משוב אישורים, כל חותמות על השתתפות ואת הפורטל בברכה. (אוטומטי AI לא צריך אף אחד מזה, זה כבר תשובות בשפת הלקוח). לקוחות דואר אלקטרוני בשפתם מותר OpsIQ כתיבה, דואר אלקטרוני כרטיס פותר את שפת הנמען בסדר זה: השפה שהם בחרו בפורטל או מרכז העזרה (הופנה מהדף), המקומיים על לוח המגע שלהם, אז את השפה הם כתבו, מזוהה מקומית על ידי טווח תסריט ומילים סימון, ללא שיחה חיצונית.רק שפות נבחרות בדף השפות משמשים אי פעם, כך התכונה היא אינרט עד ששפות מתווספות. HTML עטיפה דואר אלקטרוני היא לא מתורגם בכוונה: זה סימן, לא דואר אלקטרוני מוצף צוות (הודעות, התראה במחלקה, תדרי מחלקה, אנליסטים קצרים, דוחות מתוכננים, לעיכול השבועי) תמיד משתמש בשפת המערכת.

PeopleOS HR

PeopleOS: מערכת ההפעלה של כוח העבודה המנוהל

הפעל את מחזור החיים של העובד מחקירה כדי להדוף עם שירות עצמי נייד, זרימת עבודה ממוקדת ראיות, אינטגרציה קלה ושליטה אנושית על החלטות רגישות.

מפת המערכת האינטראקטיבית
מרכז הפיקוד של PeopleOS Lifecycleלוח נתונים תלת מימדי של PeopleOS המקשר בין גיוס, עובדים, שכר, למידה ושלט AI.מרכז הפיקוד של PeopleOSאפשרויות ל EVIDENCE LIVEאנשים248תגית: ROCKS12המונחים: gATES15 / 15החיים מלאיםגיוסשכרגידולתגמולהמעברOne RECORDזהות + ראיות תעסוקהאדם אמיתיערעור, תיקון,להוכיח את זהOUTCOMe ו-Exrection
PeopleOS שומר על מחזור החיים, בקרה והוכחה על קובץ אחד.

מנהל

אופרה

נהל אנשים, ארגון, גיוס, על הסיפון, מסמכים, לעזוב, לשלם פיוס, הטבות, ביצועים, למידה, יחסי עובדים, ניתוח וממשל.

עובדים ומנהלים

שירות עצמי

השתמש פורטל נייד-ראשון עבור רשומות פרטיות, בקשות, מסמכים, על הסיפון, זמן, הסברים בתשלום, למידה, מידע החברה וזכויות.

מפתחים

הרחב

השתמש ב-Created hr.* פעולות וסקר platform.hr.* פעולות באמצעות חוזה אחד, בתוספת כיתות מחבר הקלדה.האינדקס שנוצר ב-PeopleOSAPIכל אחד יש את ההיקף שלו.

⚠️
PeopleOS אינו מנהל משכורות, יועץ משפטי, סוכנות לבדיקת רקע או ספק זהויות. מערכות חיצוניות מוסמכות שומרות על האחריות הזו. בדיקה טכנית ירוקה לעולם לא יוצרת אישור חוקי או ראיה של ספק.

מקבל את PeopleOS HR

PeopleOS HR כוללת בתוכנית Enterprise. בכל תוכנית אחרת בתשלום היא תוספת: בעל החשבון נפתח חשבון החשבון→תוספות & Tokens, בחירת שכבת משאבי אנוש של PeopleOS ו- AI מתחיל את המשפט החופשי או מוסיף אותו בצורה נכונה.המצנים שונים בכמה אנשים וכמה גיוס, ראיון ופעילות בינה מלאכותית הם מבצעים.מחירים ומגבלות נקבעים על החשבון, לא כתוב במוצר, אז לראות את הטיינים הנוכחיים על ה tiers הנוכחי על גבי ההזניקים הקיימים על גבי המוצר. דף התמחורמה שהמודול עושה, על פני השטח, הוא על אתר מוצרים של PeopleOS HR.

מי יכול להוסיף

תוכנית בתשלום פעילה.תוכנית חופשית לא יכולה להוסיף אותה, ותכנית בתשלום שעדיין נמצאת בתוך תכנית הלימודים שלה צריכה לחכות עד שהמשפט הזה יסתיים.

המשפט החופשי

המשפט פועל על השכבה שאתה בוחר בה, כאשר הוא מסתיים ללא רכישה של זכאות הוסר ושום דבר לא מואשם.שום דבר אינו נמחק: השיאים נמצאים שם שוב ברגע שהתוספת תתווסף.

כאשר אין בבעלות

PeopleOS HR לא מופיע בסרגל הצד, בפלטת הפקודות, בהגדרות או בעזרה בתוך היישום. קישור ישיר לדף HR מציע את התוספת במקום הדף.

להגיע לכובע

כאשר מגיע גבול שכבתי לדף מציע את השכבה הבאה.עריכה או הסרת מה שכבר קיים לעולם לא חסום.

התקנה עצמית

זכאות נוסע ברישיון. הוסף את התוספת על שלךOpsIQהחשבון וההתקנה אוספים אותו בבדיקת הרישיון הבאה שלו.

תכנון שבוע ראשון

הכל מתחת הוא מסך אמיתי, שום דבר לא צריך מפתח.

1
סובב את המודול

פתוח PeopleOS → HR ביתלוח הדגל מתחיל עם מתג המאסטר, PeopleOS HRעם זה ללא דף HR או משטח עובדים ניתן להגיע.להסתובב מתג הוא אישור שני לחץ; הפעלת אחד off היא לחיצה אחת. AI מתג מתחתיו (עזרה מהירה, בדיקת יישומים, עוזרים אוטונומיים, ראיונות בינה מלאכותית, הצעה אוטומטית שליחת, אימות זהות) להישאר עד שתחליט.

2
תנו לטייס ההתקנה של Co לעשות את התצורה

פתוח PeopleOS → הגדרת קופיילוט ולומר מה אתה רוצה בשפה פשוטה: מדיניות יציאה עם ימיה ושימו לב, חגים ציבוריים למדינה, קטגוריה של מקרה עם שלהSLA, כובע עלות, תבנית על סקייטבורד, דופק חודשי.אתה מקבל את התוכנית בחזרה עם מה שהוא הבין ומה הוא הניח.שום דבר לא רץ עד שאתה מאשר; צעד בסיכון בינוני זקוק לאדם שני; כל ריצה משאירה קבלה.

3
שם: פורטל העובד

פתוח PeopleOS → Frontline → Sign-in designעל גבי מתקן עצמי, הפורטל חי בו /hr/<address>; כתובת פורטל שם מחדש את זה מיד וזקן קישורים להמשיך לעבוד כי הכתובת הישנה מתקדמת. /hr על המארח שלך ולא צריך כתובת.

4
אתר הקריירה שלך

פתוח PeopleOS → גיוסכל פרסום שאתה מפרסם מחקירה שאושרה מופיע בדף הקריירה הציבורית; הקישור פתח את דף הקריירה הציבורית בראש הגיוס, בדיוק מה שמועמד רואה.

5
רשום קיוסק למכשירים משותפים

פתוח PeopleOS → Frontline → Kiosks ובחר רשום את koskהמכשיר מוצג פעם; פתח את דף הקיטוב על הלוח או המחשב (זה הוא מופיע פעם אחת) /kiosk על המארח בפורטל) ודבקו בו.אנשים צופים עם הדואר האלקטרוני שלהם בעבודה וב- PIN, או עם קוד תג קצר מועד מהפורטל שלהם.התחילה של קיוסק עוצר את המכשיר בבת אחת.

6
להחליט מה העובדים יכולים לעשות למען עצמם

פתוח הגדרות הגדרות→HRכל כוח בשירות עצמי (רשומות, בקשות, מסמכים, לעזוב, לשלם הסברים וכן הלאה) מוגדר לכל עובד, מנהלים בלבד או צוות אחד והצוותים תחתיו.כל שינוי שהפך אותו ומדוע, וכוח שאתה מכבה מוסבר לעובד ולא חסר שקט.

7
הוסף אנשים ולתת להם גישה

על On PeopleOS → אנשים ליצור את האדם, את העסקתם ואת מנהלם. גישה פורטל רק פעם לאדם יש דוא"ל תקף ומערכת יחסים ייעודית תעסוקה; ההזמנה יוצאת מאותו מסך והמשך מתחיל מהמסע שאתה מגדיר.

מחזור החיים

תוכנית וגיוס

יצירת quisitions מאושר, לפרסם עבודות, לקבל יישומים באמצעות webhooks בטוח requery, ביקורות מבנה, ראיונות לוח זמנים, החלטות שיא, הצעות נושא לשכור.

הצטרף ואספקה

בנה עדויות על סיורים, לאסוף את גרסת המסמך הנכונה, לבקש ציוד, להעניק תבניות גישה מאושרת וגישה פורטל ללא הגבלת זמן.

עבודה וצמיחה

לעזוב, לוחות זמנים, הסברים בתשלום, הטבות, הוצאות, מטרות, משוב, ביקורות, למידה, מיומנויות, הזדמנויות פנימיות, רצף וניתוח כוח העבודה.

תמיכה והגנה

לספק תמיכה פרטית HR, חוקי אחריות העובדים, תביעות נתונים, תיקון, הסבר, ערעור וביקורת אנושית עצמאית.

שינוי ויציאה

השתמש בשינויים יעילים של תעסוקה, ביטול הגישה, שחזור ציוד, יישב ספקים חיצוניים, החל את השימור והמשמר ראיות הנדרשות.

גישה וזהות

אדם תותחי הבעלים של רשומות תעסוקה ופניות זהות חיצוניות מאומתות.דואר אלקטרוני הוא נתוני מגע דו-פעמיים, אף פעם לא מפתח הזהות הקבוע של פורטל קורא הן עצמיות מופצות; מנהל ומנהלי דעות דורשים הרשאות מפורשות.APIהיקפי שכבה על גבי הרשאות המסלול ולעולם לא לעקוף אותם.

הוסף עובד חדש

סקורסארי:
צור את האדם, להקצות תעסוקה ומנהל, גישה פורטל הוראה, ולאחר מכן פתח את המסע על הסיפון.
מה לעשות:

השתמש בדיקור יבש ובעוצמה עבורAPIודא כי לאדם יש דוא"ל תקף וקשרי תעסוקה המיועדים לפני שליחת גישה.

לפתור זהות כפולה

סקורסארי:
שתי מערכות חיצוניות מאמינות את אותו עובד אחרת.
מה לעשות:

קישור הן פרצות מאומתות לאדם הקנון ולפתור את הסכסוך במפורש.אל תאחדו רשומות רק משום ששני ערכי דואר אלקטרוני מוטים מתאימים.

PeopleOS HR

משאבי אנוש ושער העובדים

איך כל אזור ה-PeopleOS העיקרי מופעל ומה העובדים רואים לאחר ההרשמה.

אנשים וארגונים

לשמור על האדם האורוני, התעסוקה, סוג העובד, מנהל צוות, מיקום, מיומנויות, מסמכים ומבנה הארגון היעיל.

גיוס והצעות

נע מחקירה מאושרת לפרסום, יישום, ראיות מובנים, ראיון, החלטה, הצעה ושכר עם מסלולי לינה ומשיכה.

על גבי לוחות ומסמכים

החתימה על שלבים ספציפיים לבעלי; לאסוף, לסקור, לחתום, לפוג, להחזיק ולמחוק מסמכים עם גירסה וראיות גישה.

זמן, עזיבה ותזמון

Define מדיניות גיבוי סוגים, מאזן, בקשות, אישורים, חגים, זמינות, אירועים לוח שנה ופיוס.

תשלום, הטבות והוצאות

הסבר תשלום, אישור יד לאירועים עובדים לשלם, ליישב חריגים, לנהל הטבות זכאות למשול החזרים.

ביצועים וצמיחה

מטרות אופרות, צ'ק-ינס, משוב, ביקורות, קליברציה, למידה, מיומנויות, הדרכה, הזדמנויות פנימיות ורצף.

שירות משאבי אנוש ויחסים

תן לעובדים תמיכה פרטית תוך שמירה על סיפוק, משמעת, שרטוט וקבוע ראיות להגבלות ייעודיות.

Analytics ותכנון

השתמש באמצעי כוח העבודה, תוכניות ספירה, קריטריונים וניסיון נגזרים רשומות; לעולם לא להסיק תוצאות חסרות כמו הצלחה.

מפת ה-Sal Portal

סקירה

תחשבו על תשומת לבכם, שינויים מאז הביקור האחרון, בקשות פתוחות, אירועים מתקדמים, על גבי התקדמות והודעות.

פרופיל ורשומות

עבודה, תיעוד מאומת, מסמכים, הרשאות, בקשות פרטיות ובקשות לתיקון.

תמיכה ומשימות

שיחות פרטיות, בקשות, פעולות שדורשות את המשימות של העובד ושל החברה המוצגות בנפרד.

הימים הראשונים שלך

גיבוי ראיות על לוח הזמנים עם הבעלים, עקב המדינה, השלמת העבודה חסומה.

הזמן ועוזב

איזון, בקשות לעזוב, זמינות, לוחות זמנים והשלכות לוח שנה.

מיומנויות וצמיחה

למידה, ראיות מיומנות, מטרות, משוב, הדרכה והזדמנויות פנימיות.

השכר שלי, הסביר

פיצוי בשפה פשוטה ולשלם מידע הפיוס מותר לעובד לראות.

חברה

Directory ו- הארגון תרשים מוגבל לעמיתים נבחרים או מדיניות מאפשר להם לשתף.

זכויות והחלטות

הסברים, ערעורים, הסכמה, תיקון, גישה ובקשות דהילת.

💡
הפורטל הוא נייד-ראשון.כרטיס החשבון נשאר נגיש, ניווט ותוכן לגלול באופן עצמאי על מסכים רחבים, ואת הניווט הנייד מעליות במקום לדחוף או כיסוי הדף. עותק ארוך של תכנון שייך לכלי עזר נגיש או רכיבי גילוי.

רצף תפעול בטוח

1
מדיניות ורשאות

הגדר סמכות שיפוט, תפקידים, נתיבי אישור, שימור, הסכמה ופקדים תכונה לפני טעינה רשומות חיות.

2
חיבור ספקים חיצוניים

התקן את החבילה החתומה המתאימה, הזן אישורים לפחות פריבילקה ולהעביר בדיקות חיבור והתאמה.

3
לרוץ בתיבת חול או צל

תרגיל זרמי עבודה מלאים עם נתונים דטרניסטיים ולהשוות ראיות צפויות לפני שיאפשרו ביצוע אמיתי.

4
שחרור תחת שליטה כפולה

חוקר מורשה אחר בוחן ספק, אבטחה, פרטיות, משפטי, הגינות וראיות נגישות.

PeopleOS HR

בינה מלאכותית, הוגנות, וידאו ובקרות משפטיות

PeopleOS מטפל באוטומטיזציה כדרך של כלי נשלט: אישור מדיניות, ניסיונות ביצוע, תוצאות הספק והוכחה הם עובדות נפרדות.

AI ו- Agent control

כל סוכן משתמש בכלים רשומים מסוגם במטרה, סמכות שיפוטית, מעמד סיכונים ואוטונומיה מקסימלית.אדם לוקח, שוברי מעגלים, אירועים ושינויי סמכות השיפוט להפסיק את ביצועם.תיקוןים עשויים ליצור מודל נתונים מוצע אך לא להכשיר שום דבר עד שאדם מורשה אחר משלים ביקורת פרטיות.

ירידות

קבוצות Define, מינימום דגימות כללים, מדדים, הערכה והערכה שפורסמה באופן חוקי. Missing Data נשאר חסר; הוא אף פעם לא הופך לעובר.

הסברים ובקשות

בנו הסברים מראיות החלטה ומדיניות חתומות, שלחו ערעורים לאדם עצמאי ולשמר את הראיות.

משפטנים

מדיניות המדינה משחררת חבילות רק עם בעל חוקי אחראי, ציטט מקורות משפטיים ומבחנים חולפים.חוק השקיפות הגבוה משנה את השינויים בהשעות שהושפעו מהמסלולים.

חוק ה-AI

לשמור על מלאי המערכת, מעמד סיכונים, הערכה בסיסית של זכויות השפעה, הודעות, מפקחים, מדרינג וראיות.

וידאו: הקרנה גבול

ה-Provision אינה השתתפות

hr.interview.room.provision יוצר מיקום מפגש בלבד. hr.interview.room.connect ניתן להוכיח שהתקשורת הגיעה לעובד.

הסכמה ספציפית

הקלטה, תמליל וחיות ביומטרי הן אפשרויות נפרדות.החל על המטרה שנבחרה.

לא ניתוח מראה

לחוזה וידאו אין שדה או שיטה לרגש, תשומת לב, אטרקטיביות, גזע, נכות או הופעה בהקצנה.

נתיבי אדם וטקסט

מבקר יכול לקחת על עצמו לצמיתות עבור הפגישה, ואת מסלול אירוח טקסט נשאר זמין.

קשב ומחיקה

המחבר מדווח על תחבורה מוצפנת, מדיניות שימור פעילה והודעות ספקיות, ועליה לתמוך בהשמדה כנה.

חדר שנוצר, AI נעדר

סקורסארי:
חדר ZAMURLקיים, אך הגשר התקשורתי לא מסר אודיו/וידאו לעובד הראיון.
מה לעשות:

הצג את הפגישה כהשתתפות ב-AI ו- AI כשגויה, שמור על נתיבי ראיון אנושי וטקסט זמינים.

Callback אומר שהבדיקה עברה

סקורסארי:
דיווח על בדיקת רקע חתום של Webhook
מה לעשות:

להקליט את ה-Callback כרמז, ולאחר מכן לשאול את הספק.רק תגובת הסטטוס האותנטית עשויה לעדכן את הבדיקה.

🚫
הערכה טכנית של נגישות ניתן להקליט על ידי הערכתו, אבל בדיקת WCAG דורשת אדם נפרד.הוכחה לספק, שחרור משפטי וראיות הגינות דורשות גם את הבעלים האמיתיים שלהם.
PeopleOS HR

PeopleOS API ופיתוח חיבורים

השתמש הגנרלAPIעבור פעולות HR ו חוזים מחברים ממושמעים עבור מערכות חיצוניות סמכותיות.

גנרל כלליAPIמקורות האמת

שלחJSONTo to POST /api/v1.phpגלה את פני השטח המסתובבים דרך meta.actionsOpenAPI at /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).

קטגוריות Connector

גיוס

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 החוזה אינו מכיל שיטת קריאה של עובדים.

המונחים: Gateway endpoints

PeopleOS ספק השרתים 1.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בשני הכיוונים, Webhooks הם תמיד רמזים ואחריו על ידי ספק requery.

דלתות אינטרנטיות

שלוש דלתות ציבוריות מקבלות שיחות ספקיות: 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

קרא Read doc/contracts/PEOPLEOS_HR.md בתוך מתקן עוין עצמי לכל מפעיל,APIמחבר, Webhook ושחרור הכלל.

חוזה מפתח Gateway

חבילת ה-Marketplace README.md, DEVELOPER.md, connector_contract.json, hr_profile.json קובץ חתום מגיע לידי ביטוי.

PeopleOS HR

בדיקות ומוכנות ייצור

תביעה של שיגור נקבעת מראיות.מוכנות חבילה, אישור ספק, אישור משפטי, הערכת ההוגנות ומבחן נגישות הם נפרדים בכוונה.

1
אימות קוד וחוזים

Run PHP syntax, PHPUnit,תוואי /APIהמונחים: OpenAPI/Postman Check, החבילה באה לידי ביטוי וJSONאימות של שema.

2
תרגילי עבודה מלאים

בדיקות גיוס, AI Review, ראיון / וידאו, על הסיפון, חתימות, לעזוב, לשלם, פורטל, הודעות, מודולים ודרכי כישלונות המחבר.

3
בדיקה גמישה וגישה

כונן שולחן עבודה, טאבלט ופריסות טלפון; מקלדת, מיקוד, תוויות, ניגודיות, זרימה, כליפטים, דיאלוגים, גלידת הודעות וניווט עצמאי.

4
איסוף ראיות חיצוניות

השתמש בספק אמיתי עגול ומחיקה, מדיניות משפטית משחררת, נתוני ההוגנות נציג ומבחן אנושי עצמאי WCAG.

5
שחרור תחת שליטה כפולה

מבקר שונה מהגיש מאשר המחבר וגילויי שחרור. Revoke או Kill-switch מחבר אם ההוכחה שלו תפוג.

מה שכל תוצאה פירושה

חבילה חתום

קבצים לא השתנו מאז החתימה של החבילה המורשות.זה לא מוכיח חשבון צד שלישי עובד.

סנדקז'ר עבר

התנהגות וחילופי מדינה בהתאם.זה לא מוכיח ספק אמיתי, תקופת תושבות או דהילת.

מחבר הפקה מוסמך

חשבון עבודה ספציפי עבר את חמשת החובות של הספק על פי שליטה כפולה.

דיווח טכני WCAG

ראיות אוטומטיות והערכה קיימות בשם משטחים.אין זו עדות של אדם שני.

שיגור מוכן

כל השערים הדרושים הם ירוקים בו זמנית, ואין שום הוכחה פגומה, נשללה, נעדרת או סותרת על ידי בריאות חיה.

⚠️
לעולם אל תיווצרו עריכת דין, הגינות, ספק או שיא של מבחן עצמאי רק כדי לנקות את השער.תרשום את חוסם ובעל במקום זאת.השקפה המוכנות היא בעלת ערך בדיוק משום שהיא מסרבת לתביעות שלא נתמכות.
מדוע מחבר מותקן אך עדיין לא זמין?+

התקנה מוכיחה נוכחות החבילה.אפשר לה, לשמור על אישורים של לפחות פריבילק אמיתי, לעבור את מבחן החיבור, ולאחר מכן להעניק את היקף ייצור החשבון התאמת של PeopleOS באמצעות ראיות ספקיות אמיתיות וסקירה שונה.

למה לא שינה את השיא?+

הקריאה בחזרה יכולה להיות תקינה, אך רק רמז. בדוק את תיבה הפנויה של webhook, נקודת הסיום של מצבו של המספק ותוצאת התיאום. PeopleOS משנה את המצב הרשמי רק לאחר שאלון חוזר.

איפה כל המכונה נקראת HR API_?+

התקשר meta.actions וסינון עבור hr. and פלטפורמה.hr; או להשתמש/api/v1/openapi.phpו/api/v1/postman.php.הם נוצרים מאותו מרשם במשרה מלאה.

תמיכה

עזרה למרכז

מרכז העזרה שלך הוא אתר עזרה עצמית שנבנה מהמאמרים שאתה מפרסם.לקוחות יכולים לקרוא ולחפש אותו בדף הציבורי שלו, וכן בתוך צ'אט widget, כך שהם יכולים למצוא תשובות משלהם לפני שהם אי פעם לפתוח שיחה.הכל בא מבסיס הידע שלך, כך התוכן זהה כי עילה את AI שלך גם סמכויות הציבור שלך.

איפה הלקוחות שלך רואים את זה

דף ציבורי משלו

אתר עזרה נקי, חיפוש באתר /help.phpלקוחות שגולשים בקטגוריית, מחפשים ופותחים כל מאמר.אתה יכול לתת לו את השם והסגנון שלך.

בתוך צ'אט widget

קישור עזרה בצ'אט widget כך לקוחות יכולים לחפש את המאמרים שלך מבלי לעזוב את הצ'אט.אם הם עדיין זקוקים לאדם, הם אחד מטיפים החל שיחה.

סובבו אותו

1
פתח את דף מרכז העזרה

ללכת Config, then Help Center ב- admin שלך ו-Fr On מרכז עזרה ציבורית.

2
תן לזה שם ומבט

הגדר את שם מרכז העזרה, אשר מראה בראש וכרטיסיית הדפדפן, ולבחור סגנון חזותי. You יכול להפוך את הניווט העליון עבור דף נקי ללא תפריט.

3
לפרסם מאמרים

שום דבר לא מראה עד שתפרסמו מאמרים בנושא זה.החלק הבא מכסה את איך.

מאמרים נוספים במרכז העזרה

מאמרים חיים בבסיס הידע שלך.מאמר מופיע במרכז העזרה ברגע שהוא פורסם וסימן לציבור.יש כמה דרכים לעשות זאת:

פרסום מאמר אחד

פתח את המאמר, לסמן אותו שפורסם, והפך את האפשרות להראות אותו במרכז העזרה.

תוציאו הכל בבת אחת

השתמש ב « אליש כפתור לדחוף את כל הפרסום שלך להגדיר למרכז העזרה בלחיצה אחת, במקום לעשות אותם אחד בכל פעם.

להפוך שאלות לסעיפים

יש כבר שאלות? « לבלבל את כל מה שיעזור כדי להפוך אותם לפריטים כך שהם יושבים לצד כל השאר.

ייבוא בסיס ידע קיים

לעבור משולחן עזרה אחר? ייבוא KB הכפתור על התקנון מביא בסיס ידע קיים עבורך.יש לך שלוש דרכים להצביע על התוכן שלך:

קדימה a URL

תן לו את הכתובת של מרכז העזרה הנוכחי שלך.אם הוא מזהה את הפלטפורמה (לדוגמה Zendesk) זה קורא עץ הקטגוריה המדויק מן פלטפורמה זו. אחרת היא זוחלת את האתר ולבנות מחדש את המבנה מהדפים, לייבא רק מאמרים אמיתיים ו לדלג על כניסה, מחירים ודפי מגע.

בחרו אפליקציה מחוברת

אם פלטפורמה כבר מחוברת למרחב העבודה הזה והוא מחזיק בסיס ידע, הוא מופיע בירידה מתחת ללמטה. יבוא מתוך אפליקציה מחוברתבחר אותו ובוא, לא URL או סיסמה הנדרשת.ה אפליקציה רשומה רק לאחר שהיא מחוברת והגדרתה.

העלאה של a CSV

אין אתר חי כדי להצביע? upload a Spreadsheet with title, categoryו body עמודות. Put Parent / Child בעמודה הקטגוריה כדי לבנות קטגוריות מקוננות.

בכל דרך שתבחר, תקבל תצוגה מקדימה ראשונההמאמרים שמצא, שסומנו על ידי קטגוריה, כל אחד עם תיבת צ'ק כך שתוכל להוריד כל דבר שאתה לא רוצה.שום דבר אינו נשמר עד שתלחץ על יבוא. בטל כל הייבוא בלחיצה אחת, או סנכרון מחדש A A A URL או יבוא מחובר מאוחר יותר כדי למשוך מאמרים חדשים ושנו.

💡
מפתחים: כל מחבר יכול לפרסם את בסיס הידע שלו לירידה זו על ידי הכרזת kb_capabilities בלוק ב settings.json (סוג kb_sourceעם adapter ו base_template(ראה סעיף המחברים והפנייה המחוברת לפלטפורמה.

ארגן עם AI

מרכז עזרה מזייף הוא קל לגלוש וקל יותר לחפש. ארגן עם AI הכפתור עושה את הזיוף בשבילך.בלחיצה אחת הוא קורא מאמרים שפורסמו שלך, למיין אותם לקטגוריות הגיוניות, ולהוסיף תגים.זה יוצר קטגוריה כאשר זה צריך אחד, מחזר קטגוריה שכבר מתאימה, ומדלפק כל דבר שאתה כבר ארגנה, כך שתוכל להפעיל אותו שוב בכל פעם שתוסיף מאמרים חדשים. בואו ל-AI לארגן תת-קטגוריות ב הגדרות מרכז העזרה והוא יכול גם להגיש מאמרים תחת קן Parent / Child קטגוריות, אשר הוא יד לאחר ייבוא בסיס ידע שיש לו תת-סעיפים.

💡
קטגוריות מאפשרות ללקוחות דרך לגלוש, ותגים לחדד את החיפוש בדף הציבורי וב-Widget. You can rename or Moving Things after. AI נותן לך נקודת התחלה חזקה, לא הגדרה שאתה תקוע איתה.

מרכז העזרה בתוך הצ'אט שלך

אתה יכול להציג את מרכז העזרה ממש בתוך צ'אט widget כך שאנשים מחפשים תשובות לפני שהם נותנים לך הודעה בהגדרות הצ'אט שלך, לבחור איפה הקישור מופיע:

בראש

סמל עזרה קטן בחלק העליון של widget.

בתחתית

קישור טקסט תחת תיבת ההודעות, לדוגמה "מרכז העזרה של Browse". You יכול לשנות את המילה.

שני המקומות

הצג אותו בראש ובתחתית עבור הנראות ביותר.

הקישור העזרה יש שליטה צבע משלה תחת הגדרות הופעת widget. Leave It On אף אחד לא כדי להתאים את צבע ההמראה שלך, או לבחור סולידריות צבע או אימוןכל ניסיון העזרה עוקב אחר ערכת ה-Widget שלך, כך שזה תמיד נראה כמו חלק מהמותג שלך.

שים את מרכז העזרה שלך בכתובת האינטרנט שלך

מחוץ לקופסה מרכז העזרה שלך כבר יש כתובת נקייה, משותפת משלו (לדוגמה, /help/your-help-centerאתה יכול ללכת צעד אחד קדימה לשרת אותו מתחת לשלך. התחום הפרטיכך שלקוחות ומנועי חיפוש רואים אותו כחלק מהמותג שלכם, למשל. yourdomain.com/help או help.yourdomain.comהכל ממשיך לעבוד על התחום שלך: קישורים, תמונות, חיפוש ודירוגי המאמר.

באתר הראשי שלך

ב מרכז עזרה, Help Centerפתח את קבצים הכרטיסיה ומציאת "הראה מרכז העזרה שלך בכתובת האינטרנט שלך" בחר את ההתקנה שלך (Cloudflare_, Nginx או Apache), העתק את בלוק המוכן, ולהדביק אותו לאתר שלך. מדריך הגדרות כפתור ליד זה עם השלבים המדויקים.

על תת-דומיין

מעדיפים help.yourdomain.comלאותה פאנל יש אפשרות תת-דומיין. Cloudflare תת-דומיין הוא המסלול האמין ביותר, והוא נותן לך כתובת נקייה עם שום דבר אחריה.

💡
שימוש Cloudflare זה רק מפעיל את העובד שלו על כתובת שהוא נוטה דרך Cloudflare(הענן הכתום) התחום הראשי שלך לעתים קרובות מצביע ישירות באתר האינטרנט שלך, כך ששלטון שמוצב על התחום הראשי יכול לעשות בשקט שום דבר.הדרך התלולה היא תת-דומיין פרוקסיד כמו help.yourdomain.comמדריך ההתקנה הולך אותך דרך אחד DNS שיא והמסלול.
טוב ל- SEO. ברגע שמרכז העזרה שלך נמצא על התחום שלך, מנועי חיפוש מאינדקסים את המאמרים שלך תחת המותג שלך.כל דף מצהיר על הכתובת הנכונה שלה ואת map רשימות אותם, כך שהמאמר הזה לעולם לא ימדד פעמיים.
💡
באמצעות עזרה בתוך ה-widget גם קישור? בהגדרות "פתוחות במרכז העזרה" של צ'אט, להגדיר לאן הקישור הולך אל תחום העזרה שלך ולהיכנס לאותו הכתובת, אז מאמר זה קישורים פתוח גם על התחום שלך, לא על OpsIQ כתובת.

ראה כיצד מרכז העזרה שלך עושה

מעבר לצבעים חד-ממדיים, מרכז העזרה יש משלו ניתוח Analytics. Switch אותו בהגדרות מרכז העזרה, והוא מתעד בשקט את האופן שבו אנשים משתמשים בסיוע שלך: המאמרים המצופים ביותר, מה הם מחפשים, וחיפושים שחזרו ריקים (רשימה מוכן לכתיבה), עובדים מחוץ למדינת מבקרים והמכשיר בכוחות עצמם, כך שהוא אינו זקוק לצ'אט שהותקן כדי לדווח על כל מספר. שניהם מקומות שהעזרה שלך מופיעה, הדף הציבורי והסיוע ב-Widget, כמו גם בשילוב, כך שתוכל לראות כמה משתמשים באמת כל אחד מהם.

💡
Analytics נשאר בחוץ עד שתחליף אותו, ואתה יכול לקבל מבקרים IP כתובות אנונימיות: שום דבר לא נרשם לפני שאתה בוחר.

בחרו מה מופיע בכל חלק בעמוד

לכל חלק ממרכז העזרה (קטגוריות בדף הבית, המאמרים הפופולריים, רשימת המאמר בעמוד קטגוריה ועוד) יש כלל פשוט משלו. הכל פריטים, מספר, ה האחרוןאו רק את אלה שאתה תכונה עם כוכב, כאשר כלל מכסה רשימה, לקוחות עדיין מקבלים קישור "להראה הכל", כך שום דבר לא באמת יוצא מלהגיע.

כמו כן, אתם מחליטים כיצד נראים הקולות העזרים: נסתרים, יחס ידידותי כמו ""12 של 14 מצא את זה מועיל, או אגודלים פשוטים ספירה.הגדרה מינימלית עוצרת מאמר חדש לגמרי של מותג המציג "מביך"0בחוץ0".

ראה אילו מאמרים עובדים

כל מאמר מציג האם זה היה מועיל? כל אחד כן או לא נספר למאמר, כך שתוכל לראות במבט שבו מאמרים לענות על שאלות היטב ואשר אלה זקוקים לכתיבה מחדש.

טקסט ולייבלים

אתה יכול לשנות את כותרות תוויות במרכז העזרה כדי להתאים לקול שלך. להשאיר כל שדה ריק וזה נופל חזרה ל ברירת מחדל הגיונית, כך שאתה רק לערוך את המילה שאתה באמת רוצה להשתנות.

מרכז העזרה חולק ספרייה אחת עם AI. כל מאמר שאתה מפרסם כאן הוא אותו התוכן שבו משתמשת AI כדי לענות על צ'אטים וכרטיסים, כך לשפר אחד את השני.

שאלות נפוצות

האם אני צריך לכתוב תוכן נפרד למרכז העזרה?+

הוא בנוי מאותו בסיס ידע מאמרים ה-AI כבר משתמש. לפרסם מאמר פעם והוא יכול לשרת את שניהם.

האם אפשר להשאיר מאמרים פנימיים?+

כן, רק מאמרים שאתה מפרסם וסימן את הציבור מופיעים במרכז העזרה.כל דבר שלא פורסם נשאר מחוץ לו.

האם הלקוחות עדיין יוכלו להגיע לאדם?+

כן, הקישור של widget יושב במרחק הליכה מהתחלת שיחה, כך ש-עצמי לעולם לא לוכד אף אחד.

צמיחה ו- SEO

אתר Intelligence (SEO Suite)

מודיעין האתר הוא OpsIQ's מובנה-in SEO ו- Search-visibility Suite.It זוחל את האתר שלך כמו מנוע חיפוש, מסלולים שבהם אתה מדורג, מחקר מילות מפתח, שעונים backlinks ומתחרות, לסרוק את נוכחות המפה המקומית שלך, מהירות דף המחאות, והופך אותו לדיווחים לקריאה של הלקוח, עם אנליסט AI המסביר מה לתקן ויכול לנסח את התיקונים.

מודיעין אתר
אתר Intelligenceלוח מודעות SEO המציג ציון של בריאות האתר, מעקב אחר מילות מפתח ומגמה תנועה.מודיעין אתרyoursite.com86תגית: HEALTH3 בעיות קריטיותדירוג מילות מפתחעזרה#3צ'אט חי#7crm for סוכנויות#12לחץ אורגני1זחלמצא בעיות טכניות2פסהמונחים: backlinks3אנליסט ב'יהסבר ו טיוטות תיקונים
סקירה של Site Intelligence: ציון באתר-בריאות מהזחל האחרון, מעקב אחר מילות מפתח חי, מגמה אורגנית לחץ אורגני, ואת הלולאה תלת-שלב: זוחל, לעקוב, לתת ל- AI טיוטת התיקונים.

קבלת מודיעין באתר

אינטליגנציה האתרית היא חלק מהתוכניות נושאות אותה.על תוכנית שאינה, היא עובדת בדיוק כמו PeopleOS HR: בעל החשבון פותח חשבון החשבון→תוספות & Tokens, בחירת שכבת מודיעין האתר ומתחילה את המשפט החופשי או מוסיפה אותו באופן מיידי.תוכנית חופשית, או תוכנית בתשלום עדיין בתוך תכניתו עצמה, לא יכול להוסיף אותו עד שהוא בבעלות החבילה מוסתרת מן הצד וקישור ישיר מציע את התוספת; כאשר כובע שכבה מגיע לעמוד מציע את התרמית הבאה; כאשר משפט מסתיים ללא רכישה זכאי הוא הסרת ושום דבר אינו מחויב על המחירים הנוכחי, רואה את המחירים הנוכחי על גבי השערים, כך בהווה, יש צורך לראות את המחירים הנוכחיים על הסף, כך על פי הקצב, כל כך על גבי הדף, כך, כך נכון לעכשיו, כך ב-ידי מקבל את המחירים בהווה, כך קבוע, כך ברור, אם אתה רואה את המחיר הנוכחי, על גבי העמודים על גבי שערם, ולכן, כך בטוח, על הנייר, כך חי על גבי היישר על גבי הטייר, אז, על המסך, על ידי מקבל את החיוב, על-כן, על הסף על גבי הכרטיס, כך. דף התמחור.

פתח כאן זחלות - Start Here

זחילה היא OpsIQ ביקור בדפים שלך בדרך מנוע חיפוש, כדי למצוא בעיות טכניות: קישורים שבורים, כותרים חסרים, תוכן דק, דפים איטיים, אינדקס בעיות.

1
התחל את הזחל

על הסקירה, לחץ להתחיל זחילה. OpsIQ תורים אותו ועובד דרך הדפים שלך ברקע; אינדיקטור סטטוס מראה התקדמות.

2
קרא את הדוחות

כאשר זה מסתיים, פתח את הנושאים ואת רשימת העמודים.כל נושא הוא מקבץ בחומרה כך שאתה נתקל בניצחונות הגדולים ביותר קודם לכן.

3
תן ל-AI לעזור

אנליסט AI מייצר קטע בשפה פשוטה של מה לא בסדר ומדוע זה חשוב, והוא יכול ליצור תיקונים מוצעים שאתה מבקר לפני החלת.

מה מעקב אחר Site Intelligence

בריאות האתר & Crawls

לסרוק את הדפים שלך עבור בעיות SEO טכניות רשימות כל דף עם הבעיות שלה.לרוץ מחדש בכל עת, או לקבוע אותו.

מעקב אחר דרגות

הוסף את מילות המפתח שאכפת לך מהן; OpsIQ בדוק היכן האתר שלך מדרג ועוקב אחר התנועה לאורך זמן.

מחקר מילות מפתח

גלה רעיונות חדשים של מילת מפתח כדי לכוון, עם מאמן מילות המפתח AI כדי לעזור לפני דלקת.

קישורים אחוריים

ראה מי פונה אליך, לרענן את הרשימה וקישורים לא תרצה להתחבר לאתר שלך.

מתחרים

הוסף דומיינים מתחרה ולהשוות את הנראות שלך נגד שלהם, עם ניתוח של מתחרות AI.

רשת מקומית (map)

לסרוק את הנראות המקומית על פני רשת גיאוגרפית כדי לראות איפה אתה מופיע במפה, בתוספת כלי פרופיל עסקי של Google.

מהירות Page

הפעל בדיקות מהירות דף כדי שתוכל לתקן דפים איטיים שפוגעים בדירוג ובמרתות.

תוכן AI

ליצור תדרי תוכן ו טיוטות המיועדות מילות המפתח שאתה מכוון אליהן.

דוחות

בנה דוחות מודפסים, לקריאה על הכל לעיל.

חיבור Google למידע מדויק

שני מחברים של Google הופכים את ההערכות למספרים אמיתיים:

אתר Google

חיפוש

משוך את השאילתות המדויקות, הקליקים וההתרשמות של Google דוחות עבור האתר שלך, ממפה את הנכס שלך ואת אפשרויות הדירוג פני השטח ישירות מהמידע של גוגל.

Google Analytics 4

תנועה

להביא את נתוני התנועה והמעורבות שלך לצד נתוני SEO שלך, כך שדיווחים מראים חשיפה והתנהגות יחד.

דוחות רעננות ולבן

אתה לא צריך לרוץ הכל על ידי יד.זנון מחדש זחילות, בדיקות דרגה, בדיקות מילות מפתח, ניקוי קישורים אחוריים, סריקות מקומיות ודיווח דור על צומנט (בדרך אגב או שבועי בהתאם לתוכנית והנפח). OpsIQ עלון, ראה את סעיף Cron ואוטומציה.צרו דיווחים לייצאים כמסמכים מודפסים, קוראים ללקוח: סוכנויות שולחות כל לקוח עדכון SEO קבוע, ומכיוון שכל הנתונים של התחום נפרדים, כל לקוח רק רואה את עצמו.

כמה תכונות של מודיעין אתרים קוראות לספקי נתונים חיצוניים ו- AI באמצעות OpsIQ"ספק מוגדר.הם עובדים מחוץ לקופסא כאשר החבילה מופעלת עבור התוכנית שלך, אם רענון לא פועל, לאשר את הקופסא.OpsIQ קרום רץ (ראה Cron ואוטומציה).
האם אני צריך להוסיף משהו לאתר שלי למעקב אחר SEO?+

Crawls, מעקב אחר מילות מפתח וקישורים עבודה ללא נגיעה באתר שלך.עבור תנועה ונתונים מדויקים של חיפוש, לחבר את Google Search Console ו- GA4.

האם אפשר לעקוב יותר מתחום אחד?+

כן, הוסף כל דומיין בנפרד; זחילות שלהם, דירוגים ודיווחים נשארים מבודדים לחלוטין אחד מהשני.

באיזו תדירות אני צריך לזחול?+

שבועי הוא שפע עבור רוב האתרים; לזחול על הביקוש לאחר תוכן גדול או שינוי מבנה.קבע לוח זמנים כך שלא תשכח לעולם.

צמיחה ו- SEO

« סוכן אוטומטי (SEO Agent)

Auto-Implement הוא חלק של האינטליגנציה האתרית אשר למעשה חל על לתקן את הסורק ואנליסט AI ממליץ, במקום רק לייעץ לך.הסוכן פועל אך ורק ממה שאינטליגנציה האתר כבר מצאה (זה לא יכול להמציא שינוי) ומטייל כל תיקון דרך אותו לולאה בטוחה: תצוגה מקדימה יבשה, אישורך החד-שלבי, כתיבה חיה, תמונה אוטומטית, ופרק מחדש שמוכיח את הספירה הפתוחה; מופעלת בתוך הסעיף אוטומטי).

פשטות אוטומטית
סוכן SEO אוטומטיזרימה המציגה תיקונים SEO המומלצים לעבור דרך תצוגה מקדימה, אישור וכתוב חי, עם הוכחה-זה חוזר.פשטות אוטומטיתyoursite.comתיקונים מומלציםAdd missing <title>אישור מאושרהתקנת רובוטיםאישור מאושרשלח sitemap.xmlביקורתביקורת: DIFF+ <title>AI Helpdesk - OpsIQ</title>+ <meta name=description ...>- <title>Home</title>שיפורדלגRe-CRAWLבעיות פתוחות 124Snapshot הציל1ביקורתפענוח יבש של כל תיקון2המונחים: WRITESSH או מתארח API3תגית: ROLLBACKRe-crawl + תמונה
כיצד פועל ישיבה: הסוכן ממליש את התקנון של האינטליגנציה באתר כבר המליץ, מציג דיפר יבש של כל אחד מהם, חל על אלה שאתה מאשר על אלה אתה מאשר. SSH או מארגן API תמונות לפני כל כתיבה, וחדשים כדי להוכיח את הספירה הפתוחה צנחה.

מה זה יכול לשנות

הסוכן רק החל לתקן את האינטליגנציה באתר (או אנליסט AI) כבר מומלץ עבור התחום הזה.

Serverconfig

sitemap.xml, Robots.txt והפניה, כללי canonical and Header ב- .htaccess (Apache / LiteSpeed) או Nginx config.

שרשראות ה-Vings

מתהפך שרשרת הפניה רב-הופ למטה אל הצצה אחת ישר לגמר URL בתוך אותו בלוק .htaccess מנוהל, כל כך מהירות וערך קישור להפסיק להדליף דרך ההבזקים הנוספים.

Page <head>

כותרות דף חלשות או חלשות, תיאורים מטאוריים, תגי תותח ואבני-נתונים מובנה (schema)

WordPress SEO

Yoast, Rank Math ו- SEOPress כותרות & meta, וטקסט alt תמונה, החל באמצעות WP-CLI על SSH הדרך או ה- REST API בדרך המרשימה.

WordPress מידע מובנה

תוספות JSON LD (schema) לדפים החסרים אותו. SSH מסלול עוזר קטן מנוהל (תוסף חייב לשימוש) הדפס את הסימון כך שהוא עובד עם או ללא תוסף SEO; על הנתיב המארח תוסף SEO שלך נושא אותו.

קישורים פנימיים

הוסף קישור פנימי רלוונטי בתוך קיים WordPress תוכן כדי להציל דפים יתומים ולחבר פוסטים קשורים.קישור אחד לכל דף, לעולם לא בתוך כותרת, קישור קיים או קוד קצר, ותמיד אושר על ידי קודם לכן.

תוכן של דף נייר rewrites

תוכן חלופי מלא לדיפים דקים (הופנה מהדף אפשרות זוחלת, ראה להלן) כל טיוטה נבדקת ואושר על ידיך לפני פרסום משהו, ואת התוכן הישן נשמר כך שניתן לשחזר אותו.

עמוד הפייסבוק (Cache)WordPress)

מופעל על עמוד W3 Total Cache כינג כאשר הזחל מוצא בעיות מהירות וכי תוסף זה מותקנת, כך דפים לשרת מהר יותר.

Shopify SEO

מוצרים ואוסף כותרות SEO ותיאורים, דף ובלוג-article SEO, בתוספת 301 הפניות, דרך Shopify Admin API.

Webflow SEO

כותרת SEO Per-Page ותיאור meta דרך Webflow נתונים API V2.

הכינו את התקנונים באופן אוטומטי (שתי אפשרויות זחילה)

לפאנל הגדרות של Site Intelligence for a domain (הגדרות הסורקות שלו) יש שתי אפשרויות הקובעות כמה הסוכן קו בשבילך לפני הזמן.שניהם נמצאים כברירת מחדל והן משתמשים ב- AI אשראי, כך שאתה עובר אותם רק כאשר אתה רוצה שהעבודה הזו תעשה עבורך.

AI אוטומטי מראש מתקן לאחר כל זחילה

כל זחילה גם כותבת את התוכן הברור (זכויות, תיאורים מטא, טקסט אלט, סכימה, הפניות) למה שהוא מצא, כך לתקן מוכנים לסקור וליישם את הרגע שבו הסנדק מסתיים במקום להיות מיוצר מאוחר יותר על הביקוש.

תוכן AI rewrites (עמודי אינטרנט)

הסוכן רשאי לנסח תוכן חלופי מלא לדפי דק.שום דבר לא פורסם בעצמו: כל טיוטה מופיעה כשינוי שאתה סוקר צד לצד ולאשר או לדחות, התוכן הקודם נשמר כך שהוא הפיך, והוא מוגבל לכמה דפים לעבור. השתמש ב- AI לכל טיוטה.

💡
שתי האפשרויות רק להכין ולנסח עבודה.כל שינוי עדיין עובר את אותה אישור לצעד, לצלם ולהירט כמו כל תיקון אחר, כך להפוך אותם לעולם לא מעמידים שום דבר חי על עצמו.

שתי דרכים הוא מחבר

SSH / SFTP נתיב

עצמי

עבור אתרים בשרת משלך, הסוכן מתחבר מעל SSH/SFTP באמצעות אישורים שאתה מאחסן, לערוך את תצורת השרת ואת קבצי הדף ישירות, ורץ WP-CLI עבור WordPress הטוב ביותר כאשר יש לך גישה פגז ורוצה שליטה מלאה של קבצים.

מארחת-API מסלול (לא SSH)

לא פגז

עבור פלטפורמות שאינן מאפשרות SSH הסוכן עובד לגמרי באמצעות גורם רשמי API מחבר, WordPress (ST + Application סיסמאות) Webflow (הנתונים)API v2) ו Shopify (Admin)API שום דבר לא מותקן על המארח.

💡
ל-Wix Squarespace אין שום טקס SEO ציבורי API כך, בפלטפורמות האלה Auto-Implement פועל במצב מייעצת: זה מראה לך את השינוי המדויק לעשות (התואר המדויק, meta או הגדרה) עבורך להחיל ביד.כל דבר אחר הוא קורא בלבד ובטוח.

סובבו את המחברים

הסוכן מגיע לכל פלטפורמה באמצעות מחבר:

נבנה

Shopify ו WordPress ספינות עם OpsIQ רק לאפשר להם מתחת לחבר ולהוסיף את האישורים של החנות / האתר.

מתוך השוק

WebflowWix ו- Squarespace Install from Connectors→שוק, אז תתחבר באותה הדרך.

איך ישיבה רץ

1
בחרו את התקנונים

Open Auto-Implement (rocket) מסעיף מודיעין האתר. It מתעד את הנושאים שמודיעין אתר כבר מצא שהוא יכול לתקן על התחום הזה.

2
כל שינוי

עבור כל תיקון הסוכן מראה דיפרף יבש (למעשה מה הוא יכתוב) לפני ששום דבר נוגע באתר החי.

3
שיפור צעד אחר צעד

אתה מאשר (או לדלג) כל שינוי בנפרד.שום דבר לא מוחל ללא ראש מכוון מפורש שלך באותו שלב.

4
זה כותב, ואז תמונות

אישור הסוכן הופך את השינוי החי SSH או המארח API קודם כל להציל תמונה, כך שכל שינוי יכול לחזור אחורה.

5
תוכיחו, חי

כפי שהוא חל על כל שינוי הסוכן מיד בודק את הדף המדויק ומראה פסק דין "מותקן חי" צעד, כך שאתה צופה בכל ארץ תיקון בדף החי כפי שקורה.בסוף הוא מחדש את האתר כולו ומאשר את ספירת ההנפקה הפתוחה צנחה.

בטיחות וחיוב

SEO-רק

הסוכן יכול לעשות רק את מה שהמודיעין באתר המליץ על התחום הזה.זה לא יכול לבצע שינויים שרירותיים לאתר או לשרת שלך.

אישור שלב

כל כתיבה היא תצוגה מקדימה כדיפה ותוחלת רק לאחר שתאשר את הצעד הספציפי הזה.

Snapshot & Rollback

תמונה נשמרת לפני כל כתיבת, כך שניתן להחזיר את השינוי.

Live Per-Step Proof

כל דף משתנה משגיח על הרגע שהוא נכתב ומקבל פסק דין "מותקן חי", כך שתיקון הוא אישר נגד עמוד החי מיד, לא רק בסגירה.

תוכן לעולם לא פורסם

קישורים פנימיים וכתובות תוכן דק-עמוד הן יותר יעילות, כך שהן תמיד מוצגות לך לאישור ולעולם אינן מוחלות באופן אוטומטי, בכל מצב שאתה מפעיל.

ניהול רק

Auto-Implement פועל על ניהול AI; הוא חסום כאשר סביבת עבודה משתמשת המפתחות שלה (BYOK_)

בילינג

הצעת חוק אסימונים של בינה מלאכותית בדרך כלל כאשר אתה משתמש בהם, בתוספת תשלום חד פעמי לכל שימוש עבור הפעלה אוטומטית, שניהם נמשכים מאותו אשראי מנוהל-AI.

Auto-Implement הוא כברירת מחדל.אפשר לו על דף התצורה של AI (כרטיס אוטומטי לפשוט) ולוודא שהמחבר עבור הפלטפורמה שלך מחובר קודם לכן.
האם זה משנה משהו בלי לשאול?+

כל שינוי הוא תצוגה מקדימה כדחיפה יבשה ומיושמת רק לאחר שתאשר את הצעד המדויק הזה. A תמונה נשמרת לפני שכל כתיבתך תוכל לחזור אחורה.

אני צריך SSH גישה?+

לא על WordPress, Shopify או Webflow אלה עובדים באמצעות הרשמי שלהם APIs ללא גישה לפגז. SSH הוא רק אחד משני הנתיבים, בשימוש כאשר אתה רוצה שהסוכן יערוך תצורת שרת וקבצים ישירות בשרת שלך.

איך אני יודע שזה עובד?+

לאחר יישום תיקון אישור הסוכן מחדש את האתר ומראה את ספירת ההנפקה הפתוחה לפני ואחרי, כך שתוכל לאשר את התיקונים מופחתים את הבעיות.

האם הוא יכתוב או יפרסם תוכן בעמוד בעצמו?+

לא.בי.איי. תוכן rewrites הם כבויים עד שאתה לסובב אותם באפשרויות הזחלות, הם מוגבלים לכמה דפים דקים לעבור, וכל טיוטה מוצגת לך לאישור בצד לפני כל דבר שפורסם.

האם אוכל להשתמש בו עם מפתחי AI שלי?+

לא.רכב אוטומטי מנוהל רק על-AI והוא נחסם מתחת לתחת BYOK זה חשבונות AI אסימונים בדרך כלל בתוספת תשלום חד פעמי לכל שימוש במושב, מאותה אשראי מנוהל-AI.

צמיחה ומעורבות

סקר סטודיו

סקר Studio הוא סביבת העבודה ליצירת סקרים שניתן להעביר כעמוד סטנד-ליין עשיר, אתר widget או inlineהטמיע.המוצר הנוכחי מספק גם קישורים מתארחים, טיוטת הצגות מקדימה, הזמנות פרטיות, QR שיתוף, תגובה גלישה וניתוח סקר-פיקד.אתר widetto הוא בחירה אחת; זה לא ההגדרה של סקר.

⚠️
הגבול הנוכחי-הטרגט: יצירת פרימיום וניסיון תצוגה מקדימה, Connector Builder survey יכולת, וספקית ניהול נושא/גבול בריאות זמינים כעת.סקר Studio עדיין זקוק לאדריכלות רב-דהפלימנט עצמאית, שער זהות סקר חתום-לסימון, מיקוד / חיפוש קבוע, שלח CRM החוצהאץ' זרימה וטיפוסd surveys.* API.

ליצור סקר

1
בחרו איך אנשים ייקחו את זה

הקוסם הנוכחי מציע דף וקישור, אתר widget ו- Inline הטמיע.זרם היעד המאושר מתחיל בסוג הסקר ולאחר מכן מוסיף דואר אלקטרוני של CRM, פרטי קישור ו- QR פריסות כבחירה ראשונה ברמה הראשונה.

2
בחרו את המטרה

Pick NPS, CSAT, CES, משוב מוצר, לאחר הטיהור, ביטול, על גבי לוח, אתר, אירוע, webinar, תמיכה, מוביל / Demo, ניסיון, עדות, מחקר, עובד, צריכת או משוב כללי.

3
השתמש בתבנית מלאה או התחל ריק

הקטלוג הנוכחי כבר מוכן לסטארטרים הניתנים לעריכה, המגדירים את התבנית יוצרת טיוטה מועתקת: שינוי הסקר שלך אינו משנה את ההתחל או סקר אחר.

4
סיקור או Quick review

התאמה פותחת כל שאלה, עיצוב, התנהגות ושליטה במשלוח.סקירה מהירה פותחה את אותה טיוטה בבדיקת הלקוח הסופי.שום דבר לא מפרסם או שולח אוטומטית.

אפשרויות משלוח והתנהגות נוכחית

עמוד וקישור

דף מתורבת עם עצמו URL השתמש בהזמנה פרטית ועייפוי כאשר כל מקבל זקוק לקשר מבוקר.QR משתף נקודות בחוויה מתארכת זו.

אתר האינטרנט widget

ערוץ מורשת נודד.זה יכול להשתמש בעמוד, גיאוגרפיה, מכשיר, מבקר, תאריך, דגימה, קירור, ביקור ומכסה כללים. It עדיין מגבה על ידי הגשר פעיל-מרוצה בזמן אדריכלות הפריסה בנויה.

Inline

סקר תגובהי שהוצב בתוך דף, פורטל, מוצר או מרכז עזרה.זה לא דורש קידום סטודיו.

דואר אלקטרוני

היום הסטודיו יכול ליצור הזמנה HTML קישורים פרטיים.סוף-סוף שולחים ממגעי CRM / הודעות, עם הסכמה, דיכוי, תזמון, עיתוי וקורא תגובה, הוא יעד האינטגרציה המאושר של CRM Outreach.

עיצוב ארגוני ותצוגה מקדימה

דפי סקר יש נושאים בבעלות סקר ומשפחות של עיכוב דף, בקרה רופפת, קבלת פנים והעתק, ו טיוטה רשומה בתצוגה מקדימה.המעצב תצוגה מקדימה הוא מלא עדי מתחת לעורך, לא רכבת צד צר.זה משתמש בזמן הריצה האמיתי בתוך מסגרת חולת ותומכת שולחן עבודה, טאבלט ורוחבות טלפון; תנועה מקדימה אינה כותבת תשובות או ניתוח.

💡
סטודיו הוא עצמאי מקידום Studio. Runtime מיקוד, זהות, נכסים, עריכת וניתוח חייבים להיות בבעלות סקר.תוכן קידום יכול להיות בשימוש מחדש רק באמצעות עותק חד פעמי מפורש / הודעה שיוצרת נתוני סקר מנותקים; מאוחר יותר אין לעריכה לא השפעה.

מוצר הטופס המלא

פריסות עצמאיות

חי

סקר אחד יכול להיות בעמוד הגירסה בנפרד, widget, הטמיע, דואר אלקטרוני של CRM, פרטי קישור ופריסות QR, כל אחת עם המדינה שלה, עיצוב, קהל וניתוח.כל סקר ניתן לעצור, נכים או נמחק.

CRM בחוץ וקמפיינים

חי

בנו קהל מאומת מקטעי CRM ומחברים הניתנים לסקר, להקפיא אותו לתוך גרסה בלתי-מוטחת, נושא הזמנה אחת חתום כל אחד, ולשלוח באמצעות מחבר הדואר האלקטרוני המפונק עם הוכחה למשלוח לכל עתיר.

ערכת שדה ואימות

חי

Sliders, בחירת תמונה, העלאת קבצים, חתימה, כתובת, טלפון, כותרות וטקסט עשיר, עם אורך דקות / מקסימום, דוא"ל /URL/ מספר presets, טקסט שגיאות מותאמות אישית ו- Perquestion URL פרמטרים.

לוגיקה, פורמולות, תוצאות

חי

קבוצות ומצב, כללי ענף, מנוע נוסחה בטוח על פני תשובות ולהקות ציון נושאים דף תוצאות משלהם: חידון הבקיע אדמות על פסק דינו.

שפה, קוֹק, prefill

חי

שפה של מבקרים טיפת רשימה רק שפות עם תרגומים אמיתיים, מצב קיוסק עבור טבליות משותפות (מטרות כבדות, התחלה אוטומטית, ללא הפניה), בונה קישורים prefill ועריכת טקסט מאובטח בטוח-רע ו Footer.

A/B Testing

חי

לפרסם גרסה מאתגרת על כל פריסה עם פיצול תנועה. מבקרים מוקצה בעקביות, התגובות מוטבעות עם הגרסה למעשה שימש, ואת בטבלה השוואתית מראה תשובות, השלמת וציון ממוצע לכל גירסה. לקדם את הזוכה בקליק אחד.

לכלוך שבועי

חי

אימייל שבועי עם האחרון 7 ימים של סקר KPIs, הסקרים העמוסים ביותר, הדופק Feedback ואת ה- AI המתקצר האחרון, שנשלח דרך מחברה המלוטש.מגדיר אותו במרכז האספקה, אוטומציה.

ממשל

חי

רשימות גישה Per-survey להגביל מי יכול לערוך, לפרסם או למחוק סקר.אישור פאבבליש (ארבע עיניים) דורש מנהל שני לשחרר את הטיוטה המדויקת; עריכה מחדש את האישור.ד"רפט קישורים מאפשר לסקירה לראות את טיוטה אמיתית ללא כניסה פנימה.

פלטפורמת פיתוח Developer Platform

חי

חוזים 2.2, סקרים קלים. * משוב api/v1, סקר קנטון. * אירועים, חתומה על Webhooks עם Slack ו- Google Sheets ממסר פורמטים, ואחד מגיב PDF יצוא.

צמיחה ומעורבות

סקר Analytics ו- Feedback הם מוצרים שונים

סקר Analytics מסביר כיצד סקר עצמו מגיע לאנשים וביצועים. Feedback מסביר מה הלקוחות אמרו בכל המקורות המותרים ומה העסק צריך לעשות על זה.שני המוצרים לקשר אחד לשני, אך אינם חולקים או שוללים את האמת האנליטית.

סקר Analytics

נכנס מהסקר הבודד ב-Sle Studio, לא מניווט הצד העולמי.זה מודד את זכאותו, חשיפה, התנהגות מעוררת, מתחיל, השלמת, נטישה, שאלה וחיכוך סניף, תזמון, פריסה / השמצה תוצאות ואמינות בזמן ריצה.

ההרחבה Feedback Review & Inbox

אחד אישורים הזנת כרונולוגי עבור תשובות סקר הושלמו, משוב מורשת widget, צ'אט וכרטיס CSAT, משוב כרטיס, דירוגי מענה של לקוחות AI-answer, קולות בסיס ידע ועזרה מקורות חיצוניים / לקוח.

משוב Analytics

אנליז משמעות הלקוח: מגמות מדד מקורי, נושאים / הודעות, רגש, כוונה, דחיפות, בקשות, תלונות, שבחים, מסע / מוצרים / שירות / מגזרי צוות, detractors ותוצאות סגורות.

בעלות על נתונים

תשובות הסקר נותרו סמכותיות באחסון סקר. Feedback מאחסנת התייחסות למקור וסימנים נגזרים, ולאחר מכן נטען ראיות מותרות על הביקוש.אחת תגובה של סקר הושלמה הופכת לרוב פריט משוב אחד.

⚠️
דף ה- Feedback הנוכחי עדיין יש דפדפן תגובה סקר ורשת נפרדת widget inbox, ואת סך AI שלה עדיין לא להשתמש מודל המקור המלא נורמטיבי. Theמאוחד סקירה / Inbox / Analytics / מקורות ועיצוב בריאות הוא יעד יישום.

NPS, CSAT, CES, כוכבים, אגודל וסיוע חייבים תמיד לשמור על השיטה המקורית שלהם, קנה מידה, מדגם, חלון תאריך ו denominator.הם לעולם לא להיות משולבים לתוך ממוצע אחד שלא מוסבר.

צמיחה ו- SEO

סטודיו לקידום

סטודיו קידום הופך את האתר שלך למנוע המרה.עיצוב פופ-ups, באנרים, שקופיות, ברים העליון / ספארי, קבלות מסך מלא, בלוקים פנימיים ואפילו הפניות המבוססות על מדינה, ואז להציג הודעה נכונה המבקר הנכון ברגע הנכון. OpsIQ כבר באתר שלך, אז אין שום דבר נוסף להתקין.אתה מעצב וחוסך קמפיינים בכל עת; הם רק מראים ברגע שאתה מבסס אותם ואת האולפן מופעל עבור סביבת העבודה שלך.

סטודיו לקידום
מעצב סטודיומעצב קמפיין חזותי עם לוח בלוקים, פופ-אפ על הבד ופאנל מיקוד.סטודיו - מעצבבלוקיםxברוכים הבאים, {first_name}!קבל 15% מההזמנה הראשונה שלךSAVE15תגית: my קופוניםתגית:RGEINGמדינהארה"ב, CAטריגריציאהA/B פיצול50 / 50פרסם1עיצובבלוקים על בד2תגית:RGETמדינה, דף, קהל3מציאותA/B מנצח + AI תובנה
מעצב הראייה: לוח בלוקים בצד שמאל, הקמפיין שלך על הבד (הוא צץ קופונים אישי באמצעות ערכת קופון אישית. {first_name} טוקן, ו-Commoning + מפרסם את פאנל מימין.

התמונה הגדולה

קמפיין

מה

קידום אחד: פופ-אפ, דגל, בר, שקופיות, מסך מלא, בלוק קו תחתון או גיאו-redirect.כל אחד יש מטרה: מכירות, להוביל, הרשמה, צ'אט, סקר, הודעה.

עיצוב וגירסאות

איך

אתה בונה את המראה בעורך החזותי, כל הצלה יוצרת גרסה חדשה, כך שתוכל תמיד לחזור אחורה.

מטרות

מי

מי רואה את זה: מדינה, דף, מכשיר, מקור תנועה, חוזר לעומת חדש, לוח זמנים ו (עם מחבר) הלקוחות שלך מחובר.

טריגרים

מתי

כאשר זה מופיע: מיד, על איחור, על גלילה, על גבי עזיבה, בעת idle, על לחיצה, לאחר דפי N, או מ צ'אט / כרטיס פעילות.

אנליטיקה

תוצאות

הופעות בשידור חי, קליק-דרך, המרות, משפך טיפות, מדינה / דף / עמוד / מכשיר פיצולs, A/B מנצחים ותובנות AI.

פתח את הקידום הראשון שלך 5 צעדים

1
התחל מתבנית או ריק

פתח סטודיו ולחיצה על קמפיין חדש, או לבחור עיצוב מוכן מגלריית התבניות. טיוטה נפתחת במעצב.

2
עיצוב זה

גרור בלוק, כותרות, טקסט, כפתורים, תמונות, תגים, סטטיסטיקה, ספירת אחורה, טופסים, קופון, וידאו, דירוגים, גלגל סיבוב. סגנון צבע, גרדיאנטים ואפקטים תלת מימדיים עם המצביעים. הצגת מקדימה של שולחן העבודה / טאבלט / נייד, והשתמש בתנועה חופשית כדי להציב כל דבר בכל מקום.

3
סודיות

סוג אסימונים כמו {first_name}, {country} או {company} בכל טקסט, בזמן המופע הם הופכים לערכים האמיתיים של המבקר.

4
Target & טריגר

בחרו מי רואה את זה (מדינה, דף, מכשיר, קהל) וכאשר הוא יורה (דאלי, גלילה, עזיבה של כלל ריק כדי לומר לכולם.

5
בדוק, ולאחר מכן לפרסם

לחץ על סריקה מהירה לפני ההשקה, ולאחר מכן Publish. It הולך לחיות בתוך שניות ומתחיל איסוף ניתוח.

בלוקים שאתם יכולים לבנות

תוכן

מרכז

כותרת, סעיף, רשימה, ציטוט, תמונה, סמל, תג, סטטין, מתפצל וחלל, אבני הבניין של כל הודעה.

קריאה לפעולה

מרכז

בוטו עם פעולות אמיתיות: פתח קישור, להתחיל צ'אט, ליצור כרטיס, להעתיק קופון או לקפוץ לדף.

שקיפות ולכידת

פרימיום

מחשבי זמן ספירה לאחור, טופסים (דוא"ל / טלפון / טקסט), קופון מגלה ווידאו מוטמע.

משוב ומשוב

פרימיום

גלגל ספינ-to-win, כרטיסי שריטות, NPS / דירוגי כוכבים ופטריות מרובות שלבים.

המונחים & Effects

פרימיום

עמודות, ברים מתקדמים, לחלוקה חברתית, הוכחות חברתיות, כן / לא שני צעדים, חידון ואפקטים תלת-ממדיים, הטיה, זוהר, פרמולקס, זכוכיתמורפיזם.

תוויות אישיות

הקלד כל אלה בכותרות, פסקאות, כפתורים, תגים, סטטינים, רשימות או ציטוטים.הם מוחלפים בפרטים החיים של המבקר ברגע שהתוכנית מציגה (תמיד ניקוי בטיחות):

תוויות זמין
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. Great for Zone-specific מציעה או a הגיאולוגית.

דפים & URLs

הגבלת דפים מסוימים באמצעות שווים / התחל-עם / מכיל/regex, ולא לכלול גם דפים.

התקן

שולחן עבודה, Tablet או נייד, למשל בר דק על מובייל, מודול על שולחן העבודה.

סוג מבקרים

חדש, חוזר, ידוע (ב- CRM) או אנונימי; מגזרי CRM, שלב מחזור חיים, ציון מוביל או שפת דפדפן.

מקור התנועה

על ידי UTM (utm_source, utm_campaign) או אתר מתייחס, למשל רק מבקרים ממודעה מסוימת.

לוח זמנים & תדירות

התחל / תאריכי קצה, חלונות של יום, וכמה פעמים אדם יכול לראות את זה (ביום ישיבה, לאחר שהם קרובים / לחץ / המרת).

A/B תעבורה

הראו לאחוז של מבקרים ומריצים גרסאות ראש אל הראש; אותו אדם תמיד רואה את אותה גרסה.

קהל (Sound-in)

עם מחברה, מטרה על ידי מדינת חשבון חיה, למשל לקוחות עם חשבוניות לא שולמו או מנויים פעילים.

טריגרים

בחר כיצד נראה הקידום: מיד, לאחר עיכוב, על עומק הגלולות, על גבי עזיבה, כאשר אדדל, על לחיצה של אלמנט, לאחר מספר דפים שנצפו, על טופס-פסון או מפעולות צ'אט / כרטיסים.מפתחים יכולים לירות אחד קוד משלהם עם הקוד שלהם עם עצמו עם קוד משלהם באמצעות קוד משלהםעם, על כמה עמודים שנראו, או מפעולת צ'ט / כרטיס. window.OpsIQPromo.fire('event').

לקוחות ממוקדים (קישורים)

זה מה שעושה OpsIQ מבצעים מיוחדים: לחבר פלטפורמה כמו WHMCS (או כל מחבר התומך בקהל) והסטודיו יכול לכוון מבקרים לפי מצב החשבון שלהם.

1
לאפשר לחבר קהל

מתחת לחבר, לאפשר לאדם החושף עובדות קהל (WHMCS לקוחות מחוץ לקופסה מוכרים באופן מאובטח כאשר הם נכנסים לפלטפורמה זו, OpsIQ אף פעם אל תסמוך על אימייל מסוגד-אין.

2
הוסף חוק קהל

במקדו של הקמפיין > קהל, לדרוש הדבקה ולהוסיף כללים כמו חשבוניות שלא שולמו "= 1, המנוי הוא בעבר, או חשבון אשראי > 0.

3
סודיות עם הנתונים שלהם

השתמש אסימונים כגון {first_name} או {balance_due}"יש לך תזכורת מוגזמת" כותב את עצמו.

מיקוד קהל הוא לא בטוח: אם המחבר אינו יכול לאשר עובדה (או המבקר אינו מחובר), קידום פשוט לא מראה, כך הצעה מגובשת שטרם מגיעה לאדם הלא נכון.

מסחר מחובר (עלילת סטודיו)

כרטיסי מוצר מהחנות שלך

נתונים חיים

בלוק מוצר מושך פריטים אמיתיים (שם, מחיר, מחיר מכירה, תמונה, קישור) ישר מן הישר WHMCS, WooCommerce, Shopify או שלך OpsIQ הצעת החוק "המשך טרי" והכרטיס מעדכן את מחירו מהפלטפורמה בכל שעה, תוך כדי פרסום.

קופונים מסודרים

קופונים

בלוק קופון יכול ליצור את קוד הנחה אמיתי בחנות שלך ברגע שאתה מפרסם, כך הקוד המבקר מגלה תמיד עובד ב- Checkout.

הכנסות סדר-אמת

תגמול

הזמנות אמיתיות מהפלטפורמות שלך תואמות חזרה לקמפיינים בשעה שעה (על ידי קוד קופון המשמש או על ידי הדואר האלקטרוני של המוביל) כך שהכנסות שאתה רואה הן מהמכירות בפועל, לא הערכות.

הוכחה חברתית אמיתית

אמון

הקרקר המאובטח חברתית יכול להוביל עם פקודות אחרונות אמיתיות ("Ada הזמינה Starter Plan) 2h לפני כן, שם ראשון ומוצרים בלבד, אף פעם לא הודעות דוא"ל או כמויות.

ניסויים ומסעות

A / B גרסאות & אוטומטי-winner

פיצול תנועה על פני גרסאות עיצוב; תן לסטודיו לקדם את המנצח הסטטיסטי באופן אוטומטי, או להעביר התנועה יד אל ה-Steptimiser אשר משנה מבקרים לעבר מה שממיר כראיה נכנסת.

עקבו אחרי Uplift

שמור פרוסת מבקרים שלא רואים כלום, כך שתוכל להוכיח את הקמפיין עצמו גורם למעלית.

גרסאות Segment

תוכן שונה לקהל על קמפיין SAME (מבקרי רכב, עגלות גדולות, לקוחות חוזרים), כל פלח מקבל גרסה משלו.

ניסויים טריגר

משתנים יכולים גם לבדוק מתי להופיע: מיידי לעומת עיכובים נגד עזיבה, נמדד ראש אל ראש.

מסעות (שרשרת)

המטרה של מה שמישהו עשה עם קמפיין אחר ("קמפיין A אבל לא התגייר") כדי לבנות רצף קידום רב-שלבי.

תה

מבקרים בגלולה קטנים יכולים לפתוח מחדש לאחר סגירת הקמפיין, כך שפופ-אפ סגור לא הלך לטוב.

לדעת מה קרה

לחץ על Hotmap

מעצב

במעצב, לעגמל את מפת החום כדי לצייר צ'ק אמיתי של מבקרים על כל בלוק של העיצוב שלך.

תהלוכה

« פטריות

קמפיינים של Multi-Step מראים בדיוק לאן אנשים נופלים, מסך על ידי המסך.

השוואת קמפיינים

סטודיו Studio

לשים עד ארבעה קמפיינים בצד (מדכאים, קליקים, המרות), הערך הטוב ביותר מודגש.

סיפור שבועי ועיכול

אהה.

כל יום שני, ארץ לעיכול בתמסרים שלך;📖כפתור סיפור שבועי כותב סיכום בשפה פשוטה עם שלבים אחרים בכל פעם שאתה רוצה אחד.

עבודה נוחה

AI co-טייס ורעיונות

צ'אט עם טייס עיצוב לערוך את הבד ("לעשות את הכותרת דחוף, להוסיף ספירה לאחור"), לקבל רעיונות מסע פרסום מהנתונים שלך התנועה, לתרגם קמפיין למדינה או תיקון אוטומטי ציון עיצוב נמוך.

Brand Kit יבוא

פקודה אחת קוראת לאתר שלך ומציעה את צבעי המותג האמיתיים והגופנים; להציל וכל מתווך מוביל איתם.

« כיף רב-מסך

בלוקים אמיתיים לעריכה מסך: כרטיסיות לכל מסך, להוסיף או להזמין מחדש מסכים, ואת התצוגה מקדימה עוקב אחר זה.

שם גרסאות ונוכחות

שם גרסאות חשובות ("מועמד לאונך"), לשחזר כל אחת מהן, ולראות אזהרה כאשר חבר צוות עורך את אותה הקמפיין.

פסים ושליטים

ראה שולחן עבודה, טאבלט וצד נייד בצד אחד; ללג על השליטים פיקסל עבור מיקום מדויק.

דף וערוצים

כל קמפיין יכול גם להיות דף מתארח עבור ביוים וקודי QR, רצף טפטוף דואר אלקטרוני עבור מובילי שנתפס, או טיוטה אחת של אינטרנט לחיצה.

בטיחות ארגונית

חלונות קפואים פובליש (תקופות של הקפאת שינוי), מתג הפסקת חירום, אישורים, שביל ביקורת וגרסה מתגלגל.

האם אני צריך להוסיף קוד לאתר שלי?+

מבצעים מועברים על ידי אותו הדבר OpsIQ וודא שאתה כבר מותקנת.עיצוב, פרסום, עשה.

האם המבקרים יראו את אותו פופ-אפ שוב ושוב?+

לא.קבוע תקפיות (בשעה / ליום, או לעצור לאחר שמישהו קרוב, קליקים או ממירים) ברירת מחדל סנסible מוחלת.

מי יכול לפרסם?+

פרסום, נביחות, הארכיון וגלגל בחזרה מוגבלים לבעלי חלל ומנהלים מלאים.כל חבר צוות יכול ליצור ולתכנן טיוטות עיצוב.

צמיחה ו- SEO

קידום מעצב

מעצב קידום הוא עורך חסימה מגיב עבור בנייה, סקירה, גרסה ופרסום חווית מסע.

מסך המוצר
קידום מעצבהמעצב משלב בד חי, הצגות המכשיר תצוגה מקדימה, בלוקים, משתנים של התאמה אישית, הערות והיסטוריית גרסאות.קידום מעצבסביבת העבודהVIEWPORTשולחן עבודהורסv12שנאהטיוטהביקורת עבודה WorkSPACEחסימהכותרת, מדיה ו- CTAEditעריכההצעה בלוקהנחה ותאריךEditעריכהאישיותאנשי קשר ומשתנה קמפייןמוכןLaunch Checkהערות ואימותסקירה1BUILD BLOCKSEdit Live פריסה2ביקורתשולחן עבודה, Tablet, נייד3PUBLISHשחרור
המעצב משלב בד חי, הצגות המכשיר תצוגה מקדימה, בלוקים, משתנים של התאמה אישית, הערות והיסטוריית גרסאות.

השתמש בלוקים כדי להלחין את החוויה, תצוגה מקדימה כל תצוגה נתמך ולהכניס משתנים של התאמה אישית מאושרת.הערות סקירה והוכחה מיידית AI לפני ההשקה. Saving יוצרת גרסאות כך עיצוב קודם ניתן לבדוק או לשחזר.

צמיחה ו- SEO

תבניות קידום

תבניות מספקות גלריה חדשה לחיפוש, המיועדת לקמפיינים של סטודיו קידום.

מסך המוצר
תבניות קידוםגלריית התבנית מסנן פריסות פרמיה וליישם צבעים מותגי סביבת עבודה כאשר תבנית הופכת טיוטה.תבניות קידוםסביבת העבודהקטגוריהשכנועRESULTS24תלמודיישמתיביקורת עבודה WorkSPACEהצעות יציאהשינוי בדחיפות ו- CTAביקורתאורח חדש ברוכים הבאיםרשימות של אנר והטבותביקורתהשקת המוצרגיבור, הוכחה וספירה לאחורביקורתבקשה להזנתסקר קומפקטיביקורת1FILTERקטגוריה וחיפוש2ביקורתעקבו אחרי The full design3USEיצירת טיוטה ממותג
גלריית התבנית מסנן פריסות פרמיה וליישם צבעים מותגי סביבת עבודה כאשר תבנית הופכת טיוטה.

חיפוש או מסנן על ידי קטגוריה, לטעון תוצאות נוספות, תצוגה מקדימה של החוויה המלאה, ולאחר מכן בחר השתמש תבניתהקמפיין החדש נשאר טיוטה והוא יכול להשתנות ב-ProPer Designer לפני פרסום.

צמיחה ו- SEO

ניתוח Analytics

ניתוח קידום מחבר רשמים ולחיצה על המרות, הקשר בין קהל, תוצאות תקשורת ולמידה של הקמפיין.

מסך המוצר
ניתוח Analyticsניתוח קידום מראה ביצועים, קהל ושברי טריגר, מוביל את תוצאות היצוא והחיבור.ניתוח Analyticsסביבת העבודהIMPRESSIONS42.8kCTR6.4%CONVERSIONS814ביקורת עבודה WorkSPACEמדינהבריטניה) 31%נפילהעמוד Page/pricing · 22%נפילהטריגרכוונת יציאה 44%נפילהשיתוף פעולהקופון נוצר 97% הצלחהתוצאה1מציאותהרושם להגות2SLICEעמוד, מדינה, מכשיר3LEARNהחל את התובנה
ניתוח קידום מראה ביצועים, קהל ושברי טריגר, מוביל את תוצאות היצוא והחיבור.

קרא רשמים, לחץ-דרך קצב והמרות יחד. Break תוצאות למטה על ידי מדינה, דף, גורם ומכשיר; יצוא שנתפס מוביל כאשר יש צורך. Connector תוצאות פעולה להראות אם העוקבים שהובטחו על ידי קידום למעשה רץ. AI תובנה וסיכוםי למידה צריך להיות מטופלים כמו השערות לאמת, לא הוכחה אוטומטית.

צמיחה ו- SEO

הודעות

הודעות מפרסם הודעה באזור ההודעה widget עם מיקוד אופציונלי, לוח זמנים ושיחות לפעולה.

מסך המוצר
הודעותעורך ה-Desation כולל תוכן, CTA, קהל, פלח, כלל העמודים, תאריכים פעילים וסגנון חזותי.הודעותסביבת העבודהפעיל3AUDIENCEקטעיםתגית: SCHEDULEיולי 22–29ביקורת עבודה WorkSPACEשם כותרתתחזוקה מתוכננתמוכןתוכןMarkdown הודעהמוכןCTAקרא את העדכוןאופציונליחוקדפי מחירים - לקוחות פעיליםמטרה1WRITEכותרת וMarkdown2תגית:RGETקהל, פלח, דף3תגית: SCHEDULEחלון פעיל
עורך ה-Desation כולל תוכן, CTA, קהל, פלח, כלל העמודים, תאריכים פעילים וסגנון חזותי.

בחר את כל המבקרים, מבקרים חתומה או מבקרים חדשים; לצמצם באופן אופציונלי את הקהל עם פלח מגע וחוק דף.קבע פעיל-מה / פעיל - ועד תאריכים ודגל פעיל. Premium סגנון presets וצבעים שינוי הצגת אך לא להחליף תוכן ברור.

צמיחה ו- SEO

קמפיין Push

קמפיינים של Push שולחים הודעות הדפדפן כדי להירשם למבקרים לאחר שעזבו את האתר.

מסך המוצר
קמפיין Pushהמלחין הדוחף מציג את ה-מנוי, תוכן, מדיה, פעולות, כללי מטרה ומדינת לוח הזמנים.קמפיין Pushסביבת העבודהSUBSCRIBERS8,214שולחת31.6kCLICK RATE5.8%ביקורת עבודה WorkSPACEשם כותרתהעגלה שלך מחכהמוכןגוף הגוףחזרה היום למשלוח חינםמוכןCTAעגלת פתוחהמוכןלוח זמניםשלח עכשיו או מתוכנןטיוטה1PREPARE PUSHשם הספר: Body, Icon2תגית:RGETקהל, פלח, דף3SENDעכשיו, לוח זמנים או טיוטה
המלחין הדוחף מציג את ה-מנוי, תוכן, מדיה, פעולות, כללי מטרה ומדינת לוח הזמנים.

הגדרות Web Push המפתחות הראשונים תחת הגדרות Web דחיפה. A קמפיין יכול לכלול כותרת, גוף, סמל, תמונה גיבור, תג, CTA ועד שני כפתורים פעולה; הודעה מתמשכת נשאר עד שהמבקר אינטראקציה.

היעד על ידי קהל, פלח מגע אופציונלי וחוק הדף.חסוך טיוטה, לוח הזמנים או לשלוח באופן מיידי. השתמש בסימנים המנוי ולחץ לחיצה כדי לשפוט להגיע. HTTPS ועובד שירות מתארח כראוי נדרשים באתרי צד שלישי מוטבע; ראה Web Push באתרים של צד שלישי.

צמיחה ו- SEO

הודעות פרואקטיביות

הודעות פרואקטיביות מגיעות באופן אוטומטי ברגע שהתנהגותו של מבקר תואמת לכלל, לפני שהן שואלות.אתה בונה כל אחד כשלטון עם שלושה חלקים: מה צריך לקרות, מתי זה אמור לירות, וכמה פעמים הכל מועבר דרך כל דבר. OpsIQ כבר על האתר שלך.

פעיל
הודעות פרואקטיביותמלחין פרואקטיבי בשלושה חלקים: בחרו פעולה (צ'אט, דגל, סיבוב, דחיפה, דואר אלקטרוני), הוסיפו תנאים והגדרת הידרדרות תדירות.הודעות פרואקטיביותסביבת העבודה1 • פעולההודעות צ'אטדגלסיורלדחוףדואר אלקטרוני2 · תנאיםpage = /pricingזמן בעמוד > 20sחזרה3 · תדירותפעםסטטוס1אקשן.צ'אט, כרזות, דואר אלקטרוני, לחץ...2CONDITIONSדף, Time, Score, Return3תדירותCooldown to המבקר
כל כלל פרואקטיבי הוא שלוש אפשרויות: מה קורה (צ'אט, דגל, סיור, דחיפה, דוא"ל, Webhook), מתי (תנאים) וכמה פעמים (קופול לאחור).

שלושת החלקים של שלטון

1
מה צריך לקרות (פעולה)

הצג בועה צ'אט או באנר על עמודים, להתחיל סיור מודרך, לשלוח דחיפה לאינטרנט או דוא"ל, להקצות למחלקה, או לירות Tokens כמו Webhook. {{visitor_name}} ו {{page_title}} להפוך לערכים אמיתיים.

2
מתי כדאי לירות (תנאים)

נארו שגורם לו: דף /URL זמן על הדף, לגלול עומק, ציון מוביל, חוזר לעומת חדש, idle. ללא תנאים, הכלל יורה עבור כל מבקר. הוסף לפחות אחד כדי לכוון אותו.

3
כמה פעמים (תדירות)

הגדר קירור כך שהאדם אינו מזיק, למשל פעם אחת לפגישה או פעם ביום.לכל כלל יש מעמד על / off.

⚠️
סביבת העבודה "לרוץ זמן / חוקים שעה" מאפשר פעולות בצד השרת (דואר, דחיפה, Webhook, להקצות) אש על לוח זמנים של אנשי קשר ידועים שאינם נמצאים כרגע בדף, כך שתוכל "לשחרר מובילי חם מיידי" באופן אוטומטי. OpsIQ עזוב אותו אם אתה רק רוצה לחיות על דפי עמוד.
האם זה יאשים לכולם?+

רק אם אתה מוסיף תנאים. הוסף לפחות מצב אחד (עמוד, ציון מוביל, חזרה...) כדי לכוון את המבקרים הנכונים.

איך זה קשור לזרמים ולטיולים?+

הם עובדים יחד: כלל פרואקטיבי יכול להתחיל סיור מודרך, וניתן להפעיל את צ'אטבוט זרימה על ידי הכלל פעיל.התחל עם חוק צ'ט-מסאז 'מחדש' אחד, ואז לשכב את האחרים על.

צמיחה ו- SEO

צ'אטבוט זורם

צ'אטבוט זורם שיחות בתוך הצ'אט שלך widget (הדברים, תשובות מילות מפתח, שבילים מודרך) ללא קוד.זרימה היא סט של צעדים מחוברים (לאדס): אתה שואל שאלה, המבקר בוחר אפשרות, והזרם שולח אותם מטה את הענף המתאים.רק זרמי Active לרוץ באתר שלך.

איך זה עובד
צ'אטבוט זורםבד זרימה: ברכה ללא ענפים לשלוש כפתורים, כל אחד מהם מוביל לשלב הבא, להסתכל על סדר או יד לאדם.גרדשלום, איך אני יכול לעזור?עקבו אחרי my orderשאלה בילינגלדבר עם אדםראה סדר→סוכן אנושיTriggers: Greeting · Keyword · Manual · After-details · On-chat-end
צ'אטבוט זורם

זרימה מול AI - מתי להשתמש

השתמש בזרימה

כאשר הנתיב צפוי ואתה רוצה את זהה בכל פעם: צעדי הזמנה, קוסם חוזר, "תוכנית?" בוחר, איסוף דואר אלקטרוני לפני הפסקת יד.

השתמש ב-AI

כאשר שאלות פתוחות, "האם העבודה הזו עם ההגדרה שלי?", הלקוח צ'אט AI עונה מהידע המאומנים שלך.זרימה יכולה לפנות ל-AI (או לאדם) בכל שלב.

טריגרים

גרד

הפעל את ההודעה הפתיחה כאשר מבקר פותח לראשונה את הצ'אט.

מילות מפתח

ריצה כאשר המבקר הוא מילה שרשום (למשל החזר, תמחור, ביטול).

לאחר פרטים / Afterעיכוב

התחל פעם פרטי מגע משותפים, או זמן מוגדר לתוך השיחה.

סוף צ'אט / Proactive

ריצה כמו הצ'אט עוטפת (למשל דירוג), או מתחילה על ידי כלל הודעה פרואקטיבי.

לבנות אחד בארבעה צעדים

1
ליצור את הזרם

לחץ על New Flow, שם זה, בחר סוג טריגר (ומילים אם מילות מפתח), שמור.זה מתחיל לכבות.

2
פתח את הבד

לחץ על Edit Canvas. The Visual Buildinger שבו אתה מוסיף שלבים (mes, שאלות עם כפתורים, סניפים) ומחבר אותם.

3
הוסף סניפים ו- Hand-off

לכל בחירה, לצייר ענף לשלב הבא.הנתיבים של סוף על ידי פתרון, יד ל-AI או העברה לאדם.

4
לאפשר לו

לחץ על Enable.הזרם חי ב-Widget שלך מיד. Disable בכל עת מבלי לאבד את העיצוב.

האם הזרמים מחליפים את ה-AI?+

הם רצים לצד זה, משתמשים בזרימות לדרכים צפויות ו-AI לשאלות פתוחות; זרימה תמיד יכולה להיצמד גם.

צמיחה ו- SEO

סיורים מודרכים

סיורים מודרכים הם צעדי צעד אחר צעד כי בשלב זה בחלקים של הדף שלך עם בועות דיבור ואור הזרקור, המנחה מבקר דרך על הסיפון או תכונה חדשה.הם מלאים אותם ונבנה במעצב חזותי עם תצוגה מקדימה חיה. A סיור פועל רק כאשר הוא מסומן פעיל.

איך זה עובד
סיורים מודרכיםדף מלוטש עם טבעת אור הזרקור סביב כפתור Add-deal ובועה דיבורית בועה קורא שלב 1 של 4 עם כפתור הבאהוסף הסכםSTEP 1 של 4יצירת העסקה הראשונה שלךלחץ כאן כדי להוסיף עסקה לצינור שלך.הבא →
סיורים מודרכים

איך טיול נבנה

צעדים

כל צעד מכוון לגורם ומראה בועה עם הטקסט שלך. הוסף כמה עצירות כמו הצרכים של ה-Walkthrough ולהזמין אותם.

המונחים & Theme

התחל מקבץ מוקדם או תכנן את הבועה שלך (צבעים, גרדיאנטים, אור) עם תצוגה מקדימה חיה מימין.

טריגר

קישור באופן אופאלי לכלל פרואקטיבי כך את סיור אוטומטי כוכבים כאשר זה שולט שריפות (למשל ביקור חוזר של מבקר).

כפתור הפעל/ הפסק

סיור הוא זכאי לרוץ רק בזמן ש Active הוא מתקתק. Untick לקחת את זה למטה מבלי לקלקל אותו.

לבנות אחד בארבעה צעדים

1
סיבוב הופעות חדש

לחץ על New Guided Tour, שם זה וקישור אופציונלי לחוק פרואקטיבי כך שהוא מתחיל באופן אוטומטי.

2
הוסף צעדים

הוסף כל עצירה: בחר את האלמנט שהוא מצביע לכתוב את טקסט הבועות.סדר עד שהנתיב זורם.

3
עיצוב זה

בחרו מראש או בסגנון את הבועה בעצמכם.התצוגה מקדימה של החיים מראה בדיוק מה המבקרים רואים.

4
הפעיל

טיק פעיל וחוסך.הסיור יכול כעת לרוץ, על ההדק שלו עצמו או להתחיל על ידי כלל הודעה פרואקטיבית.

איך מתחילים סיורים?+

על ההדק שלהם, או באמצעות פעולה "סיור מודרך" של חוק הודעות פרואקטיביות, כך שתחליט אילו מבקרים רואים איזה סיבוב ומתי.

צמיחה ו- SEO

מטרות

ניגוד מטרות הופך פעילות שאתה דואג לו (אירוע אינטרנטי בשפע, הודעת צ'אט, החלטת כרטיס) להמרה מתועדות עם ייחוס מלא. OpsIQ הוא מתהפך נגד מגע וקשר אותו חזרה לקמפיינים, פלחים ומקורות שהובילו לשם.

איך זה עובד
מטרותזרימת מטרה: אירוע Webhook בתשלום הופך ל"טיהור" מוקלט. $49, המיוחס למקור וקמפיין שלה, עם שבבים מראש מהיר כוכבים למעלה.התחלה מהירהרכישת Stripe« הספרתגית: Signuppayment.succeededאתר אינטרנטשכנוע"טיהור"$49עקבו אחרי Attributedמקור: Campaign
מטרות

Define A היעד בשלושה שלבים

1
בחר את פעילות הטריגר

לחץ על New ההמרה המטרה.בחר את סוג הפעילות שנחשבת להמרות, או להשתמש ב-Fret Quickstart preset, Stripe רכישה, דמו ed, Signup or מנוי התחיל.

2
שם וקבע ערך

תן את המרה שם (purchase, Demo_booked, Signup) ואופציונלי ערך קבוע חלון תגמול.

3
להציל

להציל ולאפשר, מכל פעם שהפעילות בוערת. OpsIQ רישום המרה נגד מגע עם תגמול למגע הקודם.

יעדים כבר מחוברים ל- webhooks פנימיים: כל יעד שהמפעיל שלו מתאים לסוג האירוע הפנימי מתחיל אוטומטית ברגע שהאירוע נחת. השתמש בדף Webhooks הפנימית כדי להתחבר Stripe, Calendly או כל מערכת שתוכל לשלוח JSON.
מה יכול להיות המרת?+

כל פעילות רשומה: אירוע אינטרנטי בשפע (תשלום. succeed), לכידת דואר אלקטרוני צ'אט, החלטה כרטיס, הכל על ציר הזמן מגע.

אנליטיקה

לוחות המחוונים של Custom

לוחות היד של המכס מאפשרים לך לבנות את הנוף שלך של המדדים החשובים, במקום להסתמך רק על הסקירה הסטנדרטית.לוסיף את הווידג'טים שאתה רוצה, לגרור ולעצב אותם לתוך הפריסה שאתה אוהב, להציל אותו ולשתף אותו עם הצוות שלך.

לוחות המחוונים של Custom
לוחות המחוונים של Customבונה לוחמת עם KPI ו תרשים אריחים widget, אזור ירידה מעודן, כפתור Add-widget.לוח הבקרה Custom Dashboardsסביבת העבודהלוח המחוונים שליהוסף widgetעו"ד2,481ReVENUE$8 2kתנועהגרור כאןהמונחים: pAGES/pricing/docs/signup1ADD WIDGETSבחר & תרשים מדידות2ARRANGEדרגו וגודלו3שיתוףעם הצוות שלך
בנה את הלוח שלך: להוסיף KPI, תרשים ורשימה widgets, לגרור ולעצב אותם לתוך הפריסה שאתה רוצה, ולאחר מכן לשתף אותו עם הקבוצה.

לבנות אחד בשלושה שלבים

1
הוסף widgets

לחץ להוסיף Widget ובחר את ה-metric או תרשים שברצונך לעקוב. חזור על כל מה שאתה רוצה על הלוח.

2
סידור הפריסה

דרדר אדג'טים למקם מחדש ולגרור את הקצוות שלהם כדי לשנות. KPIs על פני העליון, תרשימים למטה.לא מה קורא הכי טוב.

3
להציל ולשתף

שמור את לוח המחוונים ולשתף אותו עם הצוות שלך, כך שכולם צופים באותם מספרים.

שמור על לוחות נפרדים עבור מקומות עבודה נפרדים (לוח "מבט פתאומי" עם ספירות חיים, ולוח "סקירה חודשית" עם תרשימים אופנתיים) כך שכל אחד מהם נשאר ממוקד.
צמיחה ו- SEO

קמפיינים בחוץ

Outreach OpsIQ"1:1ומנוע דואר אלקטרוני גדול: להרכיב הודעה אישית או להפעיל קמפיין לקטע CRM, עם זיהוי תגובה, בקרת זמני לשלוח, מעקב פתוח / לחץ, פיקסל מעקב ולחץ אחד unsubscribe.It is agree-gateed and CAN-SPAM/ CASL comcomppliant.

תפוצת
קמפיינים בחוץמסך Outreach עם Composer /Campaigns / טמפלטס / ספוילרים ושולחן מסע פרסום המציג שלח, פתוח-rate ותשובה.תפוצתסביבת העבודהקמפייניםמלחיןתבניותתשובותקמפייןשולחתפתוחתשובהיוניון1,20048%7%משפט מעקב34062%14%חזרה למשחק82039%5%תגובה מזהה מעקב אוטומטי מפסיק - לחץ אחד לא סופר על כל שלח11:1 & BULKמערכה או2TRACKEDפתח, קליקים, תשובות3COMPLIANTUnsubscribe נבנה
מנוע היציאה: שלח1:1או להפעיל קמפיינים לפסגת, מסלול נפתח ותשובות, להישאר תואמים עם גילוי מובנה ללא רישום ותשובה.

ארבעת הכרטיסיות

מלחין

לכתוב אישית1:1דואר אלקטרוני {tokens} מהמגע ו- CRM.

קמפיינים

שלח אל קטע CRM, מתוכנן או עכשיו, עם כובעים ובקרת זמן של שליחת.

תבניות

תבניות מסר ניתנות לחזרה על עצמה.

תשובות

תגובה מזהה תשובות ו- Auto-stops מעקב אחר כל מי שענה.

איך קמפיין

1
בחרו קהל

בחר קטע CRM (או מעלה רשימה) דיכוי והסכמה מוחלים באופן אוטומטי.

2
כתיבה

כתוב את ההודעה עם אסימונים אישיים; תצוגה מקדימה נגד מגע אמיתי.

3
לוח זמנים & שלח

שלח עכשיו או בזמן הטוב ביותר. רשומות פיקסל מעקב נפתח; קליקים ותשובות מיוחסים.

Outreach הוא הסכמה ודיכוי, כולל אחד לחץ ללא סופר על כל לשלוח, ובעקבות CAN-SPAM / CASL. תשובות להפסיק באופן אוטומטי מעקבים נוספים.
אנליטיקה

דוחות מסודרים

דוחות מסודרים דוא"ל קבוצה שנבחרה למקבלים נבחרים על לוח זמנים (מדי פעם, שבועי או חודשי) כדפס, לבן-על PDF הגדר אותו פעם והדו"ח נוחת באופן אוטומטי דרך תיבות. OpsIQ עיפרון

דוחות מסודרים
דוחות מסודריםמסך הרשומות המתוכנן: שולחן של דוחות עם לוח הזמנים שלהם, המקבלים והזמן האחרון, בתוספת כפתור Save-report.דוחות מסודריםסביבת העבודהדוחות מסודרים• לשמור על דיווחReportתגית: SCHEDULEמקבליםאחרוןתנועה שבועיתמונמון 9:00[email protected]לפני 2דיווח לקוח SEOחודשי[email protected]ג'ון 1סיכום המכירותיום יומי[email protected]todayמוצג כלבן-label PDF באמצעות OpsIQ cron1AUTOMATEDיומי · שבועי · חודשי2לבן-LAPDF ללקוחות3מקבליםהודעות דואר אלקטרוני בלוח הזמנים
הגדר דו"ח פעם (מערך בינוני, טווח, לוח זמנים, מקבלים) ו OpsIQ אימייל לבן-label PDF באופן אוטומטי על התנוחה שלך.

קבע דוח

1
בחרו מה לשלוח

בחר את סט המדד (טרף, SEO, מכירות, תמיכה...) וטווח תאריך.

2
לקבוע לוח זמנים ומקבלים

מדי יום, שבועי או חודשי, בעת שתבחרו, לנמען אחד או יותר.

3
להציל

שמור ואפשר.הדו"ח יוצר ומקליטים עצמו בלוח הזמנים, ללא צעד ידני.

💡
דוחות מסודרים עוברים דרך OpsIQ אם דו"ח לא מגיע, לאשר את הקרון פועל (ראה Cron ואוטומציה).
פרטיות הפרטיות

פרטיות וציות

דף הפרטיות וה Compliance הוא המקום היחיד להציג אודיטור שאתה מטפל בנתונים אישיים באחריות: ההסכמה הובילה, יומן הגישה המנהלית, מדיניות תושבות הנתונים שלך ושמירתה, וכן מערכת מוכן להדפסה. DPA בזווית אחת בלבד, רק מנהלים מלאים יכולים לפתוח אותה.

פרטיות וציות
פרטיות וציותמסך הפרטיות וה Compliance: כרטיסיות להסכמה, יומן גישה, תושבות וכניעה DPA עם טבלת מענקים וביטול על ידי ערוץ.פרטיות & Complianceסביבת העבודההסכמה הובילהיומן גישהתושבותDPAקשרתגית: CHANNELאקשן.שונאת[email protected]דואר אלקטרוניגרנטג'ון 12[email protected]pushהכומרג'ון 10[email protected]marketingגרנטג'ון 9הוכחה אפשרית לכל מענק הסכמה וביטול, באמצעות ערוץ1המונחים:הוכחה לכל מענק2ACCESS LOGמי נגע בנתונים3DPAתבנית הדפסה
מסך קורא אחד: הסכמה חיפושית הובילה (משווקים / התחדשות על ידי ערוץ), יומן גישה של מי נגע בנתונים, הגדרות תושבות/חזרה, וניתן להדפיס. DPA.

ארבעת הכרטיסיות

הסכמה הובילה

תיעוד חיפוש של כל מענק הסכמה וביטול, באמצעות מגע, ערוץ (דואר, דחיפה, SMS, in-widget), פעולה, מקור ותאריך.ההוכחה שלך היא קשר מוסכם (או נסוג).

יומן גישה

מי בקבוצה שלך ראה, עריכת, ייצוא, נמחק או מסר נתונים של איש קשר, עם המנהל, מגע, פעולה, סיבה כאמור והודעה IP בדיוק מה מבקש הרגולטור.

תושבות ושימור

לקבוע היכן הנתונים של סביבת העבודה הזו חיים, קבעו כמה ימים שורת פעילות נשמרת (0 _= Forever), ורשום את בקר הנתונים שלך ואת DPO.

DPA תבנית

תוספת עיבוד נתונים מודפסת הממלאת בקר שלך, כתובת, DPO, תושבות ושימור. PDF.

פרטיות והתאמה זוגות עם סטודיו הסכמה ב-Cookie (אשר אוספת הסכמה) ואת דף הייצוא (שמפיק עותק הנתונים עבור עותק נתונים DSAR(ראה גם Cron ואוטומציה לניקוי שמירת הלילה.
מחברים (Connectors)

חיבור הפלטפורמות שלך

קישורים OpsIQ לפלטפורמות חיצוניות: חנויות מסחר אלקטרוני, מערכות חיוב, מעבדי תשלום, ספקי דואר אלקטרוני והתאמה אישית APIs לאחר המחובר, AI יכול להסתכל על הזמנות, נתוני לקוחות, מנויים ועוד, ולעשות פעולות עם אישורך.

איך זה עובד
המונחים: רכזOpsIQ הליבה מחוברת WHMCS, Shopify, Stripe, WooCommerce SendGrid ו-Google Business פרופיל, כל אחד מהם מראה מצב מחובר.WHMCSShopifyStripeWooCommerceSendGridGoogle BPOpsIQליבה1PLUG IN25+ מחברים מבוססי מראש2AI CONTEXTמידע פלטפורמה3ACTIONSעשה עם אישורך
מחברים (Connectors)

ספינות עםOpsIQ

אלה הם הרגע שבו אתה מתקין וזקוק רק לאישורים שלהם.

WHMCS

בילינג

Web Hosting Billing: לקוחות, שירותים, כרטיסים, חשבוניות, תחומים, שרתים.

Shopify

מסחר אלקטרוני

מסחר אלקטרוני: הזמנות, לקוחות, מוצרים, מלאי, תשלומים, Webhooks.

WooCommerce

מסחר אלקטרוני

WordPress מסחר אלקטרוני: הזמנות, לקוחות, מוצרים, קופונים, משלוח.

WordPress

סמ"ת

תוכן ומשתמשים עלWordPressאתר.

ריבוע

תשלומים

תשלומים ונקודת מכירה: הזמנות, לקוחות, קטלוג.

osCommerce

מסחר אלקטרוני

Legacy e-commerce: הזמנות, לקוחות, מוצרים

Botble מלון.

גשר ברידג'

א. Botble אתר מלון CMS דרך החתום OpsIQ מימוש ההשוואה לפלטפורמה ללא קשר ל- API.

Zendesk

תמיכה

Helpdesk: כרטיסים, משתמשים, ארגונים, הערות.

פרופיל עסקי Google

אתר האינטרנט הרשמי של מיזם "שיווק

עסק מקומי: ביקורות, פוסטים, Q&A, תובנות. OAuth.

Google לוח שנה

יעילות המוצר

לוחות שנה ואירועיםOAuth.

GmailוIMAP

דואר אלקטרוני

Mailboxs: דואר נכנס ו-Outbound, סנכרון של חוברת הכתובת.

SendGrid

דואר אלקטרוני

משלוח דואר אלקטרוני: שלח הודעות דוא"ל ולנהל תבניות.

Mailgun

דואר אלקטרוני

משלוח דואר אלקטרוני: שלח הודעות דוא"ל באמצעות Mailgun.

Slack, Telegram, קו, X DM

תגית: Messaging

ערוצים לשיחות ריבאונדות וממוקדות.

ערוצים

תגית: Messaging

Facebook Messenger, Instagram DM ו WhatsApp.

מודיעין האתר (GA4 Search Console)

אנליטיקה

Analytics ונתוני חיפוש עבורSEOחבילה.

אינטרנט העשרה וCRMיבוא

אתר האינטרנט הרשמי של CRM

העשרה של החברה וייבוא לקוחות גדול.

זמין מהשוק

אלה הם חבילות מפורסמות, לא חלק מהתקנה. Install אחד מ Connectors, Marketplace והוא מועתק לתוך תיקיית מחברים חיים, ולאחר מכן הוא מתנהג בדיוק כמו אלה לעיל.

Stripe

שוק

תשלומים: חיובים, לקוחות, חשבוניות, מנויים, תשלום, סכסוכים.

BigCommerce

שוק

מסחר אלקטרוני: הזמנות, לקוחות, מוצרים, קטגוריות, מותגים.

Magento2

שוק

מסחר אלקטרוני: הזמנות, לקוחות, מוצרים, קטגוריות, מלאי.

PrestaShop

שוק

מסחר אלקטרוני: הזמנות, לקוחות, מוצרים, כללי עגלות, ספקים.

OpenCart

שוק

מסחר אלקטרוני: הזמנות, לקוחות, מוצרים, קטגוריות.

אמזון SES, Postmark, Resend

שוק

משלוח דואר אלקטרוני עסקי

Jira, לינארי

שוק

ביצוע ועיבוד פרויקטים

ZOO, Microsoft Calendar, Outlook Mail

שוק

מפגשים, לוחות שנה ודואר.

DocuSign, Apollo, SerpApiGoogle Analytics

שוק

חתימה, אפשרות, חיפוש וניתוח נתונים.

WebflowWix, Squarespace

שוק

פלטפורמות אתר

💡
רשימת המחבר נעה כחבילות מפורסמות.הרשימה הסמכותית של ההתקנה שלך היא דף Connectors: מה שרשום שם הוא מה שהתגלה במשרה המחודשת, ואת הכרטיסיה בשוק מראה מה אתה יכול להוסיף.

התקנת מחבר

1
עקבו אחרי Connectors

לנווט כדי לחבר בצד הניהול.

2
מצא את המחבר

כבו את הרשימה או החיפוש. Connectors הם מקובצים על ידי קטגוריה.

3
לאפשר לו

לחץ על המחבר ו- toggle Enable.

4
אישורים Enter

למלא את התחומים הדרושים: API מפתח, URL לכל מחבר יש דרישות ספציפיות המתועדות בלוח ההגדרות שלו.

5
מבחן חיבור

לחץ על "חיבור עמוק" תוצאה ירוקה פירושה שהמחבר יכול להגיע לפלטפורמה החיצונית.תוצאה אדומה מראה את השגיאה.

6
תכונות

בחר אילו תכונות לאפשר: ידע מסנכרן, סינכרן Webhook, פעולות AI.לא כל המחברים תומכים בכל התכונות.

מה מחברים נותנים לך

בינה מלאכותית

AI יכול להסתכל על נתוני הלקוח, הזמנות, מנויים ועוד דרך המחבר.כאשר לקוח צ'אטים, ל-AI יש נתונים אמיתיים פלטפורמה ההתייחסות.

בינה מלאכותית (מחברי קישורים)

מחברך של קונטקסטספקר מאכיל את הכרטיס-AI סיכום חשבון קורא בלבד של בעל הכרטיס.פתור את הלקוח על ידי פתרון הלקוח על-ידי הלקוח על פי ההודעה. customer_id כאשר ידוע; אחרת, על כרטיס אוטומטי תגמולים, שבו דגל הctx customer_trust_email נכון, עיין בחשבון customer_email (שולח הכרטיסים המאומת) , פלטפורמות מרוחקות חושפות /context/customer-by-email נקודת קצה והמחבר מכנים אותה.זה מה שהופך את AI לצטט איזון אמיתי / חשבונית במקום לומר "לוגו של דוגמנות" לכבוד משקפי הנתונים של המפעיל (ה)customer_sections, customer_allow_credit(וישארו לקריאה בלבד, לעולם אל תגלו סודות.

מנהל לקוחות (מחברי קישורים)

IdentityProvider של המחבר שלך מאכיל שלושה נתבים אוניברסליים: lookupCustomerById() (כרטיס לקוחות) lookupCustomerServices() (שולחן המוצר/שירות) listCustomers($query,$limit)לקוח חיפוש או דוא"ל מסוג "(Search Customer or type mail) ב- Native Compose-New-Ticket Forms of Return שורות של שורות החזרה {id, external_id, name, email, company, phone, platform, platform_label}. חוק מרוחק: אם הלקוחות שלך חיים במסד נתונים אחר או בשירות, להביא אותם מעל הפלטפורמה שלך.API בתוך שיטות אלה, לעולם אל תקראו את הטבלאות של המערכת האחרת ישירות (בקיצור: OpsIQ DB הם בעלי מקומות ריקים, ולכן קריאה מקומית מחזירה פנקס ריק).API URL שמור על מקומי לקרוא רק כ-DB נופל.

כרטיסים ל-Mail-piped,זיהוי ומחיקה (מחברי קישורים)

כאשר דואר אלקטרוני נכנס הופך לכרטיס יליד, OpsIQ מזהה את השולח על ידי קריאה lookupCustomerById(0, ['email'=>$sender]) בכל מחבר; המשחק הראשון "זרעים" ללקוח ו- platform ה-Selfed 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;המפתח נעדר על כרטיסים שאינם מאוישים (chat/manual /AI) ולכן מראות אלה כמו קודם לכן, שליטה בהעברה חיים תחת צוות ומחלקות→כרטיסים פתוחים באמצעות דואר אלקטרוני (כל אחד / לקוחות בלבד/Off).

פעולות

AI יכול לבצע פעולות באמצעות המחבר: ליצור כרטיסים, לעדכן הזמנות, לבטל מנויים, כל עם אישור שלך דרך שכבת האמון.

ידע

מחברים תורמים מאמרים ידע ספציפי פלטפורמה ל- AI. Shopify מחבר מוסיף בעיות מסחר אלקטרוני לפתרון; WHMCS מחבר מוסיף את הידע.

ייבוא ידע-בסיס (מחברי קישורים)

אם הפלטפורמה שלך מארחת בסיס ידע, להכריז על בסיס kb_capabilities בלוק settings.json (סוג kb_source(ומתחבר שלך מופיע בעורך מרכז העזרה) ייבוא KB→יבוא מתוך אפליקציה מחוברת ירידה בכל פעם שהוא מופעל והגדרה במרחב העבודה.זה מפוכח, אין שיטה ליישם: שם בנוי-in adapter (zendesk מרכז העזרה המדויק API או crawl עבור כל אתר KB) ו- base_template כגון https://{subdomain}.zendesk.comאשר OpsIQ ממלא את הגדרות המאוחסנים של המחבר שלך.Credentials לעולם לא לעזוב את השרת; הדפדפן שולח רק את מחבר סלג 'לתמוך בפלטפורמה חדשה, להוסיף פלטפורמה חדשה, opsiq_kb_<platform>_manifest() הסתגלות ופניית זה על ידי שם מלא: connectors/PLATFORM_CONNECTORS.md §5.

ווב הוקים

כמה מחברים לרשום Webhooks עם הפלטפורמה החיצונית עבור הודעות בזמן אמת (הזמנות חדשות, עדכוני כרטיסים וכו ').

מעקב המכירות

אנשי מסחר אלקטרוני להאכיל נתוני הכנסות לתוך לוח הנתונים של המכירות עבור תגמול וניתוח.

💡
קישורים הם Workspace-scoped.כל סביבת עבודה יכולה להיות מחברים שונים שאפשרו עם אישורים שונים.WHMCS סביבת העבודה משתמשת WHMCS מחבר: A Shopify סביבת העבודה משתמשת Shopify מחבר.
האם ניתן להשתמש במספר מחברים בבת אחת?+

כן, אתה יכול Shopify עבור הזמנות ו- Stripe לתשלומים באותה סביבת עבודה.AI ממזג נתונים מכל המחברים האפשריים.

מה אם הפלטפורמה שלי לא רשומה?+

השתמש ב- Connector Builder כדי ליצור מחבר מותאם אישית עבור כל פלטפורמה עם REST API או לבדוק את השוק עבור מחברים קהילתיים.

צור קשר עובד עם עוין עצמי OpsIQ?+

כן, מחברים עובדים זהה הן במהדורות ענן והן בעצמן.

מחברים (Connectors)

מכירות וחוזה קישור

כל מחבר מסחר משתמש באותה חוזה אירוע מרכזי בפלטפורמה. WHMCS הוא יישום ההתייחסות, אבל גשר SaaS, חנויות, ספקי תשלום, מחברים בשוק וחבילות בורות Connector חייבים לציית לאותו כללים.

מה כל מחבר המסחר צריך לפרסם

One Authoritative הוביל

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. תנועה_source מכיל פיצוי רכישה מאומת כאשר מסופק; אחרת להשתמש באותה סלג כמו נפילה.חנות מזהה, לא להציג תוויות. OpsIQ לפתור את שם המחבר הידידותי ב-UI.

חוסר יכולת

אירוע_id חייב להיות מכריע.מפה לפחות הזמנה אחת בלתי-מוגדרת_ref, Invoice_ref או מנוי_ref כל כך מהדורות Webhook retries ו backfills לעדכן את אותו האירוע במקום ליצור מכירות כפולות.שירות_ref מזהה את המוצר או מקרה השירות המושפע כאשר קיים אחד.

המונחים: timestamp

התרחש_at הוא זמן התשלום או ה- Economic-event שדווח על ידי פלטפורמת המקור.לעולם אל תחליף תאריכי תשלום היסטוריים עם תקופת היבוא.

כסף ו-Fro

שלח את סכום המקור ואת מטבע ISO בתוקף 3 ליטר.אם ההגדרה המחברת מאפשרת OpsIQ המרת FX, דיווח ממיר למטבע הדיווח של סביבת העבודה; דוחות אחרים משמרים את מטבע החנות או החיוב.קוד Connector לא חייבים לפענח מטבע דיווח או שער חליפין.

מחזור חיים מבוסס ראיות

השתמש חדש, חידוש, שדרוג, החזר, אשראי או לא ידוע.סווג מגורם חשבונית, מנויים או מערכת יחסים שירות, סוג קו-טאם, או שדה מקור סמכותי אחר. A רכישה חוזרת של אותו לקוח אינה אוטומטית חידוש.

גבולות המכירות

רק חיובי בתשלום חדש, חידוש, שדרוג או קבלות מסחר לא ידועות באופן לגיטימי שייכים מכירות ומסקנות. החזרים מדווחים על ידי החזר וניתוח אשראי נטו-revenue. חשבון, ארנק העליון, אסימונים העליון, להוסיף קרנות נשאר אירועים חיוב ולא לספור כמו מכירות, המרות, סדר, או הכנסות המכירות.

CRM נשאר נפרד

עסקאות CRM מייצגות פעילות צינורות ועסקה.הם אינם מכירות של פלטפורמות מסחר אלא אם כן פלטפורמת חיוב או חנות מחוברת פולטת את הסדר בתשלום או חשבונית המובנה באמצעות חוזה זה.

כל אות תשלום פותח את השורה

אל תסתמך על שם אירוע אחד.כאשר הפלטפורמה שולחת כמה אישורים של תשלום אחד (חשבונית בתשלום, הזמנה בתשלום, עסקה נוספת, תשלום הושלמה) כל אחד מהם עשוי לפתוח את השורה המובילה לאחר שהפלטפורמה מאשרת את המכירה משולם; טביעת האצבע מכירה ממוטטת את האחים בשורה אחת.

המונחים:contract 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.

תחזיות

סטיות וסיכוםי לוח המחוונים הם תחזיות תאימות שנבנו מן ה-Moderger. Connectors לא חייבים להתייחס להקרנה כמקור הפיננסי של אמת.תיקון חוזים יכול להעריך מחדש שורות נגזרות מבלי למחוק את ההיסטוריה הבסיסית של חיוב.

גבול פלטפורמה מרוחק

מחבר מרחוק קורא את הפלטפורמה שלו באמצעות ההגדרה של אותנטיות API זה לעולם לא צריך להיות על טבלאות מסד נתונים של אותו שומר.אתר התחום האותנטיות המדויק_key מסופק על ידי Connectorregistry ויש ליישם את כל כתיבת וגיבוי מוביל. סביבת העבודה או היקף הקבוצה הוא קריאה-זמן aggregation רק; זה חייב אף פעם לא להרחיב בעלות אירוע מאוחסנת.

דוגמה: Canonical Paid-event

אירוע מסחר רגיל
{
  "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"
}

מיפוי מובנה

כאשר מכירות וחיוב מופעלים ב- Connector Builder, כמות המפה, מטבע, מצב מקור ותאריך המקור, בתוספת הזמנה אחת לפחות, חשבונית או הפניה למנוי. Map Lifecycle_type בעת מחזור החיים API חושף ראיות ממעגל חיים סמכותיות.המכירה שנוצרת עוברת כל שורה דרך אותו המסחר קונבנציונאלי רגיל של Tradingregistry בשימוש על ידי מחברים מובנה בשוק.

⚠️
אשראי והוספת קרנות נשמרות בכוונה על ההיסטוריה של חיוב, איזון לקוחות וניתוח הוביל.הפיצול אותם מהמכירות לא ימחקו אותם; זה רק מונע מהם לנפח את ביצועי המסחר.

מחזור חיים_type מחליט מה הופך לעסקה של CRM

lifecycle_type זה לא תווית ניתוח.OpsIQ קרא אותו להחליט אם מכירה נכנסת לצנרת CRM, כך שכל מחבר המכירות מקבל החלטה צינורית האם היא מתכוונת או לא.

חדש

פותח הסכם סגור (עסק חדש).

חידוש, שדרוג

הרשומות ככנסות חוזרות ונשנות.לא עסקה חדשה-עסקית – חידושים מתמירים על עקומת הסתברות שונה ושילובן משחית את שתי התחזיות.

החזר, אשראי

לעולם אל תפתח עסקה, בכל מצב שבו כסף חזר ללקוח הוא לא ניצחון.

מקור: Unknown

ההכנסות בלבד.המכירה רשומה אך לעולם לא מגיעות לצנרת.

מכירה אחת, שורה אחת מובילה: זהות היא הסיפור, לא האירוע

אל תתאים event_id הכנס את עצמך. event_id is platform:eventName:externalIdהתשובות "כבר מעבדנו את המשלוח הזה" ולא יכולות לענות על "כבר הקלטנו מכירה זו".פלטפורמה שמכריזה על תשלום כפול - כמו invoice.paid ושוב payment.completed - מנקה שני ילדים וקרקע את אותו הכסף פעמיים, ללא שום דבר כדי להתנגש ולא כלום להזהיר.

💡
נמצא בתקנה ההתייחסות: שש חשבוניות עם שלוש שורות מובילות כל אחת, משלוש נתיבי קוד באמצעות שלוש תוכניות שונות של אירוע_id.0.00לכן לא נראה כל כך רע, וכל תהליך מאוחר יותר שיקום כמויות אמיתיות היה נחשב תשלום אחד שלוש פעמים.

התקשר לכתיבה המשותפת במקום זאת, הליבה קובעת את זהות העסק של המכירה (המכונה: Core)sale_fingerprint), תואם שורה קיימת על זה, משמר את המקור. event_id על עדכון, ופילטרים בעמודות אמיתיות:

הדרך היחידה לכתיבה את מוביל המכירות
\OpsIQ\Commerce\CommerceEventContract::upsertSaleRow('opsiq_sales_events', $row);
אותו מכירה, אירועים רבים

חשבונית, בתשלום.שלמה ומכירה.שלומה עבור אחד מהקולות חולקים טביעת אצבע אחת ועדכונים שורה אחת.

החזרים נשארים נפרדים

כסף שיוצא הוא עובדה שונה מכסף שמגיע. החזר של חשבונית שומר על זהות משלו, כך שלעולם לא תוכל לנסח את התשלום שהוא הופך.

אין התייחסות, לא טביעת אצבע

שורה ללא הזמנה, חשבונית, מינוי או התייחסות לשירות לא מקבלת טביעות אצבע כלל, כך ששני שורות שאינן קשורות לעולם אינן מתנגשים רק משום ששתיהן חסרות id.

המונחים: precedence

חשבונית_ref, אז סדר_ref ולאחר מכן מנוי_ref ואז שירות_ref - הראשון החזק ביותר, כך מכירה אחת שומרת על זהות יציבה.

ה-Moderger הוא רק: לעולם אל תשכתב מכירה

החזר, ביטול או תיקון הוא כניסה חדשהלעולם אל תמחקו את השורה שהיא מתקנת.החזר תשלום לתוך החזר נראה מסודר ומפרק שלושה דברים בבת אחת:

זה הורס הכנסות גולמיות

מכירות גרוס וקצב החזר מפסיק להיות שווה - ואת החזר קצב הוא המדד הרצוני קיים כדי ליידע.

הוא מספר את הטינה בתקופה הלא נכונה

החזר מחודש של מכירה בינואר חייב להפחית את חודש מרץ.כתב שורות ינואר נחות בשקט תקופה סגורה.

זה שובר את שביל הביקורת

רשומות כניסה מובילות מה קרה בשלב מסוים.תיקוןים הם אמצעי מניעה, וזה איך העלאה כפולה של ספר הכניסה עבדה במשך חמש מאות שנים.

אז מחבר מדווח על הרצאתיות ולא ליישם אותה: להחזיר refunded_at ו refund_amount לצד מחזור החיים של המכירה, ולתת למתקשר לכתוב את ההחזר כשורה משלו המתוארכת כאשר החזר זה קרה.שניים לעולם לא יכולים להתנגש באיד, כי טביעת אצבע מכירה מפרידה בין חזרה למכירה.

💡
אותו עיקרון חל על כמויות.אל "repair" כמות מאוחסנת לערך הנוכחי של הפלטפורמה: חשבונית שהתיישבה בחשבון אשראי שנרשמ באופן לגיטימי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,
]);
💡
עדיפות היא קבועה ומשותף: מפורשת, ולאחר מכן החזר / מוכרז, לאחר מכן אשראי, שדרוג, אז הוא_order, ואז חוזר, ולאחר זמן רכישה, ולאחרונה לא ידוע יושב מעל לבדוק ההזמנה כי פלטפורמות להעלות הזמנה גם עבור שיפורים; יושב מתחת זה כי החשבונית הראשונה של מנויים חדשים נושאת סוג חוזר.

לשחרר את כל אוצר המילים של הפלטפורמה

זהו הכישלון שעולה ביותר ונראה הכי פחות נכון.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 לאחר מכן, תיקון ההיסטוריה המיובאת של המחבר עם קוד לא מחובר: ריצה יבשה כברירת מחדל, חוזר ואמת את ספירת השורות לפני כתיבת, ניתוק באמצעות undoger, וזה אף פעם לא כותב קריאה כושלת כתשובה.

💡
אם המחבר שלך לא יכול לקרוא מחדש רשומות העבר - מחבר אינטרנט בלבד אינו יכול – אל תמריץ את השיטה. a stub Return Unknown גרוע יותר מאשר שום יישום: backfill היה לשכתב שורות טובות כמו unclassified ודיווח הצלחה.
💡
הפניות מפורטות של החבילה נשאר זמין במחברים / CONNECTOR_EVENTS. md ומחברים/PLATFORM_conNEC עופות באמצעות הפצת מקור עצמי.
מחברים (Connectors)

מסע אירועים

אינטליגנציה המסע מקבלת מעטפה אירוע קדמית אחת מהדפדפן widget, מובנה המחברים, גשר SaaS, חבילות שוק ופלט בונה Connector. Platform- שמות ספציפיים מתורגם בקצה; פטריות, ייחוס וקוד מודיעין האתר צורכים רק אירועים קנוניים.

סודיות ואמון בגבולות

מפתח שיתוף פעולה משותף

כל אירוע מחויב לאתר התחום האותנטיות_key. a Connector חייב לקחת את המפתח הזה מ- Connectorregistry או נקודת הקצה שלו, אף פעם לא מגוף בקשה שלא היה אחראי. Domains לשמור רשומות נפרדות; קבוצה דומיין היא התכנסות של זמן קריאה בלבד.

זהות בלתי נמנעת

אירוע_id נדרש לחבר, וחייב להיות קביעה עבור אותו אירוע Native. Retries, webhooks ו backfills לעדכן אירוע אחד במקום לשכפל מסע או מכירה.

שם מקורי: canonical name

שמור מקור_event_name for evidence and Troubleshooting, ולאחר מכן למפות אותו לאירוע_name_canonical. Core Analytics חייב אף פעם לא להקיף על מזחלת המחברת.

ראיות Server מנצח

התבוננות בדפדפן יכולה להתחיל או להפר מסע.אירועים מחברם מאוימים לאשר את ההרשמה, כניסה, תשלום, רכישה, חידוש, החזר ותוצאות מסוף אחרות. a valid Sitebound token הוא ההצטרפות החזקה ביותר; אסימוני לא חוקי נדחה והזהות המשובחים שלו אינם אמינים.

פרטיות הפרטיות

שלח רק מזהים ושדות הדרושים למסע המוצהר.לכבד את הסכמת, מסכות והגדרות שימור.לעולם אל תעמידו אישורים, נתוני כרטיס, סודות אימות או גופי הודעות פרטיים בתכונות.

המעטפה הקנונית

מסע הופעות
{
  "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"}
}

אסטרונומיה Taxonomy

השתמש בשם האמת הצר ביותר.משפחות נתמך כוללות אירועי דף / CTA; ההרשמה לחשבון, כניסה, MFA ו- איפוס סיסמה; להוביל וליצור שלבים; מוצר, עגלת, צ'ק, תשלום, רכישה, מנוי, חידוש החזר; רשמים קידום והמרות; עזרה ריכוז, צ 'אט ואירועים כרטיס; אירועים אבטחה; וכן אירועים מותאמת אישית של שמות אופייניים הם שמות טיפוסיים. account.signup.succeeded, account.login.succeeded, lead.form.succeeded, commerce.payment.succeeded, commerce.purchase.completed, commerce.subscription.renewed ו commerce.refund.completed.

המונחים: right and dropment

ה- widget יכול לעבוד ללא מחבר על ידי התבוננות במבנה העמוד, פעולות טופס, תוצאות DOM ואת יומן מסע המבקר. כי ראיות נשארות מדורגות במפורש כפי שנצפה או מופרז.חבר מוסיף אישור שרת סמכותי ויכול לקשור אותו לאותו ניסיון דפדפן. abandonment נשמרת לראשונה כמועמד; הוא הופך נטוש רק לאחר החלון הלא פעיל שנקבע ב UI ורק כאשר אין הצלחה מאוחרת יותר או התאוששות.

תגמול וכנסות

Attribution מעדיף אסיקן חתום תקף, ולאחר מכן מסע מדויק, ניסיון, מפגש או התייחסות למסחר, ואז גרף הזהות המוסכמת, ולבסוף התאמה התנהגותית כבולה. 1.הכנסות של Site Intelligence מיוחסות קוראות את ה-Moderger הזה; זיכויים, אוזניות ארנק, אסימונים העליון והוספת קרנות אינן רוכשות המרות. Connector FX התנהגות נותרה נשלטת על ידי הגדרה זו של המחבר.

⚠️
מודל תגמול, חלונות משוב, טיפול ישיר-טרף, ביטחון מינימלי, נטישה זמן והגדרות כינור הם מדיניות UI. Connector Code לא צריך לקוד אותם.

חיבור מיצג ו-Build

פרסום מסע
{
  "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 דרך נקודת הסיום של האינטגרציה האותנטית

💡
ה- Trading הוביל נשאר מקור האמת הפיננסי של הגשר המסחר-למסעני מפרסם תוצאות מאומתות בשרת ומיישב את תגמול לאחר שהדוקר המובל הנוכחי, כך שתשלום אחד לעולם לא הופך לשני מכירות.
מחברים (Connectors)

כיצד פעולות בינה מלאכותית פועלות

כל מחבר מכריז על מערכת של פעולות: דברים ש-AI יכול לעשות באמצעות הפלטפורמה החיצונית.פעולות הם הגשר בין "הבינה מלאכותית" ו"הבינה המלאכותית עושה".

פעולות AI
כיצד פעולות בינה מלאכותית פועלותבקשה של לקוח ממפה לכרטיס פעולה מסוג למחוק, ולאחר מכן בדיקת הרשאות: הרשאה נבדקת, אתה מאשר, API התקשר.כיצד פעולות בינה מלאכותית פועלותסביבת העבודה"Can Sale myמנוי"לקוחאהה.cancel_subscriptiondeleteאישור נדרשהמונחים:מנוי_id (מהקשר)המונחים:TYPESreadלכתובdeleteתוצאות & Role Checkאתה מאשר את הפעולהAPI תוצאות דיווח1DECLAREDכל מחבר רשימות פעולות2GATEDאישור + לאשר3THEN RUNAPI קריאה, תוצאה בחזרה
בקשה הופכת לפעולה מוצהרת (סוג של קריאה/כתיבה / מחיקה) אשר היא השגחה, אישרה, ולאחר מכן מבוצעת ומדווחת.

מחזור החיים של הפעולה

1
הלקוח מבקש משהו

"בטל את הרשומה שלי." הבינה המלאכותית מזהה שזה דורש פעולה של "ביטול_רשומה".

2
AI בודקת הרשאות

האם זה אפשרי?האם הוא מופעל?האם למשתמש הנוכחי יש את התפקיד הנכון?

3
AI אוספת פרמטרים

הפעולה זקוקה לתעודת זהות מנויים.ה-AI נראה אותה מהקשר של הלקוח או שואל את הלקוח.

4
אישור

לפעולות הרסניות או גבוהות, AI מבקש אישור לפני ביצוע.

5
הוצאה להורג

הפעולה קוראת לפלטפורמה החיצונית API.

6
תוצאות

ה-AI מדווח על התוצאה ללקוח.

סוגי פעולה

קרא פעולות

ראה נתונים ללא שינוי כל דבר.דוגמאות: רשימה_orders, Get_user. Safe, no אישור נדרש.

לכתוב פעולות

יצירת או שינוי נתונים: ליצור_ticket, עדכון_order. עשוי לדרוש אישור.

פעולות מחיקה

הסר נתונים. דוגמאות: cancel_ subscription. תמיד דורשים אישור.

פעולות HTTP

הובהר במעשים.json גנרית API שיחות מוגדרות באופן ברור.

תגים Capability

שדה "capability" של פעילות אופטית בפעולות.json תג חבר-נוטרלי (למשל "כרטיסים" עבור כרטיס קריאה / צפייה, "ticket_create" לפתיחת הכרטיס).OpsIQ השערים את כל הכיתה באופן אחיד על פני כל מחבר: הכרטיס קורא טיפות מתוך AI כאשר המפעילה מכבה את המודעות לכרטיסי בינה מלאכותית, ויצירת כרטיסים שמורה עבור OpsIQ"מלחין משל עצמו (כל כך כלי יצירתו של מחבר לא יכול לשכפל אותו).OpsIQ לעולם לא צריך לדעת את שמות הפעולה שלך.היוצר של Connector חושף אותו כנפילה להזדמנות לפעולה.

פעולות קוד

הואשם ב-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" }
    }
  }
}
מחברים (Connectors)

לבנות מחבר

The Connector Builder מאפשר לך ליצור מחבר שלם עבור כל פלטפורמה עם REST API אין צורך בקידודים בסיסיים.

לבנות מחבר
בונה מחבריםטופס מחבר No-code: Name, auth type, Base URL מיפוי פעולה, מבחן עובר ולחיצת כפתור.בונה מחבריםסביבת העבודהבונה מחבריםשם השםהפלטפורמה שליאותOAuth 2.0(PKCE)בסיס URLhttps://api.example.com/v2פעולהGET/customers →רשימה_לקוחותמבחן עברחבילה1NO-CODEשם: auth, Base URL2ANY APIKey, Bearer, Basic, HMAC OAuth3PUBLISHInto /connectors/<slug>/
הכוונו את הבנאי לכל REST API. הקדישו אוטומציה, בסיס _URL ופעולות, בדוק אותו, ופרסם חיבור שעובד. אין צורך בקוד.

ספק שלם API כיסוי

כל אחד יצר API מחבר יכול לחשוף אינדיאני נפרד API Read and Native API כתיבת פעולות.פעולות מעובדות נותרו מועדפות; פעולות מקומיות מכסות את נקודות הקצה הוסיפו מאוחר יותר.The Runtime Support REST, GraphQL, JSON צורה, XML גופים גולמיים ורב-חלקיים, הדמיה כבולה,API- סיברס ורגישות תוך שמירה על האישורים בתוך הגדרות המחבר של סביבת העבודה.

⚠️
חבילות שוק מקורן /marketplace_connectors כמו כן, /connectors. להגדיל את גירסת החבילה, לשחזר את החוזה ואת התיעוד, להפעיל בדיקות התאמה, ולאחר מכן חתימה מחדש ופרסם את הגרסה החדשה של שוק.

קוסם יוצר

לקוסם יש שישה שלבים, כפי שמוצג ככרטיסיות על פני העליון.אפשר לקפוץ ביניהם בחופשיות, ו שמור את טיוטה בכף הרגל, אתה שומר את העבודה שלך בכל נקודה.

1
זהות ופרופיל

שם, סלוג, תיאור ואייקון, ולאחר מכן בחר פרופיל חוזה: תקןAPI, מסחר, Helpdesk, Mailbox, Site Intelligence, SaaS Bridge, Local PHP Platform או פלטפורמה ללאAPI כאשר הפלטפורמה לא משרתת דברOpsIQיש להתקין גשר.פרופיל בוחר נקודת התחלה מלאה; אתה עדיין יכול להתאים יכולות בודדות.

2
אות

בחרו את תבנית האימות שהפלטפורמה משתמשת וממלאת בתחומיה. הזן אישורי מבחן אמיתיים גם כאן: הם משמשים לבדיקת החיבור על הצעד הבא, והם אינם מאוחסנים לאחר פרסום.

3
מבחן

להיכנס API בסיס URL ונקודת קצה של אימות, ולאחר מכן להפעיל מבחן חיבור חי באמצעות האישורים מצעד 2עשה זאת לפני שאתה מגדיר פעולות, אם האתיופי או הבסיס URL זה לא בסדר, כל פעולה שתכתוב לאחר מכן תיכשל מאותה סיבה ותפגע בדברים הלא נכונים.

4
פעולות

Define כל פעולה: שם, שיטת HTTP, נתיב נקודת קצה, פרמטרים, מיפוי שדה תגובה והגדרות האמינות המתוארות להלן.You יכול להפעיל כל פעולה בנפרד נגד החיים 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>/.

⚠️
פרסום אינו מפעיל את חבילת התיאום. Publish רק מאמת את צורת הקוסם ו פולט אזהרות שאינן חוסמות.החבילה המלאה - ביטוי, קבצים של יכולת, חוזה זהה-לקצה ואת בדיקת הגשר-snippet – פועל כאשר אתה לוחץ על יבש-run ושוב בהתקנה זמן.

מה הפרסום עושה כי הטופס לא מראה לך

חמישה התנהגויות של הגנרטור מפתיעות את האנשים.אף אחד לא באג; כולם יעלו לך אחר הצהריים אם תפגוש אותם במקרה.

שאלה אחת מחליטה לעבור: האם הפלטפורמה משרתתAPI?

לענות על זה צעד1על ידי בחירת מצב הגישה לנתונים (או "Platform with no no"API"פרופיל").APIהמונחים: native_api and emits the <slug>_api_call passthrough. Bridge mode declares platform_bridge במקום זאת ו-StrIPS native_api גם אם ספקטרום מבוגר יותר נשא אותו, כך המניפסט, המעמד שנוצר וערכת המומחיות לא יכולים שלא להסכים. ai_brain_aware נוספו גם דרך.

SILENCE MEANS "יש לוAPI"

הבונה עוקב אחר התשובה שלך; הוא אינו פועל את האמת בפני עצמו, ואת ברירת המחדל כאשר שום דבר לא נאמר.APIמצב כזה – no-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"בלוק המבחן כמעט ואין פלטפורמה אמיתית שמשרת את המסלול הזה, כך שחיבור הבדיקות נכשל ב-HTTP404על כל התקנה וקריאה כמו תקלה של הלקוח ולא פגם החבילה.קבע דרך לאמת שהפלטפורמה שלך באמת עונה.עבור מחבר גשר, להצביע על זה בנקודת הסיום האבחון שלך - זה מוכיח את שרשרת כולה בקריאה אחת: הגשר הוא פרוס, משחקי המפתח והגשר יכול להגיע למסד הנתונים.

Re-Putishing Still overwrites Your Hand-edits

ההסתברות עכשיו לעקוב אחר התשובה לגישה לנתונים, כך שכל השאר יצרו עדיין עושה: לערוך את ContextProvider. php או כל קובץ שנפלט אחר והפרסום הבא מחליף אותו.ה החריג המוגן האחד הוא קובץ הגשר - הקוסם רק מעדמל גשר הנושא את חותמו שלו עצמו, אז אחד בכתב יד נותר לבדו.

סודיות מוחקת קבצים

Un-tick aיכולות והפרסום הבא מסירים את הקובץ הספקי שלו. Hand-edits לכל קובץ שנוצר - ContextProvider.php מעל הכל – נכתבים ללא אזהרה. copy Customizations החוצה קודם, או לקחת בעלות על החבילה על ידי deleting .opsiqמפתח.json(לאחר מכן הקוסם כבר לא יצליח לנהל את זה).

שחרור_status הוא תמיד תצוגה מקדימה

למכשף אין שליטה על זה.חבילה שנועדה לאגור כהפקה חייבת לשחרר_status שונתה באמצעות יד בהגדרות.json- ועריכה זו שוברת את החתימה, אז חתימה מחדש.

החתימה מוכיחה שלמות, לא מקור

חבילות בנייה חתומות עם מפתח סימטרי של ההתקנה הזו.זה מזהה טמפינג.זה לא מוכיח מי כתב את החבילה, וכל התקנה המחזיקה באותו מפתח יכולה לייצר אותה חתימה. לטפל בחבילה מקומית שחתומה על עצמה כמסמנת עצמית.

התנגשויות סלאג נבדקות רק בעץ אחד

פרסום מסרב לזייף שכבר קיים/connectors/.זה לא מסתכל/marketplace_connectors/,כך חבילה של צד ראשון עם אותו סלג יכול בסופו של דבר לצוץ.

💡
למכשף אין שלב של כתיבת ידע.קובץ ידע המתאר את הפלטפורמה שלך נוצר עבורך מהשם, התיאור, סוג ופעולות שהגדרת, והוא טעון לתוך AI כאשר המחבר מופעל.

Defining a Action (צעד) 4)

לכל פעולה יש את ההגדרות הבאות, רק ארבעת הראשונים נדרשים; כל שאר השליטה שיכולה להפעיל אותה וכמה בזהירות.

מפתח פעולה ולייבל

המפתח הוא מה שה-AI קורא; התווית היא מה שקוראים בני אדם.מפתחות ממושמעת באופן אוטומטי עם מחברך, כך ששני מחברים יכולים להיות "רשימות_orders" ללא התנגשות.

HTTP

ג'ט, POST, PUT, PATCH או DELETE.

URL נתיב

עקבו אחרי The Base URL שימוש {name} לבעלי מקומות, למשל /opportunities/{id}/stage

TERMS

לכל פרמטר שתבחר גם לאן הוא הולך: גוף הגוף, נתיב, שאלות או ראשפרמטר נתיב ממלא {placeholder} פרמטר שאילתה מיועד ל- URL.

מיפוי תגובה

תגידו איזה שדה יש JSON התשובה היא מה, שהוא שם הלקוח, שהוא הדואר האלקטרוני, שהוא סך ההזמנה.זה מה שמאפשר ל-AI לקרוא את הנתונים של הפלטפורמה שלך ולא לנחש על כך.

מי יכול להשתמש בו

הצוות שלך (מנהל AI), לקוחות חתומות (צ'אט לקוחות), הן, או עוזר הכתיבה של פעולות הלקוח לרוץ רק עבור הלקוח החתום ושדות הזהות נעולים להם באופן אוטומטי כך שלקוח אחד לא יכול לשאול על זה.

דרושים אישור

אדם חייב לאשר לפני שהפעולה תתנהל.

הרס

מסמן את הפעולה כניחת מדינה או שינוי.שימוש בה כדי להזהיר לפני שהיא פועלת.

נדרשת רשות

המנהל חייב להחזיק את רשות זו עבור AI כדי להפעיל את הפעולה מטעמם; מנהלי מערכת מלאה תמיד לעבור.בחר מניהול_integrations, לנהל_כלל, לנהל את_sales_bridge, לנהל - ידע, לנהל\appearance, לנהל-_behavior, ניהול_permissions, לנהל _dangerzone, לענות_to_chats_totic, לשלוח כל תוקף או מנהל אמת.

תיאור / AI

זה אומר ל-AI כאשר ניתן להגיע לפעולה זו, למשל "להשתמש בכך כאשר המנהל מבקש לשנות שלב עסקה".

יכולת Capability

תג כיתה אופטי, או כרטיסים (כרטיס קורא או מראה) או כרטיס_יצור (פותח כרטיס). OpsIQ שער את כל הכיתה בבת אחת, למשל, כרטיס המחבוא קורא כאשר מפעיל הופך את המודעות לכרטיסי בינה מלאכותית.

מפת דרכים

עבור נקודות קצה להחזיר רשימה, את הנתיב הקידוד למערך, לדוגמה נתונים או נתונים. items

נתיב שגיאה

שדה גוף שנוכחותו פירושה שהקריאה נכשלה, למשל טעות. APIs חזרה HTTP 200 על כישלון.

לרוץ It

כל פעולה יכולה לפעול נגד החיים API בשלב זה, כך שתוכל לתקן נתיב לא נכון או שם שדה לפני שמישהו אחר ישתמש בו.

⚠️
פעולות כתיבת מוגנים כברירת מחדל.כל פעולה באמצעות POST, PUT, PATCH או DELETE מתחילה לדרוש את אישור ניהול_integrations ו אישור אנושי לפני שהוא פועל, פעולה חדשה של כתיבה לא סגורה ולא מאפשרת ל-AI לשנות את הנתונים שלך ללא פיקוח.אתה יכול לשנות גם בפעולה, אבל לשנות אותם ביודעין.
💡
כדי להיות מקריאה לצ'אט של לקוחות, יש לקרוא פעולה רק: להשאיר את שניהם דורשים אישור ו unticed.פעולה לקוח יכול לגרום כי גם שינוי המדינה הוא לא משהו שהקוסם יאפשר לך לשלוח בטעות.

Receiving webhooks (צעד) 5)

הצעד של הטריגר נותן לך רשת URL כדי להירשם עם הפלטפורמה שלך, ואמת כל בקשה שמגיעה על זה.

חתימה Header

כותרת לוחמת הפלטפורמה שלך עם, לדוגמה X-Hub-Signature 256_.

חתימה אלגוריתם

HMAC-SHA1, HMA C-Sha256 או HMAAC-SSH512.

תוכנית חתימה

פשוט, hex או בסיס64 לעיכול.או בסגנון Stripe, t=,v1=... פורמט המשמש את רצועת ופלטפורמות שונות שהעתיקו אותו.

חתימה prefix

כמה פלטפורמות לתקן את הלכלוך, למשל 256= השאירו אותו ריק אם לא.

מיפוי אירועים

מפה כל אירוע שהפלטפורמה שלך שולחת OpsIQ אירוע זה צריך להעלות.

Auto-registering the Webhook

אם הפלטפורמה שלך יש API על ניהול אתרי אינטרנט משלה, אתה לא צריך לרשום את URL יד פתוחה Auto-register This Webhook on Use ומציין את זה בשני הפעולות שהגדירתם בשלב 4:

יצירת-webhook

התקשר כאשר מנהל מערכת מאפשר לחבר.אתה נותן את שם הפרמטר הנושא את URL באופן אופציונלי, זה הנושא את רשימת האירוע ואת הנתיב בתגובה שמחזיקה את האיד החדש של Webhook.

פעולה Delete-webhook

נקרא כאשר המחבר הוא מוגבלות, באמצעות ה-id הנתפס לעיל, כך שפירוק המחבר מפסיק גם את הפלטפורמה שלך שולחת לנקודת קצה מתה.

יכולת לעבור על

פרופילים ויכולות מוגדרים על ידי Connector Contract 2.2 יכולות ייצור ודה-משמעיות נפלטות ישירות; יכולות ארגוניות יוצרות יכולת EnterpriseExtension.php ספוג עם מחזור חיים של ריצה.

פעולות

תפעול AI יכול לרוץ על הפלטפורמה שלך: הזמנות רשימה, למצוא לקוח, להוציא החזר.

טריגרים

קבל Webhooks מהפלטפורמה שלך ולהפוך אותם לתוך OpsIQ אירועים.

כרטיסי AI

AI Triage ואת התשובה Co טייס על כרטיסים להישאר על הפלטפורמה שלך.בחר את נקודת הקצה מחזירה כרטיס אחד עם תשובות שלה וממפה את השדות; OpsIQ קורא את החוט דרך זה.

Mailbox ו- Contacts

הצג את הדואר של הלקוח על ציר הזמן שלהם, לשלוח מעסקה ולסנכרן את ספר הכתובות שלך לתוך הספר. OpsIQ CRM.

יבוא לקוחות

דף דרך רשימת הלקוחות שלך ייבוא כל אחד OpsIQ מגע זה מה הכפתור הייבוא רץ.

הקשר

לדחוף נתונים מהפלטפורמה שלך לכל שיחה של בינה מלאכותית.

זהות

לעבוד על איזה מהלקוחות שלך מבקר, ולהציג את הפרופיל והרכישות שלהם בכרטיס.

מכירות וחיוב

להאכיל את אירועי ההכנסות ואת נתוני MRR לתוך OpsIQ לוחצים.

כרטיסים

הפעל כרטיסים והודעות דוא"ל הפלטפורמה שלך מספקת על ידי Webhook לתוך OpsIQ תמיכה בחוטים

תשובות

הפוסט Post OpsIQ הצוות עונה חזרה לפלטפורמה שהחוט מקורו.

Sync משתמשים

ייבוא חשבונות הצוות שלך לתוך OpsIQ משתמשי ניהול.

Sync מחלקות

ייבוא מחלקות התמיכה שלך לתוך OpsIQ.

עקבו אחרי Product Feed

תן קידום מטרות סטודיו על עובדות שאתה מכיר על אדם, ולהפוך את המוצרים האמיתיים שלך בתוך קידום.

ספק סטודיו

עובדות סקר מבוססות שרת, מנופי חילוף ודפי ה-CRM Outreach המוערכים באמצעות סקר ייעודי. php. This אינו משתמש ב-Review Runtime.

אינדיאני IP חסימת

מתי OpsIQ בלוקים IP התקשר לבלוק של הפלטפורמה שלך API גם הבלוק נשמר שם.

אירועי אבטחה

קבל חסום -IP אותות איומים OpsIQ.

ידע פלטפורמה עבור AI

כל מחבר שאתה בונה אוניות התייחסות קצרה המתארת מה הפלטפורמה שלך ומה פעולותיה עושות. OpsIQ מנהל AI קורא את זה בכל פעם שהמחבר שלך מופעל, כך שהוא מבין את הפלטפורמה שלך ולא רק לראות רשימה של שמות פעולה.

API לעבור

המחבר שלך תמיד מקבל שיחה כללית למטרות, כך AI יכול להגיע לנקודת קצה שלא הגדרת פעולה קלה עבור. השתמש בפעולות ממותגות שבו אתה יכול; זהו פעמון הבריחה.

החוזה Canon Connector 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.

יכולות Canonical

פעולות

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.

WEBhook

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

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.

s

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

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 שגיאות מתחדשות; 4X היא אשמת הבקשה שלך, וחוזרים על כך רק ישרוף את הגבלת הקצב שלך.

הגבלת מחירים

תקרה של דקה לפעולה זו, כך שגורם עסוק לא יכול לדפוק את הפלטפורמה שלך. 0 ללא הגבלה.

זמן

כמה זמן לחכות לפלטפורמה לפני לוותר.

אישור

צריך אדם לאשר לפני שהפעולה פועלת, השתמש בה לכל דבר הרסני.

סוגי Authentication

שלב צעד 2 מציע שבעה דפוסים.בחר את אחד שמתאים לפלטפורמה שלך API תיעוד, הגנרטור פולט את הלקוח הנכון HTTP עבור זה.

API מפתח ב Header

מפתח סטטי שנשלח כראש קבוע, למשל X-API-Key.You give the Header Name and the label טופס הניהול צריך להראות.זה שולח את המפתח רק כראש; אם אתה שלך בלבד;API מצפה מפתח כמו פרמטר שאילתה במקום זאת, השתמש כותרות מכס או מחבר קוד מלא.

תגית: Bearer token

Token sent as Authorization: Bearer <token>. Common for modern APIs.

יסוד

שם המשתמש וסיסמה, בסיס64-קודד לתוך מנהל האישור.אתה בוחר את התווית שתי השדות להופיע על טופס הניהול.

HMAC - חתום

מפתח ציבורי בתוספת סוד, עם גוף הבקשה חתום.אתה נותן את ראש החתימה, ראש המפתח ואת לוח הזמנים של הפלטפורמה שלך מצפה.

OAuth 2.0 (אישורים בינוניים)

Server-to-server, ללא אינטראקציה למשתמש וללא הפניה.You give the token URL והיקף אופציונלי; המנהל מספק מזהה לקוח וסוד. השתמש בכך כאשר הפלטפורמה שלך מתייחסת לאישור יישום ולא לאדם.

OAuth 2.0 (בחצץ)

זרם קוד האישור עם PKCE, עבור Stripe, Shopify, Slack and QuickBooks-style יישומים.You לתת את האישור URL תגית: The token URL וההיקף.לאחר פרסום, מנהל המערכת לוחץ על המחבר, מסמיך את הפלטפורמה שלך, ואת OpsIQ מאחסנת את אסימוני הרעננות ו mints גישה לאסימון על הביקוש.הפנייה URI להירשם ב שלך OAuth האפליקציה מוצגת בדף הגדרות המחבר.

ראשי תיבות של Custom Headers

טופס חינם JSON מפה אחורית לכל דבר שהדפוסים לעיל אינם מכסים, למשל."API"מפתח":{api_key}"X-Tenant":{tenant_id}"כל בעל מקום הופך לשדה על טופס הניהול.

💡
PKCE חל על זרימת Connect-button בלבד.לזרם הלקוחות אין הפניה ואין שלב משתמש, כך ש-PKCE אינו חל עליה.

סגנונות הדמיה

הסתרה

שימוש ב- offset and Limit הפרמטרים.דוגמה: offset=100&limit=50.

עמוד Page

שימוש במספר העמודים.דוגמה: דף=3&per_page=50.

מקרר

משתמש באות סמן מהתגובה הקודמת.

קישור Header

השתמש ב- Link response Header עם rel="next".

קוד PHP מותאם אישית

מחבר.php RETURNS לדוגמה, זה לא להכריז על שם הכיתהOpsIQהציד של השיטה שמות להלן הם אלה שמחייבים את החיבור בין-פנים; מקבל עוול אחד הוא קטלני בעומס, לא אזהרה.

מחבר. php - החוזה האמיתי, מינימלי וניתן לריצה
<?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.

כרטיסים ל- Native ticket system

כאשר הפלטפורמה שלך מחזיקה כרטיס, ראי אותו לתוך OpsIQ מהמחבר שלך באמצעות עוזר כרטיס ingest Helper שלך יורשים (יצירת עבור כרטיס חדש, תוספת תשלום עבור מעקב) Emit ומנוי לאירועי הכרטיסים האוניברסליים של המחבר שלך. subscribers() שיטה, ticket.created, ticket.replied, ticket.updated, ticket.deletedבאופן אוטומטי, הסלמה, SLA ו- CSAT כל נצמדים לאותו אירועים, כך שתרשמו אותם ללא קוד נוסף.

אם אתה מטפל ticket.deletedגם אתם מטפלים במיזוגים. כרטיס ממוזג merged_into לא נשלח לחבר המכריז ticket_mergeהמיזוג מגיע פעם ticket.merged במקום זאת, כך שתוכלו להתמזג על הפלטפורמה שלכם ולא לסגור את הכרטיס הממוזג שם. יכולת מיזוג כרטיסים (Contract) 2.4).

מי כתב את ההודעה הפתיחה

כרטיס הוא תמיד עבור הלקוח, אך הודעת הפתיחה עשויה להיכתב על ידי צוות העובדיםסוכן פותח כרטיס מטעם הלקוח, או מגיע באופן יזום.כל עוזרדסק תומך בכך, כך שהוא חלק מהאוניברסאלי ticket.created החוזה במקום משהו שכל מחבר פותר באופן פרטי.

author_type

לקוח (default) או מנהל המערכת, או התחייבו והלקוח.

author_id

הצוות id כאשר מחבר_type=admin. Never the Customer id.

author_name

שם ה-CDC או מחלקת תצוגה: Falls Back to "Staff".

author_email

כתובת הסוכן לעולם לא הלקוח הודעה של צוות תחת הודעת דואר אלקטרוני של לקוח היא טעות דיווח וביקורת.

זה לא קוסמטי. צרכנים קוראים author_type להחליט מי יהפוך אותו.פתח בכתב-צוות client משאיר את הסימון של אוטומטי זכאי לענות על הודעה שכתב הסוכן שלך, והופך את הד של הפלטפורמה שלך לפתיחה זו להיראות כמו הודעת לקוח חדשה, אשר לאחר מכן נוחת כדפלה ומכופף את הכרטיס כדי להפוך את הכרטיס ל ענהמיפוי אות הפלטפורמה שלך עליו בפנקס המחבר אירוע רגיללעולם לא לצרכנים.

בלוק מרכזי

כאשר סוכן חוסם שולח, זה חל על פני כל ערוץ מיד (דואר, צ'אט, פורטל, widget וכל מחבר תאום) כי הבלוק הוא מאולץ מרכזי, לפני שכל מחבר רואה את ההודעה.חבר שלך יורש אותו על ידי עושה שום דבר.אין עבודה בשפע ליישום ואין דרך לטעות.

חצי האופציונלי הוא תגית:• לספר לפלטפורמה שלך לקוח נחסם כאן.ליישם אותה רק אם הפלטפורמה שלך יכולה לבטא משהו שווה ערך.

יכולות ()

חייב לכלול חסם_registry והמעמד חייבים ליישם את ה-blockregistriinterface.הדגל הוא תביעה; הממשק הוא ערובה.

blockSender($b)

מקבל סוג (דוא"ל|דומיין|ip), ערך, סיבה, admin_id, expires_at, site_key. חוזר [תוצאה, פרטים?, רלוונטיות מרחוק?]

unblockSender($b)

אותו מטען, הפוך.חייב להיות עבריין; חסימת משהו שלא נחסם הוא noop, לא טעות.

isSenderBlocked($b)

לפיוס, כך מדווח סחף במקום לגלות על ידי לקוח.

תוצאות ערכים

בסדר

מומלץ להשתמש בפלטפורמה שלך. Include Remote_ref כאשר יש לך id שווה להקליט.

noop

כבר במדינה המבוקשת.

unsupported

לפלטפורמה שלך אין מושג שווה ערך.לא טעות.

נכשל

אתה יכול לעשות את זה וזה השתבש. Include פרט; הוא נוחת על שביל הביקורת.

ההחלטה היא תשובה נכונה. פלטפורמות רבות אין מושג "בלוק זה" ומציעות רק השעיה ACCOUNT, אשר מפסיק חיוב, כניסה ושירותים במקום תמיכה בלבד דואר. Mapping "סוכן חסם כתובת ספאם" על "סגור חשבון הלקוח הזה", יאפשר לחסום לא מלחיצה אחת לסיים את שירותיו של לקוח בתשלום. unsupported תשאירו אותו לבד.

גם ירידה מכסה את המקרה שבו הפלטפורמה יכול להיות שיכול עשה זאת, אבל לא ייתן לך לבדוק. APIלא תכונה: מנוף שקיים רק ב-Inner UI של הפלטפורמה הוא lever המחבר שלך אין.

המונחים: Zendesk (The Reference application)

קרא Read 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למשתמשי קצה אין שום. להחזיר את המשתמש כ- מרוחק_ref.

דומיין→לא נתמך

Zendesk יכול להשעות דומיין שלם, אבל רק באמצעות העיכוב: מילת מפתח במרכז Admin לחסום טקסטarea, ולא כלום. API כותב שדה זה: התכונה קיימת; המנוף אינו.

ip →לא נתמך

אין כרטיס IP בלוק קיים.

כתובת לא ידועה→noop

Zendeskלא ניתן להשיג מראש כתובת שמעולם לא ראתה שום דבר לא אינו כישלון, והבלוק המקומי עדיין עוצר את הכרטיס.

סוכן או מנהל→לא נתמך

צוות מעקב אחר ה- Suspending ינעל עמית מתוך העזרהdesk.כתובת צוות שמגיעה לבלוקצ'י היא הרבה יותר סביר להיות טעות מאשר הוראה, לבדוק את התפקיד לפני שאתה פועל על זה.

השורה האחרונה היא זו ששווה להעתיק.החוזה לא יכול לעצור אותך ממיפוי של משהו הרסני, כך שכל מחבר צריך להחליט לעצמו מה הוא יסרב. detail מפעיל יכול לקרוא, מנצח.

דיווח בכנות. שימו לב כמה שורות אלה okזו התוצאה הנכונה, לא פער: בלוק דומיין עדיין עובד (הוא מאולץ בליבת הרגע שהוא כתוב), פשוט לא ניתן להביט החוצה. ok עבור משהו שלא עשית היה אומר למפעיל את הבלוק הגיע לפלטפורמה שלך כאשר הוא מעולם לא עזב. OpsIQ.

כללים

הבלוק המקומי תמיד מנצח

זה כתוב לפני שאתה נקרא ועומד כל מה שאתה חוזר.אתה לא יכול למנוע מפעיל לחסום מישהו.

לעולם אל תזרקו

זריקה מטופלת כ"לא נתמך ורשומות.חזרה נכשלה בפרטים במקום זאת, כך שהסיבה שורדת.

להיות idempotent

אותו בלוק ניתן להכריז יותר מפעם אחת.

חזרה מהר

Fan-out הוא סינכרוני עם לחץ המפעיל. Queue עבודה איטית במקום להחזיק את הבקשה פתוחה.

אל תתקשרי חזרה

לעולם אל תחסמו מחדש OpsIQ מהמנהל שלך.המרשם מלגלג על המחברת המקורה, אבל הופ שני היה לולאה.

כל הודעה נכתבת opsiq_block_registry_log (פעולה, אדיבה, ערך, סיבה, ניהול, מקור, מחבר סלג, תוצאה, פרטים ופעמים) כך מפעיל יכול לראות בלוק הגיע מהפלטפורמה שלך ולא מסוכנת, ומה כל אחד מחבר עשה על זה.

לדחוף קבצים מצורפים נכון

יד attachments מערך ליצירת()/addReply(). כל פריט נושא את הקובץ באחת משלוש צורות:

content_b64

בסיס64 של קובץ RAW, השתמש בקבצים מאחורי auth (רוב המקרים inbound). OpsIQ מפענחים אותו ומארחים מחדש את הקובץ עבורך.הצורה הניידת ביותר.

url מקור |url

VPN ציבורי URL (לדוגמה, תוכן Zendesk_url) חייב להיות http; עובר בדיקת SSRF / לאפשריות לפני שהוא מאוחסן.

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 שמות קבצים בלבד (לא עציצים), כך דפוס Inbound אמין הוא: לקרוא את השלבים שבהם הקוד שלך כבר פועל (מחוץ לפלטפורמה, או מהעומס של Webhook), בסיס64 אותם, ולירות אותם כמו קודכם. content_b64 על האירוע.

Outbound (OpsIQ →הפלטפורמה שלך). כאשר סוכן מצמיד קובץ, ticket.replied תשלום נותן לך את הקבצים של התשובה stored_path פריטים מתחת OpsIQ קרא אותם ודוחף בפורמט של הפלטפורמה שלך, ולבדוק את ה-Docs פלטפורמה, את נושאי הקידוד: WHMCS רוצה base64_encode(json_encode([[name,data]])) (JSON, לא סידוריזציה; Zendesk מעלה ע"י גרוטאות גלם /uploads.json עבור aken אז קובע comment.uploads; Gmail שולח RFC-822 הודעה רב חלקית/מזוהה base64url-encoded ב raw; Amazon SES inbound attachments need the S3 receive action (the SNS path caps at 150 KB).

פלטפורמות מרוחקות: API Webhook, אף פעם לא עוד טבלאות של אפליקציה

אם הפלטפורמה שלך היא אפליקציה נפרדת או מסד נתונים (קובץ SaaS, מרחוק) WHMCS DB שונה באותו שרת, לעולם אל תכתבו את הטבלאות ישירותבסיס חוצה נתונים כותב אדמות על כל קשר פעיל ושקט מפספס את השורות האמיתיות. תגית: שם הסרטון: The Platform's Sign REST API (חיובים, מעמד, מחלקה, נמחק); Inbound * הפלטפורמה POSTs aחתומה Webhook, שלך handleWebhook() תקנו אותו ושרים את המשחק ticket.* כדי לעצור לולאה מראה, תייגו מה אתם דוחפים עם מסמן מקור (למשל. mirror_origin:'opsiq'); הפלטפורמה מהדהדת אותו ברשת ומטפלת הנכנסת שלך מדלגת על הדים שלה. OpsIQEvents::isMirroredEvent() בראש כל מטפל.

סטטוס המראה, עדיפות ומחלקה

תשובה נעת באופן אוטומטי, סוכן תשובה → answered, a לקוח תשובה → customer_reply; מראה כי אותו אופן. עבור שינויים מפורשים להירשם ticket.updated לקרוא ולקרוא payload['changes'] (למשל. {status:'closed'}).

סטטוס: OpsIQ"השיטה הקנונית היא open, customer_reply, answered, in_progress, pending, closedשמור מפה קטנה של שני נתיב לאוצר המילים של הפלטפורמה שלך, ולוודא שהעמודה שלך מקבלת את הערכים שאתה כותב (ann) ENUM חסר ערך ירד בשקט לרוקן על ידי מסדי נתונים מסוימים. משרד: The the OpsIQ id המחלקה הוא חסר משמעות בצד שלך, לעולם אל תשלחושלח את המפיץ (name, email ו slug· לפתור את זה נגד המחלקות שלך באמצעות דואר אלקטרוני→שם השם→סלג, כך "משרד בילינג" נוחתים שלך משרד עורכי דין במקום כלליטריגר על שניהם ticket.escalated ו department_id שינוי ticket.updated.

💡
סטטוס / עדיפות / נושא / מחלקה / למחוק מראה הוא השער על ידי per-linkor toggles (mirror_status_changes, המראה_priority_changees, Mirror_subject_change,ראי_department_changeים, ראי_deletes) לקרוא דרך המשותף משותף OpsIQ• עוזרים ל-MirrorOptions. Embed Thatblock בהגדרות שלך.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 נניח את הסוג האופציונלי + id ותואם את רשימת השירות שלך, עם שומר סוג כך קוד דומיין לעולם לא תואם מוצר של אותו id.Exse aתואמים ריפל על כל שירות עבור התאמה מדויקת.

related_domain

שם דומיין; מתאים כמתח כנגד כל פרט / תחום של שירות.

💡
בנה את רשימת ההחזקות פעם, בצורת למעלה, OpsIQ תגית: The Rest URLs מועברים דרך ובסיס64 תוכן מאוחסן ומחוונן מחדש עבורך.You Never Need to write per-platform file Treatment.
⚠️
מפתחות פעולה הם אותיות מזוודה, ספרות ומדגישים.היוצר מקבל3To to80דמויות וגם מאפשר dots; חנות הפעולה מקבל2To to100דמויות ללא dots, אז לשמור על אותיות, ספרות ומדגישים ואתה לספק את שניהם.הוספת פעולה לא יוצר מסלול AJAX, כך שאין מה לחדש - להחזיר את המחבר והוא מסונכרן.

תן ל-AI לבנות אותו עבורך

אין צורך למלא את ששת השלבים שבידיכם, לרשום את המחבר במילים ובמילים שלכם.OpsIQ"בינה מלאכותית מנסחת את כל הפרטים, עוברת אותם דרך אותו תוקף המשתמש הקוסם, ומראה לך את התוכנית לפני הכל כתוב לדיסק.יש שני מקומות לעשות את זה והם מייצרים את אותה החבילה.

בקוסם

פתוח קישורים→+ הוסף מחבר→בניית מחברעל צעד1תראה ✨בנה אותו בשביליהקלד את מה שהמחבר הוא עבור - הפלטפורמה, מה היאOpsIQצריך לקרוא ומה זה צריך לכתוב, מי משתמש בו - להוסיף אתAPIשורש אם אתה יודע את זה, ולדחוף אותו.המכשף ממלא כל צעד מן הטיוטה, ואתה בודק וערוך בדיוק כמו אם קנית אותו.6אותו פאנל נראה כמו ✨סירוב עם AIכך תוכלו לבקש שינוי ("גם לקרוא חשבוניות") במקום עריכת שדות.

על ידי AskOpsIQ

פתח את שאל לשאול OpsIQ טייס משותף בכל מקום ב-מנהל ואומר מה אתה רוצה, לעולם לא צריך לקרוא פעולה או לדעת שהקוסם קיים.

1
לבקש את זה

לדוגמה: "בנה לי חיבור עבור. Trelloזה צריך לרשום את הלוחות שלי ורשימות, לקרוא קלפים, ולייצר כרטיס על לוח. Trello משתמש ב. API המפתח ועוד תג." הטייס השני עונה במשפט אחד ומראה « לצרף את המחבר המסר שלך הוא הקצר, אז לשים את הפלטפורמה, הקריאה והכותבים בו.

2
לאשר את הטיוטה

עדיין אין כתוב על ידי הטייס המשותף טיוטת המפרט, מאמת אותו, ועונה עם התוכנית: מה המחבר עושה, הפעולות שהוא יחשוף (טקסים מסומנים), את ההנחות שהוא עשה ואת השאלות שעדיין צריך לענות - בדרך כלל איזו אישור לאספקה.הדראפט חונה תחת id ונשאר זמין עבור שהייה זמינה עבור קבע, והשאלות שאתה עדיין חייב לענות – בדרך כלל צריך לענות עליהן תשובה - אשר בדרך כלל האישורים לספק.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 לא יכול לפרסם מחבר, לאפשר אחד או להיכנס לקבינט בכוחות עצמו.

מה זה בינה מלאכותית ולא מותר לעשות

המתרגם הוא הקיר

מפרט טיוטה עובר בדיוק את אותה אימות () הכפתור הפובליש של הקוסם משתמש.אם הוא לא יעבור, AI ניתנת שגיאות ומנסה שוב, עד שלוש פעמים, ולאחר מכן מסרב במילים של תוקף.

זה לא כותב שום אישורים

הטיוטה שם את תבנית האימות ואת שדות ההגדרות; היא לעולם לא ממציאה מפתח, אסיקן או סודי.אתה ממלא את אלה לאחר מכן בדף הגדרות המחבר.

זה עונה עם שאלות, לא ניחושים

כל דבר שלא ידע – החשבון שלך, אזור שמתוך שני נקודות קצה התוכנית שלך חושפת - חוזר כהשאלה על התכנית ולא הנחה שקטה.

נקודת מוצא מומצאת נכשלת בקול רם

ה-AI לעולם לא להמציא נתיבים, אבל שום מודל אינו מושלם.דרך שגויה מפרסם כפעולה שאינה מעכבת את מבחן החיים שלה על צעד הפעולות או בפעם הראשונה שהוא פועל – זו אף פעם לא הצלחה שקטה.

החבילה היא רגילה

מה שהוא מייצר הוא חבילה בונה רגילה: אותו קבצים שנוצרו, אותה חוזה, אותה חתימה, שניתן לערוך בקוסם, משוחררת מדף Connectors.אין סוג של "מחבר בינה מלאכותית".

המודל שלך עושה את הטיוטה

איכות היא המודל שהגדרת תחת הגדרות→AI. מודל קטן וזול מנסח חיבור נכון אך פשוט ושואל שאלות נוספות; מודל חזק יותר מקבל יותר נקודות הקצה בפעם הראשונה.שנה אותו תחת תצורה של בינה מלאכותית, שום דבר אחר לא צריך להשתנות.

⚠️
הטייס המשותף יכול רק להפעיל פעולות שהתקנה הזו אכן רשומה.אם הפעולות הבונהות של Connector חסרות - תוכנית שאינה כוללת אותן, או תפקיד ללא תפקיד. manage_connectors הטייסת אומרת זאת במקום להציע כרטיס שלא יכשל בעת לחיצה.
מחברים (Connectors)

מוכר באמצעות צ'אט: מפת תפקיד המסחר

מחבר שיכול למכור - פלטפורמת חנות, מערכת הזמנה, שער תשלום - מכריזה על מי לענות על פעולות הפנים שלהOpsIQ"תפקידי מסחר קוניים" קובע את זה ואת המחבר מופיע תחת הגדרות→לקוח chat→למכור באמצעות צ'אט באופן אוטומטי; להפסיק להכריז וזה נעלם.אין רשימה להירשם.

הקובץ: commerce_roles.json

ההצהרה חיה בתיק שלה בשורש החבילה - נוכחות הקובץ היא הטענהזה לא יכול לחיות connector_contract.jsonקובץ זה מוקרן מחדש על ידי כלי האריזה וschema שלה דוחה מפתחות לא ידועים, כך בלוק יד ביד להיכשל אימות ולאחר מכן להיות נכתב יתר.

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כל איות, כל מפריד - נדחה מבנית.שורה שנכתבה ישירות עקפה את התמחור של הפלטפורמה שלך, נעילת מניות ודואר אישורים, ומייצרת הזמנה שהמערכת שלך לא מאמינה בה באופן מלא.

תפקיד כתיבת מכריז על פעולת התאוששות

מבט חטוף שעונה "האם הקרקע שלי כתובה?", העיתוי המסוכן ביותר הוא זה שלאחר הפלטפורמה שלך כבר יכול היה ליצור את ההזמנה; ללא בדיקת התאוששות האפשרויות היחידות הן להזיז עיוור או לאבד אותו.

תפקידי תשלום מקיפים של הספק נושאים שלוש התחייבויות נוספות

חבילה שמדברת ישירות אל ספק תשלום חייבת גם להכריז payment_profile (דברים, מדינות, שיטות ו סביבה - סביבה לא מוגדרת היא איך שילוב מבחן לוקח תשלום חי. webhook_verify (תוכנית החתימה האמיתית של הספק; חברה סודית גנרית נדחתה) event_map (אירועים נפרדים על תותחים) מחבר סוחר שרק מיישום record_payment מקבל כבר ראיות תשלום קנטון מאומתות; זה לא חייב להעמיד פנים שהוא השער.

כיצד לקוחות עשויים להזמין בחנות מחוברת

מחבר סוחר ומחברת תשלום הם חוזים שונים. לקוח בחנות Connected Orderingבחר את המצב העמוק ביותר שהפלטפורמה יכולה להוכיח.הבחירה נארזת בתוך החתומה commerce_roles.json; חנות ולקוח צ'אט קורא אותו מחדש בזמן ביצוע.הסיר תפקיד או disabling / ביטול המחבר ולכן לא לקלקל הצעה שנעשתה בעבר במקום להשאיר סמכות מסולקת מאחור.

catalog_only

מפות מפות catalog_search או catalog_get. OpsIQאולי לחפש ולסביר מוצרים, אבל זה לא יכול להראות סדר executable או לבדוק אישור.כל חבילה נשארת כברירת מחדל אמתית זו עד הציטוט המתואם שלה ופעולות בדיקה / הסדר להעביר את החוזה עמוק יותר ואת הסמכה השוק; לעולם לא להפר תמיכה העסקה בשם פלטפורמה.

platform_checkout

מפות גם quote ו platform_checkoutהפעולה המסחרית – לאOpsIQהמונחים: returns checkout_url, checkout_reference והציטוט הקנוני: TheURLחייב להיות HTTPS, השם המארח שלו צריך להתאים customer_ordering.checkout_hosts או מארגן ה-HTTP שמקורו checkout_host_settingוהציטוט עשוי לחיות לא יותר מאשר15• מוצר permalink, קרון ארוז מקומית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 גם מסיר את יכולתה של המפעיל לדלג עליה.

כמה זמן הקוד נמשך

30 דקות לאחר ברירת מחדל, המפעילה ניתנת להגדרה5דקות עד24הלקוח רואה ספירה חיה שהועברה משלהם זמן לא, אין הקוד של המפעילה פגום אומר כל כך בפשטות ומציע קוד חדש ולא דיווח על קוד לא חוקי – לקוח שטיפיף קוד נכון אך בן לא עשה טעות, ואומר להם שהם שלחו אותם מסביב לאותו לולאה.

מה הלקוח חייב לספק: לקוחות_fields

שם ודואר אלקטרוני נדרשים תמיד ונאספים ראשונים. address, phone ו company as required או optional כדי להתאים את העסק: חנות שספינות ממצה את הכתובת הנדרשת; מלון מכריז על טלפון נדרש, שכן אורח שהוא לא יכול להתקשר אין שום קשר הזמנה.העזר מבקש מהם בשיחה לפני המכסה, וOpsIQמסרב להציב הזמנה שחסרה שדה נדרש.המבנה כותב את המפה הנורמלית החוצה, בסיס הכלול, כך החוזה על הדיסק מפורש.

כאשר החשבון נוצר: חשבון_timing

at_order (default) מאפשר לכתיבה ליצור חשבון קונה בפעם הראשונה. before_quote כאשר המחירים של הפלטפורמה שלך לחשבון -WHMCSמסים על ידי הפרופיל של הלקוח עצמו וציטוטים במטבע של הלקוח -OpsIQיוצר את החשבון שלך דרך customer_create פעולה ברגע שהשדות הדרושים ידועים, ולאחר מכן מבקשת את הציטוט על חשבון זה, כך כרטיס האישור נושא את הסכום שאתה באמת צריך חשבונית. account_flow: connector_signup.

עוזר מביא, זה לא קורא: לקוח_tools

עם יצירת פקודות, עוזר לעולם לא קורא קטלוג עברי.זה קורא שלושה כלים - commerce_catalog_search (שאילתה ריקה היא סקירה של משפחות המוצר; תוצאות מעבר לגדר נרשמות על ידי שם), commerce_catalog_get עבור פריט אחד מלא, commerce_quote, אשר מנקה את שרת האישור חתום לצד זה של הקירות הנתיב המחבר תמיד היה כלי אחד לכל פועל, מחברך כפרמטר, כך חנות עם שישה מחברים מקבל שלושה כלים ולא 18. client_tools הגבלת ברירת המחדל; נעדר פירושו כל מפוסל, ואדם catalog_only מחבר לעולם לא מצטט.אישור הוא אף פעם לא כלי: כפתור הכרטיס ברשת, בדיוק CONFIRM פקודה על ערוץ, ושום מודל לא אומר להוציא כסף.

מה צריך לקחת את הפריטים שלך

id, nameלקוח-בטוח summary, a category או משפחת מוצר (ככה מילת הלקוח מוצא פריט ששמו הוא קוד) currency, unit_amount_minor, availableו input_schema שם שדות הזמנה צריך.חיפוש מעלה את דברי הלקוח נגד השם, המשפחה, המחזור והסיכום.

סירוב עם סיבה שהלקוח יכול לפעול

שוב החזרה {"success":false,"error":"…","missing":["domain"],"retryable":true} כאשר ערך הוא לא בסדר או חסר.סירוב שמות missing או retryable מגיע ללקוח הפועל-מרפא; כישלון חשוף נשאר גנרית כל כך לא שום דבר פנימי.

מטבע גיאומטרי והפסקת החירום

כאשר המפעילה מופעלת על מטבע גיאומטרי (Client Chat)→התנהגות, הלקוח קורא מחירים במטבע שלהם על כל משטח - טקסט צ'אט, כרטיס האינטרנט, כרטיס הטקסט ערוץ ואת מטבע הפתיחה של החנות - באמצעות חנות FX משלך של הפלטפורמה.מחירך לעולם לא מוחלש: הכרטיס מראה את הדמות של המבקר ליד מסך החנות, ואת התהליכים השער בדיוק את הסכום שהוא מציג. כל מה שמוכר (Settings→המסחר) הוא מתג ההרג: קטלוג, ציטוטים וחיפושים נשארים פתוחים; מציעים ומאשרים את הפסקת כל ערוץ.

כאשר מכירת צ'אט אינה מתנהגת

לא ניתן להגיע לסוחר

חותם החבילה נשבר: קובץ נערך לאחר החתימה. Re-publish את החבילה. עותק שוק מותקן מעולם לא נערך במקום; לעדכן אותו מפאנל השוק.

הזמנת המכולת הופסקה עכשיו

מתג המוות הוא על הגדרות.→מסחר מסחרי→נצלו את כל המכירה.

הזמנה עדיין לא זמינה בערוץ הזה

הערוץ אינו מקובע מתחת להיכן לקוחות יכולים לקנות.השרת שמות את הערוץ.

עוזר מתאר פריט אך לא מופיע כרטיס

כלי הציטוטים סירבו.כל שיחה רשמה [opsiq][commerce][client_tool] עם הסיבה: פריט לא נכון, שדה הפריט אינו מצהיר, דומיין נלקח או סירובו של הסוחר עצמו לקרוא את הלוג לפני שהוא סומך על הביטוי הטפיל של עוזר.

עוזרו אומר שלא ניתן לראות את המוצרים

הדף שייך למרחב עבודה אחר.כל אתר widget שייך לפלטפורמת עבודה אחת, ומחבר החנות חייב להיות מופעל שם.

תשובה מאוישת במקום תשובה

"תגיד לי קצת יותר על מה שאתה צריך" פירושו שספק ה-AI קורא לעצמו נכשל; היסטוריית הבינה המלאכותית מראה את הטעות המדויקת שבאותה תור, והכלים מעולם לא הגיעו.

עריכה לא מופיעה בצ'אט

העובד מחזר על שינוי קוד בתוך דקה, אבל שיחה חוזרת לכרטיס האחרון שלו.התחל שיחה חדשה כדי לבדוק.

מבקר ניגרי רואה דולרים למרות שמטבע הגיאוגר נמצא על

בדוק את ה- גיאו-IPמסד נתונים מוגדר (Client Chat)→גיאו) ומטבע המבקר יש שיעור FX; ללא ריביתOpsIQמראה את מחיר החנות ולא מספר לא נכון.

המספר היחיד שלך הוא זה שמניע כסף

ציטוט נושא unit_amount_minor, quantity ו total_amount_minorוזה מפתה לטפל השלישי כפי שניתן לעשות בשני הראשונים, זה לא, בהנחה שכבר יש לו כסף אמיתי ללקוח.

quantity זה מה ש-CUSTOMER בחר – חדר אחד, רישיון אחד, מדיניות אחת.OpsIQאף פעם לא רואה: לילות, מושבים, מחזורי חיוב, מרחק, משקל, טיים. מלון מצטט חדר אחד לשלושה לילות ככמות1יחידה105,000סה"כ315,000. OpsIQיחידות מוכפלות על ידי כמות כדי מחיר כרטיס אישור, הראו אורח105,000ולאחר מכן הואשם315,000הסוחר למעשה חזר, מסכים לנתון אחד ושהואשם אחר הוא הדבר הגרוע ביותר שחוזה זה יכול לעשות.

הכלל

total_amount_minor הדמות היחידהOpsIQמראות, סימנים, חיובים ויישבויות נגד. unit_amount_minor הוא פרט תצוגה על הקו.אם סך הכל שלך אינו בדיוק מה שאתה רוצה לטעון, הציטוט שלך שגוי -OpsIQזה לא יתקן את זה, כי בסך הכל מותאם מועיל הוא אחד שמעולם לא הסכמת לכבוד.

מה זה אומר על הצעתך

להחזיר את כל המספרים.ליישם לילות משלך, טיים, הנחות, מסים ותשלומים לפני שאתה עונה.אם קוך לא מיישב - פעמים מספר שלם אף פעם לא שווה את סך הכל שלך -OpsIQמתייחס לכל דבר כשורה אחת במחירו האמיתי, ולא להמציא התמוטטות שמקבילה לשום דבר.

6 תשובות שעושות את החוזה הזה לנכון בכל תעשייה

ההצהרה לעיל החלה כהצהרת חנות: לקנות משהו, לשלם עכשיו, זה שלך, אתה יכול לבטל.כל אחד מארבעת אלה הוא הנחה כי עסק אמיתי לא משתף.בנק נע כסף לא יכול שלא לעשות את זה.בטח לא יכול להגיד "מחייב" עד שתחתית לא נראתה.

מחבר עסק עונה שש שאלות נוספות. כל אחד מהם כברירת מחדל לקריאה קפדנית "לא תמיד בטוח ולעולם לא להסס, כי אין דבר מה שסופר עושה כאשר הם לא חשבו על השאלה.

transaction_kind

purchase, booking, subscription, bill_payment, transfer, application, top_up, renewalVOCbulary ולא התנהגות: זה מחליט את המילה שהלקוח שלך קורא.קראת חוט להעביר "סדר" עושה את העוזר להישמע כאילו הוא לא מבין את העסק שהוא מדבר עליו, ואין כמות של זינוק נכון מחלימים מזה. 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 המונחים: wording לפני הכפתור המאשר, עבור קצב, תשלום או זכות קירור אתה חייב להציג; בלעדיו, עסקים מוסדרים הברורים נדרשים לנסח את שם המוצר.

notify_flow

platform_automatic, platform_triggered או noneמתיOpsIQלוקח את התשלום שלך לא רץ, אז כל דבר שהוא בדרך כלל הודעות דוא"ל לעולם לא יורה.תרשם את סימני התשלום בתשלום; הוא אינו מחייב שום פלטפורמה לספר לאף אחד. platform_triggered דורש order_notify תפקיד עם התאוששות,OpsIQשאל רק לאחר החזר קריאה בתשלום מוכיח את הכסף מוקלט. none עושה אתOpsIQלצד אישור חובה, כי אחרת לקוח משלם לא שומע דבר. none.

אותו חוזה, תשעה עסקים שאינם קשורים

אף אחד מהם לא תוכנן בסביבה.כל אחד מהחוזה עונה בכנות על תעשייה אחרת, עם זאת.OpsIQלא לדעת שום דבר על אף אחד מהם.

חוזה אחד, 9 תעשיות
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
אירוע בתשלום המסופק לפלטפורמות

לאחר תשלום בחנות Native Storefront מאומת ומבוצע באופן פעיל.OpsIQפולטים payment.completed עם order_id, payment_id/provider_ref, gatewayמדויק amount_minorISO currencyלקוח, פריטי קו, ערוץ ו paid_atמחבר סוחר חייב להתעקש על ראיות אלה. record_payment לקרוא אותו בחזרה; מחבר מתאר מארח צורכת אירוע בתשלום סמכותי משלה, ואין לקבל כתב תשלום כפול.

AI הוא מציע, לא מקור סמכותי

המודל עשוי לבחור מוצר וכמות מוכרז, אך הוא אינו יכול לבחור שם פעולה, מנקה בדיקת.URLאו ליצור מצב סוחר מטקסט.הלקוח מקבל כרטיס חתום מדויק וחייב ללחוץ על כפתור האישור שלו.זה אישור מחויב למרחב העבודה, המחבר, הפריט, הכמות, הציטוט, המטבע, החוטים והחריצות.

לקוחות חברתיים שומרים על אותה זרימה ללא הודעה מוקדמת

WhatsApp, Messenger, Instagram, Telegram, LINE, SMS ו- X משתמשים בחשבון הערוץ המאומת על ידי הספק כזהות הלקוח. ההצעה חתומה לחשבון ערוץ זה והאישור עדיין עובר דרך אותו הצעת מחיר חדשה, מחסן, אידימפוטנציה, שליטה בתשלום ובחזר. לקוח חברתי משתמש בדיוק בפעולה של אישור חד פעמי שנעשתה בשיחתם; פרוזה רגילה כמו "כן" אף פעם לא היא סמכויות הזמנה.

ההיסטוריה של הזמנה עוקבת אחר קישור זהות מדויק, לעולם לא ניחוש בדוא"ל

הזמנות Native מאינדקסות בזהות ערוץ של ערוץ, כך ש-AI יכול לענות "איפה ההזמנה שלי?" מבלי לבקש אימייל או מספר סדר.עבור היסטוריה מחוברת, לקשר את זהות הערוץ למרחב העבודהCRM• רישום ומימוש של הלקוח/ה הסמכותי/הזריקה בצרף.ספקי ההקשר של הלקוחות מקבלים קישור מאוחסן; הם לא חייבים לבחור חשבון משם תצוגה או אימייל המיוצב לצ'אט.עם הזמנה אחת מתאימה לתשובות AI ישירות; עם כמה זה מסכם את המשחקים ושואל מי אחד; עם אף אחד מהם אין שום היסטוריה קשורה.

לעשות את המשכורות אוניברסליות: שדות מטיפוס וזהות בבעלות השרת

הליבה אינה מכילהWHMCSמלון, SaaS, חנות, בנק, מוצר, מסלול או סניף ספקים. parameters הם טופס הלקוח ו- AI חריץ schema. מחבר הזמנה יכול להכריז על תאריכים ואורחים; ממחבר חיוב יכול להכריז מחזור; חבר ארגוני עתידי יכול להכריז שדות בטוח משלו.OpsIQמספק שליטה פרימיטיבית ושולח את הערכים שנאספו רק לפעולה המתקשרת המופתת.

המונחים: Action
{
  "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 לפרמטר הפעולה שמקבל את id הלקוח החיצוני של המחבר.שדה זה מעולם לא מוצג ללקוח, וכל ערך יישומי-מתקשר הוסר;OpsIQמזרקת רק את הid מקישור מאומת.בדיקת האורחים משאירה אותו ריק.דואר אלקטרוני מסווג הוא הוכחה למראה אורח מוכר, לא כניסה ולא סמכות רכישה.

תחומים קבוצתיים: עם זאת, חשבונות לקוחות חתומה ותצורת המחבר שייכים למרחב העבודה של הפורטל הקבוצתי-פרטימי.עם זאת, יש לחתום על אות הזהות עבור האתר החבר המדויק שמטב את הווידג'ט, תוך שימוש בסודות Webhook של אותו חבר.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"
  }
}

תגובת הפלטפורמה-checkout חוזרת על הציטוט האונוני תקף ומוסיפה HTTPS checkout_urlהליבה מרעננת את הציטוט באישור ומשווה מטבע, בחירה כוללת ויציבה בדיוק.המחבר מתרגמת את תגובת הפלטפורמה שלו אל המעטפות האלה; ליבה לעולם לא תתרגם שדות ספקים או בונה את הסוחרURL.

להפוך את שער שנבנה על ידי מפעיל זמין בחנות Native וצ'אט

יכולת תשלום בלבד אינה מציבה שער בפני לקוחות. שער תשלום בחנות Native Store בלוק ב- Connector Builder. זה מוסיף חוזה מפורש, יצירת מפות וחיפוש תשלומים פעיל, ומאפשר לlists את תחומי הסימון בחסות הספק.לאחר שהמחבר מותקן, מופעל ונבחר תחת הגדרות המסחר, אותו שער מופיע בחנות הציבורית, חנות מודולל, צ'קפטפטפט לקוח ובדיקה אוטונומית.

החוזה Native Store Gate
{
  "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"]
    }
  }
}
מצגת Canonical Checkout

מפות הפעולה של Checkout checkout_url וכאשר יש לו אחד, session_idTheURLחייב להיות HTTPS, לא לכלול אישורים, ולתאם עם מארח מורשה.

תפוקה הסטטוס Canon

פעולת הסטטוס מבוצעת ספקית חדשהAPIמבט ומפות paid כמו בול אמיתי, amount_minor כטגר, currency קוד ISO 3-letter, ו provider_refחזרהURL, שאילתת המיתרים, תשלום הלקוחות או הוראות "מאושרות" אינן נכונות בתשלום.

החוזה החזר כספי

אם השער תומך החזרים, המפה payment_refund פעולת ההתאוששות שלו.היצירה חוזרת קפדנית accepted ו completed boos בתוספת provider_ref; התאוששות מבצעת בדיקת ספק וחזרות statusללא שתי הפעולות,OpsIQלא מפרסם החזרי מחבר.

מי מאשר את הפקודה

המחבר אף פעם לא כותבOpsIQסטטוס סדר.OpsIQמשווים את הסכום והמטבע המוחזר בדיוק ומקליטים את הפניה הספקית; רק אז הליבה מבצעת את המעבר המאורגן של ספק.העברת בנק ידנית נותרה הזרם היחיד שמוכן יכול לאשר.

In Connector Builder, סמן מסחרלמפות את התפקידים, ולהגדיר גם לקוח בחנות Connected Ordering, שער תשלום בחנות Native Storeאו שניהם כאשר המחבר באמת מספק את שני החוזים.הקוסם מאמת את ההצהרה וכותב commerce_roles.jsonפרסום עדיין משתמש בתהליך הסקירה והחתימה הרגיל; החוזה הזה מעולם לא עקף אימות החבילה או הופך מחבר ללא התקנה. php tools/verify_commerce_contracts.php.
💡
תחבורה היא http עבור מרחוקAPIאו bridge מבצע בשם על גשר פרוס (ראה לא-APIדפוס להלן) רולס הם אגנוסטי תחבורה; זמן הריצה פשוט צריך את התחבורה נאמר כך שהוא יכול גרסה-pair גשר.
מחברים (Connectors)

למכור באמצעות צ'אט ללא מחבר: פעולות וטריגר

חוזה המסחר לעיל אינו דורש חבילה מחבר.אם הפלטפורמה שלך היא משלך - משרד גב מותאם אישית, פנימיAPI, מערכת שאף אחד לא מנקה מחברת עבור - אתה יכול להגיע לאותה מכונות מכירה עם שני הכלים שאתה כבר משתמש כדי לשלב כל דבר אחר: פעולות מותאמות אישית (נקודות הקצה של HTTP שלך, המוגדרות בדף הפעולות) וטריגרס (אפילו לא webhooks). אותו חוזה, אותו כרטיס, אותה אבטחת זהות, אותה גרעין תשלום, קבלה זהה רק חסר הוא החבילה, כי אין קוד צד שלישי.

איך זה משתלב ביחד

אתה בונה פעולה אישית אחת לתפקיד המסחר - כל אחד הוא נקודת קצה של HTTPS פשוטה בצד שלך, המוגדרת תחת ההגדרה שלך. AI & אוטומציה→פעולות עםURLואז אתה שומר הצהרה אחת שממפה תפקידים לפעולות אלה. מאותו רגע החנות שלך מופיעה בצ'אט בדיוק כמו אחד מחובר: ה-AI מצטט מ- AI שלך הצעת פעולה, כרטיס האישור הופך, הלקוח מאמת את הדואר האלקטרוני שלהם, ההזמנה kernel קורא שלך סדר פעולה עם מפתח idempotencyOpsIQלוקח תשלום דרך שערי חלל העבודה, ו שלך אין דבר על חווית הלקוח אומר "לקוחות".

ההכרזה

הצילו את זהJSONבסביבה הקרובה של Workspace commerce_custom_integration (Settings→הגדרות מתקדמות, או באמצעות הגדרות RESTAPIזה אותו צורה כמו של חבילה 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 המחברים שאפשרו למכור תחת הגדרות→לקוח chat→מכירה באמצעות צ'אט.קבלה נבדקת מחדש כל בקשה, והיא מסרבת מסיבות בשם ולא להסתיר את החנות שלך בשקט: תפקיד מצבך דורש כי מפות לשום דבר, תפקיד כתיבה ללא פעולת התאוששות (§ §15.7- כתב שלא ניתן להחזיר את תוצאותיו, הוא סירב לפעולה שנמחקה או נכומה מאז שהצלתם.

מה שכל פעולה חייבת לעשות

להחזיר את המעטפה המחברת

תגובה {"success": true, "data": { ... }} או {"success": false, "error": "a sentence a customer may read"}הפעולה שלך הדרך להצלחה צריך להצביע על המעטפה.

תגית: all-in total, in Small Unit

שוב החזרה 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}שם הסרטון: False is a PromiseOpsIQייתכן שינסו מחדש את הכתיבה על כוחה של זה.אכילת סטטוס או רשימת הזמנות עדכניות אינה תשובה לגבי כתיבה אחת.

תשלום רשומות: נתיב ההתנחלויות שלך

מקבל את עסקת שער id כמו מפתח הזיהוי בתוספת ההתייחסות ההזמנה שלך, לאחרOpsIQאימות באופן פעיל כמות ומטבע עם השער.מארק ההזמנה ששולמה באמצעות ההיגיון של הפלטפורמה שלך - אש את הודעות הדוא"ל שלך, להפחית את המלאי שלך. platform_notified: true אם הפלטפורמה שלך תכתוב ללקוח עצמו.

קלטי כרטיס באים מפרמטרים הפעולה שלך

כל פרמטר שאתה מצהיר על הפעולה של ה-QUOTE שלך (מעבר לפרמטר הזהות) כי AI לא נאסף הוא מקבל כרטיס האישור כקלט הלקוח ממלא את עצמו - דומיין, תאריך, מושב.

הטריגר: לשמוע את המכירות שלך

שני אירועים יורים באוטובוס האירוע המשותף, כך שהאינטרנטוקס והאוטומציה שלכם שומעים כל מכירה בצ'אט בכל מקום בו הוצא להורג:

commerce.order.created

ברגע שהסדר נוחת בצד הסוחר, לפני התשלום - התייחסות, מחבר (או custom_commerce), סכום, מטבע, אימייל לקוחות, שפי.

commerce.payment.confirmed

בדיוק פעם אחת לפי סדר, כאשר השער מאמת באופן פעיל את התשלום.הוא רוכב על אותה טענה שמונעת קבלה כפולה, כך שהוא לא יכול להכפיל את ה-webhook שלך.

מתי לתאר את החוברת

האינטגרציה המנהגית היא תצורה של סביבת עבודה: היא משרתת את החנות שלך, על המרחב העבודה שלך.הרגע שאתה רוצה להפיץ את השילוב - מקומות עבודה אחרים, השוק, הגרסה, ההרשמה, בתשלום – אורזת את אותם הפעולות ואת אותה הצהרה כמו מחבר.החוזה לא משתנה; רק העטיפה עושה זאת.

מחברים (Connectors)

צור פלטפורמה שאין להAPI(תבנית הגשר)

הרבה פלטפורמות אמיתיות לא מובילותAPIבכל מקרה, בית מלון CMS, מערכת חיוב ישנה, כלי פנימי מכוסה.You עדיין יכול לכתוב שלםOpsIQמחבר עבור אחד: המחבר אוניות קובץ PHP יחיד כי המפעיל טיפות לתוך אתר האינטרנט הציבורי שלהם, וקובץ זה הוא הקובץ.APIדף זה הוא התבנית כולה, עם הכללים שהופכים אותו בטוח לרוץ ואת הסיבה מאחורי כל כלל.

הצורה של

מחבר רגיל קורא למישהו אחרAPIמחבר גשר מביא את עצמו.שום דבר אחר לא משתנה: אותן פעולות, אותם ספקי ההקשר, אותו חוזה זהות, אותה פריסת חבילה.

1
אתה כותב קובץ PHP

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
המפעילה מציגה אותו אל תוך האינטרנט שלהם

ליד אינדקס הפלטפורמה עצמו. php. No פלטפורמה קוד משתנה, אין תוסף מותקנת, שום דבר כדי לשמור על שדרוגים בפלטפורמה.

3
לוח המחברים מעביר להם את הקובץ

ההגדרות שלך.jsonמכריזה על Webhook_help.snippet_template.עמוד המחבר הופך אותו לקובץ העתק עם הגדרות החיים שלהם כבר מוחלש, כך שאין שום דבר כדי לעדכן את היד.

4
OpsIQקוראים לו Server-to-server

הלקוח שלך.php שולח בקשות GET עם המפתח המשותף ב- X-Opsiqראשי התיבות של Bridge-Key HeaderURLהגדרה היא שורש האתר של הפלטפורמה.

בונה החיבורים יכול ליצור את זה בשבילך עכשיו. בחר את "הפלטפורמה ללא API" פרופיל (או להגדיר גישה לנתונים לגשר) והוא משחרר את קובץ הגשר, החתיכה המתאימה של הלוח ואת פעולות ההקלדה שקוראות וכותבות דרך זה - עבור. Laravel תוכנית קוראת את.env שלה, עבור WordPress מצב גשר מתקן את האימות ל- OpsIQ פרוטוקול גשר: החיבור יוצר באופן בטוח api_key כאשר הוא מאפשר, שלח אותו כמו X-Opsiq-Bridge-Keyוקשור את אותו ערך שנשמר ל OPSIQ_BRIDGE_KEY בקובץ העתקה. Hand- Author רק כאשר הפלטפורמה שלך אינה אחת מאלה, או כאשר אתה צריך התנהגות הגשר שנוצר אינו מכסה.גשר בכתב יד בטוח מהקוסם: הוא רק מערער את קובץ הגשר הנושא את חותמו שלו.
💡
הכל בעמוד זה מוצג ב-PHP נגדMySQL, כי זהו יישום ההתייחסות והשילוב היחיד של צינור האריזה תומך באופן מלא.התבנית עצמה היא שפה-אגנוסטית ואנטיגנוסטיות: ראה את הגשר בשפות אחרות ובמאגרי מידע אחרים" עבור השער בצומת, Python, Go, Ruby, .NET וג'אווה, השאילתת Introspection for the in for the Gate in Another Languages and other Databases" for the שער ב Node, Python , go, Ruby .net .com .Net ו-JavaPostgreSQL, SQLServer,SQLiteאורקל, והMongoDBשווה ערך - יחד עם האריזה המכריעה כיצד גשר non-PHP מגיע למפעיל.

מודל האבטחה, ומדוע כל כלל קיים

קובץ זה יושב ברשת ציבורית מאחורי מפתח משותף אחד.עובדה אחת שמניעה כל כלל להלן, אל תרגעו אף אחד מהם כדי להפוך את הגשר לקל יותר.

המתקשר לעולם לא מספקSQL

לא סעיף של WHERE, לא פיסת סדר על ידי, לא "רק פעם אחת" פרמטר שאילתה גולמי.המתקשר שם שולחן, עמודה וערך; הקובץ שלך בונה את ההצהרה.SQLטקסט, מפתח משותף אחד הופך לביצוע מסד נתונים שרירותי.

שמות שולחן ועמודה מאומתים נגד מידע_schema

לא ניתן לקשור את Identifiers, כך שיש לבדוק אותם במקום.קרא את רשימת הטבלה והעמודה האמיתית של מסד הנתונים הזה ולהסרב על שום דבר לא עליו. מזהה שאינו אובייקט אמיתי של הצנחה זו אינו יכול להגיע לשאילתה בכלל – מה שהופך אותו בטוח לחשוף כל שולחן.

כל ערך הוא פרמטר

ללא יוצא דופן, כולל ערכים בתוך חיפוש. המזהים מתואמת בתוספת ערכים כבולים הוא הזוג שהופך את פני השטח למכלול ואת משטח ההזרקה nil.

קריאה היא אוניברסלית, כותב הם המאפשרים

ראו את הבלוק הבא, זהו הכלל שאנשים רוצים לדלג עליו.

העמודות החשאיות מתועדות לקריאה ונמסרו לכתיבה

התאמה בעמודה NAME: סיסמה, זכור_token, סודית, api_key, פרטי_key ,מלח, אסימון. להחליף את הערך עם בעל מקום בדרך החוצה.סירוב לכתוב את הכתיבה לגמרי על הדרך - כתיבת סיסמא גולמי יש לא ניתוח, זה אקדח כף הרגל.

הקטרים הם רק אחד, על ידי מפתח ראשוני

לעולם לא נמחקת גדולה, אף פעם לא למחוק על ידי מסנן.הסרה גדולה היא איך מסד נתונים מת.אם מישהו באמת צריך אחד, הם יכולים לעשות את זה בפלטפורמה.

המונחים: s-capped

Clamp את פרמטר הגבול עם תקרה קשה.שאילתה נמלטת לא חייבת להיות מסוגלת לזרוק את מסד הנתונים באמצעות הודעת צ'אט.

נכשל עד שהמפתח מוגדר

תשובות גשר בלתי מוגדרות403גשר מועיל לפני שהוא מוגדר הוא גשר שעזר לזר.

השוואות מפתח במשרה מלאה, מפתח בראש

hash_equals, Never == המפתח הוא X-Opsiq- Bridge-Key, לא מחרוזת השאילתה, כך שהוא נשאר מחוץ לו יומני גישה, יומני פרוקסי וראשי רפר.

GET רק

שיטה אחת, צורה אחת, שום דבר לא להבריח בגוף.כל מה שהגשר עושה הוא ביטוי כמו GET עם פרמטרים מאומתים, וOpsIQהוא המתקשר היחיד.

קרא את האוניברסלי, כותב שמותר - ומדוע

זהו הכלל שמתווכח, כך כאן ההיגיון המלא.העוזר צריך להיות מסוגל ל-SEE את כל הפלטפורמה: זה מה שעושה את זה מועיל, וקריאה לא יכולה להרוס שום דבר.כתובים היא שונה.קובץ זה יושב ברשת ציבורית מאחורי מפתח משותף אחד.אם דליפות המפתח, משטח כתיבה בלתי מוגבל הופך את הדליפה למסד נתונים מלא - משתמש חדש, מנהל מערכת יחסים חדשה, טבלה עדיין לא יכול להגיע אל שולחן עבודה פנוי.

⚠️
The TheOpsIQאישור הכרטיס מציב את AI, לא המפתח.המנהל לוחץ על האפשרות לפעולה הרסנית הוא שליטה על עוזר.זה לא שליטה על מי שמחזיק מפתח הגשר.אלה שני איומים שונים, ואת רשימת הנימוס היא התשובה השנייה.
הכפתור הפונה למפעיל, מהגשר 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';

שני פרטים בבדיקה להלן קלים לטעות.שם השולחן מגיע כבר RESOLVED, הנושא את תמונת שולחן ההתקנה של ההתקנה, בעוד מפעיל כותב את רשימת ה-NLP unprefixed כי זה מה שהם היו מעדיפים באופן טבעי סוג.השוואה בין שתי הדרכים או התקנה מראשית ללא הרף מאפשר שום דבר וכל הפסקות כתיבה.

בדיקה של ה-NLP, Actatim from Market_linkors/botble / Bridge/opsiq_-_-botble-bridge. php
/** 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. */

אימות מזהה נגד מידע_schema

זהו היצירה שהופכת את "העזר יכול להגיע לכל שולחן" מחוסר אחריות לתוך בטוח.פתור שם השולחן של המתקשר נגד הschema האמיתית, לסבול תיקון שולחן חסר או נוסף, ולהחזיר אפס עבור כל דבר אחר למטה הזרם ואז עובד עם שם כי קיים באופן סביר.

אימות Identifier and Redaction, Actatim from the Botble Bridge
/** 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;
};

קריאה וכתיבה, השלם

שימו לב מה הוא קשור ומה מאומת.עמודת המסנן נבדקה מול רשימת העמודות האמיתית ולאחר מכן מולכד כמזהה; ערכו כבול.הגבול מסומן. Rows הם redacted בדרך החוצה.עדכון מסרב את המפתח העיקרי וכל עמודה של אם, ובוצעות_at כאשר השולחן יש אחד.

קרא כל שולחן - מזהה מאומת, ערכים כבולים, שורות מקופלות
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,
    ]]);
}
כתוב שורה אחת - שולחן שנבחר לרשימות, סירב בעמודות של Auth, שורה אחת על ידי מפתח ראשוני
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)),
    ]]);
}

הבדלים של סכימה

גרסאות פלטפורמה שונות.עמודים נעים, מקבלים את השם או נעדרים. גשר מניח שschema אחד עובד על התקנה אחת. Introspect והסתגלו במקום: בחרו רק העמודות הקיימות כאן, תסבול את הטבלה prefix, ולנסות לחשים סבירים של הפניה.

סובלנות סכימה, מהגשר 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));
💡
תן לגשר שלך op=diag שמדווח רק על מבנה - איזה טבלאות נפתרו, אילו עמודות יש לטבלה הראשית, והצורה של ההשראה החדשה ביותר עם כל ספרה מסתתרת. זה מוגדר במפתח כמו הכל אחרת, וזה הופך את "החיפוש לא מוצא דבר" מתשלום תמיכה לתשובה בת עשר שניות. אל תני לו להחזיר רשומות אמיתיות.

שגיאות אחידות ומלכודת ההנצחה

צורה אחת לכל

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.

לא ממצא ולא תחרות חייבים להיות זהים

על פני השטח של ההסתכלות, התייחסות שאינה קיימת והפניה שהוכחהם לא תואמת חייבת לייצר את תגובת SAME. תשובות שונות הופכות את הגשר שלך לצומת המאשר כי הפניות הן אמיתיות, שהוא יצוא חופשי של לקוחות לכל מטופל.

לעולם אל תדליפו את הסיבה למבקר

הגשר יכול להיות מדויק עםOpsIQמה שמגיע למבקר נקבע על ידיOpsIQבסירוב קבוע אחד.

קובץ העתק בפאנל המחבר

המפעיל לעולם לא פותח את המאגר שלך, הם פותחים את לוח המחבר בפאנל.OpsIQעותק זה מגיע מהגדרות.jsonזה חייב להיות אותה תוכנית כמו גשר /*php.

הגדרות.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.

« snippet_bindings לשרוד חידוש

צוו כל משימה סודית שנוצרה במפורש.כלי הסינכרון מארגן מחדש את עותק הפאנל מהגשר שנשלח ולאחר מכן משחזר OPSIQ_BRIDGE_KEY = {{setting:api_key}} מקובץ זה מחייב.בלעדיו, שדרוג יכול להעתיק נאמנה את קובץ החבילה חסר המפתח ולסלק בשקט את בעל המקום המרכזי הפורש של המפעיל. Connector Builder פולט אוטומטית את החייב הזה עבור חבילות גשר שנוצרו.

בעלי מקומות אחרים מוחלפים לצד השרת

באופן עצמאי,{webhook_url}, {webhook_path}, {webhook_secret}, {site_key}, {base_url}ו{slug}הם מלאים לפני שהפאנל רואה אי פעם את החטיפה.

Webhook_Help עשוי להיות אובייקט אחד או רשימה

רשימה מעניקה לך מספר מלכודות בלוח אחד, למשל קובץ גשר ומחבר מסר נפרד.

🚫
אל תתחזקו את קובץ ה-Switchpet ביד.קובץ הגשר ואת עותק הלוח הם שני עותקים של תוכנית אחת, והם ינסחף - גשר שודרש והעתק שלו לא היה, כך שכל מי שהותקן והועתקה מהפאנל התקנת הגשר הישן ואבד בשקט כל יכולת חדשה.
שמור את שני העותקים זהים
# 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.

מה צריך גשר

פעולות בצורת ומשטח נתונים אוניברסלי, יחד.התבניות המעוצבות מחזירות תשובות מרשימות ומכוונות לשאלות שאנשים שואלים באמת; האוניברסליים מכסים את כל השאר כך שהעוזר לעולם לא נתקע.

המונחים:

סטטינים, רשימת האובייקט הראשי עם מסננים, אובייקט אחד עם שורות הקשורות שלו, קטלוג של מה נמכר, חיפוש לקוחות עם היסטוריה. אלה נותנים ל-AI תשובה טובה בשיחת טלפון אחת במקום חמישה.

Shaped כותב

שתי המדינות או שלוש שינויים חשובים - קובעים מעמד, ביטול הערכים המקובלים.

מסחר מסוג

עבור פלטפורמה מוכרת לחשוף קטלוג מובנה מטרה, הצעת, Checkout / הזמנה ופעולות תשלום, ואז למפות אותם בקטלוג. commerce_roles.json עם transport: bridgeלעולם אל תמפה תפקיד של מסחר בתיעוד האוניברסלי.יצור/עדכון פני השטח.

גילוי אוניברסלי

שולחנות (עם ספירות שורות) ותאר (קומונים, סוגים, מפתח ראשוני, בתוספת דגלים קריאים ועצבניים לכל עמודה).זה האופן שבו עוזר לומד פלטפורמה שלא ציפית.

קרא וכתוב

שאילתה, תקליטים. get, record. create, Record. update, record

זהות, לפני שער המפתח

בדיקות זהות נקראות על ידי ה- ADMIN'S BROWSER, אותו מקור, כך שהן אינן יכולות לשלוח ראש מותאם אישית.אימותן הוא המפגש הפלטפורמה עצמו. Put them לפני שער המפתח, להרחיק אותן מכל הנתונים של הרשומה ולעולם לא לתת להן להחזיר סוד.

אבחון

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ייתכן שיהיה צורך לקוח קיים או בחתימה בבעלות המחברת, ופלטפורמת SaaS עשויה לדרוש מחזור חיוב. Core לעולם לא תקשה על שדות אלה.הגשר חייב להפעיל את השירותים העסקיים של הפלטפורמה כל כך מלאי, מסים, חשבוניות, הודעות אישור וחיבורים כולם לרוץ.
⚠️
record_payment הוא לא קיצור דרך בתשלום.קבל רק הוכחה לספקית השרת: סדר מדויק, סוחר, כמות, ISO מטבע, הפניה ספקית, זמני אימות טריים ומפתח idempotency. Persist זה באמצעות התשלום / חשבונית של הפלטפורמהAPIלאחר מכן, להחזיר הזמנה סמכותית או חשבונית הנקראת-בחזרה.תוצאה לא ידועה חייבת להתאושש לפני כל הפוגה מחדש.
💡
מחבר לקריאה בלבד אינו זקוק לרשימות אפשריות בכלל.אם הפלטפורמה שלך רק עונה על שאלות, אונייה גשר ללא כל כתיבת תווים וכל הכיתה של סיכון הכתיבה נעלמת.

סיקור לפני שאתה שולח גשר

הגשר מסרב לכל דבר ללא מפתח

בדוק את זה.השם הקבוע לריק ולאשר כל התשובות403.

מפתח לא נכון מסרב בזמן קבוע

ישה_quals, והמפתח קורא מהראש בלבד.

שם שולחן מורכב הוא סרב

שם שולחן אמיתי עם תיקון לא נכון עדיין פותר.

עמודה סיסמה אף פעם לא מופיעה לקריאה

וכתוב שמות אחד מסרבים בהסבר.

מכתב אל שולחן מחוץ לרשימה אסור

עם המסר שאומר למפעיל כיצד להרחיב אותו.

הפאנל נחטף תואם את קובץ הגשר

php כלים / Sync_linkor_bridge_snippets. php מדווחים על כך בשלב זה.

התקנת המחבר אינה מספיקה

אם החבילה שלך ספינת גשר, מפעיל שדרוג המחבר חייב ALSO Redeploy כי להגיש לתוך האינטרנט שלהם. Say כך בגוף פאנל וב- CHANGELOG שלך, כל שחרור.

מחברים (Connectors)

שילוב של הפלטפורמה עצמו מגשר

גשר שרק קורא יכול לדבר SQL.גשר שדברים CREATES על הפלטפורמה (סדר, הזמנה, חשבונית בתשלום) חייבים לעבור דרך שכבת היישום של הפלטפורמה עצמה, ולהחיל את השכבה הזו ללא ראש היא שם כל כישלון עדין בדפוס זה חי.כל דבר אחר להלן למד את הדרך הקשה על שילוב חי, כל כלל נגד פגם אמיתי שלא הפיק שום טעות בשום מקום.

שורה במסד הנתונים אינה הזמנה

Raw INSERTs יוצר שיא צל

השורה מופיעה, מנהל רשימות אותה, ועדיין אינה רשומה שהפלטפורמה מאמינה שהיא יצרה: אין מספר התייחסות מקורי, שום מודל כורים, לא אירועים, לא חשבונית, אימייל לקוח, אין קישור לקוחות עובד.הלקוח מצטט הפניה לפלטפורמת שלא ניתן למצוא אותה לעולם. ליצור באמצעות השירות של הפלטפורמה עצמו; אם היא רק חושפת שירות לאחר תשלום, יוצרת את הגרף שלה מצפה שיד הים ומגדירה אותו.

לעולם אל תיישם מחדש את מספר הפלטפורמה

שתי דוגמאות של פורמט הפניה מאפשרות להתרבות, ושיפוץ זה אותו מדרגה אחת למטה: היום הפלטפורמה משנה את תוכניתה, כל אחד מהרשומות שלך לא בסדר ושום דבר לא מזהיר אותך.קרא הגנרטור שלה (reset מגיע לרמה שאינה סטטית), ולקרוא את הערך המאוחסן בחזרה ולא לבטוח במה ששלחת.

העמודות של פלטפורמה לשמור על משמעות הפלטפורמה

לפני שאתה מאחסן כל דבר משלך בעמודה פלטפורמה, למצוא כל קורא. A עמודה בשם כמו מזל חינם יכול להיות עומס: על שילוב ההתייחסות, transaction_id התברר כסימון של הקישור "לבדוק את ההזמנה" של הלקוח פותר דרך: לעיכול idempotency המאוחסן שם שבר בשקט כל קישור אורחים idempotency_keyהוא שומר המשחק מחדש, המגביל מסרב לתאום הנוכחי, והמראה ההחלמה קורא את אותו שולחן שהיצירה כתבה: MySQL DDL מבצע עסקה פתוחה באופן בלתי נמנע.

אירועים, מאזינים ומלכודת הדואר האלקטרוני הכפולה

קרא את מקור השירות לפני שליחת האירועים

אם שירות הפלטפורמה שאתה קורא כבר שולח את האירוע, לשלוח אותו בעצמך שולח ללקוח שני הודעות דוא"ל אישור ומייצר שתי חשבוניות.אם שום דבר לא מקשיב, שלח אף אחד.לא כישלון מעלה טעות.

מקבל את השומעים () מסתיר את האמת; GetRaw Listeners() מספר לו

Laravel עוטפת מאזינים בכיתה בסגרות, כך מדווחת מקבלי שמיעה ()[email protected]עבור כל דבר, GetRaw Listeners (ב) שם את השיעורים האמיתיים.לעולם אל תשלח אירוע שהמאזינים שלך לא יכולים לקרוא לו.

אם לא אומר "ריצה מאוחר יותר"

עם תור=sync (ה ברירת המחדל על שפע של תתקין ייצור) להאזין בתור רץ ב- INLINE לבקשת הגשר שלך.הקשר האתחול שלך הוא ההקשר שלו: כל רישום או רישום URL פגם באדמות המגף שלך בתיבת הדואר הנכנס של הלקוח. Check config('queue.default) לפני שתחשבו לאן הכל רץ, והסתכלו בעבודותfailed_jobs לפני שהנחה שעובד היה מעורב.

משמרות מתאחדות עם המדינה של הפלטפורמה

שירות שנשלח ללא תנאי חייב להיקרא בדיוק פעם אחת.הסמן שאינו יכול לסחף הוא מדינת הרשומה שלו (רק קריאה בזמן שהתיעוד עדיין עומד על כנו), לא דגל "משתוקק" של שלך שיכול שלא להסכים עם זה.

ה-Botlessחול הוא לא גלגל האינטרנט

רשום את מה שהחולל באינטרנט נרשם

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-bridge.php / Checkout/TOKENK: קישור לקוחות באמצעות קישור JSON נקודת קצה: כוח רומוטורול ((app.url") מתקן את הגנרטור; לדיסק STORAGE יש שורש משלו, כך הלוגו האלקטרוני נשאר שבור עד מערכות קבצים.url הוא גם מוגדר (הוא פותר עצלות, אז הגדרתו ב-חול עובד, ורק כאשר ריק או תסריט-relative: CDN של מפעיל URL זה לא שלך לקרוס.)

קומו לפני שתעבירו

שירותי הפלטפורמה לקרוא באמצעות חיבור משלהם ולא יכולים לראות את העסקה הפתוחה שלך.קרא לפני ביצוע, שירות תשלום לאחר לא מוצא תשלום הושלם, משאיר בשקט את השיא ללא תשלום ועדיין יורה את האירועים שלו, כך הלקוח הוא דוא"ל על רישום שהפלטפורמה חושבת שהוא לא משולם.

כללי הונדטה

שום צל לא נופל

אם הנתיב הילידים הוא בלתי ניתן להשגה, לסרב בטעות מרתיעה לפני כל צעדי כסף.לעולם אל להמציא הפניה, לעולם לא מעודכנים מעמד כדי להפוך את המראה הרשום למחצה להסתיים. תשלום מאומת שעיבוד מולדתו לא הולך לפיוס כמו פיוס כפי שהוא נכשל אינו עומד על פיוס כתנאי, כמו גם כאשר עיבוד Native שלו לא הולך הפיוס כמו תנאי needs_attention: הכסף הוא אמיתי, המדינה "מושלם, עדיין לא מעובד".

דיווח עובדות, לא הצהרה

"השירות רץ" ו-"הלקוח נאמר" הם עובדות שונות: שילוב ההתייחסות שלח דוא"ל בעל מראה מלא עם כל שדה ריק, בעוד ה-Flag אמר אמת platform_notified כוחות אלה OpsIQ אישור נפילה בכל פעם שהפלטפורמה לא פעלה, ולעולם אל תטען משלוח: תיבת דואר הנכנס אינה ניתנת להשגה מהשרת.

אז תכתבי

משלוח יכולות קריאה בלבד בגשר: קיום מעמד, חתימות שיטה, פרוסות מקור של השיטות שאתה מתכוון לקרוא, מאזינים גולמיים, נהג תור (כאשר ניתן לענות על שאלה באמצעות קריאת פונקציה לא מזיקה) את הקריאה החיה עצמה. 5 תיאוריות על דוא"ל חלום מת נגד מדידות לפני המקור התיישבו זה. A בדיקה עגול עולה עותק; כתב רע על בסיס עלויות חיים לקוח.

מחברים (Connectors)

הגשר בשפות אחרות ובמאגרי מידע אחרים

דפוס הגשר אינו תבנית PHP.WhatOpsIQשיחות הן נקודת קצה HTTP, כך הקובץ יכול להיות Node, Python, Go, Ruby, .NET או Java, ואת החנות מאחורי זה יכול להיות כל אחד מהם.SQLמנוע אוMongoDBמהו בצורת PHP הוא צינור האריזה, וכי מעצורים מחליטים כיצד הגשר מגיע למפעיל.קרא את סעיף המשלוח הראשון: זהו החלק שמפתיע אנשים.

מה שהמחבר באמת דורש

זה כל החוזה, שום דבר לא שם שפה.

תחבורה

בקשה אחת ל-HTTP אין גוף, לא שיטה אחרת.

אימות

סוד משותף X-Opsiq-Bridge-Key לבקש כותרות, לעומת הזמן הקבוע.לא פרמטר שאילתה, לא עוגייה, לא כמות בסיסית.

TERMS

מחרוזת קווירי op שמות פני השטח, do השמות, השאר הם טענות הפעולה.

תגובה

JSON. {"success":true,"data":{...}} או {"success":false,"error":"snake_case_reason"}יישום התוכן-Type /jsonלא, ולא צ'ינג.

קודים

200על הצלחה.403מפתח לא מבוטח או לא נכון,404לא נמצא,405שיטה לא נכונה,400טיעון רע,501לא נתמך על schema זו.

זה הכל

אין מסגרת, לא זמן ריצה, לאOpsIQספריה בצד שלך, אם היא יכולה לשרת את זה, זה יכול להיות גשר.

משלוח: מה יכול לחיות בגשר / ומה אסור

החבילה החתומה מכסה רשימה קבועה של סיומות קבצים, וקובץ מחוץ לרשימה זו נשאר מחוץ ל- ZIP. גשר בשפה שהרשימה לא מכסה על כן אינו יכול להיות משוגר בתוך חבילה — אבל הוא גם כבר לא יכול להיעלם ממך. מאז 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 וJavaScriptתמיכה מלאה

הספינות של הקובץ ב- ZIP חתום, והמחיש מחזיקות את עותק הלוח שלך על ידיte-identical אליו, אשר כל אחד משניים הוא.הבדיקה סחף קורא כל קובץ בגשר / לא רק אלה PHP, כך גשר משודרג עם כבל מזחלת אינו נכשל הבנייה בשתי שפות.

כל השאר - להעביר את הלוח רק

הפאנל snippet הוא טקסט פשוט ללא מושג מה השפה היא מחזיקה, כך שהיא עובדת עבור כל ערימה. Put את התוכנית כולה ב- Webhook_help. snippet_template, שם הקובץ in snippat_filename, ולא להשאיר עותק הגשר / - התאמה תסרב החבילה במקום ספינה זה חלול.

אם באמת צריך שפה נוספת בחבילה

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 בכל פעם שהחבילה שלך מגשר אחד, כך המאמת יודעת איזה גשר עותק פאנל שייך; בלעדיו, זוג מעורפל מדווח כאזהרה תואמת וכי המלכוד נשאר ללא בדיקה.
⚠️
הנקודה של בדיקת הסחף היא שקובץ גשר ועתק הלוח שלו הם שני עותקים של תוכנית אחת ויבדלו. Regenerate ולא יד-מדיטציה: php tools/sync_connector_bridge_snippets.php --applyלאחר מכן, לחתום מחדש על החבילה.

השער, בשש שפות

אותו ארבעה בדיקות באותו סדר בכל מקום: לא סגור ללא מפתח, שיטה אחת, השוואה קבועה של מקש מן הראש, ואז להתחבר.המלכודת האמיתית היחידה היא ההשוואה, וזה מלכודת שונה בכל שפה.

⚠️
השוואה בין SHA-256לעיכולים של שני המפתחות ולא המפתחות עצמם.זה נכון בכל שפה, וזה משקף את העובדה כי כמה קומפוטורים קבועים או לזרוק או להדליף על רצף ארוך - Node'sתזמוןSafeEqual מעלה טווח כאשר הבפטנים שונים באורך, מה שהופך מפתח לא בסדר לתוך שלב שלם.500במקום403.
Node. js - השער
// 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 - השער
# 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)
ג'אווה, רובי, . NET ו-Java - אותה השוואה
// 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)));
}

אימות מזהה על כל מנוע מסד נתונים

נכס הבטיחות אינו משתנה: טבלה או עמודה שמתקשרת יש לבדוק נגד הschema האמיתית לפני שהיא מנטרפולת, וכל ערך חייב להיות פרמטר כבול.רק שאילתת האינטרופיציה, הדמות המצטטת והסעיף המייגש שונה.

MySQLוMariaDB

שולחנות: SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = ?עמודות: אותו הדבר נגד information_schema.COLUMNS עם AND TABLE_NAME = ?ציטוט עם Backticks, הכפלת כל גב תחתון בתוך. LIMIT n OFFSET m.

PostgreSQL

אותו מידע_schema Views, שמות נמוכים יותר, WHERE table_schema = $1 (בדרך כלל) public(ציטוטים כפולים, הכפלת כל ציטוט כפול בתוך. LIMIT n OFFSET mצפה בחוק המתקפל: מזהה לא רשום מתקפל למקרה נמוך יותר, כך להשוות את המצב רגיש כאשר אתה פותר שם.

SQLServer Server

אותו הדבר: תצוגות INFORMATION_SCHEMA, עם חזיונות מרובעים, הכפלת כל חגורת סגירה בתוך. Paging צריכה סדר BY: 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 ב-12c ואילך.

MongoDB

לא לאSQLלכן, לא תמהיל ולא פרמטרים קשורים – משמעת שונה לאותו מטרה.

השאילתה של Introspection למנוע
-- 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;
💡
לאחר מכן, השתמש בשם RESOLVED.לעולם אל תעביר את האיות של המתקשר דרך לשאילתה גם לאחר בדיקתו - ראה את השם האמיתי ברשימה שקראת מהשמצה ומבין כי זה לא עולה שום דבר וזה סוגר את הפער בין "שם זה" תואם משהו "וזה השם שאני עומד לרוץ".

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();
שמות האוסף מגיעים מרשימות

זהו המידע שלך_schema.פתור את האיות של המתקשר נגדו ולהשתמש בשם הפתר.

כוח כל ערך מסנן ל-Cropar

( String) או מספר() סביב זה הוא ההגנה כולה מפני הזרקת המפעילים. A מסמך שבו מצופה ערך הוא המקבילה NoSQL לצטט משוטט.

המונחים: redaction Rule

למעט שדות בצורת סודית בהקרנה, כך שהם לעולם לא יעזבו את השרת ולא מנקים אותם מהתוצאה לאחר מכן.

מחיקת יחיד / The Stay Single-document

למחוק אחד עם â-¢ לא למחוק רבים, ולעולם לא מסנן את המתקשר מושפע.

כותבי ה-Stay-listed

אותה חשיבהSQLשם האוספים שכותב יכול לגעת, ולהסגיר את השאר בהסבר.

נקודת מוצא זוויות בשפות אחרות

בדיקת הזהות היא החצי השני של גשר, והיא גם HTTP.בלוק החתימה זהה בכל שפה: בסיס64url את המטען,HMAC SHA256 זה מחרוזת, הצטרף עם dot.

אל תכתבו את זה מהגדרות. הגדרות, פורטל תמיכה יש מסלול מוכן לשפה עבור הפורטל (פעם אחת, שני דקות טוקן) אתרים מרוחקים, האתר שלכם, קודים, C. Recognise מחובר-in לקוחות באופן אוטומטי לשאת את הגרסה הצ'אט שפה (סימון שעה אחד בתוספת מטפל רענון).
מה לשנות כאשר אתה משתמש בו

אלה snippets מנקה אסימונים חשוב, אשר הוא קפדני במכוון: זה נושא ג'יטי ו- יחיד_use: אמת וחיים על אודות120שניות כי הוא נוסעURLגשר או מכרעת זהות אינם נושאים אף אחד מאלה ומשתמשים בהרחבה ארוכה יותר, דקות עד שעות.

מה נשאר אותו הדבר

אתר_key, iat, exp ו-Top-level אותנטי: True, בתוספת מנהל או לקוח הנושא עם id ו-Mail או שם משתמש או דוא"ל.

שתי צורות הסימון לאמת

JWT חתום על HS256 פועל, וכך גם בסיס שני חלקים64urlload בתוספת Hex HMAC העובדה שהפניה של PHP פולטת.שימוש בכל ספריות השפה שלך הופך טבעי - ספריית JWT היא בדרך כלל הדרך הקצרה יותר מחוץ ל-PHP.

לעולם אל נענעו אותו בדפדפן

אמת בכל שפה. Signing Customer-side פירושה משלוח האתר הסודי לכל מבקר.

בחירה, בכנות

הפלטפורמה היא PHP

כתוב את הגשר ב-PPH. It Ships in theחבילה, הוא מוקרן, והוא יכול לחול על המסגרת של הפלטפורמה לקרוא מושב חי עבור בדיקת הזהות.

הפלטפורמה היא Node

אוניות גשר של ג'ים, סימנים ונחישות בדיוק כמו PHP אחד.שום דבר לא ניתן לוותר.

הפלטפורמה היא Python, Ruby, Go, . NET או Java

לספק דרך הפאנל snippet ולומר זאת בגוף הלוח; אל תשאיר את הקובץ בגשר /, שבו התאמה תסרב החבילה.המחבר הוא נורמלי לחלוטין: פעולות, ספקי ההקשרים, זהות ואורחים כולם עובדים אותו הדבר, כי אף אחד מהם לא אכפת מה עונה שיחת HTTP.

אי אפשר לנהל תהליך על גבי מארח הפלטפורמה

אז דפוס הגשר הוא לא הכלי הנכון.גשר קיים כדי להגיע לפלטפורמה מתוך המארח שלו, אם אתה יכול רק להגיע אליו מבחוץ, אתה כותב רגיל.APIקשר נגד כל משטח שהוא חושף.

⚠️
אחד יותר מאופק תכנון סביב: בדיקת זהות צריכה לקרוא את המפגש של הפלטפורמה, אשר בדרך כלל פועל בתוך תהליך הפלטפורמה עצמו או לפחות על המארח שלה עם גישה לחנות הישיבות שלו. גשר שנכתב בשפה שונה מהפלטפורמה יכול לשרת נתונים בנוחות ועדיין עשוי להיאבק לענות על אופיו=מנהל_identity.אם זה המקרה שלך, גשר הנתונים בשפתך ובמצע הזיהוי של הזהות בפלטפורמת.
מחברים (Connectors)

תן את עוזר שני חצאים: פעולות והקשר

זהו הדבר הנפוץ ביותר שחסר ממחבר ש"פועלים אך חסר תועלת" פעולות מאפשרות ל-AI לעשות דברים.סעיף קונטקסט יאפשר לו לדעת דברים.חבר צריך את שניהם, ורוב השאלות שהמנהל שואל נענות על ידי ההקשר, לעולם לא באמצעות פעולה. a connector עם מעשים מושלמים ואין ספק בהקשר ידווחו בכנות כי הוא אינו יכול לראות שום דבר.

שני חצאים

פעולות – איך ה-AI עושה דברים

הובהר במעשים.jsonאו חזרה על ידי רישום (המודל בוחר אחד, ממלא את הפרמטרים שלו,OpsIQמבצעים את זה: ביטול ההזמנה, פתח את הכרטיס, לשנות מצב זה.

Context sections — how the AI knows things

מאגדת קונטקסטווידר לפני שהמודל פועל "כמה הזמנות בחודש", "מי הלקוחות החדשים שלי", "מה אנחנו מוכרים" כל לפתור באמצעות בדיקת ההקשר, ולעולם לא לגעת בפעולה בכלל.

⚠️
סימפטום של ספק נעדר: עוזר תשובות "לא מחבר זמין סיפק את סעיף ההקשר הזה" בעוד המחבר מותקנת, אפשרה ומעביר את מבחן החיבור שלה.שום דבר לא מחובר, שום טעות.הודעה זו אינה אומרת שספק לא טען את הקטע.

אוצר המילים האוניברסלי

OpsIQלבקש קטעים על שם גנרי, התפקיד שלך הוא להחליט מה כל אחד אומר על הפלטפורמה שלך ולענות לו: הזמנת מלון היא הזמנת המלון; חדר הוא מה שהמלון מוכר.

הזמנות / ספין_orders

לא משנה איזו עסקה יש על הפלטפורמה שלך: הזמנות, הזמנות, הסתייגויות, מקומות עבודה, משלוחים. pending_orders היא אותה רשימה המסונן אל הלא גמורים.

לקוחות

הלקוח roster

products

מה הפלטפורמה מוכרת: מוצרים, חדרים, תוכניות, שירותים.

הצעת חוק

הכנסות וסכומים בצורת כסף, בתוספת ספירות לפי מדינה.

כרטיסים, שירותים, תחומים, שרתים, פעילות

השתמשי בפלטפורמה שלך באמת יש אותם.אל תכריח מיפוי - סעיף לא מוכר יותר טוב מאשר אחד לא נכון.

כל דבר אחר שיש לפלטפורמה שלך

תכריז על סעיפים (: [של], 'החברות' שלך] התמזגו לרשימות הנראות האוניברסליות, כך שחיפושים ספציפיים בפלטפורמה יהיו זמינים ללא שינויים מרכזיים.

הטעות שעולה יום

ספק ההקשר חייב ליישם את הממשק.סוג הרישום בודק אותו, כך שכיתה שרק LOOKS נכונה מתבטלת – ללא שגיאות בשום מקום.

ContextProvider. php — החוזה, מחבילת ההשראה Botble
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 '';
    }
}
רשום אותו מהמחבר

יישום ContextConnector Interface ולהחזיר את הספקים שלך מהקשרProviders () כיתת המחברת עשויה גם ליישם את contextProvider interface ישירות ולהיות רשום כמו עצמו.

חזרה טקסט פשוט, לאJSON

בניית () מחזירה חסימת טקסט הנדבקת למדריך. כתוב אותה עבור קורא: כותרת, שורה אחת ברציפות.

חזרה "במקום לזרוק

לתפוס את החריגים שלך.ספק שזרקת הוא מחובר ומלג על, אבל החזרה "הוא החוזה.

הבונים לא יכולים לכתוב חלקים () בשבילך

ה-contextProvider. php אוניות (: מערך החזרה; } והקוסם אין לו שדה עבורו.מלאו אותו ביד – וזכרו כי הוא מפיץ את הקוסם אווברוולטים הקובץ. העתק את העריכה שלך קודם כל.

⚠️
המדינה האמיתית ל-TAL, לא מספר השורות ששלחת.עמוד אינו סך מוחלט של ספק שאוסף עשרים שורות מבלי לומר כך מקבל את העוזר עונה בביטחון "יש לך תשובה"20הזמנות" כאשר הפלטפורמה מחזיקה669קו אחד זול ושורה אחת מפורשת - "TOTAL על קובץ: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 בפעולה_id, והיא שמרנית במכוון: כל דבר שהיא אינה יכולה להכיר בו ככתוב ודורשת כרטיס אישור.קבל את הפועל נכון וקריאה פשוט רץ.

1
הוא_destructive or need_confirmation זכייה

אם נקבע, הפעולה תמיד זקוקה לאישור.תשחרר אותם בכנות – זה מה שמקיף את כרטיס האישור של המנהל.

2
מילה בכתב בכל מקום ב-id עושה את זה לכתוב

להוסיף, ליצור, לפתוח, לעדכן, לערוך, לשנות, למחוק, להסיר, להרוס, לבטל, להחזיר, להפסיק, להפעיל, לאשר, לדחות, לשלוח, לסמן, ליישב, לחטוף, לבודד, לסגור, לפתוח מחדש, להקצות, להיתר, להעניק, להגדיר, להתנער, לאפשר, להשבית, לייצר, ליישם, לשלם, לשלם , לחדש, לחדש את, להעביר, להגדיל, להסלם, להוריד, לרשום, להירשם, לרשום , לרשום אותו, לחתוך, לרשום את הדגל, לרשום.

3
ואז מילת קריאה הופכת אותו לקריאה

לקבל, רשימה, חיפוש, מראה, להציג, להביא, ספירה, מבט, מתאר, לקרוא, לייצא, תצוגה מקדימה, מבחן, ping, מצב, סיכום, פירוט, לאחרונה, היסטוריה, לבדוק, סטטיסטיקה, מדדים, סקירה, הכנסות, הפצה, דוח, ניתוח, איזון, שימוש, ספיגה, תמונה, תובנות, הזנה, טיפחה, משולשת, כיתה, להציע.

4
שיטת HTTP החליטה

ג'ו, הוא ו-Options קוראים.

5
אחרת זה כתיבה

לא ידוע פירושו אישור נדרש.ש ברירת מחדל מכוונת.

⚠️
מילים לכתוב נבדקו לפני קריאת המילים, כך ששם מעורב כמו Get_and_sync_orders מסווג כ- WRITE. Pick one Act, לשים את זה קודם, ולשמור אותו נקי: רשימה_orderים, לקבל_user, חיפוש_booking, ביטול_Booking, להגדיר_orderstatus.

רק להכריז על Native_api אם הפלטפורמה באמת יש אחד

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 או פלטפורמה_bridge. Conformance מתייחס פלטפורמה_גשר כמו הבריחה בוקע גשר צפוי להיות, והבן מסרב לדגימה שטוען פלטפורמה_ברידג' ב-Ab על מצע_bridge על גבי ALT על acap בעת בריחה שבוץ גשר מתחבר הוא צפוי שיש לו, ואת המארגן מסרב ספק שמטעה פלטפורמת_bridge ב-WEB על ספקטרום של ערעורים על פלטפורמה_B.APIמחבר.

שמור על Ai_api_reference. md כנה או דרך

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

פני השטח שניתן לקרוא.עבור מחבר גשר זה האופי שלך ולעשות אוצר מילים עם הפרמטרים שלהם, לא שולחן קצה REST.

תקציב התקציב

קשוחה6,000הדמויות המשיכו לחבר, ועל24,000דמויות עבור כל בלוק על פני כל מחבר אפשרי.Over the per-connector cap הקובץ שלך הוא truncated; להיות concise לפני ה truncator הוא.

תשלום אחריות

קבצים אלה הם ההבדל בין עוזר באמצעות כלי שולחן אוניברסליים שלך ותשובה מהסעיף הלא נכון, משום ששום דבר לא אמר לו שהכלים האלה קיימים.

💡
שני הקבצים חייבים להיות בחבילה INSTALLED, לא רק עץ המקור שלך.הם קבצי חבילה רגילים, כך שהם מכוסים על ידי החתימה ונשלחים ב- ZIP - כלומר גם עריכת אחד לאחר חתימה שוברת חותם.
מחברים (Connectors)

זהות באמצעות מחבר: מנהל, לקוח, פורטל

חוזה חתימה אחד משרת שלושה משטחים.תפקידו של המחבר הוא להפוך את "מי מחובר על הפלטפורמה" לסימון חתוםOpsIQניתן לאמת ולאחר מכן להציג את הנושא המאומת בOpsIQ"המחבר לעולם לא יאמת אף אחד - הפלטפורמה עושה, והחתימה נושאת את הטענה הזו.

שלושת פני השטח, אחד

אדמין - הצוות שלך, בתוך הגב

נושא ניהולי.The widget נטען בתוך לוח הניהול של הפלטפורמה וכל חבר צוות מתאים משלהםOpsIQהסוכן המלא: הליכה מלאה בדף הניהול widget.

לקוח - לקוח חתום, בצ'אט של הלקוח

נושא לקוח זה מה שמאפשר ללקוח מחובר לקבל את חשבון WHOLE במקום מבט אנונימי: כל הזמנה, פרטים מלאים וכל פעולה בשירות עצמי שאתה מאפשר.

פורטל - קישור עמוק לתוך פורטל התמיכה

אותם טענות בתוספת Jti ו- יחיד_use, עם120- שני החיים, כי הסימון נוסע בתוךURLוחייב להיות מבלה פעם אחת.אל תעבדו את זה: הגדרות, פורטל תמיכה נושא קטע מוכן בשפה, ואת הפלטפורמה מנקה אותו בשבילך כאשר אזור החשבון פועל בשרת זה.

החוזה בתשלום

אלה הטענות שהמניפסטים בודקים.אין כאן אופציונלי, כל דוגמא חלקית במקומות אחרים עשויה להציע.

site_key

רמה עליונה.חייב להיות שווה את מפתח האתר של הבקשה, או הסימון הוא סרב.

זה ו-Exp

רמה עליונה, לא שש שניות.התברר חייב להיות בעתיד ולאחר איאט אסימון יותר מדקה בעתיד מסרב לשמור על החיים קצרים - דקות עד שעות.

אמת: אמיתי

רמה עליונה, לצד exp. Your הפלטפורמה טוען כי אדם אמיתי מחובר פנימה.

פלטפורמה

רמה גבוהה יותר. פיסת דואר קצרה בשם המקור.מומלץ, והיא מאפשרת לספק הזהות של מחבר לספר אסימוניו משלו מפלטפורמת אחרת.

ניהול או לקוח

אובייקט בשם הנושא.זה חייב לשאת id לא מחוספס, ושם משתמש או דוא"ל - שער הגישה למנהל על אלה.

Minting, Actatim from the Botble Bridge
$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יש שני מאמתים, והם לא היו זהים. הידיעה כי זה חוסך לך אחר הצהריים, כי הסימפטום נראה כמו הסיבה.

ל-Widget יש את המאמת שלו

opsiq/ Embed/admin_ajax.php נושאת מאמת מקומית שמקבלת את הדגל האותנטי בכל עמדה. רשימת שיחות, היסטוריה ו unread all לעבור אותו, כך הם אותנטיים בסדר.

המאמת המשותפת היא קפדנית יותר

opsiq/ Includes/user_identity_token_verify.php יושב מאחורי זרם הצ'אט ואת הליבה AJAXAPIההיסטוריה דרשה את הדגל ברמה העליונה.

הסימפטום

ההיסטוריה והשיחות עובדות.כל צ'אט פונה תשובות "בקשת כניסה של אדם" זה קורא בדיוק כמו באג ישיבה ואינו: הדיקן חסר את הדגל העליון ברמה גבוהה.

מה הליבה הנוכחית עושה

עכשיו הוא מקבל את הדגל ברמה העליונה או בתוך הנושא, כך החוזה הוא אחיד. ליבות ישנות לקרוא רק את הרמה העליונה. Emit the canonical shape and yourחבילה עובד על כל שחרור.

זה מוקרן כעת.כל קובץ בחבילה שלך כי קידוד זהות הוא לסרוק באופן סטטי נגד החוזה, ושכרה הפלטפורמה לא תסכים עם הקובץ המדויק ואת השורה. Run It Yourself: php כלים /verify_identity_contracts. php.

לקוחות ב- Customer chat

שני דברים צריכים להיות נכונים.ה Core חייבת להטמיע את הלקוח המאומת, והחבר שלך חייב להציג אותו.

1
הגשר או נקודת הקצה שלך מנקה לקוח

אותו חותם כמו מנהל המערכת, עם נושא לקוחות.קרא את הלקוח מהפגישה של הפלטפורמה עצמו.אם הפלטפורמה שלך מסמן ללקוחות במשמר אחר ממפעילים, קרא את השומר שאתה רוצה ולעולם לא ליפול לאחור על פני נושאים - כך לקוח ימסר אסימונים ניהוליים.

2
תקנון ובולטים אותו

על אסיקן תקף, הליבה חותמת את הנושא המאומת לתוך הפגישה.ספק שלך קורא זהות מוכחת; זה אף פעם לא אותנטי.

3
זהותך מציגה אותו

שם הסרטון:Customer() Return theOpsIQצורה: זה חייב ליישםOpsIQ(Platform\IdentityProvider Interface, או הרישום מפרש על זה בשקט - אותה מלכודת כמו ספק ההקשר.

4
הפעולות שלך לקוח מקבל לקוח_id

וOpsIQמנעול אותו לזהות המאומתת לפני ביצוע ההזמנה, המודל אינו יכול לספק אותה.

IdentityProvider.php - לקרוא את הזהות המוכחת, להציג אותה ב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לאכוף את זה בצד שלו, ואת הפלטפורמה שלך חייב לאכוף אותו גם בצד השני.מנעול אחד הוא באג הרחק מן הדליפה; שני מנעולים הם חוזה.

Lock1 — OpsIQלשכתב את הפרמטרים של זהות

לפני שפעולת צ'אט לקוחות פועלת, OpsIQ להחליף כל פרמטר בצורת זהות עם הזהות של המבקר VERIFIED: לקוח_id, Customerid, User_id , userid, Customer_id - חשבון_id לוקח את ה-numeric id; הלקוח_identifier ,לקוח_idenstifier, חשבון_idenetifier לקחת אותו כמחרוזת; דוא"ל, לקוח_Mail_, קח את הודעת הדואר האלקטרוני המאומת.

Lock2- הפלטפורמה שלך מחדש סקופים כל שאלה

קח את האיד שניתנה לך ולהוסיף אותו לסעיף WHERE של כל קורא וכל כותב על פני השטח הזה.לעולם אל תסמוך על ההתייחסות לבקשתו בפני עצמו. A חתום-בלקוח ששאל על סדר מישהו אחר חייב לחזור ריק, לא אסור.

שם הפרמטרים שלך כל כך נעול1יכול למצוא אותם

קרא לזה לקוח_id, לא cust או ref. A פרמטרOpsIQלא מכיר את הפרמטר שהוא אינו יכול לנעול.

⚠️
תן ללקוח על פני השטח של פעולות בבעלותו, בנפרד מן המנהלים, גם כאשרSQLשני משטחים עם כללים שונים נשארים כנים; פני השטח אחד עם דגל הופך לדליפה ביום שמישהו עורך את הענף הלא נכון.

דף Zero: The connector-declared

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המונחים: the Investigation
{
  "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."
}
הבדיקה נקראת על ידי הדפדפן

אותו-אורין, כך שהוא לא יכול לשאת ראש מותאם אישית.האימות שלו הוא ישיבת הפלטפורמה. Put It AHEAD של שער הגשר-קי שלך, למנוע את זה מנתוני שיא ולא להחזיר שום דבר לכל מבקר רשום.

הוא עונה על צורה קבועה

{"success":true,"authenticated":true,"admin":{...},"identity_token":"..."} — and {"success":false,"authenticated":false,"error":"..."} when nobody is signed in.

אין סוד ארוך בעמוד

רק את החתימה, עזוב את הסימון.

מימושי נקודות קצה מלאים עבור Laravel, WordPress, WHMCS, Symfony ו-PHP רגילה, בנוסף לזה שנצבר בקשות. Laravel הפרטים והסדר לפתרון בעיות, נמצאים בדף המנהל הם אותו קוד עבור נושא הלקוח: שינוי השומר שאתה קורא ומפתח הנושא שאתה חותם.

מחברים (Connectors)

פרסום: עריכה התיקיה אינה הוצאה

הדרך הנפוצה ביותר לאבד אחר הצהריים היא לערוך מחבר תחת שוק_קישורים /, להתקין אותו מחדש ולמצוא שום דבר לא השתנה.התקנים אינם קוראים את התיקיה הזו.הם מושכים ZIP חתום מקטלוג השוק.פרסום הוא הרצף שמציב את השינויים שלך לתוך ZIP זה.

למה עריכה לא עשתה כלום

marketplace_connectors/<slug>/ is the SOURCE

זה המקום בו אתה עובד, שום דבר לא מתקין ממנו.

הקטלוג מחזיק ב- ZIP חתום

התקנה מורידה את ה- ZIP, מאמתת את החתימה, ומשחררת אותה עד שתבנה מחדש את ה ZIP כל ההתקנה ממשיכה לקבל את החבילה הישנה.

יוצר החיבור מפרסם במקום אחר

It writes into /connectors/<slug>/ on this install. That is a local connector, not a marketplace release. The two paths do not overlap.

רצף השחרור

1
Bump את הגרסה ב- TWO

הגדרות.jsonמחבר_contract.jsonרפורמות משווים אותם ולא מצליחות אם ה-Steug, את הגרסה או את היכולת להגדיר לא מסכים.הוספת כניסה של CHANGELOG בזמן שאתה שם – זהו קובץ נדרש.

2
Re-sync the Bridge snippet

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
לחתום על כל חבילה

php כלים / resign_all_linkors. php - קובץ החתימות מכילות, כך שכל עריכה תעריך אותו. Sign אחרון, לאחר כל קובץ היא סופית.

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
⚠️
מדוע היצוא אינו אופציונלי: החתום מחפש את המפתח ב-OPSIQ_CONNECTOR_SIGNING_KEY הראשון והמחבר_signing_key הגדרת השני.הרואה פועל על מחסומי SaaS וכלים/sign_linkor.php שום דבר, כך בשני ההגדרות לא קיים - ללא סביבה משתנה אין מפתח, ואתה מקבל "לא זמין" כל כלי חתימה / mf_resht_p>OpsIQהוא יכול למצוא את המפתח בעצמו.

מה בעצם אוניות

רק קבצים מכסה החתימה

ZIP בנוי מרשימת הקבצים של החתומה, כך שקובץ משוטט יושב בתיקיה החבילה שלך אינו נשלח.זה מכוון: קובץ לא חתום המשמש לרכוב יחד ללקוחות.

הרחבות Covered

php, json, js, css, md, txt, html, sh, svg, png, jpg, jpeg, gif, webp, ico, yml, yaml — באופן חוזר ונשנה, כולל bridge/ ו- tests/. signature.json עצמו נמחק מההצפנה ואז מוסיף ל-ZIP כדי שהמתקינים יוכלו לאמת.

כל דבר אחר מדווח כ- לא_package

הרואים שמות כל קובץ שהוא השאיר מאחור.קרא את הרשימה הזו.קובץ שציפיתי לספינה להופיע שם פירושו הרחבה שגויה או מיקום לא נכון - לא הצלחה שקטה.

עריכה כל קובץ מכוסה שובר את החותם

כולל קובץ Markdown. חתימת מחדש את החבילה הזו.

דרושים קבצים בחבילה מבוזרת

connector.php

צריך להחזיר דוגמא של חיבור.

settings.json

מטיף: סלג, שם, גירסה, ביטוי_version, תאימות, יכולות, מחבר_contract_version , הגדרות.

connector_contract.json

חוזה קריא מכונות.הזייף שלו, הגרסה והיכולות שנקבעו חייב להיות זהים להגדרות.json.

שם הסרטון: DEVELOPER. md, CHANGELOG

כל השלושה נבדקים על קיום ועל גודל מינימלי.הקוד זקוק לתוכן אמיתי, לא ל- stub.

קובץ ל-Action

כל יכולת שמות את הקובץ שהוא מצפה לו - ContextProvider. php בהקשר, IdentityProvidER. php לזהות, Guest LookupProvidre. php עבור אורח_lookup וכן הלאה – אלא אם המחבר מיישם את היכולת בקו ישר.

שום דבר שנראה כמו מטלה

Conformance סורק את שלושת הקבצים 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
💡
כשל אחד צפוי ואינו בעיה: הסימון של החבילה מדווח על אזהרה בזמן שאתה עדיין עורך.זה מנקה את הרגע שבו אתה חותם מחדש.
מחברים (Connectors)

קישור חבילה ומחזור חיים

זהו החוזה ברמת המקור לבניית מחבר OpsIQ יכול לגלות, להגדיר, לאמת, לאפשר, לבצע, לבדוק, לחתום ולהפיץ.

תיאור המפתח
חבילהחבילה לחבר יש יישום מחבר נדרש ומימוש, עם פעולות אופציונליות, מתכונים, ידע, נכסים ומטאנת חתימה.חבילהdeveloperMANIFESTv1החיים מלאיםניהולעבודה סוציאליתACEסקוטביקורת עבודה WorkSPACEconnector.phpמעמד / מפעלדרושיםsettings.jsonהמונחים: schemaדרושיםactions.jsonהגדרות פעולהאופציונליsignature.jsonחבילה חתימה metadataלשחרר1DECLAREיכולות וכישרון2IMPLEMENTמחזור חיים וספקים3אסימוניםמבחן, Sign, החבילה
חבילה לחבר יש יישום מחבר נדרש ומימוש, עם פעולות אופציונליות, מתכונים, ידע, נכסים ומטאנת חתימה.

חבילה מינימלית

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 שימוש ב-Retch Version 1ה- אימות מצפה ל-Selug, Name, גירסה, התגלות_version, תאימות, תיאור ויכולות. Compatibility מצהירה opsiq_min ו opsiq_maxסטטוס שחרור הוא אחד ייצור הייצור, Beta, תצוגה מקדימה או תבנית• בגרות יכולות להשתמש ברמות L1-L6. חבילות מורשת ניתן לנרמל עם אזהרות, אבל חבילה חדשה צריכה לעבור ללא התראה.

ממשק המחבר

  • זהות והגדרה: slug(), name(), description(), capabilities(), settingsSchema(), testConnection().
  • מחזור חיים: onEnable() ו onDisable()דיסable חייב להיות לא הרסני; טיהור נתונים הוא פעולה מכוונת נפרדת.
  • כניסה/סנכרון: handleWebhook(), poll(), backfill()פול מטפל בעבודה מצטברת; backfill לייבא היסטוריה וחייב להיות בטוח לחזור על עצמו.
  • תמיכה: pushReply() איפה הפלטפורמה מקבלת תשובות.
  • פעולות: registerActions() מספק חוזים פעולה סחיפים.
  • אבטחה: securityCapabilities(), syncBlockedIp(), removeBlockedIp(), testSecuritySync().

הבסיס המופשט מציע גם backfill אופציונלי, רשימת לקוחות, גילוי דואר אלקטרוני / יצירה, מנויים, ניהול / לקוח זיהוי, חיוב / קונטקסט / ספקיות, החילוץ תגובה, חידוש שיחות HTTP, JSON גישה פתטית, דירוג סחרחורת ועוזרי הדמיה.

אפשרויות ואימות

שמות בעלי יכולת תומכים כוללים פעולות, טריגרים, הקשר, זהות, מכירות, חיוב, inbound_ticket, Outbound_reply, Syn_users,Sync_departments, אבטחה_events, Customer_import, Security_native_block ,Pro_audience, פרמול_feed, Native_api, ai_aware ו-Aware. API מפתח, נושא, בסיסי, HMAC OAuth 2אישור לקוחות,OAuth 2אישור קוד ותבניות אימות מותאמות אישית.

רישום Lifecycle

  1. התגלית מעמיסת את החבילה ומאמתה את ביטויו.
  2. הקונפדרציה מאוחסנת למרחב העבודה; סודות מוצפנים.
  3. מבחן חיבור מוכיח את האישורים מבלי לאפשר לחבר.
  4. שיחות אפשריות onEnable(), סנכרון הגדרות פעולה ויכול להתחיל את ה backfill הראשוני.
  5. בדיקת / Webhook/subscriber תמיד נושא את ההקשר של סביבת העבודה.
  6. שיחות דיסוציאטיביות onDisable() מפסיק פעילות ללא מחיקת נתונים מיובאים.
  7. פורג' הוא פעולה מפורשת נפרדת.

חוקי תיקון

  • השתמש במפתח העבודה / האתר בכל קריאה, כתיבה, מפתח מטמון, מקש שכפול ו- Webhook.
  • הפוך backfill, ingestion Webhook וכתוב פעולות idempotent. לרשום מזהה חיצוני / אפילו לאזהה בכל מקום שבו הפלטפורמה מספקת אחד.
  • עבור מערכות מרוחקות, השתמש API לעולם אל תניחו שטבלאות מסד הנתונים שלהם קיימות OpsIQ קשר.
  • חזרה מובנה, שגיאות בטיחות לקוחות.לעולם אל תחשוף סודות, עקבות של ספק גולמי או עוד קיום של סביבת עבודה.
  • רק חתלתול יכול את החבילה למעשה מיישמת. actions.json קטלוג אינו מבצע פעולה שניתן לבצע עד שהמחבר מותקנת, מופעלת, מוגדר והקשר שלו הוא בתוקף.

בדיקות ושחרור

הפעל את PHP lint, אישור מסמך, בדיקות חיבור, בדיקת תבניות פעולה, בדיקה של חתימת/החזרה של webhook, בדיק בידוד חלל עבודה, בדיקים של מילוי חוזר, בדיקי מחובר מושבת ומבחני כשלון/ניסיון שוב. לאחר מכן יש לחתום על חבילת שוק ולוודא אותה, להוסיף תעודת התקנה/רשויות/webhook ולהצהיר על מצבה האמיתי של השחרור שלה. ריצוף החיבור והמסמך הם סימן הזמין הממלכתי.

מחברים (Connectors)

מתכונים מחוברים

מתכון שלב-בצעד להגדרות מחבר משותף.

מתכונים
מתכוןA A Shopify עיצוב מתכון כ- Checklist: ליצור אפליקציה, מענקי היקף, אסימונים ומבחן, מאפשר Webhooks, להציב הזמנה במבחן.מתכוןShopifyמתכון Shopify עם Webhooksליצור אפליקציה אישית Shopify מנהל ניהולטווחי גרנט: לקרוא_orders, Read_user...Paste Store + token, לחץ על TestEnable WebhookSync (הזמין אוטומטי)להציב צו מבחן→מופיע במכירות ב30s1STEP BY STEPמתכונים עם copy-paste2REAL PLATFORMSShopify · WHMCS · Stripe · GBP3וודאי.הוראות מבחן ב 30s
כל מתכון הוא רשימת הסימון שאתה הולך למעלה לתחתית, כאן, Shopify עם הזמנה בזמן אמת webhooks, מאומת על ידי צו מבחן.

מתכון: Shopify מותגים בזמן אמת

סקורסארי:
תגית: Connect 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 שילוב

סקורסארי:
תגית: Connect WHMCS כך ש-AI יכול להסתכל על לקוחות, שירותים, כרטיסים וחשבוניות.
מה לעשות:

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תשלומים

סקורסארי:
Goal: Track Stripe תשלומים ו- AI עיין בעסקאות.
מה לעשות:

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 Business profile

סקורסארי:
Goal: Connect GBP for review Management, פוסטים ותובנות.
מה לעשות:

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.

מחברים (Connectors)

חידוש ה- CRM & Site Intelligence

OpsIQ תת-מערכות פתוחות להרחבה.חבר יכול לחבר יכולות חדשות לתוך CRM או במודיעין באתר ללא שינויים OpsIQ מקור: Through the פלטפורמה Capacity Registry OpsIQ(Platform\Capabilityregistry) מבטל את היכולת, ליישם את השיטה הקטנה שלה להגדיר, לשלוח את המחבר,OpsIQ הוא מגלה את זה וחוט אותו לתוך UI, הלקוח 360 ציר הזמן וההתקנה מהירים.

CRM ו- SI
יכולות פלטפורמהמחבר באוטובוסים של יכולת ההאכלה השמאלית (CRM, Site Intelligence, Analytics) שהתגלה על ידי Capabilityregistry.יכולות פלטפורמהסביבת העבודההמחבר שלךיכולות להכריזאתר האינטרנט הרשמי של CRMלוח שנה · העשרה · esign · תשלומים · תיבת דוארמודיעין אתרהמונחים: cc_dataאנליטיקהInternet_analytics - דיווח ו-ingestCapabilityRegistryעקבו אחרי UI + Timeline1DECLAREחסרונות, לא עריכה2PLUG INCRM · SI · Analytics buses3AUTO-WIREDUI, Timeline, Directs
מחבר מכריז על יכולות (calendar, העשרה, דירוג נתונים, ניתוח...) OpsIQ אוטומטי להטמיע אותם ב- CRM ובמודיעין באתר, אין שינויים משמעותיים.

יכולות

הבהרת (הגדרות)json)

הוסף <domain>_capabilities מערך, הטוב ביותר עבור נוקוד / משווקים. Domains: crm, site_intelligence.

קוד (קישור. php)

יישום crmCapabilities() / siCapabilities() להחזיר את אותם הטיפים.

סמן ספק לוח שנה של CRM (הגדרות.json)

סקורסארי:
Goal: להפוך מחבר לוח שנה להופיע בלוח לוח הזמנים של ה- CRM.
מה לעשות:

"crm_capabilities": [ { "type": "calendar", "label": "Calendar (Acme)", "actions": ["createEvent","listEvents","freeBusy"], "requires_auth": true } ]

לשחרר ספק במודיעין האתר (הגדרות).json)

סקורסארי:
Goal: להאכיל נתונים מקומיים למודיעין האתר.
מה לעשות:

"site_intelligence_capabilities": [ { "type": "local_listing", "actions": ["listLocations","listReviews","getInsights"], "requires_auth": true } ]

אוטובוסים של קפיטות ושיטתן

חצץ / Calendar

createEvent($settings,$params) →[Success,event_id,html_link,meet_link] listEvents; freeBusyע"י: Driven by OpsIQ CRM/CalendarBridge

« פעילות / The העשרה

enrich($settings,$params) →(דברים י"ד) ע"י:OpsIQ CRM\EnrichmentBridge (גם פועל באופן אוטומטי על החברה ליצור כאשר ספק מחובר).

חתומה / Esign

sendForSignature($settings,$params) → {success,envelope_id,sign_url}. מופעל על ידי \OpsIQ\CRM\EsignBridge.

אתר_intelligence / Local_listing

listLocations, listReviews, getInsightsספינות באמצעות מחבר פרופיל עסקי של Google.

אתר_intelligence / דרגה_data

keywordRanks($settings,$params) →(דברים י"ד, ט): "וַיַּבְתִּים"OpsIQשם מקור: SerpApi connector.

ניתוח / Web_analytics

report($settings,$params) (Sync/export) + ingest($settings,$events) (import) Driven by OpsIQ• אנליטיקה /WebAnalyticsBridge Google Analytics (GA4) מחבר נתונים API עבור דוחות, פרוטוקול מדידה לייבוא. Analytics פתוח לחברים כמו CRM + מודיעין באתר (דומיין) analytics / analytics_capabilities).

תשלום / תשלום_vider

listPayments, customerPayments, createPaymentLinkע"י: Driven by OpsIQ*Payments\PaymentsBridge. Show a Customer’s Payments on the CRM timeline + שלח קישור תשלום על עסקה. Ships: Stripe Payments connector payments / payments_capabilities.

דואר אלקטרוני / דוא"ל_sync

listMessages + sendMessageע"י: Driven by OpsIQ דואר אלקטרוני / MailboxBridge. A Customer's דוא"ל על הלקוח 360 ציר זמן + שלח דוא"ל מעסקת. Ships: Gmail + Outlook / Microsoft 365 מחבר: Domain mailbox / mailbox_capabilities.

משותף OAuth יישום + One Reverse

כל המחברים של Google חולקים אפליקציה אחת באמצעות OpsIQ\OAuth שיתוף GoogleApp google_oauth_client_id/_secret פעם ולוח שנה, Analytics, פרופיל עסקי + Gmail כל העבודה (הקישור "(אופציונלי)" שדות הם מעלים). URI, <site>/connectors.php?oauth=callback (אין כל חיבור סלנג), כי Google חושף לא API כדי להוסיף URI של הפניה מחדש לאפליקציה; OpsIQ משחזר את החיבור מהחתום OAuth state תגית: The Single URI פעם אחת וכל מחברת Google (הווה + עתיד) מאשרת ללא הגדרה נוספת של הקונסולה. SharedGoogleApp::resolve(...)שנה redirect_uri ממך oauthParams()• לעולם לא קוד קשה הפניה של Microsoft לנגיף.OpsIQ\OAuth שיתוף MicrosoftApp (microsoft_oauth_*).

כפתורי יבוא הם יכולת

ה יבוא (הופנה מהדף Backfill) לקוחות ייבוא כפתורים מראים רק עבור מחברים אשר למעשה ליישם אותם, מזוהה על ידי השתקפות, כך שאין דגל להכריז. backfill() או backfillChunk() להרוויח את כפתור הייבוא; override listCustomers() (חזרה לדואר, קודם_name,...) דפים כדי להרוויח לקוחות מיובאים. AbstractConnector לא-פ והלחיצת כפתור נותרו חבויים, כך ש-UI לעולם אינו מציע ייבוא מחבר לא יכול להופיע.

AI על אוטובוסים

סוכן CRM מציע ומפגשי ספרים על אותות העסקה (\OpsIQCRM/MeetingProposer→לוח השנהברידג' ו- Auto-enriches חדשים, "AI מפעילה את ה- CRM" לולאה, המבוצעת על פני אוטובוסים מחבר.

אתר האינטרנט הרשמי של מועדון המשתמשים (באנגלית)fetchTicket())

שני דברים, אין שינוי יסודי

כאשר מבקר מתייחס למספר כרטיס בצ'אט הלקוח ("מהו מעמדו של T- -000123?"), OpsIQ פותרים את זה בשני הטיירים. Tier1 קורא את המשותף OpsIQ חנות כרטיסים, כל מחבר inbound_ticket משקף את הכרטיסים שלה שם, כך שכרטיסים מסונכרנים פשוט עובדים עבור כל המחברים עם אפס קוד הקישור. Tier2 הוא נפילה חיה עבור כרטיסי OLD שמעולם לא היו מצופים: הליבה קוראת לאופראיה fetchTicket() על כל מחברה המאפשרת ליישם אותו. duck-typed (התגלה על ידי method_exists()כמו contextProviders()/audienceCatalog()כך גם החתימה ConnectorInterface הוא לא ניתן לקשורים ולא צריכים את זה (מקורות דואר אלקטרוני / צ'אט שיוצרים כרטיסים באופן מקורי) פשוט להמיט אותו.

⚠️
הבעלות היא חובה ושלך לאכוף. fetchTicket() מקבל את זהות המבקרים המעודכנת ב $ctx (client_id + client_emailזהות מאומתת אותו משתמש הלקוח צ'אט AI (ב) לפתור את לקוח הפלטפורמה מזהות ושאילתה רק כרטיסים של הלקוח, ולאחר מכן לבדוק מחדש את הבעלות על הרשומות המפורטות. null על כל פספס, לא התאמה או טעות, לעולם לא עוד מידע של לקוח. null "לא יכולנו למצוא את הכרטיס הזה".
מחבר.php, החוזה של BringTicket() (היקפי: מחברים /whmcs מחבר/zendesk)
<?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) רשימות עם סטטוס מותקן / מוכר (מבוסס על מערכת המערכת; DB רק עבור הדגל הנצרך).

בחירת בחירה

CapabilityRegistry::active($domain,$type) מחזיר את הספק הראשון מוכן עם מחבר והגדרות טעון שלה. ברידג'ס קורא לזה במקום סדקים קשיחים.

המונחים: to-תקנה

כאשר תכונה זקוקה ליכולת שאינה מחוברת עדיין, UI מראה מהירות של אחד לחץ על חיבור / Install, לעולם לא שליטה מתה.

מדריך מלא

ראה connectors/PLATFORM_CONNECTORS.md (CRM + Site Intelligence) ו connectors/CRM_CONNECTORS.md בחבילה.

מחברים (Connectors)

לקוחות שירות עצמי מחפשי שירות החזרים (Build your connector for Customer chat)

לקוחות חתומה יכולים לשאול את הלקוח צ'אט AI על חשבון שלהם ("איזון שלי", "ההזמנות שלי"," "תמיקודי התמיכה בכרטיס שלי") ואם העסק מאפשר לו, לבקש החזרים. OpsIQ שינויים מרכזיים, שום פלטפורמה קשיחה.AI קורא את המשקפיים שלך כמו כלים ילידים (זה לא יכול להמציא אחד), זהות נעולה לצד הלקוח המאומת, ותוצאות הן באופן אוטומטי עבור AI.

לשחרר את הלקוח

בתוכך actions.jsonפעולה לקריאה בלבד הופכת להיות נוחה ללקוח עם כל ה-THREE: "scope":"client", "requires_confirmation":false, "is_destructive":falseשימוש "scope":"both" כאשר אותו המראה צריך גם להיות מכנה על ידי הצוות שלך ב- Admin AI.אוצר המילים המלא הוא admin, client, both ו system (system לא מגיע ל-AI -APIוקווי Webhook בלבד) כל דבר אחר נדחה באופן גלוי: אימות החבילה נכשל והפעולה אינה מתקנת. writing המונחים: the Writing assistant admin פעולה נקבעת.

חוק הזהות (mandatory)

שם פרמטר הזהות שלך מן התקן להגדיר.נעל ל- id המספרי המאומת: client_id, clientid, customer_id, user_id, userid, account_idנעול על ה-id הזה כמחרוזת: client_identifier, customer_identifier, account_identifierנעולה לדואר האלקטרוני המאומת: email, client_email, customer_email, user_email. OpsIQ מנעולים ואוטומטיים מלקוח חתום בפלטפורמה; ה-AI לעולם לא רואה או בוחר זהות.שם שאינו סטנדרטי אינו סגור (שלא הודף מעולם).

מה צריך להישאר רק מנהל

כל דבר שלא היה מופרש על ידי זהות זו: Bring-by-bare-id (הופנה מהדף Bring-Bre-D)order_id/ticket_id לבד), רשימות מכולת, חיפושים ללא טקסט חינם.אלה דולפים בין לקוחות בכל פלטפורמה. "scope":"admin".

תוצאות עיצוב (Swer-bearing Keys)

תוצאות הצפייה הן מכווצות מבניות לפני שהן מגיעות ל-AI: מפתחות בצורת חשאית נשרים, מיתרים ורשימות ארוכים מקופים, שדות ריקים נמוגים, ומפה שטוחה רחבה יותר מהכובע המרכזי שומרת על עצמה. מפתחי נושא ראשוןכסף (credit, balance, amount, total, due, paidזהות (email, *name, phone, companyמדינה (status, active, expir*, renew*תאריכים, תוכנית / מוצר / שירות / ספארי / סדר / חשבונאות / שדות כרטיס, מטבע, ספירה ו stats/summary/totalsלפני כל המושבים הנותרים הולכים אל מפתחות אחרים קטנים ערך-ראשון: שם השדות שלך עם אוצר המילים הרגיל הזה ולהחזיר את התחומים שעונים על שאלת הלקוח ולא כספם.100- פלטפורמה מפתח לזרוק; שדה בשם מחוץ לאוצר המילים מתחרים על המושבים השמאלית ויכול להיות מפורץ מעומסי תשלום רחב מאוד.

החזרים - מה שהמחבר שלך מספק

שני פעולות גלם, ללא מדיניות:1(תיקון תשלום) קריאה מסונן על ידי זהות ופניית עסקה (שלך) API חייב והמסננים, למשל. whmcs_get_transactions; (2החזר כספי (Return Act)scope:"admin", requires_confirmation:true, is_destructive:trueלעולם אל תוצגו לקוחות, למשל. whmcs_refund_orderהעסק בוחר את שני המפתחות בהגדרות→צ'אט לקוח;OpsIQמחדש את שרת התשלום בצד, חל על תיבת המדיניות של העסק (כובע חשוב, חלון גיל, הגבלת חודשי), בעיות בתוך הקופסה וקובץ כרטיס סקירה לכל דבר אחר.

לא קוד בונה

עורך הפעולה של Connector Builder יש את אותם הפקדים: להגדיר "מי יכול להשתמש בו" ללקוחות Signed-in, לעזוב גם לכתוב תיבות דואר אלקטרוני ולהשתמש בשם פרמטר זהות סטנדרטי.

יישום

"שירות עצמי" connectors/whmcs/actions.json, woocommerce/actions.json, oscommerce/actions.jsonהחוזה המלא connectors/README.md §8.1–8.2 ו ConnectorInterface::registerActions().

מחברים (Connectors)

חיפושי אורח - לאפשר למבקרים לעקוב אחר הזמנה, משלוח או הזמנה ללא תשלום (guest_lookup)

בתי מלון, שליחים ופלטפורמות מסחר רבות משרתים לקוחות המחזיקים בהפניה אך ללא כניסה: אורח עם אישור הזמנה, מקבל עם מספר מעקב. guest_lookup יכולת (חוזה קוניקטור, מצב: נוצר) מאפשרת לחבר שלך לשרת את המבקרים האלה ב-AI של הלקוח - לא כלוםOpsIQשינויים מרכזיים, שום פלטפורמה קשיחה.חבר שלך מצהיר כי זכאות שדות WHICH גלויים;OpsIQלאכוף את המתגים, הבקר והמדים מכחישים.

מודל האמון

מצגת + הוכחה, אף פעם לא זהות

המבקר מספק את הפניה הרשומה (המקבילה על ידי ה-regex שאתה מצהיר) בתוספת ההוכחה שאתה בוחר - בדרך כלל הדואר האלקטרוני בתיעוד.פעולת ההחזר שלך משחזרת את השיא של SERVER-Hard;OpsIQ"ספק שנוצר משווה את ההוכחה נגד שיא FETCHED.הקלט של המבקר לעולם לא מהימן, ואף זהות לא אומתית אינה נוצרת: המשחק מזכה את המבקר לתחומים המאפשרים רישום אחד, שום דבר אחר.

הכחשה אחידה (ללא אונקייה)

לא ממצא והוכחה-mismatch מייצרים תשובה זהה אחת.AI הוא הורה במפורש לעולם לא לאשר אם ההתייחסות קיימת ולעולם לא להמציא פרטים שיא.IPעל ידי הליבה לפני שהחבר שלך יעץ אי פעם.

Double Opt-in, Both ברירת מחדל

שום דבר לא משרת אורחים עד שהעסק מאפשר לתגי BOTH: השליטה במרחב העבודה בהגדרות→אבטחה→"חיפושי שיא בולטים בצ'אט של הלקוח" (התחקרו ותמיד מוסכם בסיסמאות, גם כאשר רצף אופציונלי כבוי), והמחבר שלכם עצמו guest_lookup_enabled הגדרות לכונן או לאפשר לחבר לבד לעולם לא פותחות את פני השטח של האורחים.

משטח האורחים המסור

הספק שנוצר נרשם על guest משטח ההקשר - נפרד מבני admin ו customerספקי ההקשר הקיימים לעולם אינם מתייעץים למבקרים אנונימיים, ספק האורחים אינו מייעץ עבור אלה שחתומות.הctx שהוא מקבל נושאת את הודעת הצ'אט, החוט id והמבקר טען (לא ידוע) לפני דואר אלקטרוני צ'אט כמועמד הוכחה - אין שדות זהות.

הבה נבהיר זאת ב-The Builder

1
Define the Bring Action

על צעד הפעולות, להוסיף פעולה לקריאה בלבד מחזירה שיא אחד לפי ההתייחסות שלו (למשל. GET /bookings/{booking_number}(ו) וממפה את שדות התגובה שלה עם כינויים: סטטוס, הגעה, יציאה, חדר_טיפוס, לקוח_דואר אלקטרוני.

2
טיק "Guest Lookups"

על יכולת הצעד, אפשר guest_lookupפאנל ייעודי מופיע: בחר את פעולת ה- Bring, שם פרמטר ההתייחסות, לתת דפוס ההתייחסות (גוף רוטקס כגון גוף של regex. \bBK-[0-9]{4,10}\bשם הרשומה ("מדריך"), ובחירת ההוכחה – דואר אלקטרוני על הרשומה (התאוששות) או אף אחד (הקצאה לבדה, למעקב אחר שליחים בלבד).

3
לאפשר לשדות גלויים

בדיוק השדות שאורח יכול לראות.כל דבר אחר הוא DROPPED - אף פעם לא מוקרן מחדש.הבן מסרב שדות בצורת PII (דואר, טלפון, כתובת, תשלום...) ב- The מאפשר, וחבילת ההתאמה של פרסום התואם המחודשת בודקת את אותו חוק לפני הפרסום, כך שספק ידני אינו יכול לחטוף אחד בחשבון זה.

4
« פובליש ותאפשר

הבונים החופשיים GuestLookupProvider.php - יישום קשיח תותחי, זהה לכל חבילה שנוצרת - ומוסיפה את היישום guest_lookup_enabled כדי להגיע להגדרות של המחבר שלך.העסק מחזיק את שני מתגים ואת צ'אט AI מתחיל להציע את המראה כאשר מבקר שואל על סוג הרשומה שלך.

כללי חוזים

שדות בצורת סטטוס רק

תחשוב "מה יהיה הדפס שליח בדף המעקב הציבורי": מעמד, תאריכים, חדר או קטגוריות שירות, ספירות. שמות, פרטי מגע, כתובות רחוב, נתוני תשלום והערות טקסט חינם אין מקום בצ'אט אנונימי - הבונים והקונפורציה שניהם מסרבים להם.

ה-AI עונה רק מהבלוק

הספק הנגרם מסיים את הפלט שלו עם הוראה לענות רק מהתחומים המפורטים ולהציע כרטיס לכל דבר אחר.פרטים לא ברשימות מאפשרים "לא זמינים בצ'אט" - על ידי עיצוב.

מעקבים ממשיכים לעבוד

הספק חוזר על ההתייחסות מההודעות האחרונות של המבקר באותה שיחה, כך ש"ומתי לבדוק את זה?" עובד ללא ניכוי מחדש של ההתייחסות.הודעת התעודה והודעת הדואר האלקטרוני נזכרים בחוט הצ'אט כ- CANDIDATES, אז מעקבים לא חוזרים?

חבילות ידניות

חבילת שוק יכולה להסיע את עצמה GuestLookupProvider.php implementing ContextProviderInterface עם surfaces(): ['guest']עקוב אחר החוזה של התבנית שנוצר בדיוק - להביא באמצעות הפניה, הוכחה-אמת השרת לצד, מכחיש אחיד, פלטה יחידה של הרשאת הרשימה – ומצהיר guest_lookup in capabilitiesרפורמות מאמת את פני השטח של האורחים וסריקה את רשימת ה- PII.

💡
חיפושי אורח הם רק ההקשר של ה-AI הצ'אט.הם לעולם לא מבצעים פעולות, ולעולם אינם יוצרים זהות, ולעולם לא פותחים את נתיב הפעולה בשירות עצמי של הלקוח לעיל – כי הנתיב הזה עדיין דורש חתימה בפלטפורמה ללקוחות.
מחברים (Connectors)

קידום קהל היעד (Promo_audience)

תנו לקמפיינים של מטרות סטודיו קידום על ידי לקוח חי ומדינת חיוב מהפלטפורמה שלך: "יש לך חשבונית ללא תשלום", "הזמנה מתקרבת", "תבטל" כל מחבר (התקנה מראש, שוק או אחד שאתה בונה את עצמך) מצטרף על ידי יישום שתי שיטות קטנות. OpsIQ שינויים מרכזיים, שום פלטפורמה קשיחה: המחבר שלך מופיע כפלטפורמה בכרטיסיה של סטודיו Targeting עם טיפת העובדות שלו, וכמה מחברים יכולים להיות מופעלים לצד זה.

עקבו
קידום קהל היעדזהות מאומתת עברה לקהל מחברים הקוראים לייצר עובדות שמניעות את כלל המיקוד, עם פתק שלא סגור.קידום קהל היעדסביבת העבודהמחוברזהות אומתקהל (Flags)המחבר שלךעובדהunpaid_invoices = 2אמתחשבונות_ לא- משולם 1תוכניות קמפייןנכשל: לקוח לא ידוע או כל טעות→הקמפיין נשאר חבוי.1TWO METHODSתגית: + Flags2LIVE STATEללא תשלום, החלפה, מעמד3FAIL-SAFEלעולם אל תוכיח לאדם הלא נכון
התשובות שלך חיות עובדות לחיוב עבור המבקר הרשום; יעדי האולפן עליהם, ולא נסגרים כך שהצעת חיוב לעולם לא מגיעה לאדם הלא נכון.

איך זה עובד

1
חתכו את העובדות שלכם

יישום קהל קלולוג () על שיעור המחבר שלך.זה מחזיר תווית ואת רשימת המפתחות הפלטפורמה שלך יכול לענות.כל מפתח מופיע בירידה באולפן תחת שם הפלטפורמה שלך.

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
נעשה

ניתן לחבר את הכרטיסייה קידום סטודיו הילוך גדל סעיף "Client & חיוב" הרישום הפלטפורמה שלך; מנהלי ניהול בונים כללים כמו "לא שולמו_inחשבונות >= == 1"כל עובדה הופכת גם למשתנה אישיזציה כמו {unpaid_invoices}.

מחבר. php, החוזה השלם של פרומו_אודינס
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() מערך כך הפלטפורמה ורשימת השוק הוא כ-capable הקהל (גילויי גם עובד מנוכחות השיטה, אך ההכרזה היא האות הנקי). connectors/whmcs מחבר הוא יישום ההתייחסות המלא.

שם מפתח

אות קטנה 2-60 תווים, מתאימים ^[a- z0- 9_]+$. סוגים: מספר, טקסט, בוול. מפתחות שלא הוכרזו המוחזרים על ידי 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 למטה, הלקוח לא נמצא, זמן (כלל שהעובדה שלו נעדרת עושה את הקמפיין לא להראות.פופאפ מצופה הצעת חוק חייב אף פעם לא להגיע לאדם הלא נכון; OpsIQ נאכף גם את זה ב-Purderer.

ביצועים

קהל הצופים (Flags) נקרא על פי רוב לחבר בתצוגת דף, ורק כאשר קמפיין שפורסם למעשה משתמש בחוקים של הפלטפורמה שלך. אנונימי המבקרים עולים לך אפס שיחות. 1-2 API שיחות; OpsIQ מתמזגים בתוך הבקשה.

מפעילי חינם

Admins משלבים את המפתחות שלך עם =, ==>= <,<= מכיל, הוא מוגדר, ריק, אתה רק מספק ערכים.

אסימונים

כל עובדה מכפילת כמשתנה בהעתק הקמפיין: {unpaid_invoices}, {client_status} בנוסף ל-The Built-ins {first_name} ו {client_email} ערכים הם מקודשים לפני ביצוע.

No-code Market Connectors

עובדות אוטומטיות

הצהרה (JSON-רק) קשרי שוק מקבלים promo_audience בחינם: אם הקשר שלך מכריז על לקוחות/משתמשים, חשבונות, הזמנות או מנויים משאבים, OpsIQ מקבל את customer_status, unpaid_invoices, amount_due, awaited_orders, active_subscriptions ו- subscription_status מהפעולות החיפוש הקיימות שלך. אין קוד בכלל.

קטלוג מותאם אישית (settings).json)

הוסף קהל_capabilities object: {"label": "הפלטפורמה שלי", "keys": [ {Kkey]: "פות_carts", "לאבל": עגלות פתוחות, "טיפוס": מספר"; כדי לשלוט בדיוק אילו עובדות (ולייבלים) מופיעות בירידה באולפן.

בדיקה של הספק שלך

1
לאפשר למחבר

מחברים > מחברך > אפשרות, ולאחר מכן פתח כל כרטיסה ממוקדת של הקמפיין שלך חייב להופיע תחת "קלינט וחיוב (מחברים)".

2
לבנות שלטון

הוספת: הפלטפורמה שלך · מפתח · >= · 1 והגדרת "לקוחות מחוברים בלבד". שמור ופרסם.

3
לבדוק את שני הכיוונים

היכנסו לפלטפורמה שלכם כלקוח שמתאים לחוק (פופup חייב להראות) וכמי שאינו (הפופה חייבת להישאר חבויה).

Fire a Campaign from Your Own Code (הטריגר של הלקוח)

למה

מעבר לטריגרים המובנים (עיכוב, לגלול, לא עקביים, idle, לחץ, דפים-viewed, צ'אט / פעילות כרטיס), אתה יכול לירות קמפיין מכל מקום באתר שלך או לחבר מראש, לאחר שלב בדיקה מוצלח, כאשר עגבת ננטשת, כאשר SPA שלך משתנה מסלול, וכו '.

איך

הגדר את גורם הקמפיין מותאם אישית שם אירוע (למשל checkout_failedלאחר מכן התקשר ל-Wolner מהעמוד שלך:

אתר האינטרנט שלך / מחבר Front-end JS
// 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');
💡
תוך כדי אירוע שמעולם לא עקף מיקוד או תדירות, הוא משחרר רק את "מתי" הקמפיין עדיין צריך לעבור כל כלל (ג'ו, קהל, הסכמה, כובעים) לפני שהוא מראה.
המדריך המלא של איך לשימוש (עיצוב, בלוקים, ניתוח, A / B, פרסום) חי במרכז העזרה בתוך האפליקציה תחת אנגלית→קידום סטודיוהיכולת כאן מתגלה באופן אוטומטי מכל מחבר של ENABLED במחברים/או בשוק_קישורים / אין מה לרשום.לעבור את שתי השיטות, והסטודיו עושה את השאר.
מחברים (Connectors)

יכולת המחברת (Contract) 2.2)

ה survey יכולת מאפשרת לכל מתאםי זהות של לקוחות מאומתים, עובדות קהל, משתנים בטוחים ומועמדים לסקר סטודיו.זה עצמאי מלהיות עצמאיות מה-Scar Studio. promo_audience ואינו נותן מחבר בעלות על סקרים, תגובות, ניתוח או משלוח דואר אלקטרוני.

💡
מעמד יישום זה הוא שלם וניתן היום: Connector Contract 2.2, SurveyConnectorInterfaceהפאנל המארגן, שנוצר SurveyProvider.php, metadata החבילה והתאמה של בידוד כל הספינה.התנה עדיין אינה מחווטת: SurveyConnectorRegistry הוא מיושם ובדיקה, אבל אין סקר זמן ריצה קורא לזה עדיין, כך בריאות ספק אינה מעוקלת ב- admin UI ולא חבילת קישור שפורסמה מצהירה על היכולת. Signed-token Survey Identity Gateway, מיקוד ואינטגרציה משתנה, חומרת CRM Outreach ואת הספק הראשון שנשלח מיפוי נשארים שלבים נפרדים. Build Against this contract Now; מצפה מהזמן להתחיל לצרוך אותו בהודעה מאוחרת יותר.

אחריות

קטלוג ועובדות

הצהרה על עובדות קנוניות מאובטחות ופתרון ערכים רק עבור נושאים מוגבלים למרחב עבודה, אשר אושרו על ידי השרת. עובדה טיפוסית כוללת order_count, last_order_status, cancelled_order _count, customer_created_at, active_subscription_count ו- open_ticket_count

קטלוג וערכים שונים

לקוחות, חשבון, סדר, מנויים ותמיכה משתנים עם סוג, רגישות והרשאה ההקשר. עותק סקר דורש נפילה ובריחה של תפוקת.

« מינוף יעיל

אפשרות לספור מועמדים ל- CRM Outreach עם מזהה חיצוני יציב, דפים גבולים, סמן דטרמיניסטי ומידע על הסכמת המשתמש. הסקר מקפיא את הקהל הנבחר לפני כל שליחה.

זהות

קבל זהות רק מ-Sing Identity Gateway לאחר חתימה אסימונים, Expiry, מטרה, מחבר ואימות סביבת העבודה.דפדפן-supplied email, ID, תגים או עובדות חיוב הם לעולם לא סמכותי.

שעות בריאות

סקרקונר רגרסי נועד לדווח על ספקים תואמים, חסומים ולא זמינים ללא חשיפת הגדרות, מסלולים, זהות גולמית או הודעות יוצאות דופן, ספק חסום לא ניתן להפעיל מעולם.משטח הדיווח עדיין אינו נחשף ב- admin UI: היום ספק חסם הוא פשוט אינרטי.

חוקים שלא נסגרו

מפתחות לא ברורים, סוגים שגויים, ערכים גדולים יותר, אי התאמה לנושא, חיבור זמנם וזהויות בלתי ידועות נדחו.חוק מיקוד הדורש עובדה שאינה זמינה אינו תואם. דפי Recipient הם מקופים ומבודקים. ערכים רגישים אף פעם לא מופיעים בתצוגה מקדימה או יומני ציבור.

שער שחרור

חוזים 2.2 ספינות כניסה לרישום יכולת, ממשק, פאנל מיפוי סקר, שנוצר SurveyProvider.php, גירסה של יכולת, התייחסות ל-ME/developer ותיקוןי קונפורציה. Commerce, Helpdesk, SaaS Bridge ופרופילים PHP מקומיים כוללים את זה; תקן API מחברים בוחרים בשער סטטי דוחים ספקית סקר שמכנה סביבת קידום, שולחן או יכולת.

💡
העתק מקידום הוא יבוא בלבד: הרוכש רשאי לתרגם מיפויים של קידום מכירות תואמות פעם, לחסוך עותק בעל שם סקר מלא והוכחה לתיעוד. Deleting or Change the Promotion אסור לשנות את התנהגות הסקר.
מחברים (Connectors)

יכולת משוב (Contract) 2.2)

ה reply_feedback היכולת מראה דירוגים של פלטפורמה משלה OpsIQ כוכב שלקוח נותן תשובה בתוך צוות WHMCS אזור הלקוחות נוחת על תגובת SAME OpsIQ ערכת הניהול, עם אותו השבב, שירות הסוכן אשראי, כניסה לדף משוב ו- Team & Performance חישוב כדירוג שניתן על דירוג OpsIQ כרטיס פורטר אחד אחסון, שבב אחד, צינור אחד; המחבר רק מתורגם.

הדרך היחידה לכתוב

יש בדיוק שני מסלולי כניסה ואמת אחת. OpsIQ כרטיסי פורטל כתובים ב- Natively. Platform זורמים דרך המחבר, וקרקעות הליבה כל אירוע באמצעות ReplyFeedback::recordMirrored()אותו עמודות, חוק צוות בלבד, אחד-לשעבר-עשר שלווים סימנטטיקה, חותמת חלל העבודה וקול הלקוח המאינדקסים את השימושים בפורטל. מחבר לעולם לא כותב שורות משוב עצמו.

הודעה (ארבע קבצים, ולאחר מכן חתימה מחדש)

1
connector_contract.json

הוסף את היכולות.reply_feedback כניסה: גירסה 1.0, ה-RefeedbackConnector Interface, שיטות לענותFeedbackCatalog ומשיכת replyFeedגיבוי, מרמז על Inbound_ticket.

2
settings.json

הוסף תגובה_feedback לרשימת היכולות.זה מה שגילוי המחבר קורא.

3
spec.json

תגובה מוקדמת_feed. modes (poll ו / או Webhook) ואת סולם הדירוג של הפלטפורמה.זהו מה ששער ההתאמה קורא.

4
מעמד ריצה

יישום הממשק, התשובה הרשימה_feedback ביכולות (), ולאחר מכן לחתום על החבילה.

אחריות

קטלוג

מצבי Declare, סולם הדירוג של הפלטפורמה עצמו (core Normalises to the Native 1-5וכל אסימונים של תגובה, הקטלוג חייב להסכים עם ספק.json.

תרגום לעברית

משיכתו של ReplyFeedback חוזרת לאירועים קנטוןיים: כרטיס פלטפורמה, תגובה פלטפורמה עונה id, דירוג, תגובה אופציונלית / תגובה, הגשת זמן ואירוע יציב_id.זה קורא ומתורגם.זה אף פעם לא כותב.

חוסר יכולת

אירוע_id יציב ל-Sate STATE, כך שאירוע משוחזר הוא ללא-op ודירוג שונה (המבחן מנצח, כמו הפורטל).

משמעת

דפים הם מוגבל ודטרמיניסטיים; סמן שלא מתקדם מסיים את ההריצה. מילוי היסטוריה מועבר כחלון מתגלגל, לעולם לא משיכה אחת ענקיים.

בטיחות Probe

ללא תצורה, להחזיר דף שלם ריק במקום לזרוק.רץ הקונפורמציה חוקר עם טיעונים ריקים.

פתרון לא סגור

הליבה פותרת כל אירוע לתשובה מקומית על ידי מסמן המראה כבר חותמות הכרטיס (המראה)<slug>:<ticket>:reply:<reply>אירוע שאינו ניתן לפתור הוא לא ניפול, לעולם לא נחשד; משוב רק מצורף לתשובות הצוות; ואשראי הסוכן תמיד מגיע מהמחבר הקיים של התשובה.הדירוג כותב אף פעם לא משנה את הסמכות דורשות יכולת זו. inbound_ticket או ticket_mirror.

דוגמה: WHMCS

WHMCS חנויות לקוחות-area per-reply כוכבים דירוגים tblticketreplies.ratingThe WHMCS מחבר מכריז על מצב סקר עם 1-5 גודל, אוניות ticket_reply_ratings פקודה ממסר בקובץ הגשר שלה, ומתרגם כל שורה לאירוע שילדיהם מתאימים לשדש. whmcs:<ticket>:reply:<reply> מציין את מראה הכרטיס שלה כבר חותמת.לאחר שדרוג המחבר, העתק מחדש את קובץ הגשר לקובץ גשר WHMCS השרת כך שהמפקדה החדשה קיימת שם.

💡
החוזה המלא עם ממשק, צורות אירוע, כללי נורמליזציה ורשימת ההתאמות: doc/contracts/TICKET_REPLY_FEEDBACK_CAPABILITY.md בתוך OpsIQ קבלה: שיעור תגובה בתוך הפלטפורמה, לחכות לסקר השעה, ואותה תשובה באותה התשובה.OpsIQ מציג את השבב, דף ה- Feedback מתעד אותו, ואירוע משוחזר לא משנה כלום.
מחברים (Connectors)

יכולת מיזוג כרטיסים (Contract) 2.4)

ה ticket_merge היכולת הופכת את הכרטיס למזג OpsIQ מתמזג על כל פלטפורמת כרטיסים מחוברת.כרטיס הפלטפורמה הנמשכת מקבל את ההודעות של הכרטיסים הממוזגים, החל עם מסר פתיחת כרטיס ממוזג, במקום הכרטיס המשולב רק סגור.

למה הוא קיים

מיזוג ב OpsIQ מעביר כל מסר של הכרטיסים הממוזגים לכרטיס המוחזק, ומסיר את הכרטיסים המוזגו 2.4 מחבר שמע רק ticket.deleted לכל כרטיס ממוזג. WHMCS סגרו את הכרטיס ואת השאר WHMCS הכרטיס מעולם לא קיבל את מה שהלקוח כתב לראשונה: הנושא הראה [המוכן] והתוכן חסר.

איזה ליבת שולח

כרטיס (once perrg)

ticket_id, ticket_number, subject and external_ref of the KEPT ticket; native_table (opsiq_tickets); site_key; sources, the merged tickets oldest first, each with ticket_id, ticket_number, subject, external_ref, client_name, client_email, created_at and messages [{reply_id, author_type, author_name, created_at, body}]; merged_by; merged_at. Messages are the customer-visible conversation, captured before the move. Internal notes are never included.

כרטיס כניסה (perמוזג)

עוד אש, עכשיו merged_into {ticket_id, ticket_number, external_ref"הלב אינו מספק אותו לחבר המכריז עליו" ticket_mergeצרכנים אחרים יכולים לומר מיזוג ממחיקה.

אתר אינטרנט

כרטיס.מרגיד הוא אירוע הניתן למסירה.A SaaS Webhook Endpoint מנוי לכרטיס.deleted מקבל גם כרטיס.merged, ולכן שילוב שנבנה לפני אינטגרציה שנבנתה לפני כן 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.

דיווח מה לא התמזג

חזרה, מצב, מוזגה, ציין, לא מורעבת, שגיאה (כל עותק ממוזג שאי אפשר להתמזג הולך unmerged, הליבה חלה על הטיפול נמחק הרגיל שלך (סגור, או למחוק עם הסרת עם זה) mirror_deletes(הופנה מהדף Return Mode לא נתמך רק כאשר הפלטפורמה אינה מתמזגת ואין הערה פרטית. A Transport or auth כשל הוא בסדר=false עם הסיבה; היא רשומה באבחון תרופות.

כבוד למגירות שלך

אותן הגדרות מראות שערות את שאר כרטיס המראה של השער מתמזג.

מרקים שמתחילים בפלטפורמה שלך

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

MergeTicket (ticketid = כרטיס נשמר, מתמזגים = כרטיסים ממוזגים) כאשר שניהם נמצאים בתוך הכרטיס WHMCS; AddTicketnote עם התמליל אחרת.הצרף של הממסר ממזג את המיזוג OpsIQ עותקים כאשר הצוות מתמזג WHMCS.

Zendesk

POST /api/v2/tickets/{id}/merge.json עם הערות מיזוג פרטיות (עד חמישה כרטיסים לקריאה), בנוסף לפרוטוקול כתגובה פרטית על הכרטיס המוחזק, כי Zendesk סגור כרטיסים ממוזגים מבלי להעביר את הערותיהם.

OpsIQ גשר SaaS

POST /v1/tickets/{id}/merge עם source_ids, אשר מעביר את תשובות הפורטל והחזקה; תשובה פנימית נושאת את התעתיק לכרטיסים שמעולם לא היו בפורטל /manage מתמזגים את OpsIQ עותקים.

בונה מחברים

ticket_merge הוא נגזר, לעולם לא מתקתק: חבילה שנוצרת מצהירה על זה כאשר היא מקשרת את כרטיס הפלטפורמה שהוא יוצר (כרטיס שנוצר עם כרטיס קישור), מטפל בכרטיס.מחק או מכריזה עליו ticket_mirrorעל מדרגות הכרטיסים, מתחת מרקיםבחר את פעולת המיזוג של הפלטפורמה (map מתמזגת.target_remote_idומזג.source_remote_ids או להתמזג.source_remote_id(הופנה מהדף פרטי) ופעולה של הערה פרטית.remote_id הערה.body) הממזגים שנוצרו (Tickets) משתמשים גם הם.עם לא, הממציא מזהיר כי הודעות כרטיס ממוזגות לא יגיעו לפלטפורמה.

💡
החוזה המלא: doc/contracts/CONNECTOR_CONTRACT.mdכרטיס סעיף מתמזג.קבלה: תאחד שני כרטיסים ב- OpsIQ שניהם קיימים על הפלטפורמה, ולאחר מכן פותחים את הכרטיס המוחזק בפלטפורמה.המסר הראשון של הכרטיס הממוזג נמצא שם.
מחברים (Connectors)

שוק מחובר

השוק מאפשר לך לגלות, להתקין ולפרסם מחברים שנבנו על ידי הקהילה.

שוק
שוק מחובררשת חיפושית של כרטיסי מחבר הקהילה עם קטגוריות, להתקין כפתורים ודירוגי כוכבים.שוק מחוברסביבת העבודהאנשי חיפוש...Calendlyלוח זמניםהתקן★ 4.8HubSpotאתר האינטרנט הרשמי של CRMהתקן★ 4.6Mailchimpדואר אלקטרוניהתקן★ 4.7QuickBooksחשבונאותהתקן★ 4.5Twilioהודעות טקסטהתקן★ 4.9לאיוןדוקהתקן★ 4.41DISCOVERמחבר הקהילה2התקןלחץ אחד3PUBLISHלחתום ולמסור את שלך
מחברים קהילתיים Browse, להתקין בלחיצה אחת או לחתום ולפרסם משלך, מותקנות מראש ושוק tiersable שניהם.

מציאת והתקנת מחברים

1
עיין

לכו לחבר > Marketplace. Search by Name, קטגוריה או פלטפורמה

2
סקירה

בדוק את התיאור, תמיכה בפעולות ודירוגים.

3
התקן

לחץ על Install.חבילת החיבור מורידה ומתקין לשוק_linkors/.

4
הגדרות

לאפשר לו להתחבר, היכנס API אישורים ומבחן.

פרסום מחבר

1
לבנות ומבחן

השתמש ב- Connector Builder.בדוק את כל הפעולות

2
חבילה

ליצור פרופיל json פעולות.json ידע.json קובצי PHP ו-PHP.

3
סימן Sign

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כל דבר שהותקן מהשוק, וכל מה ש- Connector Builder מפרסם על התקנה זו.

שוק_קישורים / - שבו חבילות מוכתבות

ההוצאה לאור של חבילות שוק ראשון.זה לא שורש גילוי: שום דבר כאן אינו חי עד שהוא ארוז, חתום, מושרש לתוך הקטלוג והתקנה, שבו נקודה העתק קרקעות במחברים /.

💡
הביטו בשני המקומות: חבילה שכתבתם תחת שוק_קישורים / אינה העותק שפועל - התקנת עותקים אותו לחבר/ה ורק עותק זה מתגלה בזמן ריצה.StripeBigCommerce, Magento2PrestaShop, OpenCart, Amazon SES, Postmark ו-Reend הם כל חבילות השוק: להתקין אחד לפני מצפה למצוא אותו ב Connectors.
מפתחים

API ו- Webhook Buildinger

The The API Webhook Builder מאפשר לך ליצור מותאם אישית API נקודות קצה ומקשיבי Webhook בפנים OpsIQ בלי לכתוב PHP

API בונה
API ו- Webhook Buildingerבונה בוחר סוג טריגר (בשורה התחתונה, לוח זמנים, אירוע, ידני) שמזין לפעולה שניתן להגדרה.API Webhook Buildingerסביבת העבודהתגרור.אתר אינטרנט Inbound Webhookלוח זמנים (cron)OpsIQ אירוע האירועידניפעולההמפה נכנסת→יצירת כרטיסים / הודעה APIלחסוך נקודות קצה1גורמיםWebhook · לוח זמנים · אירוע · מדריך2NO RAW PHPנבנה ב UI3אקשן.שדות מפה, ואז לרוץ
לבנות נקודות קצה ללא PHP גולמי: לבחור גורם (האינטרנט הנכנס, לוח הזמנים, האירוע או ידני), ולאחר מכן למפות שדות לפעולה.

טריגרים

אירוע

לרוץ כשמשהו קורה OpsIQ כאשר מערכת חיצונית מציגה אירוע מתאים לרשת שלך URL הקלד את שם האירוע, למשל כרטיס.

לוח זמנים

השתמש באחד מאירועי המרווח המובנו בשם האירוע: חצץ, בעדינות או cron. ly. aily או crun. daily. The Actions and Triggers מסך יש כפתורים עבור אלה, כך שאתה לא צריך לזכור אותם.

ביטוי

לרוץ כאשר מנהל מערכת מבקש את AI עבור זה בשפה פשוטה. הוסף את הביטוי שאמור להתאים, למשל למצוא לקוח.

אתר אינטרנט Inbound Webhook

מערכת חיצונית שולחת HTTP POST שלך OpsIQ Webhook URL עם שם אירוע, כל גורם להאזנה לאירוע הזה בוער.

רק לרוץ לפעמים: תנאים

גורם אירוע יכול לשאת תנאים, כך שהוא רק פועל כאשר הנתונים הנכנסים תואמים.ללא תנאים הוא רץ בכל פעם שהאירוע יורה.

שדה

דרך לתוך נתוני האירוע. השתמש ב- dot for kened Values, למשל לקוח.

התאמה לכל או

בחרו אם כל כלל חייב להתאים, או רק אחד מהם.

בדיקות טקסט

שווים, לא שווה, מכיל, אינו מכיל, מתחיל עם, הוא אחד, הוא לא אחד.התאמה מתעלמת הון.

מספר בדיקות

יותר מ, לפחות פחות מאשר, ברוב המספרים הכתובים כטקסט עדיין מתווה נכון.

בדיקות נוכחות

הוא קיים, חסר, ריק, אינו ריק.

רק סמן את מהנדס ה- On-call לכרטיסים דחופים

סקורסארי:
כרטיס האירוע נוצר עם כלל אחד: עדיפות שווה דחוף.
מה לעשות:

הפעולה פועלת עבור כרטיסים דחופים ומוגבל לכל דבר אחר.אין צורך במסנן בסוף שלך.

💡
אם אתה משאיר את הכללים ריק הגורם פועל על כל אירוע התאמה, שהוא אותו התנהגות כמו לפני התנאים היו קיימים.

פעולות

שלח Webhook

שלח HTTP POST לחיצוני URL עם תשלום מותאם אישית.

יצירת כרטיסים

צור כרטיס תמיכה עם מחלקה, נושא והודעה.

שלח דואר אלקטרוני

שלח אימייל עם תבנית אישית.

עדכון רשומות

עדכון לקוח, כרטיס או CRM.

הפעל את הקישור

הוצא לפועל פעולה רשומה ממחבר מורשה עם הרשאת המחברת שלו וחוקי האישור שלה.

לרוץ OpsIQ גנרל כללי API פעולה

חפש את השם המלא API קטלוג.שדות, היקףים, הרשאות, אישור, סודיות ותמיכה יבשה באים מחוזה הפעולה החי; זרימת העבודה מבצעת בתוך סביבת העבודה וההקשר המנהלי שלה.

שלח ספק-native API בקשה

השתמש במחבר Native API קרא או אישר את Native API לכתוב פעולה כאשר הספק קצהpoint אין פעולה מחוספסת. Credentials נשאר בתוך המחבר ורק נתיבי ספק יחסי מתקבלים.

The Actions & Triggers בונה /api/v1.php, OpenAPI ו- Postman משתמשים באותה פעולהContractregistry, כך שפעולה שנבחרת לא יכולה להיסחף מתיעוד בריצה.
מפתחים

טריגר ספרים

מתכון מוכן לשימוש ב-Tere-action עבור אוטומציה משותפת.

איך זה עובד
טריגר ספריםזרימת מתכון: זמן up. down Webhook עובר מסנן ייצור, ואז האוהדים החוצה כדי ליצור כרטיס דחוף ולעדכן את 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

כרטיסים ל-Estale

סקורסארי:
אם כרטיס אין תשובה 24 שעות, להקצות להובלת צוות.
מה לעשות:

Trigger: Schedule (every hour) Condition: ticket.status = "Open" AND ticket.last_reply_age > 86400 Action: Assign to team-lead, add internal note

מפתחים

בניית הפעולה הראשונה שלך

זה הולך יוצר פעולת מחבר פשוטה מאפס.

בניית פעולות
בניית פעולהטופס הגנה לפעולה: שם Lookup_order, בקשת GET /orders/{id}, פרמטר id , ועברה 200 מבחן.פעולה חדשהסביבת העבודהפעולה חדשהשם השםlookup_orderבקשהGET/orders/{id}תנאיםהמונחים: mit200 • הסדר שנמצא1DEFINEשם, שיטה, נקודת קצה2PARAMSקלטות3בדיקהLive Live 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" }
      ]
    }
  ]
}
⚠️
שלושה דברים שגורמים לפעולה לא להירשם כלל.פעולה_id היא reQUIRED וחייב להיות2To to100דמויות של אותיות נמוכות יותר, ספרות ומדגישות - כניסה ללא אחת נדחתה באופן מיידי.המניפסט הוא אובייקט עם "פעולות" LIST, לא מפה ממומשת בשם פעולה.ומיפוי התגובה הוא "returns" עם נתיבים DOTTED (data.id), לא JSONPath (data) – אין "response_mapping", "reverse" או "נקודת קצה" בשום מקום.
3
מבחן עם יבש-run

בשלב הסקירה של Connector Builder, הקש יבש לרוץ.זה מפעיל את רשימת הסימון המלא של התאוונים נגד החבילה שלך, וכאשר סיפקת אישורים, עושה מבחן חיבור אמיתי.זה לא משתמש בנתונים מדגם.

4
לבדוק שימוש ב-AI

שאל את מנהל AI: "תראו מוצר Widget Pro" על ה-AI למצוא ולבצע את הפעולה.

⚠️
הוספת פעולה לפעולות.jsonאין ליצור מסלול AJAX, כך שאין מה לחדש את פעולות החיבור.OpsIQכאשר המחבר מופעל או הגדרותיו נשמרים: להחזיר את המחבר ואת הפעולה החדשה מופיעה.כלים / גנג 'ב_course_registry.php מכסה את מנהל AJAX שלח ואין לו שום השפעה על פעולות חיבור.
מפתחים

תוצאות אירועים Inbound

נקודות קצה נכנסות לחתימות JSON ממערכת אחרת ולהפוך אותה לפעילות מגע מורכבת שיכולה להאכיל קווי זמן, ניקוד וזרימות עבודה.

מסך המוצר
נקודות קצהלכל מקור יש משלו URL סוד, מיפוי ותוצאה של פעילות לאחרונה.נקודות קצהסביבת העבודההמונחים:5ACCEPTED12.4kREJECTED18ביקורת עבודה WorkSPACEפלטפורמת Billingאירועים מנוייםבריאמוצר Appאירועים של Signup and Useבריאמזהה אירועיםprovider_event_idדיפלופחתימהX-OpsIQ-Inbound-SignatureHMAC1CREATE SOURCEURL הסוד2MAP PAYLOADדואר אלקטרוני, אירוע וזיהוי3וודאי.HMAC, ingest
לכל מקור יש משלו URL סוד, מיפוי ותוצאה של פעילות לאחרונה.

ליצור מקור אחד למערכת שליחת. OpsIQ יוצר A URL סוד וסוד - שלח JSON עם Content-Type: application/json וחתום על הגוף הגולמי המדויק באמצעות HMAC-SHA256:

X-OpsIQ-Inbound-Signature: sha256=<hex hmac>

מפה המפה JSON נתיבים עבור דוא"ל מגע, שם אירוע וזיהוי אירועים אופציונליים.זה האירוע הוא מפתח השכפול המועדף.הפעילות המתקבלת נכנסת לקו הזמן ליצירת קשר ויכולה להשפיע על ניקוד מוביל, פלחות, כללי מחזור חיים וזרימות עבודה.

חתימה לא חוקית לפני שסעיף נתונים עסקיים. רוטט סוד על ידי עדכון שני הצדדים בתוך חלון מבוקר; אל תרשום את הסוד.

מפתחים

פעולות Webhook

Outbound Webhook הממשל יוצר מנויים חתום, נקודות קצה בדיקות ומעקב אחר משלוח סינכרוני ובריאות retry.

מסך המוצר
אתר אינטרנטדף האינטרנט Outbound מכיל נקודות קצה HTTPS, מנויים אירועים, בריאות משלוח ומבחן חתום על ידי לחיצה אחת.אתר אינטרנטסביבת העבודהENDPOINTS7SUCCESS99.2%ניסיון4ביקורת עבודה WorkSPACEמראה CRMצור קשר* והעסקהבריאאוטובוס תמיכהכרטיס: * וצ'אט*בריאמחסן נתונים*מנסה מחדשמבחן משלוחהמונחים: payloadמוכן1SUBSCRIBEHTTPS URL אירועים ואירועים2AUTHENTICATEחתימה HMAC3OBSERVEרכבת אספקה וחזור
דף האינטרנט Outbound מכיל נקודות קצה HTTPS, מנויים אירועים, בריאות משלוח ומבחן חתום על ידי לחיצה אחת.

מנהלים מלאים יוצרים נקודת קצה של HTTPS, בוחרים אירועים ספציפיים או כרטיס הבר, מאחסנים את הסוד בבטחה ושולחים מבחן. OpsIQ סימן לעומס הגלם עם HMAC-SHA256:

X-OpsIQ-Signature: sha256=<hex hmac>

בדוק את החתימה לפני deserialing או משחק.משלוח הוא סינכרוני ובאופן אוטומטי retried לאחר בערך 1דקה, 5 דקות, 30 דקות,2שעות ו 12 שעותהשתמש במסילות הרכבת האחרונה לבדיקת סטטוס, קוד תגובה וספירת ניסיון.

המקלט שלך חייב להיות idempotent כי כל מערכת סינכרונית יכולה להחזיר תגובה 2xx רק לאחר קבלה ממושכת.

מפתחים

ווב הוקים

Webhooks מאפשר מערכות חיצוניות להודיע OpsIQ כאשר משהו קורה (בקרב) ותן OpsIQ להודיע על מערכות חיצוניות כאשר משהו קורה פנימית (התחילה).

ווב הוקים
אתר אינטרנטמסך ה-webhooks: שולחן נקודות קצה עם שם, אירועים רשומים, נקודות מצב משלוח אחרונים, ולחיצת דואר.אתר אינטרנטסביבת העבודהנקודות קצהעזרה + Save Endpointשם NAMEאירועיםאתגריםSlack#sales-alertshttps://hooks.slack.com/…crmג'ון, סדרמבחןמראה CRMhttps://api.acme.com/hookצור קשר*, הכרטיס.מבחןZapierhttps://hooks.zapier.com/…chat.startedמבחן1ENDPOINTSשם, אירועים URL2SIGNEDHMAC + Auto-retried3SEND TESTלבדוק משלוחים
מסך ה-webhooks האמיתי: כל נקודת מוצא עם האירועים שלה, בריאות המשלוח האחרונה ומבחן שלח לחץ אחד, חתום ומהדהד.

אתר אינטרנט

מנוי

עקבו אחרי Webhooks. Add a endpoint URL בחרו אירועים כדי לקבל.

אירועים

להירשם לאירועים ספציפיים, או ["*"] הרשימה המלאה של ההתקנה שלך היא למטה, ו webhooks.events.list מחזירים אותו כמוJSON.

נסי שוב

משלוחים כושלים חוזרים עם backoff אקספוננציאלי. 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).

אספקה

Webhooks מועברים באמצעות תור העבודה, לא לחסום OpsIQ פעולות.

זיהוי אירועים

לכל אירוע יש אירוע ייחודי_id שנשאר אותו הדבר על פני פיגור.

מה מגיע עם כל משלוח

X-OpsIQ-Event

שם האירוע, למשל ticket.created.

X-OpsIQ-Delivery

המסירה נשארת אותו הדבר על פני רטיבות - השתמש בו כדי להתעלם משוכפלה.

X-OpsIQ-Timestamp

שניות של יוניקס בחתימה על הזמן, מחיקת כל דבר מבוגר מ-5 דקות.

X-OpsIQ-Signature

החתימה כ v2=<hex>« פיצול על =הצד השמאלי הוא הגרסה, הצד הימני הוא הערך שאתה משווה.

X-OpsIQ-Signature-Version

התוכנית בשימוש, כיום v2קרא את זה מהראש ולא מקשה על כך, והקוד שלך ממשיך לעבוד אם ה- v3 כבר הוסיף.

⚠️
המחרוזת החתומה היא version.timestamp.delivery_id.bodyלא הגוף הגולמי לבדו, הוא רק הסיבה הנפוצה ביותר לכך שאימות נכשל - כל משלוח אמיתי נדחה והנקודת הסיום נשברת.

לבדוק משלוח

PHP - לאמתOpsIQWebhook
<?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 - לאמתOpsIQWebhook
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אז הקוד שלך אף פעם לא צריך לנסח אותו קשה.

ניתוח Analytics (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.

crm (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.

איך בודקים את ה-Webhooks באופן מקומי?+

השתמש Ngrok כדי לחשוף את השרת המקומי שלך URL.

מה אם נקודת הסיום שלי יורדת באופן זמני?+

OpsIQ חוזרים עם backoff אקספוננציאלי, אם נקודת הסיום שלך מחלימה בתוך החלון השולחני, אין אירועים אבודים.

מפתחים

מפתחות API

API מפתחות אותנטיים בקשות OpsIQ REST API לכל מפתח יש הרשאות.

מפתחות API
מפתחות APIThe The API מסך המפתחות: פאנל בעיות עם רמת גישה וצ'יפס, לצד רשימה של מפתחות קיימים המסכות עם כפתורים ללא תשלום.מפתחות APIסביבת העבודהנושא מפתחגישה Accessקרא רקמוגבלסקוטיםcontacts.readtickets.readevents.writeנושא מפתחהמפתחות שלךשילוב Zapieropq_••••4f2aבטלאפליקציית Mobileopq_••••91c7בטלAnalytics יצואopq_••••2db0בטל1SCOPEDלקריאה בלבד או מוגבלת2PER-ACTIONבחר טווחים מדויקים3REVOCABLEרוטט בכל עת
האמיתי API מסך המפתחות: נושא מפתח קבוע, לקריאה בלבד או מוגבל על ידי בחירת היקפים המדויקים, ולבטל כל מפתח בכל עת.

ליצור יצירת API מפתח המפתח

1
היכנס להגדרות > API המפתחות המפתחות

לנווט כדי API ניהול מפתח

2
לחץ על Create Key

תן לזה שם תיאורי.

3
זירות בחירה

תן את המפתח רק מה שהוא צריך.סקוטס מגיע לקריאה וכותב זוגות לכל אזור, כך שניתן יהיה להעניק אינטגרציה של דיווח ולא כלום אחר.

מהירויות זמינות

בחרו את ה-Ficest Place שעושה את העבודה. admin מספק את כל ההיקף למטה, אז להשתמש בו רק כאשר אתה באמת צריך גישה רחבה.

שם הסרטון: crm. write

אנשי קשר, חברות, עסקאות, פעילויות, פלחות, צללים, המרות, מחזור חיים ו- CRM Webhooks.

כרטיסים ל:read / Tickets. write

רשימת כרטיסים וקריאה הודעות שלהם; תגובה, עדכון, פתוח והפעלה של פעולות תור.

שיחות. לקרוא / שיחות כתוב

קראו שיחות צ'אט בשידור חי והיסטוריית הודעות; שלחו מסרים, להקצות ולשנות מעמד.

kb. read / kb

ערכים של בסיס ידע

צ'אט / chat. write

שמור תבניות תגובה

connectors.read

ראה אילו מחברים מותקנים, מה הם יכולים לעשות ולבחון את האישורים שלהם.

automations.read

ראה את הפעולות שלך, מעורר והיסטוריית הריצה שלהם.

departments.read

מחלקות זמינות עבור routing.

notifications.read

כינויים למפעיל בשם

analytics.read

דוחות, CSV יצוא והגדרות דו"ח מתוכננות.

site_intelligence.read

מעקב אחר אתרים ודיווחי SEO שלהם.

files.read

קישורים להורדה לקבצים מצורפים.

status.write

רכיבי דף ותקריות

כתיבה

עוזרי כתיבה AI: טיוטה, סיכוך, תרגם, לשכתב, להלחין, לנתח.

ניהול

הכל, כולל מספר קטן של פעולות רגישות שלא ניתן להגיע במכוון על ידי כל היקף צר: קביעת קשר, שינוי הגדרות פרטיות וקריאה של יומן הגישה.

💡
התקשר למטות עם המפתח שלך כדי לראות בדיוק אילו פעולות הוא יכול להפעיל על ההתקנה שלך, זה תמיד אמין יותר מאשר עבודה מתוך רשימה.

רמות Access

הכל

המפתח יכול לקרוא לכל דבר שהיקפו מאפשר.

קרא רק

כל כתיבת נדחתה, מה שההיקף אומר: הבחירה הבטוחה ביותר לדיווח, לוחות נתונים וכל דבר שלא צריך לשנות את הנתונים.

מוגבל

אתה מעד את הפעולות המדויקות שהמפתח יכול לקרוא להן.כל דבר אחר אינו מבוטל, אפילו בתוך היקף מותר.

4
העתק את המפתח

Shown פעם.התחל עם "opq_"חנות אותו באופן מאובטח.

🚫
לעולם אל תשתף API מפתחות בקוד ציבורי, לצד הלקוח JavaScript השתמש במשתנה סביבה.
מפתחים

התחברו לאתר שלכם

The The OpsIQ widget הוא JavaScript ניתוב באתר שלך למעקב, צ'אט AI, יצירת כרטיסים וזיהוי לקוחות.

איך זה עובד
התחברו לאתר שלכםתג תסריט אחד באינטרנט משמאל, מימין, דף אינטרנט עם הדף OpsIQ בועה צ'אט מופיעה בפינה.<!-- paste before </body> --><script src="https://cdn.opsiq.io/w.js" data-site="ws_8a2f" async></script>
התחברו לאתר שלכם

התקנה בסיסית

תגית: snippet
<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

"chat" (default), "כרטיסים", או "שניהם".

data-position

אפשרי. "תחתית-ימנית" (ברירת מחדל) או "תחתיתה-שמאלית".

data-color

קוד ה-Hex של הצבע הראשי

data-greeting

הודעה ראשונה לברכות

data-language

שפה אופטימלית: "en", "es" ("fr"), "de", "pt", "ar", וכו'.

data-identity-token

Optional. Server-generated חתם על זהות

תמיכה ב-SPA

עקבו אחרי SPA
// 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

כללי CSP עבור widget
script-src 'self' https://your-opsiq-domain.com;
connect-src 'self' https://your-opsiq-domain.com;
frame-src https://your-opsiq-domain.com;
האם האתר מאט את האתר שלי?+

המונחים: under 15 KB zipped, לטעון אסימונים לאחר תוכן הדף.

האם אני יכול להתאים את המראה?+

השתמש ב-Data-color for First Color. Contact Support CSS אפשרויות נוספות.

מפתחים

Widget להתקין מתכונים

מדריכי התקנה ספציפיים של פלטפורמה

איך זה עובד
Widget להתקין מתכוניםהתקנת כרטיסים עבור WordPress, Shopify ו Google Tag Manager כל אחד אומר איפה להוסיף את ה-Widget.פסקהWordPressהתקן את התוסף, היכנסמפתח האתר שלך, הצילו.חנות ShopShopifyעקבו אחרי The snippet intoערכת נושא: לפני /body.GTMמנהל TagCustom 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

סקורסארי:
הוסף לאפליקציית תגובה או 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 אזור הלקוחות
מה לעשות:

הגדר > הגדרות כלליות > תוכן אחר > Global Footer. Paste the snippet

Google Tag Manager

סקורסארי:
הוסף באמצעות GTM.
מה לעשות:

ליצור Custom HTML תגית: paste snippet. Trigger: All Pages

מפתחים

Admin widget in your backend (חוזה אחד, כל פלטפורמה)

Embedd theOpsIQעוזר מנהל - צ'אט ניהולי, תיבת כרטיסים ו- AI כתיבה - בתוך לוח הניהול של הפלטפורמה שלך, כך הצוות שלך אף פעם לא עוזב את הכלים שלהם.SSOזהו חוזה גנרי אחד המיושם בו -15שורות קוד השרת של הפלטפורמה שלך - אותה תבניתZendeskשימוש ב- Intercom ו- DiscourseSSOאין תוסף ל-platform לחכות: כל ערימה שיכולה להתאים את עצמהHMACיכול לעשות את זה היום.

שלב צעד1קו הטביעה

מ אתרים מרוחקים→האתר שלך→קודקוד, העתק את קו העומס ולהוסיף אותו לדפי לוח הניהול שלך (כלי רגל כוללים, תבנית הפריסה או תאבנת אדמיניסטר-ג'S בלבד):

One-lineהטמיע
<script async src="https://YOUR-OPSIQ/opsiq/embed/admin_widget.php?site_key=SITE_KEY&identity_token=TOKEN_FROM_STEP_2"></script>

שלב צעד2- ספרOpsIQמי רשום (server-signed)

רק היישום שלך יודע איזה מנהל חתום - זה לא קצר, הוא מודל אבטחה.שרתך מייצר אסימוניות קצרות מועד מפגישתך, בדיוק כמו אות זהות המבקר, שנחתם עם אותו סוד אתר אינטרנט:

PHP - לחתום על זהות הניהול מהפגישה שלך
<?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.
גישה Per-admin, באופן אוטומטי

כל מנהל שנכנס לפלטפורמה שלך תואם באופן אישי:OpsIQ"שער הגישה למנהל פותר את שם המשתמש + הדואר האלקטרוני של הסימון נגד אחדOpsIQהסוכן (עמוד Team; השתמש ברשימת "הודעות דואר אלקטרוני" של הסוכן כאשר הודעות דוא"ל פלטפורמה שונות) וליישם את סביבת העבודה של סוכן זה, המחלקה ורשאות תיבת הדואר הנכנס.OpsIQלא הטמיעו שינויים.

תפקידים רוכבים לאורך

לא משנה איזה תפקיד מחרוזת שולח הפלטפורמה שלך מוצג עלOpsIQהצד לישועה, האישור תמיד מגיע מןOpsIQרישום סוכן, אף פעם לא מהתפקיד המוצהר.

למה לא לקרוא את עוגיית הכניסה שלנו?

דפדפנים לעולם לא לשלוח את עוגיית הניהול שלך למקור אחר - שום ספק לא יכול "לזהות" את הכניסה שלך קרוס-דומיין.כל מוצר רציני פותר זאת כך: השרת שלך נמוג, חתום.

אין מצב משותף באתר שלך

Off the OpsIQ המארח אין מצב לא חתום או משותף: העומס נשאר חבוי עד שמגיע אסימונים של מנהל מערכת חתום.הסימון=... ערך בעומס הקודים הוא מפתח widget שרק מזהה את האתר; זה לעולם לא יכול לחתום על אף אחד.

ה authenticated דגל - לשים אותו ברמה העליונה

דגל זה הוא הטענה של השרת שלך כי אדם באמת מחובר, וOpsIQמסרב כל אסימונים בלעדיו. "authenticated" => true beside site_key/iat/expלא רק בתוך admin אובייקט נוכחיOpsIQמקבל את זה בכל עמדה, אבל הודעות ישנות יותר רק לקרוא את הרמה העליונה - ואת הכישלון הוא מטעה: רשימת שיחה, היסטוריה ו unread all אותנטיate בסדר בעוד כל צ'אט הופך תשובות "הכניסה של אדם"אם אתה רואה בדיוק את הפיצול הזה, בדוק קודם כל את הדגל.

היגיינה

היכנס רק לשרת, אף פעם לא בדפדפןJavaScript.המשך לקיצור (כמה דקות עד שעות);OpsIQדחיית אסימונים פגים ועתידיים, והחתימה מחייבת את הסימון למפתח האתר שלך.

יישום

ה... WHMCS המודול עושה את זה אוטומטית מה. WHMCS הפעלת מערכת Botble תיקיית הגשר של מתחם המלון עושה את זה מה- Laravel שניהם הם רק החוזה הזה בניבים של הפלטפורמה שלהם - העתק את מה שקורא הכי קרוב לסטאק שלך.

Zero page wiring (קישורים או-declared)

מתי שלךOpsIQהמחבר מאחסן את נקודת הסיום של הזהות שלו. admin_identity_probe_url הגדרת, קו העומס PLAIN הוא כל דפי הניהול שלך צריך: widget מגלה את הבדיקה מן המחבר, קורא לו עם מפתח האתר שלך + widetto אסימונים, ואמתים כל מנהל באופן אוטומטי. data-identity-endpoint תכונה או window.OpsIQAdminIdentityEndpoint.

💡
סוד החתימה מלא בך. באתרים מרוחקים, האתר שלך, קודים, אופציה 3היכנס לצוות שלך, כל דוגמא כבר מכילה את הסוד של האתר הזה, כך שהקוד פועל כפי שהועבר: אין מה להעתיק או להגדיר opsiq_whsec_YOUR_SITE_SECRET כל דוגמא מחפשת OPSIQ_SITE_SECRET (או ההגדרה של המסגרת שלך, בשם בהערות שלה) בשרת תחילה ומשתמש כי כאשר הוא מוגדר, כך שתוכל להעביר את הסוד מתוך הקובץ בכל פעם שתרצה, למשל לסובב אותו ללא קוד עריכה JavaScriptואף פעם אל תתחייבו למוסד ציבורי, כי כל מי שמחזיק את הסוד יכול להיכנס לכל אחד מהלקוחות או הצוות שלכם. WHMCS ו Botble אין צורך בכך: WHMCS שתף עם הסוד המלא, והסוד Botble לוח המחבר ממלא אותו לתוך הגשר.

קוד שלם, פלטפורמה

כל דוגמא מדפיסה את תג ה- Admin Chat רק עבור חבר צוות חתום, עם אסימוני חתם, ועונה על רענון של וידג'ט (?opsiq_identity_refresh=1&role=admin) עם {"success":true,"identity_token":"…"} או 401אתרים מרוחקים, האתר שלך, קודים, אוption 3היכנס לצוות שלך מדפיס את אותו קוד עם מפתח האתר שלך וסוד מלא.

⚠️
הסימון המנהלי הוא הצורה של שני חלקים: Base64url( payload), dot, ולאחר מכן hex HMAC-SHA256 של טקסט זה בסיס64url.זה לא JWT, ו-JWT הוא סרב 24 שעות.

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, יישומים מותאמים אישית) ואת נקודת הקצה שלך הוא קובץ עומד המגפיים את המסגרת לקרוא את מנהל ה-Ded-in, שלושה פרטים יחסוך לך שעות - כל אחד מהם יצר כשל ייצור אמיתי לפני שהוא למד:

עקבו אחרי Bootstrap

ספקי השירות שלך עשויים לפתור request מתוך המכל בזמן ההתחלה. מחזור החיים של Laravel קשור לבקשות שנלכדו, הדבר הראשון שבתוכו Kernel::handle() מראה את ההזמנה: $app->instance('request', Request::capture()) לפני $kernel->bootstrap()או שאתה מקבל "מעמדת ה-Target אינה קיימת".

הקידומת של The Meeting-cookie היאHMAC-keyed

Laravel מודרני מתחיל ערכים של עוגיות עם HMAC שמוחשב בעזרת המפתח של ה-APP (CookieValuePrefix(הופנה מהדף A Plain sha1(name."v2") לעולם לא תוכל להתאים את זה. CookieValuePrefix::validate($name, $decrypted, $keys)עם נפילה מבנית (40תגית: chars + | במיקומים40(ה) ספר: ישיבה ארוכה יותר מאשר40chars (81* תיקון עדיין מחובר) ומפגש שמחייב רק _token בזה.

היכן שהכניסה חיה

הבול האתה הוא login_<guard>_<sha1(guard class)> עבור שומר האינטרנט ברירת המחדל: 'login_web_' . sha1(Illuminate\Auth\SessionGuard::class)סורק כל login_* מפתח מספרי כנפילה עבור שומרים מותאמים אישית.

דבור כמו הגשר

ספינה debug=1 מצב ששמו של צעד כושלת ויוצא דופן - עיוור לתפוס הכל עשתה פיזור חי לא אבחון. Botble גשר (מתוך v1.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 · plain PHP — swap the lookup, keep the signer
<?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ישירות בדפדפן ה-Ded-in עם &debug=1 — תראה את הצעד הלא מוצלח. על Laravel זה כמעט תמיד הרכיב של קישור הבקשה או של ראשי התיבות של העוגיות מעלה.

ההיסטוריה והשיחות עובדות, אבל כל צ'אט אומר "הכניסה של אדם"

הפיצול הקלאסי: הקולון שלך חסר את ה- TOP-LEVEL authenticated דגל - נקודת הקצה של widget מקבל את הסימון, המאמת המשותפת מאחורי זרם הצ'אט מסרבת לכך. "authenticated" => true beside exp.

"המנהל לא נכנעOpsIQ" (HTTP)401)

הסימון אומת, אבל שם המשתמש + הדואר האלקטרוני שלה לא תואםOpsIQהוסף את הסוכןOpsIQ →צוות, או להוסיף את הודעת הדואר האלקטרוני של הפלטפורמה לרשימה זו של הסוכן כאשר הוא שונה משלהם.OpsIQדואר אלקטרוני

הכל403sמהדפדפן, אבל עובד עם כרסול

טיסה מוקדמת של שורה דוחה את אחד מגורמי הבקשה שלך.נקודת הסיום שלך חייבת לענות על התשובה OPTIONS והדהד את המקור המבוקש, או פשוט להימנע ממנהיגים מותאמים אישית - ה- widget רק צריך את העוגייה.

אתמול, נכשל היום

בדוק את exp• אסימונים הם קצרים על ידי עיצוב.ה-widget reprobes באופן אוטומטי, כך שבדרך כלל זה אומר שהנקודת הקצה הפסיקה לראות את הפגישה - סיבוב מפתח אפליקציה, שינוי הפעלה או שינוי של קובץ cookie.

💡
ה-Widget של admin מטשטש עד שהזהות פותרת, וכל שיחות צ'אט/בוקס / נתונים נאכפימות לצד השרת נגד התאומהOpsIQהסוכן ללא קשר לכל דבר שהדף קובע: הסימון פותח את UI; הרשאות תמיד מגיעותOpsIQ.
מפתחים

זהות המבקרים

זהות מחברת מבקרים אנונימיים ללקוחות הידועים. OpsIQ קישורים להיסטוריה, צ'אטים וכרטיסים לפרופיל הלקוחות.

איך זה עובד
זהות המבקריםזרימה: יומני משתמש באתר שלך, אתה נושא אות זהות חתום, ו OpsIQ מאמתים את המפגשים, הצ'אטים והכרטיסים לפרופיל אחד.יומני משתמש בבאתר שלךהמונחים: tokenזהות_token (HMAC)פרופיל אחדsessions+ צ'אטים+ כרטיסים
זהות המבקרים

שתי רמות של זהות, וכשכל אחת מספיקה

רמה1- רמז לא חתום

אתה אומר ל-Widget מי המבקר עם פשטותJavaScriptאובייקט זה ממלא את הדואר האלקטרוני והלקוח id על יומן המבקרים, כך לוח המחוונים שלך מראה חתום על התנועה ומפגשים להצטרף.זה HINT: כל אחד יכול לערוך אותו בדפדפן שלהם, אז כך לוח הזמנים שלך מראה על תנועה ופגישות להצטרף.OpsIQאף פעם אל תשחררו נתונים על העוצמה של זה.

רמה2אות זהות חתום

השרת שלך חותם על סימן קצר מועד עם הסוד של האתר.OpsIQאימות החתימה ורק לאחר מכן מתייחס לאדם כלקוח מוכח.זהו הרמה שמפתחת תשובות בחשבון בצ'אט לקוחות וחיפושי חיבור. השתמש בו לכל דבר זר לא צריך לראות.

⚠️
רמה1זוהי נוחות תצוגה.2אם ניתן לענות על השאלה רק עבור בעל החשבון האמיתי, אתה צריך רמה2.
💡
אתה לא צריך לכתוב רמה. 2 ביד: אתרים מרוחקים → האתר שלך → קוד → C. לקוחות מחוברים יוצרים את קוד החתימה ואת מעבד ההרעננות עבור PHP, WordPress, Laravel, Node.jsפייתון Django.NET, Rails, Java ו-Go. WHMCS הוק וה. Botble גשר החיבור כבר חתום על לקוחות. זהות אומרת מי הלקוח; הזמנותיהם או הזמנותיהם מגיעות לצ'אט דרך חיבור (עם קובץ גשר רק כשלהפלטפורמה אין קשר עם הצ'אט). API).

רמה1- הרמז הבלתי חתום

הגדר את האובייקט לפני התסריט של widget, או התקשרה לזהות () מאוחר יותר לאחר שהאפליקציות שלך יודעות מי חתום.שני הטפסים קוראים; השתמש בכל אחד מתאים לדף שלך.

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זהות חתום על השרת

בדיוק אותו חוזה אסימונים כמו מנהל המערכת widget, עם customer במקום admin אחד. Sign it on your server and pass It to the widget. Two פרטים מחליטים אם זה נכון, ושניהם קלים לטעות:

The The HMAC מכסה את מחרוזת BASE64URL, לאJSON

סימן Sign $payload64לא, $payloadלחתום על הגלםJSONלייצר אסיקן שנראה נכון ונשלח בכל פעם עם תקלה בחתימה.

בסיס 64url, ללא חתומה

תרגום תרגם +/ אל -_ ופס את = padding. Plain base64 happens to survive today; base64url is the contract and is what every OpsIQ verifier and reference connector emits.

אותנטיות הולכת לרמה העליונה

להיות לצד site_key, iat ו expזוהי הטענה שלך כי אדם אמיתי מחובר פנימה, וOpsIQמסרב לסימון בלעדיו.

לקוח הוא חובה

אסיקן הנושא רק אימייל מאמת כחתימה, ואז הוא נשר בשקט.תמיד שלח id.

עקבו אחרי expt

דקות עד שעות, האסימון הוא הצהרת ישיבה, לא חובה לאחסן.

PHP - לחתום על אות זהות לקוח (קוד מדויק זה)
<?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>';
🚫
Sign on the server only. A tokented inדפדפןJavaScriptפירושו להעביר את האתר הסודי לכל מבקר, אשר נותן לכל אחד את היכולת לחדור כל לקוח.

אותו החוזה, שלושה משטחים

צ'אט לקוחות באתר שלך

נושא הלקוחות, עבר identity_token כדי widget.php. Covered לעיל. Optional: עם snippet A ומחבר הצ'אט כבר מאמת את הלקוחות עצמם (מספר הזמנה או מספר ההזמנה עם הוכחה, או קוד דואר אלקטרוני לפני פקודה מרחוק אתרים, קודיים, C יוצר את הקוד להכרה אוטומטית של לקוחות שכבר נרשמו באתר שלך.

צ'אט אדמין בתוך הגב

נושא הניהול, עברopsiq/ Embed/admin_widget.php. Same Signer, different subject key: ראה "Admin widget in your backend".

פורטל תמיכה קישורים עמוקים

גרסה קפדנית יותר: אותן טענות בתוספת Jti ו- יחיד_use: נכון, וכן120- שני החיים, כי הסימון נוסע בתוךURLוחייב להיות מבלה פעם אחת.אל תעבדו את זה. הגדרות, פורטל התמיכה יש קטע מוכן עבור השפה שלך, ואת הפלטפורמה מנקה אותו בשבילך כאשר אזור החשבון שלך פועל על השרת הזה.

מה אם מבקר מנקה עוגיות?+

הם הופכים אנונימיים עד שהם מזוהים שוב.OpsIQקישור את השיא האנונימי החדש לפרופיל הלקוח ברגע שמגיע רמז או אסיקן.

למה הסימון שלי מאמת את יומן המבקרים, אך לא לשאלות חשבון?+

זו הרמה1רמה /2הרמזים המחולקים את יומן המבקרים ושום דבר אחר לא צריך חתימה מאומתת.

מפתחים

פורטל Sign-in: קוד לכל פלטפורמה

שלח לקוח שכבר חתום ביישום שלך ישר לתוך פורטל התמיכה שלך, חתום, ללא סיסמה שנייה. דף זה מסביר כיצד פועל ה- Handoff, כל תביעה בסימון, ההתקנה ותוואי שלם עבור כל פלטפורמה. הגדרות, תמיכה פורטלים אותו הקוד עם כתובת הפורטל שלך ואת מפתח סביבת העבודה מלא.

איך זה עובד

1
הלקוח לוחץ על התמיכה באפליקציית שלך

הקישור מצביע על מסלול קטן בשרת שלך, למשל /support-portal. אף פעם לא בקישור שכבר מכיל אסימונים: אות בעמוד דולף באמצעות מקור דף, היסטוריית הדפדפן וראש הפנר.

2
בדיקות המסלול שחתומות ב

הוא קורא ללקוח מהפגישה שלך.מבקר שאינו חתום נשלח לכניסתך תחילה וחוזר אל המסלול לאחר מכן.

3
המסלול חותם על טון חד פעמי

תקן HS256 JWT חתום עם סוד החתימה של סביבת העבודה, שרק השרת שלך מחזיק.זה יפוג לאחר שהוא מתפוגג 120 שניות וניתן להשתמש בהן פעם אחת.

4
הדרך מפנה אל הפורטל

אל דף הפורטל הגיע הלקוח מתי שהפורטל ביקש אחד (opsiq_portal_return, מתקבל רק בתוך כתובת הפורטל שלך, אחרת בית הפורטל.התשובה נושאת את Referrer-Policy: no-referreer ו- Cache-Control: ללא חנות.

5
הפורטל מאמת ומסמן את הלקוח

החתימה, מפתח החלל העבודה, ה- Expiry ו- Onetime id נבדקים.הלקוח נמצא או נוצר על ידי דואר אלקטרוני והבקשות הקיימות שלהם תואמות להם.

הסימון, לטענת התובע

site_key

מפתח החלל שלך. A טון שנוצר עבור סביבת עבודה אחרת הוא גם מסרב כאשר הוא חתום כראוי.

דברים / exp

עקרות ועוני, בתוך שניות.The Portal token Lives 120 שניות: זה רק חייב לשרוד שינוי אחד.

אמת: אמיתי

הודעת האפליקציה שלך שהיא באמת חתמה על אדם זה.

jti + single_use: אמת אמיתית

id אקראי ודגל חד פעמי.לא ניתן להשתמש בקישור זה פעמיים.

פלטפורמה

תווית חינם עבור מהיכן הגיע הלקוח (php, wordpress, whmcs(ראה בפרופיל הלקוח.

לקוח ולקוח.דואר

שניהם נדרשים.הid הוא id הלקוחות של האפליקציה שלך; הדואר האלקטרוני הוא האופן שבו הפורטל מוצא את הלקוח ומתאים את בקשותיהם.

שם הלקוח /name external_id

שם התצוגה האופציונלי, וה-id OpsIQ חנויות נגד הפלטפורמה שלך.

התקנה

1
העתק את המסלול

הגדרות, פורטל תמיכה, חותמת Seamless מהאפליקציית שלך.בחר את מה היישום שלך פועל; הקוד מתחת לרשימה יש כתובת הפורטל שלך ואת מפתח סביבת העבודה מלא, עם הערות מספר עבור פלטפורמה זו.

2
הסוד כבר בקוד

המסלול המועתק מכיל את סוד החתימה של סביבת העבודה, כך שהוא פועל כפי שהועבר OPSIQ_SITE_SECRET (או הגדרת המסגרת שלך) בשרת במקום זאת: ערך זה משמש תחילה.לעולם אל תניח את המסלול בעמוד, JavaScriptאפליקציה ניידת או מאגר ציבורי: כל מי שמחזיק את הסוד יכול להיכנס כלקוח.

3
קישור ל-Fontup שלך אל המסלול

לדוגמא https://your-app.com/support-portal.

4
עשה את הסימן של הפורטל בלחיצת כפתור השתמש ביישום שלך

פורטל סטודיו, Sign-in page, השתמש בהזנת האתר שלי, דף הכניסה שלך URL: הציבו אותו לאותו מסלול.הפורטל מוסיף opsiq_portal_return על ידי עצמו והתוואי מביא את הלקוח בחזרה לדף זה, חתום.

5
תגית: sign out בכל מקום

הגדרות, פורטל תמיכה, היכנס בכל מקום: ההרשמה של האפליקציה שלך 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 מוצג בהגדרות.

האורחים מקבלים טעות במקום כניסה

Replace /login בדרך עם דף הכניסה האמיתי שלך, ודא שהכניסה שלך חוזרת לכתובת שניתנה.

זה עובד עבור לקוחות רק

הלקוח או הדואר האלקטרוני הוא ריק עבורם.

מפתחים

צ'אט לקוחות: לזהות לקוחות

רוב האתרים אינם צריכים את זה: עם סלקפט צ'אט רגיל ומחבר, הצ'אט מאמת את הלקוחות עצמם, עם מספר הזמנה או סדר בתוספת הוכחה עבור חיפושים וקוד דואר אלקטרוני לפני פקודה. הוסף זאת כאשר אתה רוצה לקוח שכבר מחובר באתר שלך מוכר באופן אוטומטי, עם כל החשבון שלהם. WHMCS כבר עושה את זה דרך האתר שלה, אתרים מרוחקים, אתר האינטרנט שלך, קודים, C מדפיס אותו הקוד עם מפתח האתר שלך מלא.

איך זה עובד

1
הדף שלך מדפיס את תג הצ'אט

עבור לקוח חתום - widget URL נושא &identity_token• חתום על השרת שלך; עבור אורח הוא תג פשוט.שום דבר לא סוד נמצא בעמוד: רק אסיקן שמתפוגג.

2
הצ'אט מאמת את הסימון

חתימה, מפתח חלל העבודה ו- Expiry.הלקוח ידוע על כל בקשה צ'אט, והמחבר שלך יכול לענות על ההזמנות שלהם, הזמנות או חשבוניות.

3
הצ'אט מתרענן לפני השעה

זה קורא לעמוד שעליו הוא נמצא?opsiq_identity_refresh=1וורול = לקוח, הקוד שלך עונה: "זה נכון"identity_token"..."בעוד הלקוח חתום, או 401 עם "הדברים": פֶּסְטוּ,login_required"כשהם לא, זו הסיבה לכך שמטפלים ברעננות חייבים לרוץ לפני שהדף שלך מדפיס משהו.

איך זה שונה מהפורטל

חיים

שעה (exp = iat + 3600במקום 120 שניות, כי היא רוכבת על כל בקשת צ'אט במקום הפניה אחת.

לא ג'יטי או single_use

אותו אות משמש לכל הודעה עד שהמדנון יחליף אותה.

אותו דבר אחר

site_keyiat, exp,exp, Ethenated: True, פלטפורמה ולקוח עם id נדרש ודואר אלקטרוני. אותו סוד, אותה חתימה.

💡
זהות אומרת מי הלקוח הוא.הוראות, הזמנות או חשבוניות להגיע לצ'אט באמצעות מחבר: אחד שמכנה את הפלטפורמה שלך APIאו, כאשר הפלטפורמה שלך אין APIמחבר נוסף לקובץ הגשר שלו (הבנונית המחברת עושה אחד).
💡
סוד החתימה מלא בך. באתרים מרוחקים, האתר שלך, קודים, C, כל דוגמא כבר מכילה את הסוד של אתר זה, כך הקוד פועל כפי שהועבר: אין דבר להעתיק או להגדיר. 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 (הסוד חסר בשרת, כך שהקוד אינו סגור), או מפתח החלל של הסימון או הסוד לא מתאים.

בתחילה, לאחר כשעה, אורח

מטפל הרענון אינו מגיע: הוא חייב לרוץ לפני כל פלט, בכל דף צ'אט מופיע.

הצ'אט הפשוט מראה פעמיים

הסר את תג הצ'אט הפשוט מהתבנית שלך: קוד זה מדפיס את הצ'ט עצמו.

מפתחים

Plugins ו- SDKs

OpsIQ מספק SDK חבילות ותוספים לפלטפורמות נפוצות.

איך זה עובד
Plugins ו- SDKs4 חבילות: PHP SDK Node.j SDK, WordPress תוסף ו WHMCS מודול, כל אחד עם פיקוד ההתקנה שלו.PHPPHPSDKהמלחין דורש opsiq/sdkג' סNode.jsSDKאני @opsiq/sdkפסקהWordPress תוסףOne-click Install & connectלמהWHMCS מודולתוספת לחיוב + כרטיס
תוספים ו- SDKs
PHPSDK

חבילת Composer: Identity token Generation, פעולה API עוזר, אימות חתימה Webhook.

JavaScript SDK

לצד הדפדפן: מעקב, זהות, אירועים מותאמים אישית, בקרת צ'אט.

WordPress תוסף

הזרקת Widget, זהות ממפגשי משתמשי WP WooCommerce סינכרון.

WHMCS מודול

שילוב מלא: widget, כרטיס מסר, זהות, ניהול AI.

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 executor פנימי, אוטובוס אירועים ופעולות Webhook כמו שאר OpsIQ זה מאפשר למפתחים לשלב את הסוף מבלי לבנות מחבר ארוז.

⚠️
סטטוס: קטלוג החיים חושף רק platform.get.survey.config ו platform.save.survey.configThe surveys.* ו feedback.* משפחות מתחתן הן חוזה היעד המאושר ויש לחזור 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.*.

OUTR ו-S תשובות

surveys.invitations.*, surveys.campaigns.*, surveys.recipients.*, surveys.responses.*יצוא, פעולה אדומה וניתוח.

Webhooks, יבוא ו- Feedback

surveys.webhooks.*, surveys.imports.*, feedback.items.*, feedback.analytics.*, feedback.sources.* ו feedback.analysis.*.

זרימה חופשית

1
ליצור ולפרסם באמצעות הגנרל API

השתמש בסקרים מטיפוס. * פעולות עם מפתח מבוסס על סביבת העבודה. כותבות כי הרשאות, סיכון, אישור, idempotency והתנהגות יבשה.

2
קבל את האירוע העסקי שלך

שלח אירוע חתום לרשת ריבונית, למשל ביטול הזמנה או הושלם על גבי צעד.ההגנה מחדש של Replay מדגימה את מזהה האירוע.

3
מפה לפעולה וטריגרים

בחרו אחד OpsIQ גנרל כללי API פעולה כגון הנפקת הזמנת סקר או הכנת קמפיין, ולאחר מכן ממפות שדות מן העומס המאומת.

4
Subscribe to אירועים

לספק את סקר בטוח עסקי תועדו. * מחזור חיים מחלחל לנקודת הקצה שלך עם חתימה, מסנן, retry, יומן ו-Replay מורשה.

יעד אירוע Canonical Event

הקטלוג המשותף יכסה את סקר / מחיקת המדינה, הקהל והחלטות מעוררות, הזמנות, להפוך/start / חלקיות / קורות / שלם / פסון, תגובה Redaction, מצב הקמפיין וכישלונות משלוח. להתמקד בכול מקום גבוה, לגלול ולשאלה להישאר באחסון של סקר Analytics אלא אם כן תועד במפורש עבור Fan-out.

מחבר הוא אופציונלי.זה מוסיף גילוי פלטפורמה, זהות מאומתת, עובדות, משתנים וזיהום המקבל. API בתוספת פעולות & Triggers /webhooks נשאר נתיב האינטגרציה המלא עבור מפתחים שאינם זקוקים לחבר ארוז.
מפתחים

REST REST API

The The OpsIQ REST API מאפשר לך גישה מתודולוגית לכל התכונות פלטפורמה.

איך זה עובד
REST REST APIטרמינל המציג 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 REST API

פורמט בקשה

שלח את המפתח כמו Authorization: Bearer opq_... או X-OpsIQ-Key: opq_...השתמש ב-Samer אימות אחד, לא שניהם.

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"
}

פעולות נפוצות

The The API מבוסס על פעולה: לשלוח action כל מנהל רשום JSON למבצע יש פעולה יציבה בשם POST. {"action":"meta.actions"} (אין מפתח הנדרש) עבור רשימת ההרשאה, לכל התקן, חוזה בקשה, metadata סיכון והיקף. platform.routes.* הגשר נשאר רק לשילובים ישנים יותר.

crm.contacts.list

אנשי קשר של רשימת CRM (עמודי רצף) Params: q, סטטוס, מקור, תג, ציון מוביל, גבול.

crm.contacts.upsert

פתרון-או ליצור קשר (עמודי רצף) Params: דוא"ל בתוספת שדות, תגים, הערות.

crm.deals.list

רשימת CRM עסקאות (עמודי רצף) Params: סטטוס, שלב_id, חברה_id - הבעלים_admin_id ,צנרת_id.

crm.activities.record

להקליט פעילות מחזור חיים / עסקים ליצירת קשר (עמודי סקופ) Params: דוא"ל או מגע_id, אירוע, ערך, מטבע.

crm.conversions.record

להקליט המרה (עמודי סקופ) Params: מגע_id או דוא"ל, המרת_type, ערך, מטבע.

crm.events.list

פול זרם אירוע ה- CRM (עמודי רצף) Params: Limit.

tickets.list

כרטיסים לרשימה (כרטיסי סקופ). Params: דף, per_page, סוג, סדר, סטטוס, עדיפות, מחלקה_id, שהוקצה_office_id , Customer_Mail , חיפוש.

tickets.get

כרטיס אחד והודעותיו (כרטיסי סקופ. read) Params: הכרטיס_id או כרטיס_מספר, כוללים_messages, הודעות_limit.

tickets.reply

הודעה על כרטיס (כרטיסי סקופ). Params: הכרטיס_id או כרטיס_ Number, Body, Author_type, Author=name, Internal.

tickets.update

עדכון כרטיס (כרטיסי סקופ. write) Params: הכרטיס_id או כרטיס_מספר, סטטוס, עדיפות, נושא, מחלקה_id, שהוקצה_office_id.

tickets.open

פתח כרטיס תמיכה (כרטיסי סקופ). Params: לקוח_Mail, הלקוח_name, subject, Body,עדיפות.

tickets.bulk

הפעל מבצע תור גדול (כרטיסי סקופ). Params: תפעול, ילדים.

conversations.list

שיחות צ'אט חי (שיחות סקופיות. read) Params: דף, per_page, סטטוס, שהוקצה_admin_id, Customer_Mail, Search.

conversations.get

שיחה אחת והודעותיה (שיחות סקופיות.קרא) Params: שיחה_id או חוט_key, כוללים_messages.

conversations.messages

דף ההודעה היסטוריה (שיחות סקופיות. read) Params: שיחה_id, עמוד, per_page, כוללים_internal.

conversations.send

שלח הודעה לשיחה (שיחות סקופיות. write) Params: שיחה_id, הודעה, Sender_type, Internal.

conversations.update

כאות, סטטוס או כתוביות מחדש שיחה (שיחותסקופיות. write) Params: שיחה_id, סטטוס, שהוקצה_admin_id.

מחבר:list / . get/

ראה אילו מחברים מותקנים, מה כל אחד יכול לעשות, ואם האישורים שלו עובדים (מחבריסקופ).

automations.actions.list

הפעולות שהנובן שלך יפעל (האוטומציה של ה-PT).

automations.triggers.list

מה יאשה ואיזה תנאים (תרגילים למצלמות).

automations.runs.list

היסטוריה של ביצוע עבור debugging אינטגרציה (אוטומציה שלסקופ). Params: מעמד, פעולה_key.

departments.list

מחלקות ניתן להעביר כרטיס (מחלקות סקופ.קרא).

notifications.list

הודעות למפעיל אחד (הודעות סקופיות. read) Params: admin_id (required), unread_Only.

analytics.export

סעיף דו"ח CSV (הניתוחים של הניתוח) Params: סעיף, מראש, מ-, ל-Call Analytics.סעיפים.list עבור ערכים תקפים.

אתר_intelligence. sites. list / reports

אתרים עוקבים ודיווחי SEO שלהם (אתר סקופ_intelligence. read).

מסחר. products

קטלוג החנות שלך, עמוד (מסחר סקופ).פילטרים: פעיל, קטגוריה, חיפוש. .get מחזיר מוצר אחד עם הגרסאות שלו.

מסחר. orders. list / . get

הזמנות בחנות (CO Trading. read Filters: Status, Pay_method, Channel, Customer_Mail. Fetch אחד על ידי order_id או ההתייחסות ל-Word, עם פריטים קו.המנהלת של שער חי לעולם לא תחזור.

commerce.refunds.list

בקשות להחזר ומדינתם (המסחר ב-Coptread).

commerce.quotes.create

מחיר פריט ללקוח (הופנה מהדף מסחר). store או מחבר זחלים, אינו יוצר דבר: אין סדר, לא תשלום.

. tickets. csat. list /. get / מטריקה

תשובות של לקוחות-satisfaction כמידע (כרטיסי סקופ). .metrics מחזירים את אותם המספרים, את מראה המחוונים.

conversations.ratings.list

שיחות צ'אט המבקרים שלך מדורגות, עם התגובה, מה הוביל את הדירוג ואת הסוכן אשראי (שיחות סקופ).

knowledge.articles.list

דף דרך מאמרי מרכז העזרה שלך (scope kb. read).

knowledge.articles.get

מאמר אחד של מרכז העזרה על ידי id (scope kb. read) Params: מאמר_id.

webhooks.events.list

כל אירוע שאתה יכול להירשם לנקודת מוצא של Webhook, עם המטען שלו זמין על כל תוכנית, כך שתוכל לבנות נגדה לפני שאתה קונה.

files.get

קישור להורדה קצר מועד לקובץ קבצים מצורפים (קבצים. read) Params: הפניה, ttl.

security.check

שאל אם IP או דוא"ל חסום או חשוד כאן (חשבון אבטחה).IP חומת אש, רשימת חסימת הספאם של הכרטיסים ופסק הדין ה-AI הקלוש. ip דואר אלקטרוני.

security.report

דיווח על התעללות במערכת שלך (מערכת אבטחה .write) נרשם כאירוע אבטחה, המסווג על ידי האבטחה AI באופן מיידי, ומנהלי המערכת מוערנים על פסקי דין בסיכון גבוה. ip דואר אלקטרוני, אדיב, סיבה, מקור.

אבטחה. blocklist

נהל את כללי ספאם צינור הכרטיס לאכוף (חשבון אבטחה סקופ / אבטחה.קרא) אותו חנות כמו דף הכרטיסים "Block Sender" שליטה. Params: סוג (דואר, דומיין, תחום, דומיין).ipערך, סיבה, פגים_שעה.

💡
פעולות הוא תמיד סמכותי.זה מחזיר כל פעולה זמינה על ההתקנה שלך עם היקף כל אחד צריך, כך שאתה אף פעם לא צריך לנחש או קוד קשה רשימה זו.

פשטות, מסנן וממיין

כל פעולה ברשימה משתמשת באותם פרמטרים, כך שאתה לומד אותם פעם.

דף הבית / per_page

מספר העמודים החל 1גודל העמוד וגודל הדף. Default 50 מקסימום 200 גם גבול וירידה מתקבלים אם אתה מעדיף אותם.

סדר / order

שדה למיין, ו- ASc או desc (default desc) כל פעולה מקבלת סט קבוע של שדות מסוג; כל דבר אחר אינו מתעלם ולא טעות.

filters

שלח מסננים כאובייקט, או להעביר מסנן כפרמטר ברמה העליונה.פילטרים לא ידועים להתעלם מהם.

מה חוזר

פריטים, דף, per_page, ספירה, כולל ויש לה_more.המשך לבקש דפים עד שיש_more הוא שקר.

דף, סינון, רשימת מיון
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 טקסט, אשר עשוי להיות reworded.

תגובה שגיאה
{
  "success": false,
  "code": "missing_scope",
  "error": "API key missing required scope. Needed one of: tickets.read, admin",
  "request_id": "req_8f2c1a9d4b7e"
}
נעדר_api_key / Invalid_afi_key

שום מפתח לא נשלח, או שהמפתח טועה או יפוג. 401.

missing_scope

המפתח הוא תקף אך חסר את היקף הפעולה הזה צריך. 403.

Read_Only_key / פעולה_restricted

המפתח הוא לקריאה בלבד, או פעולה זו אינה ברשימה שלו. HTTP 403.

unknown_action

אין פעולה כזאת.קרא מטא-פעולות לרשימה הנוכחית HTTP 400.

חסר_parameter / Invalid_paraמטר

פרמטר נדרש נעדר, או ערך אינו מתקבל. 400.

not_found

השיא אינו קיים, או לא נמצא במרחב העבודה שהמפתח הזה יכול לראות. 404.

plan_feature_locked

התוכנית שלך אינה כוללת את התכונה שפעולה זו שייכת לו.הגוף שם את הגוף feature, ה plan_name בכוח ובכוח upgrade_urlדחייה לא תעזור; התוכנית חייבת להשתנות.402.

license_required

רישיון ההתקנה אינו פעיל, ולכן שום פעולה לא תנוהל עד שיחזור.402.

selling_paused

מפרט מסחר: החנות מכרה כבוי, כך שלא ניתן לצטט או להזמין. HTTP400.

rate_limited

הגבלת השעה למפתח זה משמשת HTTP 429.

server_error

משהו נכשל בצד שלנו, הבקשה_id מזהה את הניסיון אם אתה צריך לדווח על זה. 500.

Retries

אם יש לך זמן לכתוב, אתה לא יכול להגיד אם זה נחת. 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: נכון כדי שתוכל לומר שזה היה משחק מחדש.

הכישלונות נשארים ניתנים לחזרה

רק כותב מוצלח נזכר.אם שיחת טלפון נכשלה, שולחת אותו שוב עם אותה מפתח רץ אותו שוב, וזה מה שאתה רוצה.

קרא

לקרוא להתעלם מהמפתח.חזרה על קריאה היא בלתי מזיקה.

מבחן ללא שינוי

הוסף 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."
}
השתמש ב- יבש_run בזמן שאתה בונה.זוהי הדרך המהירה ביותר לאשר מפתח יש את ההיקף הנכון ואת המטען שלך מעוצב כראוי, ללא יצירת נתוני מבחן אתה צריך לנקות.

גבולות

גבולות Per-key

הגבלת שעה סבירה לכל API מפתח (default) 1000 בקשות לשעה) קבעו אותו למפתח תחת הגדרות,API המפתחות

מתי עבר

HTTP 429 עם קצב קוד_מוגבל, בתוספת retry-לאחר Header אומר לך כמה שניות לחכות.הגבול מתאפס בראש שעת השעון הבאה.

לדעת היכן אתה עומד

כל תגובה נושאת X-RateLimit-Limit, X-Remaining ו- X-rateLiמיט-Reset (A Unix Timestamp) Watch Remaining and Slow down לפני שאתה יוצא ולא מחכה לסירוב.

ספר 429 מתוך 401

A A 429 נסו לחכות ולנסות שוב. 401 משמעות המפתח עצמו היא שגויה או פגומה, כך שיחזור לא יעזור עד שתתקן את המפתח.

משמרת הכוח הקדמי-הארוט

ניסיונות כושלים-אותים מאחתIPהם מפוצצים בנפרד.מפתחים חוקיים לעולם לא יטוסו את זה.

התרגול הטוב ביותר

חזרה כאשר התחזוקה נמוכה, לכבוד Retry-אחרי 429 במקום לחזור מיד.

גרסאות ויציבות

הגרסה הנוכחית

כל תגובה נושאת X-OpsIQ-API Version ו- X-OpsIQ-API תטוס כדי שתוכל לאשר את מה שאתה מדבר איתו.

איך אתה תהיה הזהיר

אם גרסה היא מעולם לא פרשה, התגובות מקבלות Deprecation סטנדרטית ו- Sunset Headers, ומדווחים על meta. actions deprecated andשקיעה_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}
💡
הכל לעיל עובד באותה הדרך לשיחות: שיחות. list, שיחות. get, שיחות ושיחות. update לעקוב אחר דפוס זהה, פרמטרים וצורה תגובה.

עוד דוגמאות

כל אחד מהם הוא חלק שלם, משוחרר של שילוב אמיתי ולא קטע.

דף דרך כל שיא, בשלוש שפות

הכלל הוא אותו מקום: המשיכו לבקש את הדף הבא עד has_more זה לא נכון, לעולם אל תנחשו בכלל.

Python - דף באמצעות כל כרטיס פתוח
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 - דף דרך כל מוביל
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
$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חתלתול זה הוא החוזה כולו בתפקיד אחד.

Python - לקוח המטפל בכל קוד שגיאה
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 בדיוק כמו שחזר.האיכות אינה תמיד מכפילה את מחיר היחידה - מלון מצטט חדר אחד לשלושה לילות – כך שדמות שאתה מחשב את עצמך יכולה להיות שונה ממה שהסוחרים באמת ישמרו.

מקלט אינטרנטי בטוח לרוץ בייצור

בדוק, לדחות, לענות במהירות, לעשות את העבודה. Deliveries retry, כך אותו אירוע יכול להגיע יותר מפעם אחת.

PHP - מקלט בצורת webhook
<?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"
}
איך לספר את זה בנפרד מבעיה

A A403משמעות הדבר היא שהקאים צרים מדי – הם מדפיסים אותו מחדש עם ההיקף הנכון והוא עובד.402משמעות הדבר היא כי ACCOUNT אין את התכונה - שום מפתח לא יכול לפתוח אותה, התוכנית חייבת להשתנות.

אל תנסה מחדש402

זה לא קבוע.עמוד על פני השטח upgrade_url למי שיש לו את החשבון במקום לחזור ולנסות שוב.

היקף הניהול אינו עוקף אותו

Scopes מביע את מה שהנושא המרכזי הביא; התוכנית מבטאת את מה שקנה החשבון.מפתח של מנהל המערכת עדיין מקבל מפתח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 מחיר אחד ללקוח אחד.זה לא יוצר כלום - שום הזמנה, אין תיק תשלום, אין מניות מוחזקות – לכן זה בטוח להתקשר בזמן שהלקוח עדיין מחליט.

תגית: a product
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"}}
סך הכל הסוחרים מנצח

עבור פלטפורמה מחוברת, סך הכל מגיע מאותו סוחר ולעולם לא מחושב כאן. Quantity אינה תמיד מכפילה את מחיר היחידה - מלון מצטט חדר אחד לשלושה לילות – כך להראות את הסכום שניתן לך, ולא אחד שעבדת בו.

סירוב אומר לך מה חסר

אם הסוחר צריך יותר מהלקוח, אתה מקבל quote_refused עם A missing רשימת השמות של שדות לאסוף, והמילה של הסוחר עצמה כדי להראות.

סדר הוא לאAPICall

ציטוט הוא כתב אישום.האישור מתרחש במקום בו הלקוח - הכרטיס החתום בצ'אט, או הצ'ק של הסוחר עצמו – אף פעם לא דרך זה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

נקודת הסיום של כתב ה-AI הישנה יותר.כל מה שהוא עושה זמין גם כזמין writing.* פעולות/api/v1.php,שם צריך ללכת עבודה חדשה.

/api/inbox_copilot.php

Draft, rewrite ו triage עבור כרטיס תיבת דואר משובצת במנהל המערכת שלך.

/api/v1/si/…

אינטליגנציה האתרית כ-De קטןAPI- אתרים, זוחלים, נושאים, מילות מפתח, הכנסות - עבור צינורות CI שרוצים להתחיל זחילה לאחר פריסה ולקרוא את התוצאה.

/api/connectors.php?slug=&token=

כאשר פלטפורמה מחוברת פולטת לך את ה-Webhooks שלה.הסימון הוא מכוונן בעת שאתה מאפשר לחבר.

/api/integrations/*.php

מנוע האינטגרציה: לרוץ ולאשר פעולות, ומכירות בולטות, זהות ואירועים מסע.הוא משתמש בסוג המפתח שלו, שהוצא תחתיו.APIWebhook בונה.

💡
כל אלה מצייתים לחוקי אותה תוכנית כמו הפעולות.תכונה שהתוכנית שלך אינה כוללת תשובות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

ניתוח Analytics (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

crm (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

Webhooks (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 זמינים?+

תגית: OpenAPI 3.0 המסמך נמצא /api/v1/openapi.php, אוסף Postman שנוצר נמצא /api/v1/postman.php, ו-The Human-readable Developer docs נמצאים /api/docs/.

איך אני עובד עם יותר ממרחב עבודה אחד?+

שלח אתר_key בגוף הבקשה כדי לבחור סביבת עבודה.מפתח שהוצא עבור מרחב עבודה אחד נשאר ממוקם אליו; מפתח עם הקשר הניהולי יכול לבחור כל סביבת עבודה שהוא מותר לראות, והוא מסרב לכל דבר שהוא לא.

אילו פעולות יכולות לקרוא רק מילת מפתח?+

כל פעולה המסמנת כקריאה.קבע את מצב ההרשאות על המפתח לקריאה_רק וכל כתיבתה מסרבת לקריאה_ בלבד_קי, כך ששילוב של דיווח לא יכול לשנות דבר אפילו בטעות.

למה לא מצאתי משהו שאני יכול לראות ב-Adole?+

המפתח הוא בקנה מידה של סביבת עבודה. רשומות במרחבי עבודה אחרים לא לחזור_found ולא טעות הרשאות, כך גם השגיאה. API לעולם אל תאשר אם משהו קיים במקום אחר.

מפתחים

אבטחה API

חוזה אבטחה אחד לכל חבר ושילוב: שאל OpsIQ מה הוא יודע על IP או לשלוח, להאכיל את ההתעללות שהמערכת שלך רואה.

OpsIQ מגן על עצמו: IP חומת אש חוסמת תוקפים, צינור הכרטיסים מסנן ספאם, ו-AI מסווג עבריינים ומציעה תקנות לחסום. API פותח את האינטליגנציה הזו אל המערכות האחרות שלך.פלטפורמת חיוב, פורטל לקוחות או אפליקציה אישית יכול לבדוק מבקר לפני שהוא בוטח בו, ולדווח מה הוא צפה כך שהתקנה כולה לומדת מכל פני השטח.

מה אתה יכול לעשות

בדוק לפני שאמון

אבטחה.בדוק תשובות עם מדינת חומת האש, כל כלל ספאם תואם את השולח, ואת פסק הדין AI חרישי על IP One call, one unite opinion.

דיווח מה ראית

אבטחת מידע מתעדת את ההתבוננות כאירוע אבטחה, יש ל-AI Security מסווג את תחום האבטחה. IP מיד, ומזהיר את המנהלים כאשר פסק הדין חוזר סיכון גבוה. OpsIQ רואה ישירות.

חוקי ספאם

אבטחה. blocklist. add ואבטחה. block 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

security.write

דרושים ל-Report ואבטחה. blocklist. add. give it only to Systems you want Feed Rules and reports in.

שום דבר לא נהרס בשקט

שולח חסם עדיין נוחת בנוף ספאם שבו ניתן לקרוא את הכרטיס ולשחזר.

הפלטפורמה מגנה על עצמה

השרת עצמו IP כתובות לעולם לא יכולות להיחסם, חסומים או לדווח באמצעות זה. API לכן, שילוב לא מוגדר כראוי אינו יכול לקחת את הפלטפורמה למטה.

💡
מינוס מפתח תחת אינטגרציה, ולאחר מכןAPI המפתחות, ולתת להם רק את היקף האבטחה שהוא צריך.חוזה הבקשה המלא לכל פעולה הוא במטה.פעולות ואת מסמך OpenAPI.
האם המחברים הקיימים שלי משתמשים בזה באופן אוטומטי?+

הסינכרון הוא כבר אוטומטי: כאשר אתה חוסם IP פלטפורמות מחוברות מסופרות באמצעות מסנכרנת האבטחה המחברת. API הוא חצי מרכזי נקודה המחבר שלך או הקוד מותאם אישית בארבע הפעולות הללו עם מפתח הנושא את היקף האבטחה.

איפה חוקי ספאם חיים?+

One Store.The Tickets Page Block Sender control, theספאם AI in Settings, and this API כל העבודה נגד אותו חסימה, כך שיש מקום אחד להסתכל בו.

מפתחים

אירועים API

שלח אירועים מותאמים אישית מהשרת או באתר שלך OpsIQ עבור ניתוחים, ניסויים, CRM גורם ותנאים Webhook.

איך זה עובד
אירועים APIמסלול () קורא לשלוח אירוע הדגמה אישית OpsIQ אשר מזין מטרות המרה, פלחות וטריגרים.OpsIQ שם הסרטון: Demo_bookedערך: 0תוכנית: "פרו"});מטרותקטעיםהטריגר והאינטרנטדפדפן (OpsIQ.track) או POST בצד השרת /v1/events
אירועים API

אירועים לצד דפדפן

אירוע הדפדפן
window.OpsIQ = window.OpsIQ || [];
window.OpsIQ.push(["track", "button_clicked", {
  button: "signup",
  page: "/pricing",
  variant: "green"
}]);

אירועים בצד Server

לצד השרת, פעילויות התקליטים וההמרות נגד מגע באמצעות הפעולה API שימוש crm.activities.record פעילות מחזור חיים / עסקים ופעילות crm.conversions.record לשם המרות אין events.send פעולה: המקלט לאירוע CRM הכרוך בו חי /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"
}

כנס

המונחים: dot notation

"הסדר.שלמה" לא "מעודכן".

העבר מתוח

"button. clicked" לא " Button. click".

להיות ספציפי

"הסבר. plan_s chosen" לא "משתמשי פעולה".

מפתחים

כיצד נתונים זורמים OpsIQ

הבנת זרימת הנתונים מסייעת לך debug אינטגרציה וביצועים אופטימיזציה.

איך זה עובד
כיצד הנתונים זורמיםנתונים זורמים מה- widget ומתעוררים לתוך OpsIQ הליבה (CDP, Identity גרפן, AI Brain, Analytics, CRM) לאחר מכן דרך webhooks ואת REST API.תכונהמקור |OpsIQ הליבהגרף זהותהמוח של AIניתוח CRMWebhooksREST REST API
זרימת נתונים

זרימת נתונים

1
מקור | Widget

The The JavaScript widget שולח תצוגות דף, קליקים והודעות צ'אט כדי /beacon.php.

2
אירוע Ingestion

אירועים מאוחסנים ב- Opsiq_events עם אתר_key, סוג אירוע, לקוח ונכסים.

3
ישיבת ישיבות

קבוצות השעונים מציגות דף תצוגות (באמצעות עיפרון).

4
פתרון זהות

כאשר מזוהה, רשומות אנונימיות קשורות לפרופיל הלקוחות.

5
קשר לסנכר

מחברים למשוך נתונים מפלטפורמות חיצוניות ולאחסן ב-Cacheor.

6
בינה מלאכותית

AI מאגד את ההקשר: ההיסטוריה של המבקרים, פרופיל הלקוחות, נתוני המחבר, KB ו-Direct.

זרימת נתונים

1
שריפות אירועים

שריפות אירוע פנימי (ticket. created, Chat. mesage, order. Completed).

2
תור העבודה

אירוע ממוקם בתור העבודה Async.

3
Webhook שולח

סימנים של Dispatcher ושולחים לכל נקודות הקצה הרשומות.

4
לנסות על כישלון

משלוחים כושלים הדהדו עם backoff אקספוננציאלי.

הגדרות

הגדרות

הגדרות הן מרכז הבקרה של סביבת עבודה.כל דבר להלן הוא היקף למרחב העבודה שבו אתה נמצא, כך חשבון אחד יכול לנהל כמה מותגים עם זהויות שונות, התנהגות צ'אט ותקנות שימור.

מציאת הגדרה

ישנם כשש מאות בקרות בודדות בהגדרות, המשתרעות על פני 11 כרטיסיות שמפומנות תחת ארבע תפריטים. You לא צפויים לגלוש עבורם.

הגדרות חיפוש (Ctrl + K)

הקש Ctrl + K, או Cmd + K על Mac, בכל מקום בדף הגדרות. הקלד במילים פשוטות ולחץ Enter כדי לקפוץ ישר לשליטה.חיפוש סובל טיפוס קטן ולהבין מילים קשורות, כך לוח הזמנים מוצא Cron ופרטיות למצוא את בקרת המעקב.זה רק מראה הגדרות שלך יכול לפתוח.

סביבת העבודה והתוכנית

כללי וסבלנות.

AI ותמיכה בלקוחות

Admin AI assistant, Customer Chat OpsIQ לכתוב ולתמוך בפורטל.

נתונים וממשל

מעקב ופרטיות, הרשאות ואבטחה.

מערכת

Cron (ההגדרה עצמה בלבד) ו- Danger Zone.

חיסכון

כל הכרטיסייה חוסכת על עצמה עם כפתור שמור משלה. OpsIQ כתיבת סיכות למסך, שמור לפני החלפת כרטיסיות; שינויים אינם מתרחשים.

קישורים עמוקים

הכרטיסיה הפעילה כתובה לכתובת העמוד, כך שניתן להזמין או לשלוח אותה לעמית.

כללי: זהות עסקית

הכרטיס החשוב ביותר בעמוד: AI קורא ערכים אלה על כל תשובה, דו"ח וקצר יומי.

שם עסקי

בשימוש בדיווחי AI, מדי יום ומילה מפונה ללקוח.תתאים את אתר האינטרנט שלך ל Footer.

תעשיית עסקים

מותאם ניתוח AI, ניקוד מוביל, תדרים ופוסטים סקר. בחר מרשת אירוח באינטרנט, מסחר אלקטרוני, SaaS, נדל"ן, סוכנות, ייעוץ, בריאות, חינוך, מימון או עסקים כלליים.

שפה

השפה המוצגת לכל מי שלא בחר בעצמו.כל סוכן יכול להתגבר עליה בפרופיל שלו.

השתמש בשפת הדפדפן

מציג את דף החתומה בשפה של המבקר עצמו.לאחר שמישהו בוחר שם שפה, בחירתו מנצחת וזה אף פעם לא גובר עליו.

מערכת זמן

האזור כולו פועל: תאריכים, דוחות, לוחות זמנים וגביע הרקע. השתמש בגוש זמן התפעול שלך, לא הלקוחות שלך.

תגית: GeoIP and Tracking

נתיב בסיס הנתונים GeoIP2

הנתיב המלא ל- GeoLite2- City. mmdb. מזהה אוטומטית בטעינה הראשונה דרך cPanel, Plesk, DirectAdmin, Cloudways, Docker ופשוט. Linux או Windows. הוסף GeoLite2-ASN.mmdb באותו תיקיה עבור המבקר ספק האינטרנט.

המונחים: Source Mode

GeoLite2 בלבד, ג'ולייט 2 עם A Cloudflare נפילה או Cloudflare רק.Cloudflare מצבים דורשים שהאתר להיות ממוקד דרך Cloudflare עם ראשי מיקום המבקרים אפשרו לפרטים עירוניים ואזוריים.

זמן ישיבה (s)

חוסר פעילות לפני ביקור נחשב גמור. Default 14400 זה ארבע שעות.

Liveמרעננים Interval (s)

כמה פעמים האכילה חיה מתרעננת 30 שניות.

סף פעיל (מיני)

כמה זמן מבקר נחשב לחיות לאחר עומס העמוד האחרון שלו. 2 דקות.זהו ה- Live Feed Drop-off, לא אורך הישיבה.

שחזור נתונים (Days)

מחיקת רשומות שנאספו ומיוצרות לפני גיל זה: ניתוח, צ'אט, כרטיסים, משוב, עסקאות, AI Telemetry, יומני שילוב ופעילות CRM. 0 שמור על הכל לנצח. הגדרות, תוכן מורשה וקבלות הסכמה לעולם לא הוסרו.

כאשר צ'אט נמחק

בחר כמה שיחה נמחקה נשאר על הרשומה: השיא המלא, שיא ללא השיחה, או הציון רק.מחק תמיד מסתיר את הצ'אט מהתיבת הדואר הנכנס ואת ההיסטוריה של המבקר.

עקבו אחרי bot Traffic

ספירות זוחלים כמבקרים, עזבו; הן מנפחות את ספירת המבקרים ומחישות כל דיווח.

סקר ה- Feedback Popup אפשר

מראה את משוב האתר widget למבקרים. בנפרד מ סקרי הצ'אט תחת צ 'אט לקוחות, תמיכה זרימה.

כללי: AI

המאסטר מתג עבור כל משטח AI.כל ברירת מחדל כדי לחסוך מקום עבודה.

AI Triage על כרטיסים

מסווג כל כרטיס לפי קטגוריה, עדיפות ורגשות, וכותב סיכום חוט בחלק העליון של הכרטיס.

AI Triage מרחף סיכום

מציג את תגי הטריג וסיכום ב- Tooltip כאשר סוכן מרחף שורה ברשימת הכרטיסים.דרוש AI Triage.

Inbox Coטייס (composer)

הוסף תגובה של Draft AI, Warmer, Shorter, יותר כפתורים פורמליים והתנצלות על ידי תיבת התשובה הכרטיס.שום דבר לא שולח ללא הסוכן.

שאל-OpsIQ טייס Co

לוח מודעות דף צף טייס משותף על כל דף ניהול.דע איזה לקוח, חשבונית או כרטיס פתוח.

בוקר קצר

בכל יום הטייסת מציגה כרטיסים דחופים, תשובות ממושכות וצ'אטים מחכים.

כללי: כסף, מיתוג, גיבוי

OpsIQ בסיס מטבע

כל כסף הכולל ב-מנהל מומר במטבע זה לתצוגה. Connectors מאחסנים מטבע מקור משלהם; להגדיר את זה לחבר.

שיעור FXF אוטומטי

מרעננים עולים כל 6 שעות ממזון ציבורי חופשי ללא תשלום API מפתח.You יכול להוסיף שיעורים ידניים כי override את להאכיל.עם אוטומטי מסונכר, מטבעות ללא קצב ידני נותרו unconverted.

אפשרויות מסחר ותכונות בילינג

אוניות כבויות.להסתובב על מנת לחשוף את דף המכירות והספנות, כרטיסי ההכנסות המחוונים והאכילה של המודיעין החי.עם זה, כל משטח מחירים מוסתר ודף המכירות עוזב את התפריט.

אוצר מילים

מלמדים OpsIQ המילה שלך: אם אתה עושה חידושים, המילה לחדש, מה שאתה מוכר ומה קונים נקראים.

מותגים ולוגו

שתי העלאה, אחת לרקעים קלים (מנהלת צדבר) ואחד עבור כהה (עמוד החתימה). PNG, JPG, WebP או SVG עד 3 MB.

סוכן מודיעין האתר, מאפשר פרטיות SSH מטרות

סוכן SEO של Auto-Implement מחבר SSH פרטי, לולאבק וכתובות שמורות חסומות כברירת מחדל כמדד נגד-SSRF. רק לאפשר להתקין עצמי מחונך כי חייב להגיע לשרת מקומי.

OpsIQ גיבוי / שחזור

ייצוא כל הגדרה ו OpsIQ שולחן בעל שם בתוספת קבצים שהועלו.שיקום מחליף OpsIQ תצורה ורשומות בלבד; היא לעולם לא נוגעת בלקוחות, חשבוניות, כרטיסים, שירותים, תחומים, הזמנות או עסקאות.

⚠️
קח גיבוי לפני השימוש בכל דבר באזור הסכנה.גיבוי חי באופן כללי ופעולות למחוק חיים באזור מסוכן, כך קל להגיע ללחיצת כפתור ללא הייצוא הראשון.
הגדרות

הגדרות: אבטחה

הגנה על סימן הניהול, הצוות שלך חשבונות ואת הנתונים OpsIQ ההרשמה של הלקוח עבור פורטל התמיכה מוגדר בנפרד.

הגנה על Sign-in Protection

GooglereCAPTCHA

לעצור בוטים וקידודים על השלט של מנהל המערכת.בחר v3 (בלתי נראה, הבקיע) או V2 (חנותbox), להגדיר את סף הציון V3 ולספק את האתר ואת המפתחות הסודיים.

המונחים: Auto-Lockout

חסימת כתובת לאחר מספר כישלונות בתוך החלון, למשך כמה שעות אתה יכול להתאים אישית את ההודעה נעולה העמוד ולהציג הסחת דעת קטנה של המתנה.

כניסה Harding

מדיניות סיסמה עם אורך מינימלי, דחיית סיסמאות שנמצאו בהפרות ידועות, מנעול per-account נגד חומרת גולגולתי, שני חובה עבור כל מנהל, סיסמה חוזרת לפני פעולות מסוכנות, ואזהרות סימן חדש לחיוב.

כניסה בודדת (OIDC)

חתומה של צוות באמצעות ספק הזהות שלך URL, מזהה לקוח ו- Customer secret.com-provision domains, אחד לכל שורה, יוצר באופן אוטומטי משתמשים בסימן ראשון.

Single Sign-On SAML 2.0)

לספקים שמדברים SAML. OpsIQ מספק תשובה ACS URL ו- SPישות מזהה; אתה מספק את מזהה הישות IdP, Sign-in URL אופציונלית Sign-out URL X.509 חתימה תעודה.דואר אלקטרוני ושמות איכויות שדות נדרשים רק עבור שמות שאינם סטנדרטיים.

הקצאת SCIM

יצירת מונחת Directory, עדכון ומעשה OpsIQ חשבונות.OpsIQ אספקה SCIM בסיס URL אתה יוצר אסימונים מתוייגים כאן כדי שניתן לבטל אותם מבלי לשבור את השאר.

איומים, חסימת ואוסף

« תוצאות Egress Let-list

הגבלות חיצוניות המארחות את המחברים של סביבת עבודה זו עשויות להתקשר. SSH בקרת מטרות באופן כללי.

איומים על סקופ ו- Auto-Block

חסימת מבקר ברגע שציון האיום שלהם עובר את הסף. 0 עיין בדף סקירה של אבטחה למשך שבוע לפני בחירת מספר.

דף ההודעה

ההודעה שמבקר חסום רואה, כטקסט רגיל או מנהג משלך HTML חסימת מסך

אתר אינטרנט מהיר של מבקרים אמיתיים

מדדים LCP, INP ו- CLS מהמפגשים האמיתיים.

משלוח אירוע ב-Bucked, retry-Safe

אירועים מתאימים בדפדפן ולספק אצות עם Retries, הפחתת אובדן על קשרים ניידים עניים.

עקבו אחרי Beacons

הטמעת widget אמיתית נושאת אסימונים הצפנה מסתובבים כך שניתן לדחות נתונים מעקב מזויפים. Off by ברירת מחדל; המאפשר שינויים כיצד מטביעה אותנטית, אז לבדוק קודם כל.

התראות אבטחה

ללא הפסקות מחדל.זיהוי וחסימה לרוץ ללא קשר.כרטיס זה שולט אם אתה מתבקש, וכמה AI מסייע.

התראות אבטחה

המאסטר עובר על הכרטיס הזה.

חסימה: Failed Wave סף

כמה לא הצליחו לחתום על מספר ימים תוך פרק זמן קצר כגל ששווה להתריע עליו.

IP מוניטין אינטליגנציה

הוספת ציון איום למבקרים המופיעים במזונות של התעללות ציבורית.

אתר Watch

שעות לקום ו TLS בדיקות מטבוליות, מזהירות לפני שהתעודה מסתיימת.

אנליסט אבטחה AI ו-AI Event

הוסף פסק דין מוסבר לפעילות חשודה, וקבוצות הקשורות להתקפות לאירוע קריאה יחיד ולא זרם של אירועים.

טייס אוטומטי

מעשים משל עצמם, הופכים את מה שהיא לומדת מאירוע לחוק המוצע או יישומי. עזבו עד שבדקתם את הצעותיה ומסכים איתם.

משככי בטיחות ויועץ קבוע

חלוץ יומי בדף סקירה האבטחה, ורשימה יומית של לחיצה מראה מה מוגן ומה עדיין פתוח.

הצעות טבעיות ל- Auto-expire

חוק בלוק המוצע שמעולם לא פעל על ידי עצמו במקום לעקוף.

השמעת חזרה של מסע DOM

שיחה: Enable DOM Meeting replay

ביקורים של מבקרים ב-Creback.כאשר מחוץ לספריית המשחק לעולם לא עמוסים, כך שאין עלות לעזוב אותה.הקלטות מדגימות ומופצות פרטיות, וצפו בעמוד השב"ד תחת Analytics.

שיעור הדגימה, max capture, שימור

מה חלק מהמפגשים ועד לתיעוד, כמה זמן אפשר להקליט תקליט אחד וכמה ימים ישארו הקלטות.

⚠️
הפעל מחדש רשומות אנשים אמיתיים באמצעות האתר שלך. שמור על קצב הדגימה וההחזקה נמוך ככל שעדיין ישענה לשאלה שלך, לחשוף אותה בהודעת הפרטיות שלך.
הגדרות

הגדרות: מעקב ופרטיות

מה OpsIQ יכול לאסוף, וכמה זמן כל סוג של שיא שורד.

אכזבות

תגית: IPs טווח CIDR

כתובות מעולם לא עוקבות, אחת לכל שורה, כתובות מדויקות או טווחי CIDR.הדרך הנקיה ביותר למנוע את הצוות שלך מהאנליסט שלך, כי הוא מכסה את כולם בכתובת זו ולא רק חתומה על-ידי מנהלי המערכת.

URL נתיבי חריגה

דפוסים בעמוד מעולם לא עקבו אחר, אחד לכל קו, כרטיסי בר עם סיכון. /admin/* שמור את כל המשרד האחורי של יומן המבקרים.

מדיניות קשב

Per-subsystem Auto-purge בימים. בנפרד מהגדרת תשומת הלב הכללית של הנתונים באופן כללי ומשטח הסכנה טיהור.

AI אינטראקציה יומני

ביטחון טלמטורי מחזיק תצוגה מקדימה קצרה של שאילתה ותגובה. 90 זה מחזיק את הטקסט הלקוח ביותר, אז לקצר אותו ראשון בעת הפחתת הפרטיות.

אירועי שימוש ב-AI

המונחים: Per-call to Cost Report. Default 90 ימים בלבד, אין תוכן הודעה.

ביקורת: Action track

ה- טמפר-קלידנט ו- Security Logault. 365 שמור על זה הארוך ביותר; זהו שביל הראיות שלך.

אבחון

רשומות בריאות מערכתיות 30 ימים.

שאלות לא ידועות

קלוסטרים של שאלות שהבינה המלאכותית לא יכלה לענות עליהן. 90 יום עבודה דרכם על השאלות ש-AI החמצה דף לפני שיסתיים.

Watchdogs andיצוא

אזהרות אמיצות

השוואה יומית של אתמול נגד הבסיס האחרון, מזהירה כאשר מטר נע יותר מאשר הסף שלך. 35 אחוז על ידי ברירת מחדל.

ייצוא מחסן

זרקות לילה של מפגשים, מבקרים, תצוגות עמודים וטבלאות קשורות לערימה ה-BI שלך, בפורמט שתבחר, נשמרו למשך מספר ימים.

הגדרות

תגית: Admin AI assistant

עוזר צף הצוות שלך להשתמש בתוך המנהל, עם תמיכה לקריאה חיה ללקוחות, חשבוניות, כרטיסים, שרתים ו יומני cron. עוזר שונה של הלקוח מול צ'אט לקוח.

אפשרות OpsIQ בינה מלאכותית Widget

הצג את כפתור עוזר בכל דף ניהול. Off מסתיר אותו לכולם.

התנהגות ומניעה

מיקום פינתי, רוחב לוח (320 זה 600 px), גובה מקסימלי (400 זה 900 px), רדיוס פינה (0זה 24), גודל הגופן, וצללית של זכוכית מטושטשת מאחורי הלוח.

הצג Quick Chips

כפתורים קלים של לחץ אחד מתחת לראש, הדרך המהירה ביותר עבור רוב הצוות.

מודל מידע

תצוגות שהמודל ענה וכמה זמן לקח לו תועלת תוך כדי כוונון עלות, רעש לשימוש יומיומי.

שער הגישה Per-admin Access Gate

רק מראה את עוזר למנהל חתום אשר שם המשתמש והדואר האלקטרוני שלו מתאימים לשני הצדדים. OpsIQ הסוכן שהוקצה למרחב העבודה הזה, הבעלים תמיד עוברים. השתמש בלחיצת הסימון לפני שתאפשר או שאתה יכול לנעול את הצוות שלך החוצה.

בן אדם

שם תצוגה, כותרת תג והודעה בברכה אישית המוצגת כאשר הלוח נפתח.

צ'יפס מהיר חכם

ערוך את התווית ואת הבקשה הבסיסית עבור כל קיצור דרך, להוסיף משלך או לאפס מחדש ברירת מחדל.התווית היא מה שצוות רואה, המהירות היא מה AI מקבל.

צבעים וצורה

צורת צ'יפ (pill, מעוגלת, מרובע), צבעי השבבים, ערכת נושא הקלפים וההשקית (סביב, סקורק, כיכר), עם תצוגה מקדימה חיה.

שיחה: Memory

עוזר זוכר כל היסטוריה של אדם על פני מפגשים בדפדפן, עד 120 הודעות, מאוחסנים במסד הנתונים שלך.נקה אותו כדי להתחיל טרי.

הגדרות

תגית: Customer Chat

הצ'אט widget הלקוחות שלך משתמשים, ואת האזור הגדול ביותר של הגדרות. 6 תת-טאבס, עם מתג המאסטר ושמור על פי העליון של הכרטיסיה.

עבודה דרך תת-הפחמימות על מנת להתקין חדש: זהות ועתק, הופעה, התנהגות, זרימה תומכת, אימון ידע. מתקדם היא תשתיות ויכול לחכות.

זהות ו העתק

זהות מותג

שם ודג'ט, תות, שם AI, השם המשמש להודעות מערכת ו-idle, וכיצד מופיעים שמות הסוכן.סיכן שם מקור מחליט בין השמות האמיתיים, שם מותאם אישית או תווית צוות.

תגית: Chat Greeting

שתי ברכות, אחת עבור כל המבקרים ואחד למבקרים שזוהו.שאלה מתחילה יותר שיחות מאשר הצהרה.

פופאפ Teaser

ההודעה הצף לפני שהצ'אט נפתח, עם השם שלו, גודל גופן וצבעים.הבינה המלאכותית יכולה לכתוב את ההטקטורנים, עם בקרה על כמה לייצר, כמה להראות לכל ביקור ואת הפער ביניהם.

Prompts ו Handoff

התסריט המלא: לבקש שם ודואר אלקטרוני, אישורים, בקשה לאדם, אין סוכנים זמינים, כרטיס שנוצר או בוטל, הפסקת יד על פני שני תריסר קווים בודדים בלוח מפוענח.

הודעות מצב והודעות אידל

שלושה מסרים בלתי נראים ללקוח: הסוכן סוגר את הצ'אט, המבקר הלך שקט וסוכן חוזר ל-AI.מנע מלה פנימית כמו נפתרה או מזינוק.

הצעות והצעות

בעל מקום, תווית הכפתור המדבר-לא אנושי, ושאלות הפתיחה המוצעות.שלוש הצעות טובות מדגימות יותר כרטיסים מאשר דף מאמרים.

שיגור, סמל ואווטרס

סמל שיגור, סמל שונה אופציונלי כאשר פתוח, גודל משגר ותמונות עבור הסוכן האנושי ו- AI.

הופעה

נושא וזכוכית

מצב נושא, צבע פרימיום preset, מטושטש אינטנסיביות ואופייות, בתוספת משקפי אנימציה, קווי מפריד, מסתיר את שורות הסטטוס, להסתיר את כרטיס תיבת ההודעות ולהסתיר את הכפתור הקרוב.התחל עם התחלה; זה קובע עשרות צבעים בבת אחת.

צבעים עיקריים

מפעיל, כותרת, לוח עזר, קישורים, כפתורים, הודעת מערכת ומלחין, כל אחד עם צבע התחלה וסוף עבור גרדיאנטים. אפשרות השימוש בזכוכית ברירת המחדל מתעלמת מהם ושומרת על השיפוע השקוף.

פאנל, בועות וצ'יפס

כ-30 בוחרים המכסים את הלוח, הגבול, הטקסט, אזור קלט וכל סוג בועה (visitor, AI, Agent, הקלדה, מערכת) בתוספת צ'יפס הצעה ומדינת המרחף שלהם.רק לפתוח את זה עבור מיתוג מדויק, ולבדוק ניגודיות על טקסט בועות.

המונחים: shape

רוחב פאנל וגובה, רדיוס פינה, גודל גופני, מיקום מסך, צורה משגר, סגנון בועה ואם avatars להראות. לבדוק את רוחב בטלפון.

התנהגות

תשובות AI באופן אוטומטי

מתג המאסטר עבור תשובות AI. Off פירושו שכל הודעה מחכה לאדם.

מעקב אנושי וטקסט כפול טבעי

מעקב עדין כאשר מבקר הולך שקט, והודעה שנייה אופציונלית קצרה הדרך שבה אדם שולח אחד. Tuned עם משקפי מקס עבור שתיקה, עיכוב ראשון, מכפיל מאוחר יותר, חלון נוכחות וחלון רצף מקסימלי יכול להיות מוגבל שעות עסקיות, ודכא לאחר תודה פשוטה.

תגובה ותשובה

בין אם התשובות מקטנות מילה במילה, וכמה מהר עוזר תשובות, על ידי הכנה או עיכוב מינימלי ומרבי שלך במילימטרים.עיכוב קטן קורא יותר אנושי מאשר תגובה מיידית.

תרגום חי

כל סוכן קורא וכותב בשפתו שלו, בעוד המבקר קורא את שלהם.

חזרה ל-AI לאחר שסוכן

דקות של פעילות הסוכן לפני ה-AI קורות את השיחה.

פתח את הצ'אט

שניות לפני שהשרביט פותח את עצמו0לעולם אל תפתחו.התחילות בנייד; השאירו אותם0אלא אם כן נבדק.

תשובות חכמות יותר

תכנון קדימה לתשובות חד-צדדיות, עומק חשיבה, מודל נפרד אופציונלי של תשובות הסוכן, מראה את ההיגיון למבקרים, סובלנות למגרעות, זיכרון ארוך-המשך, הגבלת עוזר לעסק שלך רק, מחירים במטבע המבקרים וכיצד קישורים מופיעים.

חיסכון בעלויות

מדלג ידע בחיפוש אחר ברכות כגון שלום ותודה, ומפיל את התשובה הארוכה ביותר ב אסימס עלות מבלי לשנות איכות תשובה בשאלות אמיתיות.

שפות

איזו שפות ה-Widget תומך וכיצד הוא בוחר אחד עבור מבקר.

חשבון הלקוחות

תשובות מחשבון של לקוח חתום, מבט אופציונלי על חיים, ועוצמים רק כאשר יש צורך.קרא-רק בכל המקרים; עומס בעת הצורך מקטין באופן מודע את העלות.

החזרים

בקשות להחזרים בסיוע שבו עוזר אוסף פרטים וידיים לאדם.זה אף פעם לא משלים החזר עצמו.

שיחות ו-Widget

שמירה על שיחות קודמות, המשך צ'אט בכל האתרים המחוברים שלך, החלון הסחיר, מבקש אורחים לדואר אלקטרוני ותן לצוות להפוך צ'ט בכרטיס.

תכונות Widget

Emoji Picker, החזקות עם מצב פס אופציונלי בלבד, הבנה של תמונות AI, סמלים קו תחתון, מיקרופון, כפתור דיבור-על-חושך, קולות מבקרים, תצוגה מקדימה, לחצן קול ובדידות ישיבה.

תיבת הקבלה של המנהל, הודעת דואר אלקטרוני ופאנל ברכה

המבקר מוזמן פופאפ, בתוספת סוכניך מזהירים: צלילים בתיבת דואר אלקטרוני, הודעות שולחניות, לחשי לוח, בין אם הלחשים הפרטיים ישפ, ואת מרווח האבק של תיבת הדואר הנכנס.

תמיכה ב Flow

יד אנושית

כיצד בקשות לאדם מוקצה, שניות סוכן צריך להגיב, אם ירידה מחזירה את הצ'אט ל-AI, ואם ה- AI חוזר כאשר הזמן מסתיים.קבע זאת לפני שהוא חי או מבקר המבקש אדם פשוט מחכה.

שעות עבודה

זמני פתיחה, אזור זמן והודעת שעות סגורות בחוץ בשעות אלה הבינה המלאכותית לא תציע אדם. OpsIQ לכתוב.

תשובות כאשר ה-AI כבוי

התשובה הראשונה להודעה חדשה, התגובה כשמישהו כבר מתהפך וכמה זמן לפני שחזר על עצמו.

תבנית מחוץ לרשת

מראה טופס מגע במקום הצ'אט.

כרטיס מבט והודעות משרד

מודעות כרטיסי AI, כך מבקר המכסה מספר כרטיס מקבל את מעמדו האמיתי, אשר מחלקות בינה מלאכותית יכול לעבור ל.פאנל בנוי מראה את הנמען האמיתי עבור כל מחלקה, לפתור באותה הדרך המנטר פותר אותם, כך שתוכל לראות לפני הלקוח עושה כי המחלקה מזהיר אף אחד.

עזרה במרכז צ'אט

בואו מבקרים לגלוש מאמרים שפורסמו מבלי לעזוב את הצ'אט.אתה בוחר היכן נקודת הכניסה מופיעה, תווית הבר התחתונה ואייקון, ואם להציע קישור למרכז העזרה המלאה.

שיחהדירוג

דירוג הכוכבים מופעל כאשר סוכן סוגר את הצ'אט, כאשר הפסקת יד מסתיימת, או לאחר תקופת חוסר פעילות שהגדרתם.בחר אחד או שניים טריגרים, לא כולם.

סקר הפוסט-Chat

סקר קצר כאשר המבקר סוגר את הצ'אט, עם השאלה שלך, עיכוב, כלל התזמון וכובע לביקור. המבקרים יכולים גם לשלוח דוא"ל או להוריד את התעתיק.שאלה אחת עונה; שלושה לא.

סקר דואר אלקטרוני

סקר מעקב בדואר אלקטרוני אחרי השיחה מסתיים, באופציונלית בשפה המבקר צ'אט פנימה, עם שליטה על עיכוב, נושא, אינטרו, שאלה, הן תוויות כפתור והן קו תודה.

תגובה משוב

תערוב ואגודלים על כל תשובה של בינה מלאכותית, להאכיל את לוחות המחוונים האיכותיים.

ארכיון שיחות

לאחר ימים, רצף אוטומטי של שתיקה ומחק שיחות ארכאוניות אחרי ימים.יש מקום שלישי ששומר על המקום, לצד כללי ועקבות.

הכשרת ידע

מה עוזר באמת יודע, שום דבר אחר ב- Customer Chat חשוב הרבה.

אתר ידע

סורק את האתר שלך כך העוזר יכול לענות על זה עד 10 קישורים מתחילים, גבול דף, עומק קישור ותיקייה מפורטת. URL ניתן לבדוק לפני הזחל המלא.מלבד בדיקות, חשבון ודרכי ניהול.

Embedds

The The API מפתח ומודל שהופכים דפים למשמעות החיפושית ולא למשחקי מילות מפתח.

AI ידע ארגן

לחץ אחד ו- AI קורא כל שאלות ותשובות ומזמינים אותן לקטגוריות.

שאלות, תשובות מאומתות

שאלה ותשובה זוגות מטופלים כמקור העדיפות הגבוה ביותר, כל אחד עם מעמד, משקל וקטגוריה. JSON ו- AI יכול לכתוב אותם מתוך תיאור של העסק שלך.כאשר עוזר מקבל משהו לא בסדר, לכתוב שאלות ותשובות: זה מעלה דפי זחילה, כך התיקון הוא מיידי.

מתקדם

ביצועים וגבולות

קביעת מרווח, הגבלת קצב הודעה וחלון, גודל החזקה מקסימלי, ניסיונות מצורפים לחלון, והותר הרחבות קבצים.רשימת הארכה היא בקרת אבטחה; שמור אותה חזק.

אספקה בזמן אמת

הודעה מיידית ומשלוח סטטוס במקום סקר, באמצעות Pusher, Ably או Firebase, עם מרווחי הצבעה נפילה.זיהום הוא בסדר עבור רוב האתרים.

« הודעות Push Notifications

אזהרות למכשירים באמצעות Pusher Beams או OneSignal, עם אינטרס המכשיר.

דחיפה רשת (VAPID)

דפדפנים דוחפים את השימוש במפתחות שנוצרו שלך ללא ספק צד שלישי.

קול, וידאו ו-Scientology Share

אישורי TURN כך ששיחות מתחברות באמצעות רשתות מגבילות, תוך שימוש Cloudflare או אישורי Twilio או שלך URL שם משתמש ו- credential.

זרימה של עבודה בתא הקבלה

הגדרות עבודה הסוכן במקום הגדרות מבקרים: First-response SLA תוך דקות, הציל תצוגות תור, קיצורי מקשים ולוח הבקרה, חיפוש בביטול וכרטיסי לקוחות במפקח.

ערוצים

WhatsApp, SMS, Facebook Messenger, Instagram, Telegramהודעות ישירות X ו-LINE, כל אחד עם מתג תגובה אוטומטית של בינה מלאכותית משלו, פלוס מתג מדיניות לפעולות בינה על ערוצים, התנגדות לתשובה WhatsApp כל ערוץ נכנס לאותו תיבת דואר כמו צ'אט ברשת.

Live Widget Preview בתחתית עדכוני הכרטיסייה בעת ביצוע. השתמש בו במקום לנסח מחדש את האתר שלך כדי לבדוק שינוי.
הגדרות

הגדרות: תבניות

כל דואר אלקטרוניOpsIQשולח, והעיצוב האחד המפריד את כולם.עריכה את דברי כל הודעה וכותב תבניות משלך לכל דבר.OpsIQכבר לא שולח.

עיצוב אחד, הודעות רבות

ה תבנית הדואר האלקטרוני העולמית הוא העטיפה: הלוגו שלך, המנהל, הכרטיס, הטיפוגרפיה והרגל, עם אמצע ריק.OpsIQשולח מוכנס באמצע זה.עריכה את העטיפה פעם וכל דואר אלקטרוני משתנה יחד - תשובות הכרטיס, קבלות החנות, איפוס הסיסמה, תזכורות ההזמנה, מכתבי ה-PeopleOS וכל מה שאתה כותב לעצמך.

אין דרך לשלוח אימיילOpsIQללא עטיפה זו, הוא מוחל בנקודה בודדת כל הודעה עוברת, כך מסר נוסף מאוחר יותר לא יכול להחמיץ את זה.

עריכה הודעה

1
הגדרות פתוחות, אז תבניות

הודעות מקובצים על ידי מה שהם: כרטיס ופורטל, חנות, חותמת חשבון אבטחה, הזמנות, שיחות והודעות, דוחות, מכתבי PeopleOS, ושלך.

2
תכתבי על זה שאתה רוצה

אתה מקבל את הנושא, עורך טקסט עשיר עםHTMLלהציג שאתה יכול לעבור לגור, ותצוגה מקדימה של הדואר האלקטרוני המוגמר בדיוק כפי שהנמען מקבל אותו - החתופה שלך כלול.

3
השתמש ב-Switchs המשתנה

השבבים מעל העורך הם העובדות שמשתנות: מספר כרטיס, תיאור הזמנה, זמן הזמנת מקום. לחץ על אחד כדי להפיל אותו במקום שבו נמצא הסמן.

4
להציל

רק הודעה זו נכתבת. Leave a field ריקה והוא שומר על המילה המובנה שלו; הגלולה על השורה מספרת לך באיזו מדינה היא נמצאת.

💡
משתנה שאתה לא משתמש הוסר כאשר הדואר האלקטרוני נשלח, ולכן הוא קו זה יושב עליו.זו הסיבה לכך שהזמנות ללא מספר טלפון לעולם אינן שולחות "טלפון:" עם שום דבר אחר.

כתוב תבנית משלך

השתמש בזה להודעהOpsIQכבר לא לשלוח: הודעה למשלוח, תזכורת להתחדשות, חבילה בברכה, מפתח רישיון.זה מקבל כל מה שמסר מובנה-בבנה מקבל - עורך, תצוגה מקדימה, כללי התוכנית והעיצוב הגלובלי שלך - ואת המערכת שלך שולחת את זה דרך העורך בעצמךAPI.

1
הוסף תבנית

הכפתור יושב בראש דף התבניות ושוב לצד "התבניות שלך".

2
שם זה

השם הופך להקשר שהמערכת שולחת, המוצגת מתחת לשדה כפי שאתה מקל – לדוגמה x_comp_delivery_booked. It לא יכול להשתנות לאחר מכן, כי משהו כבר יישלח על ידי זה.

3
תגידו מה זה ומתי הוא נשלח

שני קווים אלה הם מה שאתה ועמיתיך קוראים בדף התבניות שנה מהיום, הם שווים שלושים שניות.

4
רשימה של החלקים שמשנים

לדוגמה: שם, כאשר מעקב אחר_link. כל אחד הופך לקישור.{{variable}}אתה יכול להיכנס לנושא או להודעה, והמערכת שלך ממלאת אותו בזמן שליחת.

5
כתוב את הנושא ואת ההודעה

משפטים פשוטים הם בסדר - הפסקות קו הופכות לפסקאות. כתובות את ה-MeSSAGE בלבד; הלוגו, הראש והרגל מגיע מהתבנית העולמית.

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שיחת דוא"ל.templates.list מעבירה אותם בחזרה בצורת שאתה מעביר אותם פנימה.

תבניות ותוכניתך

הודעה שאין לך את השירות

נשאר רשום עם קישור "ראה תוכניות" ולא עורך - כך שתוכל לראות מהOpsIQהוא היה שולח, ומה פותח אותו.

תבניות משלך

בחר את השירות תבנית שייכת כאשר אתה יוצר אותה, או להשאיר אותו על כל תוכנית.מרחב עבודה ללא שירות זה רואה אותו רשום אך אינו יכול לערוך או לשלוח אותו.

Sign-in, אבטחה, הודעות ומבחן הדואר האלקטרוני

לעולם אל תתכנן...להיות לא מסוגל לתקן את מילת סיסמה איפוס מנהלי שלך מקבל יהיה סוג הלא נכון של מנעול.

שאלות

האם ניתן לשנות את העיצוב רק להודעה אחת?+

לא, ומכוון.העיצוב הוא העטוף והוא משותף, וזה מה שמחזיק כל דואר אלקטרוני באופן מודע שלך.מה זה per-message הוא המילה, לוח העובדות וכל כפתורים שאתה מוסיף בתוך ההודעה.

מה קורה לניסוח שלי אם אני לוחץ על איפוס?+

איפוס מופיע על התבנית העולמית בלבד, והוא מחליף את מה שיש בעורך עם העיצוב המובנה.אין דבר שנכתב עד שאתה לוחץ על שמור, כך שתוכל לסגור את הדו-שיח כדי לשנות את דעתך.

מחקתי את אחת התבניות שלי בטעות.+

הסרת שתי קליקים בדיוק מאותה סיבה – הזרועות הראשונות, ואומרת לך מה יפסיק לעבוד.אם זה כבר נעלם, ליצור אותו שוב עם אותה שם ואותו הפניה חוזרת; רק את המילה יש לתקן.

האם מחבר או להוסיף על להביא תבניות משלו?+

כן, חבילה מפטרת דואר_templates.jsonבספריה שלו, וההודעות שלה מופיעות תחת "תבניות של ניירוב" עם אותו עורך, תצוגה מקדימה, עטיפה ושער התוכנית.המילה שלך עריכה שייכת למרחב העבודה שלך ולשרוד את החבילה.

הגדרות

הגדרות: OpsIQ כתיבה

כרטיסים נענו בכתב: תשובות אוטומטיות, מערכת כרטיסי הלידה, הסלמה, שעות עסקיות, הפסקות והודעות הדואר האלקטרוני של הלקוח.

אוטומטי-reply

הצג Show OpsIQ לכתוב כפתורים

הוסף את כפתורי עוזר הכתיבה עבור סוכניך ב- admin.

כרטיס אשראי - באופן חד-משמעי

עומד בתור לקופות חדשות ומענה עליהן לאחר עיכוב. התחל עם זה כבה ובדוק טיוטות למשך שבוע. החזרים, ביטולים ושינויי גישה צריכים תמיד להגיע לאדם אחד.

מחלקות אוטו-reply

אילו מחלקות אוטומטית יכול לענות על כך שכל דבר שאינו רשום נשאר לאדם, שהוא ברירת המחדל הבטוחה.

לוח זמנים עיכוב תגובה ( דקות)

כמה זמן לחכות לפני התגובה האוטומטית שולחת תשובה מיידית כרובוט; מספר דקות קוראות בתור צוות מהיר.

Max AI עונה לכל כרטיס לפי מחלקה

כובע חד פעמי, למשל בילינג 1 תמיכה ותמיכה 3ללא כובע חוט מבולבל יכול לחדור.

אורך תגובה, מעמד וזהות

אסימונים בכתב מקסימלי, מצב הכרטיס לאחר תשובה ולאחר הסלמה, ואשר מנהל חשבון את התשובות האוטומטיות מיוחסים לו. השתמש בחשבון בשם ברור כך שצוות יכול להגיד תשובות בינה מלאכותית מאנשים.

כרטיסי אשראי

מערכת הכרטיסים Native

מערכת הכרטיסים שהוקמה OpsIQ עבור ההתקנה ללא עזרה חיצונית.

ארכיון התגבשות לכרטיסים מקומיים

הופך את הדואר האלקטרוני הנכנס לכרטיסים. OpsIQ מספק את נקודת הקצה URL, auth token, תסריט דרך ו-PHP בינארי כל דבר שיכול לפרסם את נקודת הקצה הזה יכול ליצור כרטיסים, כך לשמור על הסוד הסימון.

תשובות מרובות-turn ועיכובים ודיגה

בין אם ה-AI ממשיך לענות כאשר השיחה נמשכת, ובין אם היא ממתינה לחלון שקט כל כך שלוש הודעות מהירות לקבל תגובה אחת.החלון השקט הוא ההגדרה הטובה ביותר לביצוע תגובות אוטומטיות נחשבות.

פורטל תמיכה ציבורית

דף מוצף לקוח שבו כל אחד יכול להרים ולעקוב אחר כרטיס, עם קו יתקבל בברכה אופציונלי.כתובתו ומבטיו מוגדרים בכרטיסיה שער התמיכה.

מספר הכרטיס

כמה מכתבי אקראי מופיעים במספרי כרטיסים שנוצרו.

לקוחות דואר אלקטרוני בשפתם

הודעות דואר אלקטרוני של כרטיס עוקב אחר שפת הלקוח.דואר אלקטרוני אף פעם לא משנה את השפה: הודעות, התראות המחלקה, תדריחות ודיווחים מתוכננים להישאר בשפת המערכת שלך.

ידע ואישורים

הכרה קבועה בכרטיסים חדשים, בתוספת הודעות אישור כאשר כרטיס נפתח, כאשר משוב נשאר וכאשר הכרטיס סגור, כל אחד עם תצוגה מקדימה חיה.יש גם עטיפה תבנית דוא"ל גלובלית ואת הקישור מאחורי התצוגה כפתור הכרטיס שלך.

הקרנה של AI

כרטיסי מסך משולחים לא ידועים, ויכולים להעביר חשדות ספאם בכוחות עצמם. השאירו את המעבר האוטומטי עד שראיתם את שיפוטה.

כרטיסים ל- Auto- Close

סגור כרטיס לאחר מספר ימים שקטים, ספר ללקוח במסר הסגור כיצד לפתוח מחדש.

שעות עסקיות (SLA לוח השנה)

זמן, פתיחת וזמני סגירה, ימי עבודה וחגים עבור זמנם הראשון ושעה החלטה. לוח זמנים נפרד משעות העבודה תחת צ'אט לקוחות.

כרטיסים חדשים

משימה אוטומטית, אופציונלית רק סוכנים מקוונים, עם מיומנויות הסוכן ורגישות התאמה עבור המיומנות מבוסס על גילוח.

הצעות כרטיסים כפולים

כתמים כאשר לקוח פותח כרטיס קרוב אחד שכבר יש להם, עם רגישות מתאימה.

סקר שביעות רצון לאחר קרוב

הודעות דוא"ל סקר יום לאחר סגירת התוצאות מופיעות בדף CSAT.

להודיע למחלקה בדואר אלקטרוני

הודעות דוא"ל המחלקה כאשר כרטיס חדש מגיע. Recipients הם חברי המחלקה, לא כתובת תיבת הדואר של המחלקה, אשר הוא כרטיסי הכתובת הנכנסים מגיעים.

מה יכול להיות שהבינה המלאכותית תקרא

גישה לנתונים של לקוח

מתג מאסטר בתוספת הרשאות קריאה בודדות בלבד עבור סיכום פרופיל הלקוח, חשבוניות, עסקאות, איזון אשראי, מוצרים ושירותים, תחומים, שרתים מקושרים וסקירה ברמת גבוהה של חשבון.התחל עם סיכום הפרופיל ולהוסיף קטגוריות כתשובות זקוקות להם.

הסלמה וידע

הסלמה ב-AI

מעביר כרטיס למחלקה מתאימה יותר לפני שעניתי.אתה בוחר את המחלקות המותרות, עיכוב הבדיקה, ויכול לכתוב הוראות הודעת ההסלמה שלך. הפעל את פתק ההסלמה הפנימי כך הצוות שלך יכול לראות מדוע כרטיס נע.

הגדרות ידע

בין אם תשובות משתמשות בשפת הלקוח, בין אם הן מציירות על קישורים ושאלות שאלות זחליות, בין האם ה-AI קורא תמונות ודימויים. PDF קבצים מצורפים, מצב תגובת הידע, בין אם מיובאים JSON הידע משמש, ואם קישורים המקור עשויים להופיע. השתמש בקישורים זוחלים ושאלות שאלות צריך להיות על, או AI הוא ניחוש.

להפסיק את התגובה האנושית

ברגע שהצוות עונה, הבינה המלאכותית מפסיקה לענות על הכרטיס הזה.בלעדיו ה-AI יכול לדבר על הסוכן שלך.

הוראות כרטיס ודואר אלקטרוני

הוראות טקסט חינם מעצבות טון ותוכן לכל תשובה, עם דוגמא עבודה קפדנית.להיות ספציפי לגבי מה ש-AI לא צריך לעשות לעולם.

יבוא JSON ידע ידע

העלאה או פסטה JSON קובץ ידע עבור עוזר הכתיבה.

סטודיו Button Studio

מעצב מלא עבור הכפתור הפונה ללקוח: סגנון הצגת, גודל, תווית, אייקון, צורה, רוחב מינימלי, סגנונות רקע עם צבעי ראשוניים ושניים, זווית גרדיאנט, גבול, רדיוס פינה, צל, טיפוגרפיה, מילוי, אנימציות במצב אפס, תנועה וצבעים של השעון, וטבעת המיקוד, ועוד קופסא CSS מותאמת אישית לכל דבר שהבקרות לא מכסות.

הגדרות

הגדרות: פורטל תמיכה

האתר הפונה ללקוח שבו אנשים מרימים ועוקבים אחר כרטיסים וקראו את מאמרי העזרה שלך.כרטיסיה זו שולטת כיצד היא מגיעה וכיצד לקוחות נכנסים; העיצוב החזותי שלה נעשה ב-Portal Studio התמיכה.

פורטל או פורטל כרטיס Embedded: מי אני רוצה?

אלה שני מוצרים שונים ואנשים לערבב אותם כל הזמן. הם פותרים בעיות שונות, וריצה משותפת היא נורמלית.

פורטל תמיכה: מקום שאתה שולח לקוחות

הסטודיו מעצב אתר תמיכה מלא OpsIQ מארחים בשבילךיש לו כתובת אינטרנט משלו, או התחום שלך, והוא נושא את כל החוויה בשירות עצמי: לעזור מאמרים עם חיפוש, טופס הבקשה, היסטוריה של כרטיס, סימן לקוח ועוזר.בחר תבנית, עבודה באמצעות ערכת הנושא, ניווט, ליברט, ידע, Footer, Brand, כרטיסים, טפסים ועוזר. CSS, תצוגה מקדימה על שולחן העבודה, לוח וטלפונים גדלים, ולאחר מכן לפרסם.

השתמש בו כאשר אתה רוצה יעד אחד מתוגמל תוכל להצביע על כל לקוח, ואתה מעדיף לא לבנות או לשמור על אזור תמיכה בתוך אתר האינטרנט שלך.

פורטל כרטיס Embedded: כרטיסים בתוך האתר שלך

המונחים: theהטמיע רק חווית הכרטיס בדף אתר האינטרנט שלךלקוחות פתוחים, לעקוב ועונים לבקשות תמיכה מבלי לעזוב את הדפים שלך, ואת ראש משלך, ניווט ועיצוב להישאר בדיוק כמו שהם. הגדר את הפריסה, מראה וגישה כללים ב בונה widget, תצוגה מקדימה התוצאה, ולאחר מכן להעתיק את הניפט לתוך הדף שלך.

השתמש בו כאשר יש לך כבר אתר או יישום עם עיצוב משלו, ואתה רוצה תמיכה להתרחש בתוכו ולא להעביר את הלקוח לכתובת אחרת.

הגרסה הקצרה

הסטודיו בונה מקום שאתה שולח לקוחותהגרף מביא כרטיסים איפה הלקוחות שלך כברעסקים רבים לרוץ שניהם, להטביע את הכרטיס widget באזור החשבון שלהם עבור בקשות incontext תוך שמירה על הפורטל המארח כאתר שירות עצמי מלא עם מאמרים וחיפוש.הם מתגים עצמאיים.

כתובת וגישה

מצב Access

בין אם הפורטל פתוח לכל אחד או מוגבל ללקוחות חתומה. פורטלים פתוחים מקבלים יותר כרטיסים ועוד ספאם.

אפשרויות לLeeout

בין אם הפורטל ועוזר למרכז לשתף גיבור אחד או להשתמש בשניים, אשר ניווט ורגל מופיעים על שני פני השטח, ואת תווית סעיף הניווט.

כתובת פורטל

הלקוחות משתמשים.בחר שם ושם OpsIQ מציג את הפורטל וכתוצאה מכך התאמה של כתובות מרכז העזרה, שינוי זה מאוחר יותר שובר קישורים שכבר שלחה.

התחום שלך

משמש את הפורטל מתחום שבבעלותך, כגון תמיכה. yourdomain. com.

פורטל הכרטיסים Embedded Tickets

מעברים על שרביט ה- Drop-in המתואר לעיל, ופותח את בונה המטועים שבו תבחר את הפורסה, המראה ואת כללי הגישה, תצוגה מקדימה של התוצאה ולהעתיק את החטיפה עבור הדף שלך.זה לא פורטל: סטודיו עיצובים סטודיו פורטל מתאר את פורטל מתארח, זה מציב כרטיסים בתוך האתר שלך.שני יכול להיות בו זמנית.

כיצד לקוחות נכנסים

אלה הלקוחות שלך לחתום על אפשרויות.החתמת מטה-בצוות מוגדר תחת הגדרות, אבטחה.

שיטות Sign-in

אילו אפשרויות מופיעות בדף Sign-in. Connector ו-Mail Sign-בעבודה באופן אוטומטי.

סימן חברתי

ספקי חשבון צרכניים, כל אחד צריך מזהה לקוח וסוד, עם כתובת הפניה המסופקת על ידי OpsIQ להירשם עם ספק זה.

Single Sign-on (OIDC)

סימן לקוח באמצעות ספק זהות, עם מנפיק URL, מזהה לקוח, סודי ואופציונלית מותרת לדואר אלקטרוני.

לקוח SAML 2.0

The The SAML שווה ערך. OpsIQ מספק תשובה ACS URLו- SPישות מזהה; אתה מספק את מזהה הישות IdP, Sign-in ו- sign-out URLs X.509 תעודה ושמות אופציונליים SAML על שיטות Sign-in או שזה לא יופיע.

סימן ללא ים מתוך האפליקציה שלך

קישור עמוק חתום כך שלקוח כבר חתם על אדמות היישום שלך בפורטל מבלי לחתום שוב. OpsIQ מספק את החתימה סודית, פורטל URL מפתח סביבת העבודה, מסלול שלם עבור השפה שלך (PHP, Laravel, WordPress, WHMCS, Node.js, Flask, Django, .NET, Rails, Java, Go, ו On-hosted Installs the Self-hostd OpsIQ השרת עצמו, הערות שלב אחר צעד ההתקנה ו גנרטור עבור קישור בדיקה חתום. השתמש בגנרטור לפני כתיבת כל קוד.

איך המסלול עובד

הלקוח לוחץ על קישור תמיכה נקודות בדרך.התוואי מוצא את הלקוח חתום לאפליקציית שלך (אורח נשלח אל הכניסה שלך ובחזרה), קורא הסוד מהשרת שלך, חותם אסימוני חד פעמי כיפוג בתוך שתי דקות, ומפנה אל הפורטל עם לא-פררטר וללא כותרות כל חנות כך הסימון אינו חרוטב או דלף.

שלט של הפורטל עצמו בלחיצת כפתור

ב-Portal Studio, Sign-in page, הפעל את הכניסה של האתר שלי ולהגדיר את דף הכניסה שלך URL באותו מסלול, הפורטל מוסיף opsiq_portal_return (עמוד הלקוח היה שם); המסלול מכבד אותו רק כאשר הוא נמצא בתוך כתובת הפורטל שלך ומביא את הלקוח בחזרה לשם, חתום.

WHMCS

אין מה לכתוב: WHMCS התחבר מאתרים מרוחקים כבר חותם על לקוחות לתוך הפורטל ומטפל בכתובת ההחזרה. הגדר את דף הכניסה שלך URL אל שלך WHMCS הכניסה של אזור הלקוחות

סמן בכל מקום

ההרשמה מהפורטל גם חותם את הלקוח מתוך היישום שלך.

לתפוס ולהגן

דרישות שדות

אילו שדות מובנים טופס הבקשה נאסף.כל שדה נוסף מאבד את ההגשה, אז לבקש רק מה שאתה צריך לקצץ.

הגנה והתעללות

דבש וקצב הגבלת זמן תמיד להגן על הטופס הציבורי.בלמעלה אתה יכול לחסום כתובות דוא"ל חד פעמיות, להוסיף דומיין חסומים משלך, ולהוסיף CAPTCHA באמצעות Google reCAPTCHA או Google Cloudflare ReCAPTCHA מחדש משתמשת במפתחות שכבר מוגדרים תחת הגדרות, אבטחה; מפתחות טרסטיליים נכנסים לכאן.

ניתוח פורטל

סיכום לקריאה בלבד של פעילות פורטל במהלך שלושים הימים האחרונים.

הגדרות

הגדרות: הרשאות, Licence, Cron ו- Zone

קבוצת המערכת, בנוסף לפקדי הגישה של הצוות, הקובעים מי יכול לראות אילו לשונית הגדרות.

גישה ו Permissions

הרשאות Per-admin

כל מנהל מקבל סט מפורש של הרשאות המכסות את הגישה לתיבת הצ'אט, אשר הגדרות סעיפים הם עשויים לערוך, ואת המחלקות שלהם.כל מי עם תפקיד מנהל מלא תמיד יש כל רשות הגדרות להחליט אילו כרטיסיות אדם רואה, כך להעניק את הסט הצר ביותר המאפשר להם לעבוד.

רישיון

מציג את הרישיון הנוכחי שלך, מה הוא מזכה אותך ואת מעמדו.

הגדרות Cron

התקנה עצמית בלבד. OpsIQ ענן משימות מתוכננות לרוץ בשבילך ואת הכרטיסייה מוסתרת.שורה אחת של crontab מניע כל משימה מתוכננת: כרטיס אוטומטי, הסלמה routing, חיתוך רענון, בדיקת תיבת דואר ו מסנכרן המחבר.

1
העתק את הקו

הכרטיסיה מציגה את קו crontab המדויק לשרת שלך עם PHP בינארית נכונה כבר נבחרה.

2
הוסף אותו ל crontab

Run crontab -e as the User that run PHP and paste the Single line cPanel השתמש בכלי Cron Jobs במקום זאת.

3
לבדוק

בתוך דקה האריחים הלב פוצצים אור למעלה, השתמש עכשיו כדי לבדוק מיד במקום לחכות.

לוח פעימות הלב מראה את הריצה האחרונה, משך ומה מעובד הן תור אוטומטי והן את הדואר האלקטרוני ואת סקר המחבר.זה מזהיר כאשר האחרון הגיע מהלחצן האינטרנט ידני ולא מחצץ בשרת אמיתי, וכאשר לב דופק נעלם.

איזור הסכנה

למחוק את כל המעקב אחר נתונים

כל דבר OpsIQ נאסף או נוצר.אתה מתקתק מה לכלול ו הקלד את ביטוי האישור בדיוק. הגדרות ותצורת אתר, כתובות חסומות, כל הצוות שלך כתב (בסיס ידע, שאלות, תרגומים, עיצובים, הגדרות פורטל) וקבלות הסכמה נשמרים כולם.

עקבו אחרי יותר Than

אותו גורף מוגבל לרשומות ישנות יותר מאשר 30, 60, 90 או 180 ימים, או שנה. עבור שימור מתגלגל אוטומטי להשתמש בערכי השימור באופן כללי ועקבות במקום ולתת למשימה המתוכננת לעשות זאת.

🚫
הייצוא גיבוי מהגדרות, כללי לפני השימוש בכל דבר באזור הסכנה לא יכול להיות בלתי-נפרד.
הגדרות

ניהול הצוות שלך

הזמינו חברי צוות ומציינים תפקידים כדי לשלוט מי יכול לגשת למה.

צוות
צוות ומחלקותמסך הצוות: שולחן של מנהלים עם מגע, תג תפקידים (Owner, Full Admin, Agent) והמחלקות שכל אחד יכול לגשת אליו.צוות ומחלקותסביבת העבודהצוות ומחלקותתמיכה ב-Se adminקשררולמחלקותאאו[email protected]אתר אוסלוהבעליםהכלקמ"ש[email protected]קוג'ו מנסהמלא Adminהכלתרגיל[email protected]ריטה Tettehהסוכןבילינגס.ב.[email protected]הסוכןתמיכה1TEAMהזמנת וניהול ניהול2ROLESבעל · מנהל מלא · סוכן3SCOPEDגישה ל Per-department
מסך הצוות האמיתי: כל מנהל עם הקשר, התפקיד והמחלקות שהם יכולים להגיע, סוכנים ממוספרים, בעלי המלאכה.

תפקידים

הבעלים

גישה מלאה כולל רישיון, חיוב ואזור סכנה.אחד לכל ההתקנה.

מלא Admin

גישה מלאה למעט רישיון ואזור סכנה, יכולה לנהל את מנהלי המערכת.

הסוכן

מוגבל למחלקות שהוקצו, כרטיסים, צ'אטים וניתוח בלבד.

Inviting חברי צוות

1
לכו אל הצוות

לנווט לצוות בצד.

2
ClickBook

הכנס את הדואר האלקטרוני של חבר הצוות.

3
תפקיד

בחרו בעלים, מלא אדמין או סוכן.

4
מחלקות

עבור סוכנים, בחר מחלקות נגישות.

5
שלח הזמנה

הם מקבלים אימייל עם קישור להגדרה.

הגדרות

ביצועי צוות

כיצד צוות התמיכה שלך פועל. Access הוא באישור, לא על ידי תפקיד: רשות הנוף פותח את הדף, הרשות לניהול הרשאות נפתחת מטרות, QA ועמית-הזהה קורא, ואת ההרשאה של תגמולים היא מה מוסיף הכרטיסייה של Rewards. A מוביל יכול להיות נתון כל אלה מבלי להפוך למנהל מלא.

ביצועי צוות
ביצועי צוותהמסך של ביצועי הצוות: סוכנים מדורגים על ידי בר ציון מורכב, CSAT ומאזן פרס עם כפתור Pay לכל שורה.ביצועי צוותסביבת העבודהביצועי צוותקטגוריהתוצאהCSATהזדמנותתרגילריטה Tetteh4.8$42לשלםס.ב.סם Boateng4.5$28לשלםקמ"שקוג'ו מנסה4.2$15לשלםאאואתר אוסלו4.9$51לשלם1SCOREDביצועים משותפים2CSAT & LOADדירוג + נפח3REWARDSאיזון הסוכן
מסך הביצועים של הצוות האמיתי: כל סוכן הבקיע על נפח ו- CSAT, עם מאזן פרסים אתה יכול לשלם לכל שורה.

כיצד הדף מאורגן

ביצועי צוות הם חמישה כרטיסיות.כל אחד עונה על שאלה אחרת, והם ורוונו עד כמה דחוף הם בדרך כלל זקוקים לך.

01 מרכז הפיקוד

מצב תור חי, תוצאות הלקוחות נגד המטרות שלך, איך הקיבולת הושקעה, מצבים זקוקים להחלטה, ואת מדד הראיות שהוקצה לכל חברי הקבוצה.

02 חברי צוות

המנהיג, ההכרה (רוב השתפרו ו streaks), מסעות, ואת השליטה ב- Opt-in עבור מי יכול לראות את הדירוג.

03 איכות איכות

הבקיעים, הערכות מוקלטות, הסכם ביקורת מתוקן במקרה, סעודת ביקורת וסכסוכים ראיות.

04 פרסים

ערך Token, תביעות תשלום וההקצאה של תקופת השלטון: אישור תקרה ממומנת, סקירת התצוגה המקדימה, סיום.

05 היסטוריה

כיצד סביבת העבודה עברה לאורך זמן: מדדי מגמה עם תרשים, וטבלה 28 מפת חום היום מראה כאשר הצוות עובד.כל כרטיס מסתיר את עצמו עד שיש מספיק היסטוריה כדי לצייר אותו.

לא מקלקלת היא לא אפס

חבר צוות ללא מספיק נפח מטופל - או מי ממדים נושאים ראיות להוסיף עד פחות ממחצית המשקל מוגדר - מוצג כ"לא מקובע" שלהם, דירוג והלהקה הם ריקים וההתמוטטות שלהם מוסתרת.זה מכוון: להפוך מדידה נעדרת כמו אפס מעמיד מישהו בתחתית הדירוג של שבוע שקט.

שתי ההוכחות קובעות עבודות שונות, וכדאי לשמור אותן בנפרד.מינימום מטופל מחליט אם מישהו הבקיע בכלל.ציון מינימום אינו משפיע על הציון: הוא מחליט פרס והתאמה לתגמול.אז ניתן להשיג במלואו את חבר הצוות ועדיין להיות בלתי אפשרי לתקופה זו, כי רק מעט לקוחות דירגו אותם.

💡
כל דמות מוקצה למרחב העבודה שאתה צופה בו ולטווח הזמן שבו אתה בוחר.חבר צוות העובד בשני חללי עבודה נפרדים יש שיא עצמאי בכל אחד משני יוצאים מן הכלל הראויים לדעת: קבוצה אתר הוא מרחב עבודה אחד, כך שתחומים החברים שלו נמדדים יחד; ואת אתרי האינטרנט רואים אמצעים במכוון הכל בבת אחת.

מדד הביצועים

מורכב של חמישה ממדים, כל אחד נמדד נגד מטרה שאתה מגדיר ולא כנגד עמיתים, ולאחר מכן נמשך לכיוון האמצעי כאשר הראיות שמאחוריו הוא דק.70 כך שציון מצוין דק נסחף וציון עני דק נמשך שבוע ראשון רע בארבע שיחות אינו פסק דין מיושב.

איכות

שביעות רצון הלקוחות מה משוב מאומת.

אחריות

זמן תגובה ראשון ב-P50 ו-P90, מול המטרות שלך.

החלטה

זמן החלטה וקצב פתרון חד-פעמי.

SLA

השגת נגד SLA שהגדרת, בתוספת ב- סיכון וצרות.

סיקור

פתיחת והעלאת שיעורי - העבודה שחוזרת.

💡
משקל הוא תצורה יחסית; הם לא צריכים 100 ראיות חסרות יכולות רק להוריד את האינדקס, לעולם לא להעלות אותו – המשקל המלא הקבוע נשאר במכנה.

יכולת וזמן פרודוקטיבי

זמן מצטבר, ייצורי, נפתרה לשעה פרודוקטיבית ונתח מקוון של החלון. Utilization אינו מדווח במכוון: הוא צריך שעות מתוכננות כמכנה,OpsIQ אין מקור סטראוסטר או שינוי, ומניפולטור חלופי יהיה ניחוש עם סימן אחוז.זה קורא כמו לא זמין עם סיבה זו המצורפת.

⚠️
דיווח רק על כך אוקטנסי אומר כיצד הזמן הושקע, לעולם לא כמה טוב הוא בילה, וזה אף פעם לא קרנות, שערים או גדלים תשלום. חבר צוות ללא ראיות בזמן טיפול קורא כאפס, מעולם לא כמו אפס.

אבטחת איכות

ציון הוא הבודקים הפשפשריקים משמיעים שיחות אמיתיות נגד.רק גרסה שפורסמה יכולה לקבל הערכה, ופרסום גרסה חדשה לעולם לא לשכתב מחדש את מה שכבר הבקיע.סקירה היא עדות על שיחה אחת, ולא פסק דין על אדם.

הסכם ביקורת

דווח כסטטיסטיקה מתוקנת הזדמנות (Kappa של כהן ופלייס), לא אחוז הסכם גולמי. 2 סוקרים העוברים הכל מסכימים 100% הזמן, תוך שמירה על שום מידע.

ביקורת: סחף

בין אם בודקים יותר או רכים יותר באופן שיטתי מאשר עמיתיהם באותה שיחה - השוואה נגד שאר הלוח, לא מגמה לאורך זמן.

מחלוקת

חבר צוות יכול לערער באופן רשמי ראיות שנרשמו עליהם.וויכוח פתוח חוסם את סיום הסיכום של גמול עד שהוא נפתר.

ביקורת עצמית

חבר צוות לא יכול להגיש הערכה של עצמם.

⚠️
הערכות מודרגות בינה מלאכותית לא יכולות להשפיע על השכר עד ש-Clibration יפורסם, מה שמוכיח שהמודל מסכים עם בודקים אנושיים מספיק מקרוב, שנמדדו על ידי kappa נגד מדגם מינימלי.שער פתוח פירושו שהמודל מסכימה עם אנשים קרוב מספיק כדי לספור – זה אף פעם לא אומר שהדגם הוא הנכון.

הכרה מחדש

דירוג לבד תיעד מצבי כשלון: משחקים מטריים, כוויות וגילוח ציבורי של מי שהוא אחרון.שלוש חלופות יושבות לצד זה.

שיפור

נמדדת בפני שיאו הקודם של חבר צוות, לא נגד עמיתים, עם קוצר רוח כל כך מכנה זעיר לא יכול לקנות ניצחון.

פס

תקופות חתומות פוגשות בר קבוע, מוכרז - ממוצע דירוג, נפח מטופל, ספירת הדירוג וקצב הנקה שלילי, כל הדמויות המוחלטות.כולם יכולים להחזיק מעמד בו זמנית, כך שזה לא יוצר דירוג, ועמית שיש לו חודש יוצא דופן אינו יכול לשבור את שלך.

דירוג Opt-in

חבר צוות תמיד רואה את המדד שלו; בין אם הם רואים עמיתים זו החלטה של סביבת עבודה. ניתן לפרסם להקות פרונטלה במקום עמדות מוחלטות.

💡
ההכרה לעולם לא נוגעת בכסף.אדם אינו יכול לממן תשלום או לשבור אחד, והשיפור ביותר הוא לא קטגוריה של פרסים.

תוצאות חיפוש

מטרה הצוות פועל לכיוון, נמדד נגד בר מוכרז ולא כנגד זה - כך שכולם יכולים לנקות את אותה המסע באותה תקופה.

סקופ ונחישות

אדם או צוות; אחד-off, חוזר, או עונתי עם חלון מפורש.

קריטריה

שיחות שטופלו, דירוגים שהתקבלו, ימים פעילים, דירוג ממוצע או שיעור משוב שלילי.כל מוחלט - שום מדד שהערך שלו תלוי במה שעשו הקולגות.

שמירה איכות

נדרש על כל חיפוש עם יעד נפח.להיט את המספר בעוד האיכות נופלת מתחת לרצפה מעכבת את החיפוש במקום להשלים אותו, והוא מוצג כחזקה, לא בלתי גמורה.

גבולות חוזרים

כובע חד פעמי, מונע על ידי הקריטריון האיטי ביותר, בתוספת קירור אופציונלי לפני הספירה חוזרת יכול לספור.

חיפושים

התקדמות משותפת ללא כל חבר צוות שפורסם, כך שחיפוש קבוצתי לא יכול להפוך להנהלה.

מפגשים מאמן

אימון הוא שיא, לא צ'אט.יש מאמן, חבר צוות מאומנים, זמן מתוכנן, נקודות דיבור מוסכם וסיכום שנכתב לאחר מכן. צ'טים אמיתיים, כרטיסים ו- QA הערכות מוצמדות אליו כראיות, כך השיחה מעוגן לעבוד שאכן קרה ולא לזיכרון.

נקודות מדבר

מסכים לפני הפגישה, כך שהחבר'ה לא הולכת להפתעה.

ראיות

צ'אטים, כרטיסים ו- QA הערכות המצורפות לפגישה. A pin מאחסנת התייחסות – סוג ואיד - לא עותק, כך שהוא תמיד מצביע על שיא החיים.OpsIQ לא לאמת את ה-id לפני קבלתו.

פריטים

כל אחד בעלים ותאריך המשוער. פריט מעבר למועד שלו מוצג כמצב מופרש - מצב נגזר, לא סטטוס שיש לזכור להציב.

הודעה פרטית

העמית המאמנים שמאמן לא יכול לקרוא את זה – לא כסוכן, לא כמנהל, לא כבעלי הבית.זה בודק לפני כל רשות אחרת ולא ניתן לגזול יתר.

מי יכול לראות פגישה

המאמן, חבר הצוות וכל מי שיש לו אישור ביצועי צוות ניהולי.אף אחד אחר, כולל חברי צוות אחרים באותה המחלקה.

ביקורת

כל יצירה, עדכון, סיכות, ללא ספין והשלמה מוקלטים עם מה שמשתנה, על ידי מי.

💡
אימון הוא נפרד בכוונה מההבקיעה ומהכסף.פגישת לא משנה את האינדקס של אף אחד, אינה מביאה פרס, ואינה מופיעה על ראש הממשלה.

פרסים ופרסים

פעילות רשומה הופכת ל אסימונים עם ערך מזומנים שאתה מגדיר.הדרך לתשלום היא איטית במכוון וכל צעד נרשם.

1
קביעת הערך הסימון

כמה אסימונים שווים כמה כסף, ומה כל פעילות שווה.

2
תגית: Thefunded התקרה

לתקופה לוח שנה סגורה, מנהל שלם קובע את אסימוני המקסימום שהוא עשוי לשלם.הצלת טופס ההגדרות אינה מסמיכת תקציב, והיא לא יכולה לשנות תקרה שכבר אושרה.

3
ביקורת: The Preview

מילואים, והסיבה לכך שכל אחד אינו זכאי למחלוקות ראיות פתוחות חוסמות את הצעד הזה.

4
גמר

ההקצאה מוקלטת באופן קבוע עם הראיות שמאחוריה. תקופה שהוצעה שום דבר לא יכול להיות מפוענח ומנוהל מחדש.אחד שהנפיק אסימוניות חייב להיהפך ראשון:OpsIQ כותב כניסה מגובשת נגד כל ארנק ולעולם לא נמחק את המקור, כך שהמנהל עדיין מראה מה קרה ומדוע ורק אז הוא התקופה המשוחררת.הרסאל מסרב אם מישהו כבר הרוויח יותר מהסכום שיש לשחזר, ושמות אשר עד כמה.

⚠️
זכאות דורשת משוב של לקוחות מאומתים. ציוני איכות של בינה מלאכותית עשויים להשלים את המשפט אבל לעולם לא להחליף אותו, ושותף צוות המוצג כ-Unscored אינו זכאי.25% מעל חלקם הצפוי של התקופה, כך שחודש עשיר מאוד לא יכול לספוג את כל התקציב.
💡
בעל החשבון אינו לוקח חלק בפרסים או פרס טוקן, ללא מתג: הם מסמיכים את התקרה הממוסדת וסיימו כל הקצאה, ואין מעליהם לאשר מה הם משלמים לעצמם.

כל השאר לוקחים חלק כברירת מחדל, צוות מוביל ובעלי מניות הכלולים.לעזוב מישהו בחוץ, לפתוח אותם ב- Team & מחלקות ולהגיש את החלק המשתתף בפרסים וסיכויי תגמול.העבודה שלהם עדיין תושלם והראה; הם מפסיקים להיות מועמד מאותו נקודה והלאה, ושום דבר שכבר לא הסתיים נגע.

⚠️
אף אחד לא מאשר כסף לעצמו, כי האנשים שיכולים לקחת חלק הם גם אנשים שיכולים לאשר תשלומים.OpsIQ מסרב תשלום או אשראי לתוך הארנק שלך, לשלם את הטענה שלך, להשלים תקופה שבה אתה משלם, והשלמת פרס שאתה לנצח.עוד מנהל מלא או הבעלים חייב לעשות זאת. Pay כל הטענות לדלג על משלך דוחות כי הוא דלג, לא נכשל.

מי יכול לראות ולעשות מה

הצג ביצועי צוות

הלוח, המדינה החיה, יכולת וסקירה איכותית של סביבת העבודה.

ניהול ביצועי צוות

מטרות והבקיע, יצוא, QA ציוןcards and Assessments, אימון, חיפושים והקריאה הנושאת נתונים מזהים עמיתים כגון היסטוריה של ניהול ההיסטוריה ואת ההיסטוריה הפרסית.

צוות הצג תגמול כספי

מאזן, ערכי מזומנים, תביעות והערות תשלום - מופרדות מראיות ביצועים כי זה Payroll-adjacent.

מנהל מלא רק

כל מוטציה כסף: לשלם פרס, תשלום או דוחה תביעה, אישור תקציב, סיום, מחיקה או ביטול הקצאה, והגדרת שיעור האסימון-ל-להק.לא ניתן להקצות על ידי מתן רשות.

שימוש בו די

מדד הביצועים הוא ראיות ניהוליות, לא החלטה אוטומטית של תעסוקה.פתח את שיחות המקור מאחורי מספר לפני משחק על זה, ולשקול מורכבות מקרה, לוחות זמנים, לעזוב ולאפשרות. שבוע קשה אחד אינו נראה כמו דפוס מתמשך.

הגדרות

אתרים (מרחבי עבודה)

אתרים (מעבדות עבודה) מאפשרים לך לנהל אתרי אינטרנט מרובים מאחד OpsIQ לכל אחד יש מעקב משלו, בינה מלאכותית, מחברים וגישה קבוצתית.

אתרים
האתרים שלךמסך האתרים: רשימת חללי עבודה, כל אחד עם התחום שלו, סוג, מחבר, תג סטטוס ולחיצת כפתור פתוח, בתוספת Add-newsite.האתרים שלךסביבת העבודההאתרים שלךהוסף אתר חדשSshop.acme.comמסחר אלקטרוני Shopify מחברפעילפתוחHhost.acme.comHosting) WHMCS מחברפעילפתוחBblog.acme.comהמונחים: no connectorהתקנהפתוח1MULTI-SITEמרחב עבודה אחד לאתר2ISOLATEDנתונים לעולם לא מתערבבים3PER-SITEהגדרות ומחברים
מסך האתרים האמיתיים: כל אתר הוא סביבת העבודה המבודדת שלו (שטח, מחבר והגדרות), הוסיף ונפתח מרשימה אחת.

יצירת אתר

1
עקבו אחרי Connected Sites

לנווט כדי להתחבר אתרים.

2
הוסף אתר חדש

היכנסו לשם, דומיין ותיאור.

3
העתק את מפתח האתר

כל אתר מקבל מפתח ייחודי (אתר_xxx) עבור ה- widget snippet.

4
המונחים באופן עצמאי

לכל אתר יש AI משלו, מחברים והגדרות.

כמה אתרים אפשר?+

תלוי בתוכנית הרישיון שלך.בדוק את פרטי הרישיון שלך

הגדרות

רישיון ותכנון

שלך OpsIQ תכונות בקרת רישיון, מגבלות אתר ואיזון אשראי של בינה מלאכותית.

רישיון
מרכז הרישיוןThe The OpsIQ מרכז רישיון: תוכנית, תג סטטוס פעיל, מפתח הרישיון המסומן, מד AI-אשראי ולחיצת כפתור של Power-remote-check.מרכז הרישיוןסביבת העבודהOpsIQ מרכז הרישיוןתוכניתעסקיסטטוספעילמפתחOPSIQ-••••-••••-2F9Cאשראי AI$68 שמאלבדיקה מרחוק1PLAN & STATUSפעיל, במבט2KEYHMAC-cached3CREDITSאיזון בינה מלאכותית ומגבלות
מרכז הרישיון האמיתי: התוכנית שלך ומעמד פעיל, המפתח המסוים, מאזן ה-AI-אשראי שלך וכוח לחץ אחד מחדש.
רישיון מפתח

כניסה להגדרות > רישיון OpsIQ שרת רישיון

דופק לב / אימות

OpsIQ בדרך כלל קורא את מטמון הרישיון המקומי החתום שלו ורענן אימות כאשר נדרש. השתמש ב- Force Remote Check בעת הצורך תוצאה מיידית; אבחון מזהה DNS, HTTPS או בעיות זמן שרת.

תוכנית

Determines תכונה זמינות ומגבלות.

הגבלת האתר

מספר מקסימלי של חללי עבודה.

אשראי AI

אם משתמשים ב-AI, מאזן האשראי שלך מוצג כאן.

תאריך תוקף

חידוש לפני הפסקת האש כדי להימנע מהפרעות שירות.

מה קורה כאשר הרישיון שלי מתפוגג?+

מעקב, כרטיסים ו- CRM ממשיכים. AI תכונות הפסקה עד חידוש הנתונים נשמרים.

הגדרות

פרופיל, סיסמה ואימות שני

כל מנהל יכול לשמור על זהות משלו, העדפות עבודה, סיסמה ואימות שני.

מסך המוצר
הפרופיל שלידף הפרופיל מפריד פרטים אישיים, שפה / זמןזון, avatar/signature, סיסמה ואימות שני-factor.הפרופיל שליסביבת העבודהתגית: ProFILEהשלם המלאTIMEZONEאירופה/Athens2FAמופעלביקורת עבודה WorkSPACEשם ודואר אלקטרוניזהות אישיתEditעריכהשפה ושעהתאריכים וממשקEditעריכהאווה וחתימהתשובות ונוכחות צוותEditעריכהסיסמה ו 2FAהגנת חשבונותמאובטח1UPDATE PROFILEזהות ומקומי2SECURE LOGINסיסמה ו 2FA3SAVEהחל על ידי admin
דף הפרופיל מפריד פרטים אישיים, שפה / זמןזון, avatar/signature, סיסמה ואימות שני-factor.

הגדרות פרופיל שייכות למנהל המערכת החתומה ולא לשנות מיתוג סביבת עבודה. השתמש בסיסמה ייחודית ומאפשרות אימות שני-factor.שינוי הודעת דואר אלקטרוני או הגדרת אימות עשוי לדרוש איחוד מחדש או סימן טרי.

הגדרות

העדפות

העדפות זיהוי שליטה באילו אירועים תפעוליים מגיעים למנהל המערכת במוצר או בדואר אלקטרוני.

מסך המוצר
העדפותדף ההודעה מספק אפשרויות לכל-event in-app ודואר אלקטרוני בתוספת רשימת הודעות עדכניות.העדפותסביבת העבודהIN-APPעל Onדוא" לסלקטיביUNREAD4ביקורת עבודה WorkSPACEכרטיס שהוקצהIn-app ודואר אלקטרוניעל Onהלקוח ענהבתוך התוכניתעל Onסיכון SLAIn-app ודואר אלקטרוניעל Onאישור AIIn-app ודואר אלקטרוניעל On1CHOOSE EVENTSרק אותות שימושיים2CHOOSE CHANNELIn-app או הדואר האלקטרוני3ביקורתהודעות אחרונות
דף ההודעה מספק אפשרויות לכל-event in-app ודואר אלקטרוני בתוספת רשימת הודעות עדכניות.

העדפות מכסות את הקצאת הכרטיסים, תשובות הלקוחות, אזהרות SLA, צ'אט ואירועי אישור AI.המשך אותות תפעוליים דחופים שאפשרו במקום כלשהו; הפעלת דואר אלקטרוני לא בהכרח לכבות את ההודעה בתוך האפליקציה.

הגדרות

סקירה אבטחה

סקירה של אבטחה היא המסך הראשון להערכת בלוקים, התקפות כניסה, מפגשים איומים, מגמות אבטחה ויושרה אירוע.

מסך המוצר
סקירה אבטחהסקירה אבטחה משלבת כרטיסי סיכון נוכחיים, 14- יום טרנד, רשימת התוקף, הזנה אירוע וסטטוס שלמות.סקירה אבטחהסביבת העבודהACTIVE BLOCKS18FAILED LOGINS42HIGH THREAT3ביקורת עבודה WorkSPACEחוסם אוטומטי7יום שלם ומקורמגמותהתוקפים האחרוניםIP מדינה והיגיוןסקירהאירועי אבטחהתוצאות סיכון ופעולהלהאכיליושרה של האש-שרשרתשרשרת אירועים של Tamper-evidentבתוקף1READ HEADLINEחשיפה נוכחית2OPEN EVIDENCEהתקפות ואירועים3עובדבלוק, לחקור, יצוא
סקירה אבטחה משלבת כרטיסי סיכון נוכחיים, 14- יום טרנד, רשימת התוקף, הזנה אירוע וסטטוס שלמות.

השתמש בכרטיסי הכותרת עבור triage, ולאחר מכן פתח את אודיקט הקשור, נכשל כניסה, חסום IPs או JavaScript דף שגיאות לעבודה ברמת שיא 14- טרנד יום הוא יותר שימושי מאשר מפגשי ספייק אחד. High-threat יש לחקור נגד המבקרים, לבקשה והוכחה אימות לפני שבלוק קבוע מוחל.

הגדרות

Tamper-evident

רשומות יומן הביקורת שעשו את מה, מתי, באיזה אובייקט, באיזו רמה של סיכון והאם זה הצליח.

מסך המוצר
ביקורת פעילותדף הביקורת מספק פעילות tamper-evident עם פעולה, שחקן, סיכון, מטרה ותוצאה.ביקורת פעילותסביבת העבודהאירועים18.2kHIGH RISK21INTEGRITYבתוקףביקורת עבודה WorkSPACEConnector[email protected] · ShopifyהצלחהAPI המפתח בוטל[email protected] מפתח 19הצלחההגדרות משתנות[email protected] • AIהצלחההכחשת הרשאות[email protected] • יצואחסם1FILTERפעולה, סיכון ושחקן2ECTמטרה ותוצאה3EXPORTCSV או JSON
דף הביקורת מספק פעילות tamper-evident עם פעולה, שחקן, סיכון, מטרה ותוצאה.

מסנן באמצעות פעולה, סיכון ושחקן; ייצוא CSV או JSON עבור חקירה.שרשרת היש מסייעת לזהות שורות ביקורת חסרות או משתנות, אך היא אינה תחליף גיבויים מוגנים וגישה מוגבלת למסד נתונים.טיפול בייצוא רגיש כי הם עשויים לזהות משתמשים, רשומות ופעולות אבטחה.

תפעול

אבחון

אבחון הופך בדיקות תת-מערכת לתוצאות בריאותיות של אנגלית ופעולות ישירות.

מסך המוצר
אבחוןאבחון קבוצות בריאות בדיקות עבור widget, AI, כרטיסים, אינטגרציה, מודיעין אתרים, משימות רקע, אוטומציה של CRM, רישוי ואחסון.אבחוןסביבת העבודהאמת13WARNING2נכשלה1ביקורת עבודה WorkSPACEתכונהפסקול: chat Endpointsבריאמשימות רקעפעימות לב מאוחראזהרהדואר אלקטרונימבחן Outbound נכשלנכשלמחברים (Connectors)רישום וצריכת אירועיםבריא1REFRESHהפעל בדיקות נוכחיות2OPEN WARNINGקרא ראיות3FIX AND RETESTהתאוששות
אבחון קבוצות בריאות בדיקות עבור widget, AI, כרטיסים, אינטגרציה, מודיעין אתרים, משימות רקע, אוטומציה של CRM, רישוי ואחסון.

הדף בודק מהירות האתר, דרגה / גיבוי / מידע על קישורים / גישה, AI ושער פעולה, כרטיסים, סורק / audits, שילוב / צריכת שפה, משימות רקע, משימות ברקע,CRMאוטומציה, רישיון, widget ושירותי מוצר קשורים.זה דיווח בכוונה על גורמים קריאים של המפעיל ולא לחשוף סודות גולמיים.

לאחר שינוי, מרעננים ומאשרים את תת-מערכת המושפעת חוזרת בריאה.עמוד אבחון ירוק הכרחי אך לא מספיק לשיגור; להשלים גם את רשימת הסימון לפני ההשקה.

הגדרות

אבטחה וגישה

OpsIQ כולל מספר רב של שכבות אבטחה כדי להגן על הניהול שלך, הנתונים ו API גישה.

איך זה עובד
אבטחה וגישהמגן אבטחה ליד פקדים אפשריים: שני-ספק, OIDC SSO, SCIM 2.0 OAuth2 PKCE, CSRF / CSP IP חומת אש, גבולות וסודות.2-factor (TOTP)OIDC SSOSCIM 2.0OAuth2 PKCECSRF + CSPIP חומת אשגבולותסודות
אבטחה

תכונות אבטחה

אימות Admin

דואר אלקטרוני/פסמה עם 2FA אופציונלי.

כניסה למנעול

מנעול זמני לאחר ניסיונות כושלים רבים מדי.

IP חסימת

בלוק IPs טווחי CIDR מ- Accessing tracked Sites.

איומים

ציוני איומים המבוססים על התנהגות. מבקרים בדרג גבוה יכולים להיות חסומים אוטומטית.

HTTPS

נדרש עבור כל הקישורים. HTTP הפניות ל- HTTPS.

ראשי התיבות HSTS

סודיות Strict-Transport-Security מונעת התקפות מופחתות.

הגנת CSRF

כל צורות הניהול כוללות אסימונים של CSRF.

XSS הגנה

כל קלט המשתמש נמלט. CSP כותרות מגבילות את ביצוע התסריטים.

הגנה על SSRF

Webhooks לחסום פרטי / כללי IP כתובות.

התקנה מומלצת

1
2FA

לכל חשבונות הניהול.

2
סיסמאות חזקות

מינימום 12 דמויות, מעורבות.

3
חשבונות Review

הסר גישה לחברי הצוות לשעבר.

4
עקבו אחרי כישלונות

בדקו מדי שבוע על דפוסים חשודים.

5
המשך מעודכן

החל עדכונים מיידיים עבור תיקונים ביטחוניים.

הגדרות

תפקידים ורשאות

בקרת גישה מבוססת תפקידים מאפשרת לך לשלוט במה שכל חבר צוות יכול לעשות.

תפקידים ורשאות
תפקידים ורשאותלמטריקס בעל תפקיד: לבעלים יש הכל; ל- Full Admin אין חוקה ואזור סכנה; הסוכן רק היקב כרטיסים.תפקידים ורשאותסביבת העבודההגדרותבלינגANGERכרטיסיםהבעליםמלא Adminהסוכןscoped13 ROLESבעל · מנהל מלא · סוכן2GRANULARדף + Per-Department3DEFAULT-DENYנתיבים נשכחים חסומים
התפקיד ממטריקס במבט לאחור: הבעלים מקבלים הכל, מלא אדן כל דבר מלבד חיוב ושטח סכנה, הסוכן רק הכרטיסים המיקפים שלהם.

Default תפקידים

הבעלים

הכל כולל רישיון, אזור סכנה וניהול התקנה.

מלא Admin

הכל מלבד רישיון ושטח סכנה יכול לנהל את הקבוצה.

הסוכן

תגובה לכרטיסים ושיחות שהוקצו, ניתוח ראייה.אין הגדרות, צוות או גישה לאבטחה.

האם אני יכול ליצור תפקידים מותאמים אישית?+

לא כרגע שלושה תפקידים בנויים בתוספת הקצאת המחלקה נותן שליטה גרניט.

הגדרות

חסם IPs

ניהול IP כתובות חסומות מגישה לאתרי מעקב שלך.

חסם IPs
חסם IPsחסום -IPs צילום: ablock-an IP/CIDR טופס ליד שולחן כתובות חסום עם כל כניסה, תאריך, סיבה ולחיצת כפתור.חסם 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או טווח CIDR, ולנהל את הרשימה, כל אחד עם תאריך שלה, סיבה ודיסק בודד.

כיצד לחסום

1
עקבו אחרי Security > blocked 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.47לפני 2בלוק[email protected] · 102.89.6.23לפני 18בלוקלא ידוע 45.12.9.712לפני 26בלוק[email protected] · 88.21.4.921h לפני כןבלוק1WATCHניסיונות כניסה כושלים2COUNTSחשבון / IP3עובדבלוק מהשורה
מסך הכניסה האמיתי: כל חשבון /IP עם ספירת הכישלונות והניסיון האחרון שלו, חסום מקור כוח בוהק ישר מהשורה.

מה כל כניסה מציגה

תאריך/שעה

כשניסיוני קרה.

דואר אלקטרוני

כתובת דואר אלקטרוני בשימוש.

IP כתובת הכתובת

מקור הניסיון

מדינה

מיקום גיאוגרפי

סיבה

סיסמה שגויה, נעולה או לא נמצאה.

סימני אזהרה

הרבה ניסיונות, אותו אימייל

סיסמה: 2FA ניתן.

ניסיונות רבים, הודעות דוא"ל שונות

התקפה אוטומטית IP.

מדינות לא חוקיות

אם הצוות שלך הוא מקומי, סביר להניח שניסיונות זרים הם התקפות.

הגדרות

אנליסט אבטחה AI

שכבת אנליסט אופטימית על דפי האבטחה: פסקי דין, תדרוך אירועים, לעיכול יומיומי, בדיקת יציבה שבועית, שאל אבטחה, ו 0מדיניות חסימת בלוק היא מעולם לא פועלת בנתיב בקשת המבקרים.

כל דף אבטחה מתעד את מה שקרה, אבל קריאה זה עדיין לוקח פסק דין.האנליסט של אבטחת המידע מוסיף כי פסק הדין במקום, והוא בנוי להוציא כמעט כלום: הוא לעולם לא יושב במסלול השאיבה או הכניסה, הכללים הדטרמיניסטיים מיישבים את המקרים הברורים עם שום שיחות בינה מלאכותית, פסקי דין הם חקוקים, והפלט הטוב ביותר של האנליסט הוא כלל מכריע שאותה הוא חוק דוטרקטיוויניסטי עד אפס אסימונים. הגדרות הגדרות→אבטחההכל כברירת מחדל.

מה זה מוסיף

קובצי השבבים + הסבר

חסם IPs ונכשלו בהודעות מציגות שבב שפיר / חשוד / עוין עם ציון אמון.סביר לפתוח את ההיגיון, העובדות המשמשות, ואחד לחץ על פעולות שחרור. 24h כל כך מחדש את IPזה חופשי.

אירועים קצרים

אירועים קשורים מופיעים באירוע אחד (צילום: רויטרס) URL סריקות, התפוצצות בלוק אוטומטי) עם ציר זמן קצר-אנגלית ואחד המליץ על הצעד הבא.התקפות המשך מקופלות לאותו אירוע.

מדי יום לעיכול

תבוסה אחת ליום: אתמול מול הבסיס, בלוקים, אירועים, ודבר אחד לעשות.ימים שקטים שולחים את כל הקלר הקבעי באפס אסימונים.

בדיקה אחרונה ב- Weekly

רשימת צ'ק מקשה של יום שני (2FA פערים, סף מנעול מול נפח התקפה אמיתי, מזהיר) בחומרה, מאמץ ותיקון מדויק לכל פריט.

שאל אבטחה

תיבת שאלה ב- Security Review, שתשובות ממצב האבטחה שלך.שאלות השרת עמוק מועברות לצ'אט מהנדס הניהול ולא לנחש.

הצעות מדיניות + טייס אוטומטי

האנליסט מציע כללים קונקרטיים לבלוק ככרטיסי אישור / דיסוט; חוקים שאושרו לאכוף ב- Zero אסימונים עם טייס אוטומטי חי מנצח.אופטימי מאשר רק את הכללים הבטוחים ביותר באופן אוטומטי.

הגדרות

אנליסט אבטחה AI (ביטחון_ai_enabled)

מתג המאסטר.אפשרות פסקי דין, להסביר ולשאול אבטחה. IPs להגיע לדגם, מוזג לתוך שיחה אחת.

מהדורות של (ביטחון_ai_incidents)

אירועים קטסטרופליים לאירועים וכותבים כל סיפור חדש.מרוץ על הקרון הביטחוני הקיים של שעה.

מדי יום לעיכול (ביטחון_ai_digest)

לכידת אבטחה אחת ביום בפעמון ובראיון הימים השקטים לא עולים כלום.

בדיקת תנוחה שבועית (security_ai_posture)

יום שני הקשה על הסקירה ב- Review. The Checklist הוא קביעה מלאה.

טייס אוטומטי מדיניות (אבטחה_ai_autoטייס)

מאפשר לאנליסט להפעיל את ההצעות הבטוחות ביותר שלו ללא השגחה: בלוקים מוגבלים בזמן רק, יחיד IPs או טווחים לא רחב יותר /24, מעולם לא משותף / נייד/פרטיות, שובו 10 בכל שעה, תמיד ביקורתי ובלתי ניתנת לביצוע.

💡
כל קריאה תויגת security_ ai עם גבול חודשי משלה ב AI Config → Cost Guardrails (ברירת מחדל 300k tokens). אם הגבול נפל, התכונות מתדרדרות לקריאות דטרמיניסטיות. חסימת, נעילה והזהרות אף פעם לא תלויה בתקציב זה. האנליסט אף- פעם אינו יכול למחוק נתונים, לשנות הגדרות, לגעת בדו"ח הבדיקה או לבצע הסרה קבועה.
תפעול

Cron ואוטומציה

OpsIQ משתמש לוח זמנים של מוצר אחד כדי להפעיל סקרי דואר אלקטרוני, אוטומציה בכרטיסים, גלילים אנליטיים, שימור, תורים AI, עבודת CRM, דוחות ועבודות חיבור.

מסך המוצר
Cron ואוטומציהמוצר אחד מקבל את פעימות הלב; OpsIQ להחליט איזה עבודה פנימית יש.Cron ואוטומציהשרת Server« ARTBEATכל דקהRUNNERcron/all.phpHEALTHהגדרותביקורת עבודה WorkSPACEרץ מוצר בלתי מזוההopsiq/cron/all.phpדרושיםכרטיס ו תורי דואר אלקטרוניעבודה מתוכננת קצרהפעילAnalytics ושימורהמונחים: inside catenceלוח זמניםמנוייםאירועים ברוריםסקוט1INSTALL ONE LINEהפעל את לוח הזמנים של המוצר כל דקה2CHECK CRON SETUPתגית: CLI HECK3USE DIAGNOSTICSחקרו את העבודה מאוחרת או נכשלה
מוצר אחד מקבל את פעימות הלב; OpsIQ להחליט איזה עבודה פנימית יש.

דרישות כניסה של המוצר

הוסף קו אחד זה ל crontab עבור אותה שרת ו-PHP סביבה שפועלת OpsIQ:

OpsIQ מוצר crontab כניסה
* * * * * php /path/to/opsiq/opsiq/cron/all.php >> /tmp/opsiq-cron.log 2>&1

החלף /path/to/opsiq עם שורש ההתקנה. השתמש בנתיב PHP CLI המלא כאשר המארח דורש אחד, למשל /usr/bin/php8.4.

אל תשתמשו בדרג העליון /cron.php עבור עבודה של המוצר. במחסן זה רץ שייך לשירות בלתי-מוצרי נפרד מחוץ לספר היד. OpsIQ רץ המוצר הוא opsiq/cron/all.php.

מה לוח הזמנים המאוחד מניע

כרטיס ו- AI תורים

תהליכים עקב תגמולים אוטומטי, ההסלמה, אישורים ועבודות מוצר אחרות בתור.

דואר אלקטרוני Inbound

פולים להגדיר תיבות דואר שבו אבקת היא שיטת הצריכה שנבחרה.

Analytics ומפגשים

להרכיב מפגשים ורענן מתאספים כאשר הם באים.

CRM ומעורבות

הפעלות ניקוד, מחזור חיים, זרימת עבודה, קמפיין ומשימות ספורט מתוכנן אשר מופעלים.

כוונון ותחזוקה

ביצוע ניקוי, ארכיון, piry ו-שלמות עבודה.

מחברים (Connectors)

Dispatches מחבר מנויי cron וסקר רק עבור מחברים מותקנים, מופעלים ומפוזרים.

לבדוק את cron

  1. פתוח הגדרות - Cron Setup לאשר את רץ המוצר קיים.
  2. שימוש בשימוש עכשיו לרוץ פעם, לאשר את מנהל המערכת ואת סקר פעימות הלב עדכון.
  3. בדוק את אבחון עבור דופק לב מאוחר, PHP CLI, מסד נתונים או בעיה של קובץ.
  4. בדוק /tmp/opsiq-cron.log או את הנתיב שבו בחרת כאשר פועל ידני נכשל.

שמרו על מניפולציות חיבור קצרים, אידימפונטיים ומוגבל למרחב עבודה. סנכרון ארוך של חבילה ואחסון סמן/ נקודת בקרה כדי שהריצה הבאה תוכל להמשיך בבטחה.

🚫
כשהמוצר מפסיק, מבוסס זמן OpsIQ עבודה עוצרת או הופכת באיחור למרות שדפים רגילים של ניהול עשויים עדיין לטעון.
תפעול

פעולות פריסה

A אירחה OpsIQ פריסה משתמשת באותן מסך מוצר וזרימות עבודה בעוד המפעיל המארח מנהל את שכבת השרת.חתומה מסחרית, תוכניות, חיובים ותהליכי חשבון הם מחוץ למדריך זה.

מסך המוצר
פריסהשינויים תפעוליים עוינים המחזקים את התשתית; זה לא משנה כיצד משתמשים בלקוחות OpsIQ.פריסהסביבת העבודהPRODUCT UIאותו דבר OpsIQINFRASTRUCTUREאופרה-מנדWORKSPACE DATAמבודד.ביקורת עבודה WorkSPACEיישום RuntimePHP, שרת אינטרנט ומסד נתוניםניהולמוצר cronתגית: Hostingerלבדוקגיבויים ועדכוניםמדיניות הספק וראיותסקירהOpsIQ הגדרותאתרים, AI, צוות ומחבריםהצוות שלך1OPERATE OPSIQ NORMALLYהשתמש באותו מנוע ניווט2VERIFY SERVICE HEALTHהשתמש באבחון וראיות סטטוס3KNOW RESPONSIBILITYהגדרות מוצרים נפרדות מ- Hosting Work
שינויים תפעוליים עוינים המחזקים את התשתית; זה לא משנה כיצד משתמשים בלקוחות OpsIQ.

מה שמנהלת האחסון בדרך כלל מנהלת

  • שרת אינטרנט, PHP Runtime, שירות מסד נתונים TLS אחסון.
  • גולגולת המוצר המאוחדת ו יומניו ברמת השרת.
  • עדכוני יישומים, ניטור תשתיות ותהליך הגיבוי שהוגדר על ידי הסכם האירוח.

מה OpsIQ המנהל עדיין מצליח

  • אתרים ומתקנים של widget, הגדרות AI, ידע, תיבות דואר וזרימות עבודה תמיכה לקוחות.
  • גישה לצוות, מחלקות, בקרת אבטחה API מפתחות, מחברים, אוטומציה והגדרות קשב נתונים.
  • אימות המוצר באמצעות אבחון, יומן הביקורת, בדיקות מחברים ובדיקות קצה-לקצה אמיתיות.

בדיקות תפעוליות

אל תניחו כי שירות מנוהל פירושו שכל שילוב של מוצר הוא בריא, לאשר את מדיניות הגיבוי האחרונה ואת מדיניות השימור עם מפעיל האחסון, ולהשתמש בו. OpsIQ אבחון לאחר שינויים DNS דוא"ל, ספקי בינה מלאכותית, אתרי אינטרנט או מחברים.

סעיף זה מכסה את פעולות המוצר רק. מסחרי על הסיפון, מנויים, חיוב ומינהל חשבונות לקוחות להישאר מחוץ לחשבונות OpsIQ חוברת יד.

תפעול

תגית:עצמי OpsIQ

עוין עצמי OpsIQ ההתקנה פועלת על תשתיות שאתה שולט בהן.אתה אחראי לריצה, מסד נתונים, TLS, cron מוצר, גיבויים, עדכונים וניטור.

מסך המוצר
עצמי-אירוחעצמי-אירוח נותן שליטה בתשתיות והופך את הצוות שלך אחראי לכל תלות הפעלה.עצמי-אירוחשרת ServerPHP8.4+DATABASEMySQL 5.7+SCHEDULERכל דקהביקורת עבודה WorkSPACEהרחבה של Runtimeפול, pdo_mysql, mbstring, jsonדרושיםתוספות נוספותxml, נפתח, zip, Intl, gdדרושיםמסד נתונים חלופיMariaDB 10.3 עם InnoDBתמיכהתחבורהHTTPS ו-Outbound ספק גישהלבדוק1PREPARE THE SERVERדרישות ריצה2INSTALL AND CONFIGUREהשתמש במסד נתונים ייעודי ו- HTTPS3ADD PRODUCT CRONלרוץ opsiq/ Cron/all.php
עצמי-אירוח נותן שליטה בתשתיות והופך את הצוות שלך אחראי לכל תלות הפעלה.

חוזה תוכנה מינימלי

PHP

PHP 8.4 או חדש יותר.דרוש הרחבות: תלתלים, pdo_mysql, mbstring, json, xml, נפתח, zip, Intl ו gd.

מסד נתונים

MySQL 5.7+ או MariaDB 10.3• שימוש ב-InnoDB. צור מסד נתונים ייעודי ומשתמשי יישומים לפחות פרטיים.

שרת אינטרנט

אפאצ'י או Nginx שנקבעו עבור OpsIQ בקר חזיתי, נכסים סטטיים ודרשו טקסים.

HTTPS

נדרש עבור הפעלות ניהול, תנועה widget, API מפתחות, Webhooks וספק שיחות.

גישה חופשית

לאפשר DNS ו- HTTPS גישה ל-AI, דוא"ל, מחברים וסימני רישיון שאתה באמת מאפשר.

גישה

משתמשי האינטרנט וה-CLI חייבים להיות מסוגלים לקרוא קבצי יישומים ולכתוב רק למקומות המתועדים / ההחלפה.

כרונולוגיה

לרוץ OpsIQ לוח הזמנים של המוצר בכל דקה עם אותה תצורה יישום גישה מסד נתונים כמו תהליך האינטרנט.

רצף ההתקנה

  1. לנסח את ההודעה לשורש המסמך המיועד ולשמר את המבנה הדירקטוריון המסופק.
  2. צור את מסד הנתונים ואת משתמש היישום, ולאחר מכן הזן את מסד המידע, Canonical URL הגדרות רישיון.
  3. הפעל את זרם ההתקנה / הסטארטאפ וליצור את חשבון הבעלים הראשון.
  4. ניתן ל- HTTPS ולאמת הפניות, עוגיות ו-_API ilways.
  5. הוסף את המאוחד OpsIQ מוצר:
מוצר מעוגן עצמי
* * * * * php /path/to/opsiq/opsiq/cron/all.php >> /tmp/opsiq-cron.log 2>&1
  1. הגדרות פתוחות - Cron Setup ו Diagnostics; להפעיל את לוח הזמנים פעם ולפתור כל תלות כושלת.
  2. שחזור תצוגה, שחזור בדיקות, שמירה על יומן ותהליכי עדכון לפני הוספת נתוני ייצור.

לקום בבטחה

  1. קראו את הערות השחרור ובדקו את ה-PHP / התחזיות הנדרשות לפני שינו קבצים.
  2. חזרה את מסד הנתונים וקבצים יישום / הגדרה, ולאחר מכן להוכיח את הגיבוי ניתן לשחזר במיקום הבדיקה.
  3. למקם את הקבצים החדשים ללא מחיקת הגדרות ספציפיות של ההתקנה או נתוני לוח זמנים.
  4. הפעל את תהליך ההגירה / הטיסה המסופק ולוודא כניסה, מעקב widget, כרטיסים, דוא"ל, AI, מחברים וקטון.
  5. שמור על ההודעה הקודמת גיבוי מסד נתונים זמין עבור חלון rollback המתועד.
🚫
ה-Repository Top-level /cron.php זה לא OpsIQ לוח הזמנים של המוצר Point Product Automation רק ב opsiq/ Cron/all.php
⚠️
אל תמחקו .schema_cache json כתחזוקה שגרתית, הסר אותו רק כאשר הוראות המוצר דורשות באופן מפורש בנייה מחדש של סכימה-קאצ'ה.
תפעול

מדריך הפקה

בדיקה ושיטות הטובות ביותר לריצה OpsIQ בייצור.

מדריך הפקה
מדריך הפקהרשימת ביקורת חיה: תחום מותאם אישית SSL AI מאומן, מחברים ו cron, גיבויים ושימור ותפקידי צוות.ביקורת חייםסביבת העבודהלפני שאתה הולך לחיותתחום מותאם אישית + SSL מוגדרAI מאומנים על התוכן שלךהמונחים: cron runגיבויים מתוכננים - הקמתתפקידים של צוות שהוקצה וסקר1GO-LIVEרשימת הסימון טרום-launch Checklist2וודאי.Domain · SSL · backups3CONFIDENTספינה כאשר היא ירוקה
רשימת צ'ק חיה כך ששום דבר לא מפספס: התחום + SSL AI, מאומן, מחברים נבדקים ו cron, גיבויים ושימור ותפקידי צוות.

לפני שנמשיך לחיות

HTTPS מוגדר

SSL התקנת HTTP הפניות, HSTS אפשרה.

Cron רץ

בדוק באמצעות דף אבחון.

AI נבדק

צ'אט כלקוח, לבדוק דיוק וטון.

Widget מותק

בכל דפי האתר, בדוק עם Live Feed.

גיבוי הוגדר

מסד נתונים יומי אוטומטי וגיבויי קבצים.

טעות logging

יומן שגיאות PHP אפשר ומעקב.

צוות הוזמן

לכל החברים יש חשבונות עם תפקידים נכונים.

בסיס הידע המאוכלס

לפחות 5-10 מאמרים.

Daily: Checkboard, Clear ticket תור, שיחות AI של Site-check.

שבועי: סקירת AI Insights, עדכון KB, לבדוק ביצועים של צוות, ביקורת אבטחה.

חודשי: סקירת מגמות ניתוח, מחברים ביקורתיים, לעדכן AI הדרכה, לאמת גיבויים.

תפעול

רשימת הסימון טרום-launch Checklist

הפעל את שערי המקור ובדיקות מוצר אמיתיות שלמות לפני שחרור או שיגור ייצור ראשון.הפקדה להיות זמינה אינה הוכחה לכך שהיא עברה בסביבה שלך.

מסך המוצר
אימות שחרורתצוגת השחרור מראה השערים הדרושים כדי לרוץ; היא אינה מרתיעה אותם כפי שעבר.אימות שחרורשרת Serverזמן הפעלהPHP8.4SOURCE GATESלרוץ מקומיתOUTCOMEראיות מבוססותביקורת עבודה WorkSPACEדרישות הסיומתבדוק לפני ה-Steceשער השערPHP syntax גורפתכל הקבצים של PHPשער השערהערכה מלאכותית ו-PSDלרוץ כאשר התלויים נמצאיםשער השערבדיקות סטטיות ודפדפןלרוץ כאשר נקבעשער השער1RUN THE CHECKSלתפוס את הפלט האמיתי2FIX EVERY REQUIRED FAILUREאל תחליף ראיות עם הנחות3TEST THE PRODUCTבדוק את מסעות משתמשים אמיתיים
תצוגת השחרור מראה השערים הדרושים כדי לרוץ; היא אינה מרתיעה אותם כפי שעבר.

מקור ושחרור שערי

הפעל את בדיקות ה-Repository מהשורש ההתקנה ולשמור על התוצר המלא שלהם עם שיא השחרור.

שער הטיסה
php tools/preflight.php
שער שחרור מורחב
php tools/release_gate.php

הטיסה בודקת את ה-PHP 8.4 זמן ריצה והרחבות הנדרשות, מבצעים טאטא PHP, מנהל את שער האנייה של AI הערכה וחבילת PHPUnit מלאה, ומנהלת בדיקות PHPStan / Node כאשר הכלים האלה מותקנים.השער המורחבת כולל גם עשן, התקנה נקייה / סכמה ובדיקות קצה מקצה לקצה כאשר הסביבה שלהם מוגדרת.

בדיקה מפיצה אינה מעבר.תעד מדוע היא לא הייתה זמינה, להתקין את התלות החסרה או להפעיל אותה בסביבה נכונה של CI/staging לפני השחרור.

בדיקת המוצר

1Authentication and תפקידים

היכנס כתפקיד המיועד; לאמת מותר ומנע דפים / פעולות.

2Widget and Monitor

לטעון אתר אמיתי בדפדפן פרטי; לאמת את תנועת משואות, להאכיל חי, מבקרים ורשומות ישיבה.

3צ'אט ו-AI

שאל שאלות ייצוגיות; לאמת ידע קרקעי, בטיחות, הסלמה והיסטוריית AI.

4כרטיסים

יצירה, להקצות, תגובה, הסלמה, קרובה וחדשנית דרך כל נתיב הצריכה.

5דואר אלקטרוני

בדוק משלוחים והגדרה בתיבת דואר או נתיב Webhook.

6 CRM וניתוח

צור קשר מבוקר / משיכת / דחייה ואמת לוחות, פטריות, ניקודים ודוחות.

7המונחים: Connectors

הפעל בדיקות חיבור, אחד קורא, אחד בטוח לכתוב / ריצה מהירה ונתיבים אינטרנט / מפולינג לכל מחבר זמין.

8. API Webhooks

בדוק את ההיקף הצר, מגבלות קצב, רטיבות סודיות, חתימות וטיפול כפול.

9Cron

הפעל את לוח הזמנים של המוצר המאוחדת ולאשר את כל פעימות הלב הדרושות בהגדרה Cron / Diagnosticstics.

10 אבטחה

בדוק 2FA, CSRF / אובססיה בקרה, רשומות ביקורת, ייעוד מפתח ובודדות חלל העבודה.

11 גיבוי ושיקום

שחזור גיבוי נוכחי לתוך סביבת בדיקה נפרדת ואמת נתונים ותצורה.

12 אחריות וריצה

קבלות אישור / מכירות, לשמור תעודות בקשה להוכיח את הליך ה-גלגל.

⚠️
רק לאחר כל שער ומסע ביקורתי עסקי נדרש יש עדות נוכחית לשחרור ולסביבה המדויקת.
מפתחים

WEB Push on צד שלישי

דוחף את הודעות הדפדפן (כולל OpsIQ קמפיין Pushs) צריך עובד שירות ששירת את SAME ORIGIN כעמוד.OpsIQ עומסי widget שלך OpsIQ פריסה, כך שאתר צד שלישי לא יכול להירשם OpsIQ עובד ישירות.ארח קובץ קטן אחד על התחום של האתר כדי לאפשר לדחוף לשם.קמפיינים מספקים באמצעות שיטות תמיכה ב- BOTH.

איך זה עובד
לדחוףהודעה בסגנון מערכת ההפעלה מעל שני כרטיסי שיטת משלוח: Built-in VAPID ו Pusher Beams.החנות שלךהעגלה שלך מחכה 10% היום בחוץעכשיונבנה-in (VAPID)לא צד שלישימארח קובץ אחדPusher קרנייםהשתמש בחשבון שלךמארח את העובד
לדחוף

למה זה צריך

דפדפנים רק לתת דף לרשום עובד שירות ממקורו שלו.ה widget לטעון חוצה-אוריג'ין שלך OpsIQ פריסה, כך שהיא לא יכולה להתקין את פועל דחיפה באתר לקוחות, עד שתארחו את העובד במקור של האתר הזה, ה-Widget מלגלג על דחיפה שקטה (ללא שגיאות, אין לך שתי אפשרויות להלן;OpsIQ קמפיין Pushs מפרסם את שניהם.

OPTION A-hosted Web Push (VAPID, no Third party)

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. In In OpsIQמפתחי VAPID (Settings) → לקוח chat AI → מתקדם → Web Push) The widget מבקש מהמבקרים לקבל אישור הודעות ומנוי אותם.

מאחורי CDN /Cloudflare וודאי /opsiq-push-sw.js HTTP 200 (לשחרר את השפם אם זה היה 404 לפני שהעליתם; חרישי 404 חסימת רישום).

אפשרות B - Pusher Beams (מנהל)

1. In In OpsIQ הגדרות קובעות את ספק דחיפה Pusher קרניים היכנסו אל הדבורים שלכם זיהוי Instance ID ו מפתח סודי.

2. מארח את עובד שירות Beams על שורש האתר כמו /service-worker.jsהעתק https://YOUR-OPSIQ/opsiq/pusher-beams-service-worker.jsאו למזג את השורה הזאת לעובד השורש הקיים שלך:

Beams עובד, מארח https://yoursite.com/service-worker.js
importScripts("https://js.pusher.com/beams/service-worker.js");

3. זהו זה, ה-Widget Autoloads the Beams SDK ומנוי לכל מבקר להתעניינות באתר opsiq-site-<your-site-key>לא צריך עוד שמץ.

כיצד קמפיינים מספקים

פרסום: Pushs Publishing שניהם שיטות בבת אחת: מבקרים על העובד VAPID עוין העצמי מקבלים את המוצפן Web Push, ומבקרים שנרשמו באמצעות Pusher Beams לקבל את פרסום Beames.כל מבקר מגיע דרך כל מי שהם מנויים אליו, כך שתוכל להפעיל אותו-origin VAPid באתרי אינטרנט מסוימים וג'ין קרוס-רי במס ואחרים.

HTTPS נדרש עבור עובדי שירות ו- Web Push (localhost פטורה לבדיקה) תיבת הצ'אט המנהל כבר משתמשת באותו מנגנון עניין של Beams לתערות המפעיל.

תפעול

פתרון בעיות

נושאים משותפים וכיצד לתקן אותם.

גנרל כללי

דף Blank+

בדוק יומני שגיאות PHP. גורם: PHP ישן (needed) 8.4+), הרחבה חסרה, קשר DB נכשל, הרשאות קבצים שגויות.

לוח האש מראה אפסים+

בדיקה: widget מותקנת? Cron רץ? טווח תאריך נכון? IP לא?

אהה.

AI לא מגיב+

בדוק: הספק מוגדר? API מפתח אימות (שימוש ב- Test Connection) התקציב מותש?פלטפורמת AI של סביבת העבודה נכונה?

AI נותן תשובות שגויות+

בדוק: ידע מבוסס עד כה? Prompt ברור? Connector Lookups מחזיר נתונים נכונים? Review שיחה ב- AI History.

AI איטי+

תלוי: ספק API מהירות, גודל ההקשר (large KB= יותר אסימונים = איטי יותר), עצלות רשת. נסה מודל מהיר יותר.

עקבו אחרי Tracking

Widget Missing+

בדוק: תסריט במקור העמוד? JS שגיאות בקונסולה? CSP חוסם? Adblocker?

מדינה לא ידועה+

GeoIP לא מוגדר. השתמש Cloudflare (automatic) או MaxMind GeoLite2 מסד נתונים.

כרטיסים

הודעות דואר אלקטרוני לא יוצרות כרטיסים+

בדוק: תיבת דואר המחוברת? Cron רץ ? App הסיסמה השתנתה? IMAP הגדרות נכונות?

באופן אוטומטי לא עובד+

בדיקה: האם אפשרה למחלקת AI? Cron לרוץ?

מחברים (Connectors)

הקשר נכשל+

בדיקה: אישורים נכונים? Key יפוג? API נגיש בשרת? Base URL נכון?

מחובר אך ללא נתונים+

בדוק: API היקף מפתח? WebhookSync מופעל? Cron רץ?

ביצועים

דפי איטי+

בדוק: ביצועיות של מסד הנתונים (SHOW PROCESSLIST), זיכרון PHP (הגדלת 1GB), הפעלת opcache, הפחתת תקופת השמור.

תפעול

Widget לא ביקורים

השתמש בבדיקה ממוקדת זו כאשר ה- widget נטען באופן לא נכון או להאכיל חי נשאר ריק.

מתי widget אינו ביקורים, לאמת את מפתח האתר, לטעון את הדף בדפדפן פרטי, לבדוק את לוחות רשת הדפדפן /Console עבור משואה חסומה או בקשות widget, לסקור תוכן-סודיות-Policy ו חוסמי מודעה, לאשר שהאתר פעיל בפעילות OpsIQ בועות צ'אט גלויות אינן מוכיחות כי מגדלור הניתוח התקבל.

תיאור

מילון מונחים

הגדרות למונחים המשמשים לאורך כל OpsIQ.

פעולה

משהו ש-AI יכול לעשות באמצעות מחבר או פלטפורמה.

הסוכן

חבר צוות עם גישה מוגבלת, או סוכן AI.

BYOK

Bring Your Own Key, You Give Your AI API מפתח.

מחבר

תוסף משלב פלטפורמה חיצונית עם OpsIQ.

CSAT

דירוג שביעות רצון הלקוחות

הסכם

הזדמנות להכנסות ב- CRM

המחלקה

קטגוריה של כרטיס עבור שליטה ובקרת גישה.

ההסלמה

העברת כרטיס למחלקה אחרת או מ-AI לאדם.

GeoIP

איתור מיקום המבקרים IP כתובת.

יד

העברת שיחה מ-AI לאדם.

זהות

סימן זיהוי מבקר אתר אינטרנט

בסיס ידע

ה-AI משתמש כדי לענות על שאלות.

מוביל

מבקר מראה קניית הכוונה.

תוצאות

0-100 מספר המציין את הסבירות של המרה.

שלב מחזור חיים

איפה לקוח: מוביל, פרוספקט, הלקוח, בסיכון, צ'ורינג.

AI מנוהל

AI מספק כחלק שלך OpsIQ תוכנית.

צינור

לוח חזותי של שלבים עסקיים

RBAC

בקרת גישה מבוססת-תפקיד.

ישיבת ישיבות

סדרה של צפיות בעמוד בתוך חלון זמן.

מפתח אתר

מזהה ייחודי עבור אתר אינטרנט עוקב.

SLA

הסכם רמת השירות, זמני תגובה מטרות.

ken

יחידה של טקסט בינה מלאכותית 4 דמויות = 1 טונה.

אמון שכבת

מערכת בטיחות שולטת באוטונומיה.

Webhook

HTTP callback עבור הודעות אירוע.

תכונה

JavaScript קוד מוטבע באתר שלך.

סביבת עבודה

אתר עם מעקב משלו, AI, מחברים וצוות.

תיאור

קבל עזרה נוספת

אם מסמך זה אינו עונה על השאלה שלך:

AI

לחץ על "Ask"OpsIQ"במנהל יש גישה לתיעוד זה ולנתוני הפלטפורמה שלך.

כרטיס תמיכה

מה ניסית, מה קרה, מה ציפיתם וכל הודעת שגיאה.

דואר אלקטרוני

תמיכה בדואר אלקטרוני עם מפתח הרישיון שלך ותיאור הנושא.

טיפים לבקשות תמיכה יעילות

כולל הדף

איזה דף ניהולי (URL או שם).

כולל את ההגדרה

הגדרת שם וערך נוכחי.

למנוע את השגיאה

הודעת שגיאה חדשה עם קודים

כולל את השלבים

מה שעשית, צעד אחר צעד.

כולל מצופה לעומת בפועל

מה צריך לקרות לעומת מה שקרה.

💡
הבקשה שלך יותר ספציפית, ככל שהתשובה מהירה יותר "זה לא עובד" דורשת חקירה. 502"תקבל תשובה ישירה.