OpsIQ 文件

建造、操作和 延伸 OpsIQ.

This is the complete documentation for OpsIQ. Set up the product, run support, configure AI, manage CRM, install the widget, build connectors, call the REST API, receive webhooks, package marketplace apps, and operate self-hosted deployments.

客戶指導管理指導開發者指導CRM 參考連接器 SDK淨 值 API自管
範圍

二. 本手册的范围

有事都做得到 OpsIQ 在一處做: 每個螢幕是如何工作的; 如何連接自有系統; 以及如何在上方建構。 在任何一處起步相接的地方, 相關區域都跟隨管理方列的相關順序 。

範圍
文件地圖手冊由相關地區所組成 OpsIQ 出品,跟管理方列同序。文件地圖OpsIQ 產品AUDIENCE接線符(比爾德)發展者RUN管理員LIVE WORKSPACE VIEW使用 OpsIQ產品螢幕和工作流程已包含延伸 OpsIQ有接通器了 APIs 元件已包含操作 OpsIQ安保、警力和部署已包含參考相克相克, API 和相接合同已包含1CHOOSE AUDIENCE接線人或發展者2FOLLOW THE UI相片鏡面 OpsIQ3USE SOURCE TRUTH狀態出自建築
手冊由相關地區所組成 OpsIQ 出品,跟管理方列同序。
出入口工作室地區指導

在 Portal 架构、頁面、元件、預覽、幫助中心、身份等使用專用管理員和開發者指南; SCIM 有管束的放行、延伸、移入和授權等

開啟取景所指導

有甚么相去.

執行產品

在管理中的每一屏:分析,活話,入場券等.CRM有知識地基 有站點情報 有促銷 有客戶帳戶通路 有做作 有數字有意義 有時又能做作?

連接您的系統

網站元件、電子郵件信箱、出入口等相關網頁和相關平台的連接器文庫等Shopify, WooCommerce, WHMCS, Zendesk, Stripe, Slack和Gmail.

自己做

連接器建構無碼接通器、 動作與觸發器等相接器, 如果您更想不使用接通取而不用接通程式和 REST API 有每個動作 範圍和錯誤的代碼

有活干

有相關功能和權限 有安全 有克倫 有相接 有相對相接相接的相接接相通 有自有相接可接相連相接

从何入出?

1
如果你跑出 OpsIQ 每日

按相關列的順序讀取屏幕區分。 每個相關相關的頁面都用所要的開啟, 因此您需要的可以一有需要就停止 。

2
If you administer it

新增設定、 安全性、 診斷性、 Cron 有產品等。 這些是決定其他事是否都能繼續做相關的區段 。

3
有相通相接相接同相接

从連接器起起,再由接接接器建構器起,接再接再通 API 有相當相當有相當分明的經典,而你已看見了一切; OpsIQ 有能跟另一個系統通話的

💡
有 二 個 事 改變了所見 。 權限隱藏頁面您的角色無法開啟, 因此您所描述的一部份可能會從您的相關列中被錯失 。 請管理員檢查您的角色。 而連接器上有 Production, Beta, prevention 或 splate; 正在跑的建築及其連接符表是您所擁有的權限, 而不是此頁面 。
就從這裡起步

什么? OpsIQ 有出息了 就出事了

OpsIQ 它用同樣的客戶相處相通的單一相通管理器平台取而代之:分析、活聊、求助台、CRM、SEO工具箱、集成中件和開發者平台。8-12 有相關相關的相關產品,由您安裝 OpsIQ 就一次再用一屏去操作一切

二. 平台
OpsIQ 相接相接平台有一顆中央AI大腦能接通活話、CRM、票房、站點情報、升職和作分析等功能。活口聊天升 升AI. 第 二 章CRM站點內情有入場券分析OpsIQ一月一出1ONE WORKSPACE一管一管一取出一管之道2SHARED BRAIN有同一個用戶相關的內容3ANYWHERE雲端或自我託管
OpsIQ 有同樣的人工智能大腦所提供電源相接相接 有同一個相通的客戶相接地由同一個用戶相接而成

有事都做得到 OpsIQ 有 :

网站分析与访客情報

实时游客追蹤

有時可以被取回相關的相關資料。 有時也可以看到您所看到的相關相關頁面、花去多長時間、去到哪裡等,

訪客紀錄和会話

有裝置、瀏覽器、操作系統、國家、城市、參考人、UTM參數、登地頁面和身份解析等每個訪客的全部歷史。会議群組的頁面可以查看出行,以觀察訪客所走的全部路徑。

會話重播

取回被抓取的訪客會議的時間線回放。 請看使用者到底做了什麼: 滑鼠移動、 按下、 卷動、 頁面轉換等, 並形成互動相關。 使用它來分析 UX 問題、 了解下載點并檢查轉換流量 。

有活取出

有一串相關的实时訪客活動。 參觀頁面、 聊天起點、 形成提交表和意向信號每隔幾秒更新一次。 按國家、 裝置或參考者分類地分滤取以專注於特定通訊區段 。

上頁面

頁面依訪問、 接觸時間、回放率、 轉換及相關支援等分類排序。 請找出您最能表現的內容和需要改善的頁面 。

地心相通

有地圖相接相接地區、城市相接而來; 有相接取地圖接通相接之地; 有通訊相接也相接; 有接地道相接, 有通取地道等相接的地道; 有可通取取地相接出地道同相接.

有心漏斗

有追蹤訪客意向信號(定价頁面訪客、回覆相接、文件瀏覽模式及相關支援等)以辨識可能收購、轉換或需要幫助的訪客。

A/B 實驗

在您的網站上直接執行分拆測試 OpsIQ。建立變更、設定通訊量分配、定義轉換目標并衡量相關數值。不需要外接測試工具 。

JavaScript 追蹤錯誤

抓取客戶端 JavaScript 自動取自您網站的錯誤 。 請查看錯誤訊息、 堆疊追蹤、 被影響的瀏覽器、 有頻道的數量和會被觸發的頁數等。 在不分離錯誤監控的情况下去除前端出錯 。

事件日志

有追蹤的活動(頁面取景、自訂事件、聊天相關相關接相關事由、表格提交相關分類相關收購等)都以可搜尋而可過分的紀錄被取取出。

出售和改划

有收費、退款、訂收、轉換等, 有交通來源、活動和出行等相關資訊。

有铅

有高意向的訪客被行為模式所辨識出。 有分數取自頁面取用、站點時間、回放頻道、相接相通相接和自訂信號等。 feed 引出直接入入CRM 管道 。

(SEO和內容分析)

站台爬行

自動地爬行您整個網站以發現頁面, 偵測已破碎的連結, 找取缺失的元標籤, 檢查影像變更文字, 驗證相關文檔 URLs。并地圖您站台的結構。排行表會逐天跑出,每週跑出或需要跑出 。

技術SEO二. 审计

全面技術分析:分出分數取出相接相接回回應相接能力相接接相通相接同相接的相接互通相通同相通能相接可相接取取取出. Core Web Vitals. SSL 憑證狀態、 重定向鏈、 重复內容測試、 爬行深度分析及分類的數據驗證等 。

內容审核

估計出每頁相關內容的質量、字數、可讀性分數、关键字密度、取向結構、內出/外出連接比率和新鮮度等。 找出相關内容、相關頁面和相關相關成份相關的相關區分 。

AI 有權搜尋

在您網站上的所有內容中做語言搜尋。 問取您所要用入的自然語言問題并取得 AI- synthesized 的回覆和出自相關的頁面參考相關 。

SERP 分級追蹤

監控您在 Google 等引擎上對目標关键字的搜尋引擎排行。 追蹤位置會隨時而變, 相對相對者相對, 并查看哪個頁面排入了哪個名詞 。

2. 关键字研究

根据您所要包含的内容、相對者分析及搜尋相關數據等, 找出關鍵字的機會。 就新內容主題、長尾變更和內容最优化目標等取取取建議 。

后連接分析

監控您已入內的連接檔設定。 請看看哪些站點會連接您, 追蹤已失去的新連接, 分析主題文字分佈, 並找出建立連接的機會 。

本地 SEO 格子

有實體地點的企業: 在地區網格上視取您本地搜尋的能見度。 看看你的排名如何因地而异, 相去相去甚遠, 以及搜尋意向相去多遠 。

谷歌企業相關設定相關同步

連接您的 Google 商業設定檔到 OpsIQ。同步評論、文章、QQA、相片和商業相關資訊。從內部管理您的 GBP 上市 OpsIQ 有回應地評論、發表文章并監督知識。

已排定的報告

在您的排行表上產生自動 SEO 和分析報告 (每日、每周、每月) 。 報告包括排行榜變更、流量走勢、所發現的技術問題和內容性能等。 有白標籤出自各機構 。

AI-有權相助

客戶AI聊天

AI 在您的網站上回應了客戶的問題 24/7有相關的平台資料( 命令、 帳號、 訂閱等) 有自訂的訓練提示。 支援多個 AI 提供商: Claude (Claudy):Anthropic(一) GPT-4o (OpenAI), Gemini (出自"高格勒"和"克羅克")

管理助理

在您的管理面板中提供 AI 副駕駛, 它能幫助您寫出票面回應、 收據客戶通訊、分析相關相關平台的相關通訊相接相接性、 在連接器系統上執行動作等。

AI 知識地基站

AI 以您所了解的基礎文章、 FAQ 項目、出品文件及相關平台資料為基礎。 它不是幻覺, 它能從您所知道的实际商業信息中回應, 或是在不確定時會有增長 。

自動把相關文件交給人

有時AI無法解答問題、能發覺挫折感或客戶要人相接, 就自動地把相接相接的相接方式交給了你的團隊。 Configable decision/time-deut自動回歸到AI 上。

AI相關訓練提示

为相關用戶的AI和相關取景的AI寫出分別的指令提示。 控制語氣、邊界、相關規則、被禁題和企業特有行為等都得到支持。 per- workspace supplation 。

AI 歷史和稽核

相關的相關內容有: 要求/回應的相當細節、信號用法、成本追蹤、提供商及模型等。

AI 知識

Automated analysis of AI conversation patterns. See common questions, resolution rates, handoff frequency, customer satisfaction by topic, and areas where the AI needs better training.

工作區 AI 配置

有相關相關站點/工作地段可以使用自有的AI提供商,模型,溫度,符號預算等相關訓練提示. 有SaAS公司可以用克勞德作主產品,而GPT-4o作副品牌.

管理人工智能和 BYOK

有兩種AI模式: 管理AI (包含在你的計劃中,不是)API 或取出自有的金鑰(用自有自有之鍵) OpenAI/Anthropic/谷歌/xAI API 二是一等的, 每种功能都以任一模式相通。

AI 代碼預算和成本控制

設定每月的代價預算、 每個相對限制和低平分警示。 每個提供商、 工作地區和相對相關的追蹤花費。 以硬天花板防止出走成本 。

入站和求助台

原生票制度

有部門、优先级( 低/ 中/ 有高/ 有急度)、 狀態、 SLA 追蹤、 內部備註、 客戶回覆、 檔案附件和線接對話等功能的完全相關服务台。 不需要外接的求助服务台 。

AI分類和自動重複

AI自動分別入站入站出站票。 啟用自動重複安全部門。 AI 在可配置的延后( 預設: 2因此人可以先出手干涉.

電子郵件吞取

連接信箱 (Gmail, IMAP 以自動從入內電子郵件中建立入票。回覆到入票通知的電子信件更新出票線。

有入站口入站

在您網站上嵌入了一個取用客戶的入場券。 取用者可以提交入場證, 查看出行記錄, 回答開放入場錄取出票, 並檢查出出行狀態, 都以您所設計的相當標籤為標籤 。

入站口

相接相接的相接回站入一線。 在主題上被收起的相關出站出站入站入通。 在相接出站取站入出站后, 有相接者可保持相接同通相接地相接; 有相關相接取站出通相通相連相接接相通的相通口相接通相關事由相接而成相接 。

返回AI

有時由人員接取一票后再用"回想AI"讓AI自動再去翻取出一票,

收件箱副駕駛

由收件箱取景的 AI 助取票管理。 副駕駛員建議回覆、 概述相談歷史、 建議优先/ 部門指派等項工作, 並可以執行相關平台上的動作 。

Chart和即時支援

聊天收件箱

有相關的收件箱管理了实时客戶聊天。 可以看到所有正在進行的對話、客戶身份、對話歷史和AI建議等。 有多位代理可以合作一對話。

預動聊天規則

根据訪客行為而發出聊天訊息: 在頁面上有時, 有特定 URL 有訪問、 滚动深度、 回覆訪問數量、出站意向或自訂事件等。 例如: 在相關事件后顯示相關訊息 。60 在定价頁面上提供秒數 。

聊天元件

有自訂的聊天元件嵌入到您網站上。 支援 AI 聊天、活的代理聊天、 取票、 知識基礎搜尋和訪客身份等功能。 有反應性、 有可取用和有名的 。

CSAT 普查

在聊天和出票相關後收集客戶的滿分。 有您自己問題、分等分等級和接觸回應的設計調查。 結果會被收錄到團隊的表現和AI的洞察力中去 。

聊天后電子郵件調查

有名的郵件來訪者可接取一封有名的相關郵件, 有AI摘要說明所處理的相機, 有/ 有。 有/有。 有一次, 有單用連結, 有收發信號被登入回報頁面, 有回報回報被收發回回報出自已相接的相當相關相關訊號; 有同樣的相通相關信號也相接了; 有相關的相接相關事由相關人所接取回回回信號相關口相關的信相關: 有相接回回傳回回訊相關回回應相關信件相關地相關

回應身份回路

有相關相關人員的回應項目都顯示出:姓名、電子郵件、一擊通路到他們的全程客戶及CRM接觸地,

寫入AI

分出 AI 寫作助理以編譯電子郵件草稿、回通票、通訊和客戶通訊等。 在專業的作業上用自有的快取(不是聊天大腦)来做作。

AI- 第一個CRM

CRM 指揮中心

有單一屏幕顯示您整個 CRM 狀態: 管道值、 交易速度、 即將到来的工作、 有危險的交易、 代理活性、 以及 AI 建議等。 CRm 主頁是您每天的起點 。

二. 联系人和公司

有完整相關檔案: 名稱、 郵件、 電話、 公司、 標籤、 生命周期相關相關站、 有話可說、 有票可說, 有買入相關通訊和自訂相關網域等相關人員相關接方式。 連接相關連公司相關 B2B 相關管理 。

交易和管線板

有相關相關的相關地點被取自自訂相關。 在相關站相關接相關分別、 設定相關值、 指定相關日期并看到相關取自相關管道相關等相關事由相關多相關管線相關 。

AI交易指導

有相關的相關資訊、相關相關預算、相當相當優秀的建議、取勝概率及相關時間等相關訊息。

二. 預測和報告

有相關資訊相關相關的相關報導也相當相當多。 有相當於相關地區相關, 有相對地區、有相關人相關出價相關; 有相相關事由相關國家相關市場相關分; 有同樣相關國相關接地區有相通地區等相關通訊相接地相關:

探矿代理( SDR)

有AI能發出探險, 從您訪客相關相關資料中找出相關客戶、取出通訊和相關平台相關活動。 建議外延目標、起草初始訊息并取分數以取出相關的質量。

相继序列

相關相關的相關訊息相關內容相關: 有相關接觸相關資訊相關, 有相當相關同關相接相關; 有相接可相關連相關之事相關。 相接者可依據相關情報, 有同關同相關而取回相關信件相關分類相關等相關項目相關再接相接再接再起相關活動相關

生命周期和保留

有自動轉接的追蹤客戶生命周期相關相關( 領導、 前景、 相關人等 ) 。 保留代理監控器會監控克通訊并建議介入 。

數據管理員

有接著能打掃和丰富你的人工智能干員CRM資料:去除聯絡人、填入缺失的字段、驗證郵件、使公司名和旗下分類紀錄标准化。

建立我的CRM

自然語言CRM:向AI提供你的銷售相關流程, 並建立您的管道相關階段、自訂地區、交易樣本及自動規則等。

CRM 健康檢查

Automated audit of your CRM data quality: duplicate contacts, deals without next steps, stale pipelines, missing contact information, and data completeness scoring.

信任通訊

三等自動控制 CRM AI 代理:自動駕駛( AI sacts 獨立地作), 代理駕駛 (AI 建議、 人權批准)和手動 ( AI只觀察) 。 設定每個代理、 每個動作類型和每項交易相關的分數 。

有四名AI特工

CRM 有四位專業的AI代理:Steward (資料質量)、SDR (探查), 留置(防止垃圾)和Analysis (報告和透視)。

接通器和集成器

已建接線器

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

連接器建構器

Build custom connectors for any platform, no code, AI-assisted, or full code. The builder supports REST and GraphQL APIs, OAuth authorization code flow, webhook auto-registration with Stripe and simple signature schemes, pagination (offset, page, cursor, and link-header), list/error transforms, multi-action context, and marketplace packaging.

AI- 協助的連接器作者

ConnectorBuilderAI 有助您建立連接器: 描述您想要的并建議動作, 寫出要求處理器和地圖 API 有回應。自動處理認證、相關相關和錯誤處理等 。

OAuth 任何連接器的相通

通用應用程式 OAuth 有同任何連接器相通的授權流 。 PKCE 支援, 有站點範圍的狀態管理,自動刷新。 Connectingers definition theirs OAuth 參數和 OpsIQ 有能接通流出相去相去取出相入相去.

有能通巴士(平面-全站延伸)

Connectors 不僅加入平台動作。 它能用能力" buses"來發出核心功能. 有接通器可以宣告出能力( 名單、 富集、 在 CRM 中簽名; 在站點情報中被當地上名, 排位數; 在分析中被取用; 在支付中被提供; 在信箱中被收用到 Email_ sync; 在通訊中被用到影像相會)并實行其小的方法集; 有相關者可以使用相關相關的相關功能; 有同分別的相通相通等相通的相接相通性相通能被取取用相通而取用同相通之相通; 有分相通可取相通同相接的相取相接能取取取相取取自相通取相去相通通相取入相通有相通性的相通接相相通 OpsIQ 有通通通的資訊通通到通訊所 有通訊站 有通報通訊通訊口 360 有幾個接通器可以提供同樣的能力而沒有鎖定。 參考接通取自相接器/ PLATFORM_ CONNECTORS. md 。

有前置的同市級相對

連接器活在兩層相中一層相接。 預置接通器( connectors/)被放出入盒子中, 并保持只向無關鍵參考提供商和被使用最多的提供商相接 (例如: Google Calendar,Gmail, Google Business Profile.) 有可被發現的市場連接器( marketplace_ connectioners/) 在被安裝前是惰性的, 如: 微軟等365行事曆、 前景、 DocuSign,Stripe, GA4, SerpApi; Zom. 每座橋都顯示出市場清單, 因此當一個能力沒有即時提供商而從不斷出按鈕時, UI和AI可以發出"從市場上接入" (已通知- to-in-stall) 。

接通器集市

公開您的連接器到 OpsIQ 有相關相關的相關接器 json 有知識 有知覺 有相識 有相识 有相思之分 有相通之分 json 在工作流程中。json,并簽署了相關檔案。市場支持多來源收費的免费和有薪接通器。

連接器簽署

所有接通器都用加密簽署以檢查完整性。 在安裝時會檢查簽署。 在更新后使用已辭職的- 所有接合器工具重新簽署 。

SmartLookup

通訊器相對系統。 定義搜尋規則和 OpsIQ 用模糊分數和智能Rank算法相匹配使用者查詢到平台实体。 例如: find_country ("germ") 和 German 相匹配 88.9% 有自信.

動作合同

二. 通 知OpsIQ API出出已登入的相片JSON操作可被取出名稱的動作。 对于活的已打入的完整和精确的合同使用元. 動作; 連接器套件會用相關的 ActionExecutor 宣告出出自自己的供應商動作 。

接通器食譜

有前置的工作流程配方能把多個連接器動作整合到共同的商業工作流程中去. 例:"一出新訂單就接通了"Shopify 有出票,更新CRM并發出 Slack 通知".

相關相關同時

Connectors 宣告了與 AI 知識相同步的知識主題。 有專有平台的相關相關說明文章、設定指導和排除故障等步徑可自動被 AI取用而不用手動通識入錄 。

發展者平台

淨 值 API

有名的 JSON API 覆蓋已登入的通訊器 JSON 操作,由API-克鍵認證 工作區相隔相接 有範圍 有限制率 有同樣能寫作 有同時能寫出 OpenAPI 有同感的 Postman Collection.

網路鉤子

有出站等相關相關重大事項:訂單、发票、訂閱、入站、聊天、領導、用戶登記和推車棄置等。15 有相接的失敗。

有相關的相關文件被簽署了 (W)

在接地口被簽署出站的相關事由 HMAC- SHA256. 檢查收取端的簽名以確保接地點的真實性。 s穩定事件_id 以做一元處理 。

元件 SDK

JavaScript SDK 有身份解析度、自訂事件追蹤相關分類、程式聊天相關控制相關和頁面相關設定相關的追蹤元件。安裝回放、 Vue、 Next.js 的食譜; WordPress, Shopify 并保持平靜 HTML.

插件和 SDK

通用框架的伺服器- side SDK 和外掛程式 。WordPress 外掛程式, WHMCS 模組,并通用 PHP/Node.js 集成函式庫。

事件 API

將自訂事件推入 OpsIQ 從您的后端: 買入、 簽名、 特性用法、 錯誤或任何相關事項。 事件會出現在訪客時間表上并被放入分析與 AI 上下文中 。

触发廚房

建立由事件所啟動的自動工作流程: 已啟動的新票、 聊天、 已查明的訪客、 交易階段已變更或自訂的事件。 Triggers 執行連接器動作, 傳出網上呼號、 更新紀錄或通知您的團隊等 。

API 建構器

有視相能 API 在管理器內建立網接。 配置端點、 測試要求、 檢查回覆及除錯集成而未出 OpsIQ.

团队和行政管理

基于角色的存取控制

有三個角色:所有者(通通、收費取用、危險地區)、全管(除收費出用外的所有操作和危險地帶外的操作)和代理(只被指派部門,沒有設定取用)。所有的敏感頁面都由角色硬化而成。

二. 工作表

有所有者和全管儀表板顯示解析時間、工作量分配、處理深度、頻道分解、趋势分析、SLA遵守、CSAT按代理、重啟费率、出行和最繁忙的活取等。

行政存在和線上追蹤

在管理通訊中即時被接通的元件。 以心跳为基础的存在檢測( C)60 二分一分. 300 二接一接接接一通接一出接一起接一回接一去相接一取接一入接一分接一行接一相接相接接相通相接再接一站相接 120 以查看目前正在使用的管理員和在哪個頁面上。

工作區設定值

相接的站台( 工作區域) 有自有的 AI 設定、 接通器設定、出票部位、 品牌及操作規則等。 全球預設相接可連接到不覆覆接的工作區域 。

多站管理

从一管理多個網站 OpsIQ admin. 每个站點有自有的追蹤片段、訪客數據和設定。 在站點相接取自 admit 通訊中 。

電子郵件樣本系統

所有自動通訊的通訊通訊由通訊錄取的電子模版:出票通知、聊天記錄、歡迎電子郵件、密碼重置和系統警報等。 編輯 HTML 有活取預覽的樣本, 有可變的芯片 (C){{customer_name}}, {{ticket_id}})和全局布局控制。

出入口

Import contacts, tickets, and knowledge articles from CSV/JSON. Export visitor data, analytics reports, and CRM records. Data portability for migration between systems.

二. 安全、遵守和操作

企業 SSO

OIDC (OpenID Connect) 有全程跑取的單個簽名: 發現、授權、回復、 JWKS 簽名驗證、用戶資訊、域名放行、 JIT提供和狀態監控等。SAML 配置支援.

GDPR 二. 符合性

已建入 DSAR ( Data 主题存取要求) 處理: 匯出并刪除所有系統的客戶數據。 聯絡人相關相關的數據已刪除, 包括會議、 票房、 聊天、 CRM 記錄和電子紀錄等。 同意管理及保留相關資訊相關政策 。

IP 二. 阻截和野蛮武力相保

區塊區分 IPs 或 範圍从存取您的站台或管理器等。 在可配置失敗的登入試作后自動關閉。 失敗的入入住 IP有出息相接 有出行相接相接取回相接通相接同相接

HSTS和安保信封

HTTP 嚴格的傳輸安全、 權限- 政策頭目和安全的 cookie 設定。自辦部署可以由伺服器配置而新增 CSP 頭目 。

出站后網頁被硬化

SSRF 守衛封鎖了網上對自動/ 元相關相關的區域 IP 範圍。 Async 傳送可防止慢端點阻擋您的應用程式。自動失效后 15 有接連的失敗可以防止資源被用到死地點上 。

工作區隔

在工作區相接相接取相接的相接地區中要嚴格地分取相通相接去相接, 有訪客、入票、聊天、CRM相接和AI相接被放入相接所接相通的相通地區。 Cross- workspace data sellage in the channess geloom.

计费周期管理

有月、季度、半年、每年、兩年和活期的收費周期相接相接;多通由通路通通通的通貨通路常通;收取后可通通取FX轉接以准确報收。

Cron和已排程自動

有預測指標的醫療診斷。 有相關相關的相關訊息相接相接器相接再接相通相接,

保留資料的政策

設定訪客會議、聊天記錄、 AI相談歷史和事件紀錄被保留了多長。 自動清理已用過的資料以管理儲存并遵守保留政策 。

2. 诊断和保健

有相關相關的相關資料庫相接相通性、 AI提供商相通相通地、相接器相通接器、網上被提供率相接地等相接方式,

誰? OpsIQ 有被取用于:

电子商务商店

儲存

就讓AI用活口回應"我的訂單在哪裡"Shopify/WooCommerce/ BigCommerce 有相關資料。 用 AI自動重複管理相關入站入站出站票。 執行批发和 B2B 取向的通訊管。 將入站收入分給交通來源和通訊。 監控車棄站及回收工作流程 。

相關軟體公司

SaaS

監控試驗簽名并用分頁重放特性通過。 追蹤文件頁面所轉換的功能。 在您的 AI 有自動支援 API 在 CRM 中管理訂閱收入和擴張交易。 連接您的收費平台( Stripe, 3: 1) WHMCS)用于实时 MRR 追蹤。使用 CRM 生命周期代理以偵測并阻止churn 。

机构和自由职业者

机构

提供白標籤分析及支援端口給客戶。 有從一任管理員取出多個客戶網站的軌道通導。 使用 CRM 管道去管理前景和專案領導。 在客戶端平台上用 Connector 建構自訂接線器。 在 SEO 上以站點資訊產生標籤化的 SEU 報告。 重新賣出市場接線程式作增值服務 。

二. 东道主和基础设施

主機

深 WHMCS 整合同 80+ AI 動作以尋找命令、服務管理、DNS 使用相關資訊基條目自動回復常见的寄存問題。 追蹤伺服器狀態頁面相接。 用 AI 分類管理技術支援入場券。 使用收費周期梯度以活期寄存計劃為月 。

支助重活

支助

倒置 40-70% 有 AI 有相關通訊的相關回覆。 有 AL 有 IP 分類的路由通向相當部門 。 有 有 解析時間 、 有 SLA 相通度和 CSAT 有 代理 。 使用寫入 AI 的 AI 來起草專業回覆 。 用 AI 就 有 有 有相通 的通訊來監控相關的相通性 。

二. 出市和SEO团队

出市

完整站點資訊套件: craws, 技術 SEO 審查, 內容分析, SERP 排位追蹤, 關鍵研究,回路監控等同地 SEU 網格相關. Google Business Profile 管理. 定期的白標記客戶報告. A/ B 測試已建入追蹤元件中. Campaign profile accorders to over all channels.

有獨行創作人和小隊相接相接

起步

就從追蹤和聊天入手, 有自由加入。 在得到相關支援后再加入入入場券 。 在您開始銷售時啟用 CRM 。 接通被您所接受的相關平台 。OpsIQ 从一人做起到一等分 50 有RBAC的人員作業團隊 有部門 有特務能跟蹤

企業和多品牌

企業版

企業 SSO 有 OIDC 以集中認證。多工作區隔分別相接; 有不同提供商和型號的每工作區 AI 設定相接。 自訂連接器發展與市場分配相接 。 審查追蹤器 : GDPR (一) 遵守工具;以及数据保留政策。

什么? OpsIQ 取代

Google Analytics + Hotjar + 活性

有訪客追蹤、會議回放、頁面排行榜、地心相通相關相關資訊、意向漏斗、轉換歸屬相關事由、A/B實驗相關同JS錯誤追蹤相關的全網站分析相關,

有相通相通再行漂流相通同通相接相通

有相關資訊、多提供商的AI相助、自動接觸人員、有先進性地聊天規則、聊天歷史、CSAT調查及聊天出票等功能相通相通。

Zendesk + Freshdesk + Help Scout

有相關部門、優先權、SLA、AI分類等原始出票系統,

接地平道+接地站+售出力

AI-first CRM with four specialized AI agents (Steward, SDR, Retention, Analyst), Trust Dial autonomy control, pipeline board, deal coaching, forecasting, sequences, lifecycle management, and natural language CRM configuration.

雅里夫斯 + SEMRush + Moz

有自動爬行的站點情報所 有技術上 SEO 的稽核 有內容分析 有AI搜尋 有SERP分級追蹤 有关键字研究 有回路分析 有本地 SEU地區網格 有定期白標記報告 有相關資料 有相通的相關相關地區 有相接地區

Zapier + 制造出相當相當的相當軟件

連接器 SDK 有 25+ 已建接線器、接通器建構器(無碼/AI- Abid/ full-code), OAuth 有相關連接器被安裝、被啟用、被配置并被驗證、SmartLook上市、集市和被簽署的套件等相關相關接通器相關動作定義相關的大目錄相關可執行 。

谷歌企業設定檔管理員

有相關相關資訊相接相接、通訊追蹤和AI權能回應等, OpsIQ.

分離電子郵件樣本工具

有可視化編輯器、活取預覽相接相接的通訊文模版、可變芯片、全局排版控制相接方式和每起事件定制相接通通訊等。

團隊管理儀表板

有相關相關的相關事務:解析時間、工作量、SLA相關條件、CSAT相關分類、重啟费率、最繁忙活地、即時出行追蹤等。

GDPR 遵守工具

有原生地 DSAR 有相關資訊被取出, 有相當多的資訊也被取回; 有相接相關的資源被取用; 有同樣相關相通相通的相通性被取而代之; 有與相通同相通; 有通相接的相接性被收取; 有入通相相通而相通地被取取出; 有出相通能通相關同相接; 有可通相去相通接相通。

二版

有主機部署

OpsIQ 在被管理的基礎上執行。 產品操作同樣; 基礎、 更新和備份由主機處理。 此手冊收錄了:OpsIQ 而不是出市或通商帳戶相通 有好幾分?

自管相机

安裝 OpsIQ 在您自有的伺服器上可以完全控制相關資料、品牌、更新和集成等。需要 PHP 。8.4+, MySQL 5.7+或 MariaDB 10.3+, HTTPS,并 OpsIQ 有相關相關的相關通訊 WHMCS 相接相接的相接模組。 完全相接地主權 。

建議的讀取命令

1
快起步了

跟著去 30 在你的網站上找找找相關的相關線索 有需要等一分鐘再做相關設置指導

2
有活板和相對相對分析

有學會如何讀取你的訪客相關資料, 設置回放会議, 找出線索并了解通訊模式等。

3
站點資訊

就去跑出你的SEO地步去檢查你的技術健康 并設置SERP分級追蹤你的目標关键字

4
入站及支持

建立部門, 以自動回復相關AI相接, 連接電子郵件吞取, 並訓練你的AI去處理同樣的問題;

5
CMM (CRM)

組織接觸相關人,建起管線 有AI的代理相關相關接通相關分數 就由AI去做你的交易了

6
Connectors 和開發工具

連接您的電子商業/通訊平台, 建立自訂接通器, 設置網上呼號, 並由 REST 整合相通 API.

💡
新建至 OpsIQ* 从下方的快速起步指導起步。 您可以在下方有追蹤和基本 AI 聊天 30 等一等.
就從這裡起步

快速起步 30 分

就想得到相接相接取出相接同相接的相接之道去取取取相接所取相相接而取相取相通相接. OpsIQ 執行中。每一步都以上一步为基础。到最後,您會有訪客追蹤、AI聊天和基本的入站支持等功能。

設定
快速啟動清單有導引的設定清單顯示了元件安裝、平台接通、AI訓練、團隊邀請和上線等功能。60 有進取分數了 有進入分數開始吧setup安裝 OpsIQ 元件完成連接平台 (M)WHMCS, Shopify...)完成就你所想的去教訓你的人工智能完成有請同隊去接你有活去取取取出設定進度3二月5 · 60%1STEP 1安裝元件2STEP 2連接地鐵AI( T)3STEP 3邀請去活地( G)
该 30-分道揚镳:安裝元件,接通一站台,去訓練你的人工智能,去邀請團隊再起跑.

该 30-一分鐘就弄好

1
啟動您的駕照( E)

在下方輸入您的駕照金鑰 OpsIQ 管理器。去設定, 輸入此安裝所提供權限金鑰并點擊啟動。 您應該看到綠色的" Active" (Active) 徽章 。

2
設定您的商業身份

前往設定并填入您的商業名稱、 業務、 時區、 預設的通貨幣及相關時間。 AI 在回應客戶問題和分析時區相關報告時會使用此資訊 。

3
選擇 AI 提供者

前往 AI 設定并選擇您的提供商。 Claude (A)Anthropic(一) GPT-4o (OpenAI), Gemini (Google) 或 Grok (xAI)。 請輸入您的 API 如果使用您自有的金鑰, 或是使用您計劃中可用的管理型AI。 點選 “ 測試連接器” 以驗證 。

4
安裝追蹤元件

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

5
連接您的平台

如果使用 Shopify, WooCommerce, WHMCS, 或是被支持的另一個平台,去接通器站找取您的平台、輸入憑證并點擊試接通。 這可以讓 AI 有權取取取命令資料、 客戶描述文件及相關上下文等 。

6
有請同隊去接你

前往 Team, 按下邀請, 輸入他們的電子郵件和角色 (Owner、 Full Admin或 Agent) 。 代理只能存取您所分到的部門 。 所有者和 Fult Admiters 都看到了 。

可能走得最快的路由( C)5 (分)

步入1: 安裝元件

从已連接站點复制片段并貼入您的網站。 這可以使您立即追蹤 。

步入2: 開啟 AI

前往 AI 設定,取出提供商并輸入您的金鑰并儲存。 AI Calk 已啟動到您的網站上 。

有作

有訪客追蹤和AI聊天等相關的通訊器等相接相接再加入出票、CRM及接通相接口。

第2天:使它有用

新增知識

到知識地點再加入5-10 有關於您最常見的問題的文章 。

建立部門

有票出票后至少要建立出票2 (如"銷售"和"相助"等)相關部門相接相接,相接而出.

寫入您的 AI 提示

有時也想出出一項相關的規則,

試取相談相談

在私人瀏覽器中開啟您的網站并用相關的用戶身份和AI聊天。 請檢查答案是否准确而音調是否正確 。

周1: 建立您的操作

連接電子郵件

建立信箱 (Gmail, IMAP 因此客戶電子郵件可以自動建立入場券。

自動建立回復( E)

在安全區域自動重複啟用出票。 set a 2-再等一等 就讓人類先出手干預了

重讀分析

每日檢查 Dashboard 有訪客數量、回放率、上等頁面相接相接后銷售相接。

啟動您的 CRM

開啟 AI CRM并讓 OpsIQ 从相通的平台匯入聯絡人。 檢查管線板 。

月份1: 优化

翻譯 AI 歷史

有時也想找找相關的答案、問題和相關資訊相關機會等。

有先入为主地去取取取相接相接之道

建立規則: 如果訪客被收費于 60+秒后, 顯示聊天訊息以問他們需要幫助 。

建立連接器

如果您使用沒有內建接線的平台, 請使用接線接線构建器來建立相接接接線 。

建立網上呼號

連接 OpsIQ 有出道的網友去取票、聊天和銷售等。

我能跳出人工智能再用追蹤嗎?+

是的 人工智能提供者是可選的 OpsIQ 在沒有AI的情況下,您可以使用純解析器和售票平台。您可以稍後在您準備好後啓用AI。

我能跳出接線器再加上接線嗎?+

有相接相通者能用相通相通的相關相通數據來丰富人工智能 OpsIQ 有需要就接通相關平台。

如果沒有網站呢?+

你還能用到相接相接取去 OpsIQ 有入場券、CRM和團隊相通等功能。 追蹤元件可以選擇。 在您網站準備好后再加入它 。

我怎麼知道元件安裝是否正確?+

在私人/ 隱形瀏覽器中访问您的網站。 然后檢查 OpsIQ 有活活的活活地取出相去相去取回相去所取取取回的相去去相取取相去而取回所取回取取入相去之相去自取取自取自受取自自取出自取道 15 秒。如果不是,请检查: (1有片段被正确貼上 (正反相接 )2)站台金鑰正确, (( s)3有廣告封鎖或 CSP 封鎖了文稿。

就從這裡起步

完整產品地圖

OpsIQ 它不是一款功能。 它是一個接線人管理器、 網站元件、 AI 支援層、 票/ 說明台系統、 有 四個 AI相通的完整 CRM、 有 Site Intelligence 套件、 有市場相通平台和開發者表面等。 它所包含的所有相關相通相關的相關元件都在這裡 。

接線人管理員

Dashboard, live feed, visitor log, sessions, session replay, top pages, geo intelligence, intent funnel, events log, A/B experiments, JS error tracking, sales and conversions, leads, AI CRM (command center, contacts, companies, deals, pipeline board, deal coaching, forecast, prospecting, sequences, lifecycle, data steward, Build my CRM, CRM config, CRM health, CRM API), tickets, chat inbox, proactive rules, CSAT surveys, email drafts, mailboxes, AI configuration, AI training, AI history, AI insights, knowledge base, connectors, Connector Builder, marketplace, connected sites, team management, team performance, settings, diagnostics, and license.

有客人相遇的表面

網站追蹤元件(分析信號+聊天+入通票+知識基底搜尋), 客戶端 AI 聊天, 出售出票口, 訪客身份代碼處理、檔案上傳, CSAT 測試元件和取用人員相關的說明中心等。

AI- 第一個CRM

Command center, contacts, companies, deals, pipeline board with drag-and-drop, AI deal coaching (risk signals, next-best-action, win probability), revenue forecasting, prospecting agent (SDR), automated follow-up sequences, lifecycle and retention management, data steward agent (dedup, enrich, validate), Build my CRM (natural language setup), CRM configuration, CRM health check, Trust Dial (Autopilot/Copilot/Manual per agent), four specialized agents (Steward, SDR, Retention, Analyst), and CRM API with webhooks.

站點情報套件

有自動站台爬行 技術上作 SEO 審查 (速度、可動性、核心網絡相關人物等) SSL、重定向相接相接地圖相接接相通相接取取取回相接的相接方式相接而取取出相通的相通性相接同樣相接之相通; 有相通取取用地圖接取相通地圖取取去相接回相通分數相接再取取入相通同相通, 有相關相通接相連相通等相接性相通而取出同相接; 有同相相通互通相通可相通能相通并相通通相相接可相接有相通之相接者相通行相通也相通所相通被取取相接通相取相相相同相同同相取取自相相取同相 PDF 出自各机构。

AI和自動

(多提供商:克勞德;GPT-4o; Gemini 有相接回相接相接自動接取接取相接接相通相接可接取回相通的相接互通相通接取取相通同相接同相通能相接而取相去相接取出相接的相通互通接相相接有相接之相接能相通可相接并相接可以相接. BYOK 有相關相關的相關資料:相關方式、符號預算和成本控制、AI歷史審查小徑、AI透視分析、票款AI分類、自動回復等,

接通器和集成器

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

發展者平台

倒置API(訪客、事由、票房、聯絡人、設定、接通等),OpenAPI spec,API 按鍵管理,出局的網游(同步、簽署、重試、 SSRF 保衛、自動殘疾等),事件API 有自訂事件取入, 元件 SDK有身份解析度、 觸發烹饪簿、 動作相關合同、 連接器等 SDK有集市相接相接器 有伺服器相接的 SDK (PHP, Node.js),有"取出"等. WordPress 外掛程式,并 WHMCS 模块。

設定和操作

企業身份,每工作區的AI設定,追蹤設定,安全 (HSTS,權限-政策, IP 有相關相關資訊相當相當多; 有相當有相關訊息相關的相關資料也相當少; 有同樣相關通訊相關報導也相相關; 有分別相關消息也相關, 有相通相關內容也相接相關: 有相接的相通通相通接相通取用相通可通相接接相接而相通; 有通相相通的相接通相連相通互通相去相通等相通性相通能相通地相通而相接可通接接接取相通同相通之相通。

二. 安全和遵守

企業 SSO (OIDC 有JWKS的驗證 有JIT提供), SAML 配置( C) GDPR/DSAR 處理( 在所有的系統中匯出并刪除)、 資料去除每次接觸相關相關接者、 同意管理、 工作空間相隔相距相距( 有限制的查詢層範圍) 、 審查追蹤、 有失敗的登入追蹤等, IP 有被封鎖出站的網上SSRF衛生站 有數據保留相關政策 有被截取出站出站入站出行出站后

提供商橋

有人工智能代理 OpsIQ 提供方 URL 有地點情報提供商打來電話 有執照證 有健康報告 有相關消息 PDF 渲染出,并匯出相關資料; 通由已設定的提供商端點所通路由的所有路由, 而不是直接的提供方 API 有您伺服器的通訊

每張管理頁

盤子

核心

有相關的通訊站被取出: 交通通訊、直播訪客數、銷售摘要、支援排行深度、AI活動警報等,

有活取出

分析

即時訪客流:頁面檢視、聊天起步、提交表和意向信號每幾秒用國家、裝置和參考過程更新一次。

訪客紀錄

分析

完整訪問記錄:裝置、瀏覽器、OS、國家、城市、參考人、UTM等參考者、登地頁面、身份和完整頁面取景歷史等。

工作階段

分析

由 Journey 組成的檢視: 有頁面相接, 有時有頁面、 有卷轴深度、 有轉換路徑等, 有出站頁面。

會話重播

分析

有時線回放被俘事件:滑鼠移動、按下、卷轴、頁面轉換等,并形成UX 相關的相關功能。

上頁面

分析

有相關的相關相關內容:出訪、接觸相關時間、回放率、轉換相關接相關事由相關同時相關,

地心相通

分析

有地圖、裝置相通相通、瀏覽器相通接通相接相通地區相通,

有心漏斗

分析

有行為意图追蹤:定价出訪、回取頻道、 doc瀏覽、相關相關接相關, 有轉換概率的自訂信號等。

事件日志

分析

有可搜尋的事件歷史: 頁面檢視、自訂事件、聊天相關、購買、有完整中繼資料的成份提交和過過程等。

A/B 實驗

分析

分拆測試: 建立變更, 分配通訊量, 定義目標, 度量相關的地點, 並宣告取勝者, 都取自內部 OpsIQ.

JS 錯誤

分析

前端錯誤抓取:信件、堆放追蹤、被影響的瀏覽器、頻道、被影响的頁面和向上追蹤等。

出品

出品

有收據:訂單、续約、退款、由來由、競選作業相對相關相關分類相關分析等。

有铅

出品

有:分數、出自地點、CRM狀態、聯繫方式、行為相關訊號和管線通路等。

AI. 第 二 章CRM

CMM (CRM)

完全CRM:指揮中心、接觸地、公司、交易地、管線板、教練、預測相接地、取取取地、相接相接取地相接接地相通地相相接;

有入場券

支助

支援收件箱:部門、优先级、SLA追蹤、AI分類、自動回復、內部筆記、檔案附件、合并和狀態管理等。

聊天收件箱

支助

Live conversations: AI and human chat, handoff, collaboration, conversation history, customer identity, and CSAT collection.

電子郵件草稿

支助

電子郵件管理:入站回通票、AI相助回覆相接相接、樣本選擇和信箱設定相接等。

AI 配置

AI (出自:"相克")

提供商設定: 選擇克勞德/ GPT-4o/Gemini 入出( G) API 有相關的相關資訊相關相關通訊相通相通,

人工智能培训

AI (出自:"相克")

有:取用相關相關的快取出、相關規則、口氣指導、被禁題和邊界設定等。

AI 有 原 由

AI (出自:"相克")

有相關的討論:完整的要求/回應紀錄、信號用法、每次相關相關費用、提供商、模型版本和解析結果等。

AI 知識

AI (出自:"相克")

有相關相關的相關問題相關地點相關: 通訊相關分解率相關頻道相關,

知识基础

AI (出自:"相克")

AI 訓練內容: 有文章、 FAQ 項目、 產品docs、 連接器相通相通和自訂相關相關的項目。 語义和關鍵字搜尋以取取取 AI 就地取取用 。

連接器

整合

集成中枢:已安裝接通器, 健康狀態, 有動作的目錄, 有憑證管理, 有市場瀏覽器等相接器; 有連接器相接相接者也相接。

有連接站點

設定值

站點管理:追蹤片段、站點金鑰、元件設定、域位設定和相關工作區隔等。

團隊

設定值

使用者管理:邀請成員, 指定角色 (Owner/Full Admin/ Agent), 設置部門存取,并管理權限.

二. 团队业绩

設定值

Ops metrics: resolution times, workload, SLA compliance, CSAT by agent, reopen rates, busiest hours, and trend analysis.

設定值

設定值

有:企業身份相關, AI設置、追蹤、安全相關相關地區、品牌相關、保留相關郵件樣本相關功能相關;

許可證

設定值

有:出行地由相關地點所出出行;

就從這裡起步

有指導入入住

在上船之行能把一款新裝備弄得活活活去 OpsIQ 工作區并可以被放出并恢復,而不會失去進展。

產品螢幕
入住登入顯示了每個設定區域, 它目前的狀態和要完成的下一個動作 。入住工作區域PROGRESS60%COMPLETED6下一個元件LIVE WORKSPACE VIEW許可證(一) 核收出品相有作AI提供商選擇提供商并測試金鑰有作有牌二. 企业特性和語氣有作网站新增站台并安裝元件下一頁1COMPLETE BASICS有牌照、名牌和AI2CONNECT DATA站台和接通器3VERIFY LAUNCH有相關的郵件 有相機 有相通相通的通訊
登入顯示了每個設定區域, 它目前的狀態和要完成的下一個動作 。

所推荐的相序

  1. 駕照: 驗證授權并確認工作區已啟用 。
  2. AI提供: 選擇提供商/ 型號,入入憑證并執行連接測試。 如果工作區起先只使用分析器和票, AI可以被跳過 。
  3. 企業身份: 設置相關名單、業務、描述相關口音和品牌相關細節等。
  4. 連接器( C) : 在 OpsIQ 有需要的訂單 有客戶 有入場券 有電子郵件 有其他站台上下文
  5. 站台和元件 : 在 Live Feed 中建立站點/工作區, 复制站點金鑰并驗證私人瀏覽器的訪問 。
  6. 出站和出站: 有請管理員/代理員, 建立部門, 設定電子郵件路由并確認通知偏好。
  7. 有活口檢查: 有通訊、通訊接通、克龍、外出電子郵件、網上呼和保安信頭等。

行程可以儲存每個工作區的完成。 回登入會要顯示已完成的步數, 而不是被強迫重新啟動 。

就從這裡起步

管理通訊和權限

该 OpsIQ 相對列是權限- 識別。 此地圖能解釋每個操作區所住地點, 以及為什麼每個管理員都看不到一頁 。

產品螢幕
OpsIQ 通航The sidebar groups OpsIQ by work area; individual links appear only when the current role can use them.OpsIQ 通航工作區域GROUPS8頁面有權取自SEARCH可用LIVE WORKSPACE VIEW支助有入站票 有電子郵件 有CSAT 有知識 有知覺 有知能 有知所識 有相通的出站票有知能取出出出站口開啟CMM (CRM)二. 接觸、管線、交易和探矿開啟自动化二. 工作流程、规则和目的開啟安全隱私( P)二. 概述、审计、同意、分块管理1PICK A GROUP相匹配相關列2CHECK ROLE隱藏表示被限制3USE PAGE HELP開啟相對區域
The sidebar groups OpsIQ by work area; individual links appear only when the current role can use them.
支助

Tickets, the team email platform, CSAT, the Help Center and chatbot flows.

CMM (CRM)

有:CRM Home、指揮中心、聯絡人、管道、預測、生產期、探矿、分區、領導板、交易批准、數據管理員、生長工具等。

自动化

有事件所引動的工作流程 生命周期規定和轉換目標

出市

Outreach, proactive messages, announcements, Promotion Studio, Survey Studio, push campaigns and guided tours.

分析

Report surfaces first — Analytics Hub, AI insights, sales, customers, leads, funnels, A/B tests, session replay, custom dashboards and scheduled reports — with the raw visitor, session, page, geography and event logs in a Raw Data sub-section.

分立頁面

有相關資訊、團隊作業和回報等,

整合

接通器、動作和觸發器、信箱、草稿、電子郵件設定、入站端點、出站后網上出站等API鑰匙.

安全隱私( P)

Security overview, privacy and compliance, cookie consent, audit activity, failed logins, blocked IPs and JavaScript errors.

設定值

工作區基本(通訊、團隊、站點、語言等),再由相撞子分區:AI Brain (教訓、配置、評估、歷史)、CRM設定(建築者、自訂地區、領域分數、健康)、Data & Health (诊断、出品)和Getgarted (上車、幫助)。

無法開啟的角色頁面被隱藏出相邊列。 頁面中目前計劃中不包括可視性與相間 升級 標籤并開啟應用更新屏幕。

有直接路由被檢查了伺服器一邊。 隱藏相關連線不是安全分界: 每一個被保護的動作都必須通過它的權限和工作區檢查 。

分析

分析中心

有相關相關的相關出處相接相關事務所,

產品螢幕
分析中心有相關相關的相關事由: Analytics Hub提供日期範圍、公制卡和分頁等相關功能,分析中心工作區域184AI RESOLVE63%CSAT : 科取4.7LIVE WORKSPACE VIEW支助有被建立 有被關閉 有被封鎖 有被被關入的地道 有被打入地道去取回地道SLA分頁有話可說AI/人的成果和接取時間分頁AI (出自:"相克")有自信 有回應 有信號用法分頁有名音量、速度和取悅度分頁1CHOOSE DATES預置或自訂2CHANGE TAB支援代理3EXPORT下載 CSV
有相關相關的相關事由: Analytics Hub提供日期範圍、公制卡和分頁等相關功能,

過度器和相控器

  • 使用預置或自訂 从/到 範圍后再刷新以重建同時期的每張牌和圖表。
  • 輸出 CSV 匯出活性分析取景,而不要取取取截圖。
  • 工作區的範圍自動; 變更站點會改變所依舊相關的相關相關資料集 。

每個分頁的分頁量度

  • 相助: 票已建立/已關閉/待用, 第一個回覆、解析、 第一個接觸解析SLA和优先/部/分/狀態分解。
  • 聊天: sessions started, AI resolutions, escalations, abandonment, handle time, messages per session, and AI/human/all CSAT.
  • AI: 平均自信、低信任率、分類精度、回馈、知識偏移、信使/取出用等需要審查相關相關項目。
  • 訪客: 二. 交通和接觸相關相關的相關起勢
  • 代理: 有能活取出出出相關資訊的相關相關事項,

有時可使用分析相關站口, 有專門的訪客、入場券、CSAT、AI歷史和團隊作業等頁面,

分析

取出相關相關的相關通訊板

Dashboard 是您每天的指揮中心。 它以一處觀察顯示通訊、銷售、相關支持、 AI活性及轉換指示器等。 每天早上都打開它去了解一晚上發生了什麼事, 今天需要注意什麼 。

盤子
概述有相關相關資訊相關的相關單位相關功能相關: OpsIQ 情報AI相關面板( 有每日簡報、 有智慧的警報、 預測等) , KPI 元件瓦和一塊七天的通訊相關元件, 此外還有重設布局控制器 。概述工作區域OPSIQ 二. 信息取取一分析并. OpsIQ 就快去寫了每日简报有智慧的警示預測重置布局今天的訪客2,481+12%收 出$8 2.2克+5%開放的曲目143 SLA· 最后一通7天1AI-FIRSTOpsIQ 情報板2WIDGETS由您安排的 KPI 牌3你的隨時重設佈局
真正的概述螢幕: OpsIQ 在您自己所安排的 KPI 元件上方 (取出分析并寫出) 。

有通訊卡

有直播者

您網站上的人數相當多, 此項每一次更新( E) 15 秒 (可配置) 。 有訪客被載入活性阈值內的一頁( 預設: 90 第 二 章。

特有訪客

在所選擇的日期範圍內 有許多人來您網站上訪取了相關相關的相關資訊 。OpsIQ 由瀏覽器指紋、餅干和(如果有的話)被認可的身份相接而成地识别訪客。

新增 vs回傳

有新來客第一次去看你的站點。 有回歸相關的回歸者被看到過 。 有高回歸率就意味著您所要回歸的內容能取出人去取回您所取回的回傳相關相關分數相關, 有時您可能不會收起利息去取取回回回傳中所取取取的回應相關資金 。

彈出率

在只收看一頁后出走的訪客百分比。70% 在登入頁面上通常指頁面并不符合訪客期望、內容錯誤、載入速度慢或手機經驗差等。

在頁面上的平均相接相接時間

在每頁上平均花花多長的時間 (下) 10 在內容相關頁面上, 有很長的取出頁面可能會有誤解。

有被阻擋的威脅

IP有地址: OpsIQ 根据相關威脅分數、 強取暴力或手動區塊等被指認出有潜在惡意。 點擊以看到被封鎖的區塊 IPs 列表中。

就今天 / 本周 /本月

二. 从相關銷售來源得到的收入Shopify, WooCommerce, Stripe如果銷售顯示为零, 請檢查您的平台連接器已連接并同步 。

二. 趋势表

有一行圖顯示訪客數量相對於所選取的日期範圍。 尋找:交通突起( 站台、 有媒體提到)、 有分別( 有週末、 有放假等) 有相關的相關趋势 。

有源可查

有您所訪客的地點: 有直接、 有谷歌、 有社交媒體、 有電子郵件、 有轉介站所等。 使用這個來了解哪些銷售渠道能用到 。

有上個瀏覽器

Chrome、Safari、Firefox、Edge等。 如果瀏覽器有超乎寻常的高回放率,您可能會有 CSS 或 JavaScript 有相容性

有時取暖相片

有網格顯示了每周一小時和一小時的訪客活動。 用這個來決定如何安排相關班次、 何时發出通知, 以及什麼時候跑取升級等 。

最近到訪者

有國家、頁面、裝置和來源的最後幾名訪客, 在活動中有助於快速地分取檢查。

使用日期範圍過程

在 Dashboard 右上方點擊取日期器。 preset: 今天、 昨天、 最后7日,倒數 30 日期範圍被設定在您已設定的時區( 在設定中) 。

有工作的例子

二. 彈出率高起起落

假想:
就快出事了! 45% 至 78% 就這周出事了?
所取之道:

檢查: (A)1有特定登入頁面的變更嗎?去取出上頁并按回放速率排序 。 (2有活動把流量傳到錯誤的一頁嗎? 請檢查最高來源以取取取新裁判 ()3)站台是否在手機上被打破?檢查瀏覽器被打破了以取得手機回放率 (% 1)4檢查威脅分機和訪客細節 有可疑的圖案

在儀表板上沒有人能入住了

假想:
有活活活地出道了0有活人接觸,
所取之道:

檢查: (A)1已安裝追蹤元件? 查看您網站的源碼并搜尋 OpsIQ 文稿 (C).2)站點金鑰是否正確? 將文稿中相關地點的數據鍵與已連接地點中的鍵相比較 (Connected Sites: (p.3CDN 有或快取提供已變更的頁面而沒有文稿? 清除您的 CDN 快取 。 ()4有廣告封鎖或 CSP 封鎖了文稿嗎? 請檢查瀏覽器控制台是否被封鎖 。

有時能看出熱圖

假想:
在平日出事地點到2: 00相當激烈,
所取之道:

這是 B2B 通訊模式。 您的訪客正在工作, 在公用時間做瀏覽 。 ( 意見 : ( s)1(一) 安排工作日的工作时间。2(星期二至星期四上午)3(出自"周刊") 周末維持視窗是安全的.4就想提供活話,

有不明出自的通路高峰

假想:
有出事了 有出所不意地出事 500 一小時后由不明裁判接通
所取之道:

取回相關的相關相關資訊, 在時光相關視窗旁取取取。 請檢查: (( s)1)是真正的訪客或bots?看看會議的相關時間、頁面查看和瀏覽器的多樣性。 ((A)2如果是真的,到底要上哪一頁?3(檢查裁判) URL 有位相關人士可能已與您相關,4如果是活生生的通路 就去檢查威脅并想阻止 IP 範圍。

為什麼我的訪客數量和相差相去甚遠? Google Analytics?+

OpsIQ 它使用瀏覽器指紋和克勞斯,而GA也使用不同的克勞克模型. Bot silvering, ad blocker 速率和文稿加載命令也可能造成相差. A. 10-20% 相差是正常的。

我能把儀表板放入另一個工具嗎?+

有出自"活地取出"OpsIQ 管理。 对于外部報告, 使用 REST API 在您自己的儀表板或 BI 工具中顯示分析相關相關資料。

"相威胁"的取自是什么意思?+

有分有分 IP 有地址: OpsIQ 根据相關威脅分數、 已重複失敗的登入或手動區塊而標出或被封鎖了。 點擊收視器以查看細節并管理區塊 。

分析

訪客紀錄

訪客紀錄顯示您所追蹤到的網站的每次訪客。 每行都是一頁的訪客入載。 用它來調查訪客的行為、 找找競選流量并分析追蹤問題 。

訪客紀錄
訪客紀錄有滤波器的訪客表 (日期, 搜尋)IP/email/city, source, 裝置)和列 IP 有被標記的威脅行 有通訊錄 有通通訊相通 有通口通通通相通相接相通訪客紀錄yoursite.com7天搜索 IP 電子郵件,城市...來源▾裝置▾IP / 郵件位置源 源地獄有時[email protected]美國google桌面2米41.62.10.4英國-倫敦direct有手機6米[email protected]德-柏林通訊錄取:ads有手機1400米203.0.113.9(克克克特克克)referral桌面threat1–25 二月 3,402階段→1FILTER日期 · 搜尋 · 有來由 · 就位裝置2REAL COLUMNSIP 有相關相關的相關資訊被取出;3DRILL IN開啟整段分頁
真正的訪客紀錄: 按日期、 搜尋相接相接器, 然后讀取每次訪客相接的相接者 IP 有相關訊息、地點、來源、裝置和時間 有紅色標記的威脅

每行所顯示的

IP 地址

有客人了 IP 地址。如果 IP 在設定中可以使用匿名。 點擊以查看從此來的所有參考 IP.

Country and city

从所出取取出.IP使用 GeoIP 資料的地址。需要MaxMind GeoLite22. 數據庫或Cloudflare地圖頭。 如果沒有被設定出地圖IP, 就顯示"未知" 。

頁面 URL

有訪客已載入的頁面。 點擊以看到完整 URL相去甚远 URLs 在表格取景中被切斷。

出名者

在登上您站地前被訪者所到之地 "地" 就意味著沒有指標 (書印,打入了 URLs 有相關應用程式

裝置和瀏覽器

訪客裝置類型(桌面、通訊、平板)和瀏覽器(克羅姆、Safari、Firefox等)。從用戶代理頭解析了 。

日期和時間

在您所設定的時區中被載入了頁面 。

客戶身份

如果被指認出訪客 (由身份代碼或登入) , 其名或郵件會被顯示出。 否則會被以匿名方式顯示 。

過目

日期範圍

滤取特定相關時間段的通訊。 預設: 最後7有好几天了

搜尋

搜索由 IP 地址,頁面 URL 指揮官 有國家 有客戶的電子郵件 有相關事嗎 有 有 有相當多的相關信息 有相通相通 有相接相通的相通通相接有相通接相

出自:

有通訊、有機接通、有通訊相接相接、有收費相接地接通相接通等。

裝置

由桌面、 Mobile 或平板电脑分選取。

有新

有出自"相克"的相克相克被取出.

有工作的例子

在一項特定活動中找找訪客

假想:
您用 UTM 參數 utm_ source=google&utm _medical=cpc&uttm_ Campaign= summer- sale 啟動了谷歌 Ads 競選。 您如何找到這些訪客?
所取之道:

在訪客紀錄中, 使用搜尋字段并輸入" summer- sale "。 搜尋檢查參考者 URLs 和頁面 URLs 因此 UTM 參數相匹配。您也可以用 source = 付費以縮入更遠的範圍 。

有客人出事了找找找去取回相關人員

假想:
有位客戶用電子郵件說"昨天下午3點左右你的出票頁被打斷了" 你怎麼找到他們的會議?
所取之道:

在訪客紀錄中用他們的電子郵件地址去搜尋。 如果被登入, 身份會被顯示出。 將日期範圍設定到昨天。 在下午3: 00左右尋找訪客以取出頁面。 點擊會議以看到整頁的流出和任何相關相關的相關 JavaScript 有錯.

偵測回路接擊器或刮取器

假想:
你注意到了 IP 有地址 500 一小時后再去取訪相關地點
所取之道:

它可能是一個機器人、 刮取器或被弄壞的文稿。去訪客日志中取取取 IP。檢查: (A)1(出自:"同一篇";"同"一行?2(用戶代理是已知的機器人嗎? )3有相接相接之事; 有相通相接同相接; 有同相通的相接接相通之事: 有同同相關相接的相通取相通同相相通而相通有同相連相通. 0如果被確認是機器人 就去保安站封鎖 IP.

訪客紀錄 vs会话 vs Live feed (已登入)

訪客紀錄

原始頁面載入量。 每頁一行取出。 最好的是: 調查特定頁面、 从特定來源找取流量、 分析追蹤問題等 。

工作階段

分頁查看到行程。 每段訪問一行。 最好的是: 了解用戶流量、 度量會議的相關時間、 找出轉換路徑等 。

有活取出

有相關的活動。 在您網站上顯示訪客。 最好的是: 監控活動正在進行中, 有高端訪客被發現, 有觀察相關相關機會等。

在日志上我為什麼會看到自己去的?+

OpsIQ 預設地追蹤所有訪問。要排除您自己的通訊量,请加入您 IP地址:被排除者 IPs 在設定值 > 追蹤中列出。

有來訪者出自"未知"地點?+

GeoIP 搜尋需要同樣 Cloudflare 地圖頭( 如果使用自動取回)Cloudflare)或 MaxMind GeoLite2 資料庫檔案。取用設定值 > GeopIP 路徑,以確保資料庫檔已存在并可讀取 。

有多久的訪客資料被收起?+

在設定中保留了訪客相關相關資料( 預設: 90 后來由克隆保留工作自動清理出舊記錄.

分析

工作階段

會話把同一個人的多頁取景分到一行。 在訪客日志顯示出相關頁面的載入時, 會話會顯示出人們如何從起站取出地穿行到出站取走 。

工作階段
工作階段會議紀錄表用於 IP, 國家、 裝置、 源碼、 相關時間和頁面列以及被標出的威胁行等 。工作階段yoursite.com(NG)工作階段紀錄IP(西)國家地獄源 源期限頁面41.62.10.4英國桌面google三分 12s6102.89.6.2有型有手機direct1米 05s388.21.4.9桌面通訊錄取:ads7米 48s11203.0.113.9US (美國)有手機referral0米 42s21SESSION LOG有群組的旅程2COLUMNS國家相接相接器件相接自相接3THREAT有被標出有危險的会議
真正的会話紀錄: 每一個訪客一行出行 (C)IP, 國家、 裝置、 來源、相關時間和頁面等相關相關的相關階段被標出为紅色相關區域 。

工作方式

有訪客加載出首頁后會議開始。 它會接續到更多頁面。 有訪問者在會議暫停期不活动而會議結束 (default: 30 分取出或關閉瀏覽器。 超時后返回的同一個人會產生新的会話 。

每段所顯示的

第 一 頁

有登地頁,被訪客入住您站口的地方 有關於哪些內容能吸引到人

倒行

出站頁面, 有訪客所留下的出站页。 如果出站版面常是出站費頁面相對, 有顧客可能會把你和相對者相提并論 。

頁面數量

有多頁的訪客通常需要多多的接觸, 但也可能表示訪客已失蹤了。

期限

第一頁載入到上一行的相關時間 。0二是回放 (單一頁取景, 不再有相關相關功能) 。

出自:

有相關相關的通訊源( Direct, Google, 社會相關, 轉介等) 。

國家

有被偵測到的國家 在訪客所出發出的消息中 IP 地址.

反彈

有訪客只收看一頁就走出。 有紅色指示器出發了 。

改划

有訪客是否在此會議中完成有軌轉換活性( 買取、 簽署、 表格提交等) 。

過目

搜尋

搜索由 IP,電子郵件,頁面 URL 在會議中指名道姓地出道

型態

有新訪客( 第一會) 或回歸訪客所過的過程 。

出自:

有通通取出

國家

按國家分選取以從特定地區看到會議 。

相威胁/被打出

有過過分的顯示只顯示被標出為威脅的會議或会議 。

有工作的例子

設定高值客戶檔案

假想:
有位客戶剛做了一筆大買賣 在買之前想先了解一下他們的旅程
所取之道:

在工作階段中搜尋他們的電子郵件。 看看他們的會議: (A)1在收購前去過多少次了?2(出自"克林斯通"一文) 他們看了哪些頁面?3有聊天或開出入場券嗎?4有好幾回了?

从新位置檢視登入

假想:
有一位客戶通常從尼日利亞入住 但有一會由俄羅斯出面接觸
所取之道:

在会话中搜尋客戶郵件。 比較相關會話的國家。 如果會話突然從異常國家出現出, 它可能是合法的出行或被損失的帳號 。 請檢查 ( (A) :1在成功登入前是否有失敗的登入試想? ()2有做: IP 在同段內變更? 如果有疑問, 就標出它以接受審查 。

有相會和相訪有同樣的分別?+

訪客是個人 (或瀏覽器)。 會話是被訪客的一通。 有同一個訪客可以隨時有多通訊。 會話在超時期后到期 。

如何? OpsIQ 有回歸者嗎?+

OpsIQ 如果有訪客清除了餅干而未登入, 就以新訪客的身份出面 。

分析

有活取出

Live Feed 有实时顯示您網站上的訪客。 它自動地每次更新 15 在活動、出品和繁忙相關相關支援期等相關時段使用它以觀察正在發生的情況。

有活取出
有活取出實時活動流,顯示實時線上訪客數量和最近每個國家的訪客行為。有活取出yoursite.com37有客人上網了活活活性就現在US-取景 /pricing2s英國 : 已開始聊天5sDE- 已加入推車9sCA 已完成登入1RIGHT NOW有誰站出站去?2AUTO-REFRESH更新每 15s3ACT( C)跳入活聊中
有誰在你的網站上? 有誰正在做活活活生生地取出活活来? 15 二分.

如何運作

在所設定的更新相隔地區中您伺服器的 Live Feed 民調。 每行顯示您站台上目前的访问者: 目前的頁面、 國家、 裝置、 來源、 會議期數和分頁數。 有綠色突顯顯示自上次更新起的新活動。 點擊任何訪客行以查看會議的全部細節 。

設定值

刷新间隔

有多多多地被活取訊息更新。 預設: 15 二. 下限值 (5-10s)提供更快的更新, 但使用更多的伺服器資源。 高值 (:30-60s) 在伺服器上更簡單, 但更不直接.

有作用的阈值

在上一頁載入后, 有多久的訪客被視為"活性" 。 預設: 90 有訪客載入一頁再讀取2有幾分鐘后就被活口取出而去了

暫停按鈕

點擊暫停以停止自動再做。 在不更新清單而讀取相關細節時有用。 點選再做以重新啟動 。

有工作的例子

在一場競選中找一通好線索

假想:
有位訪客剛剛查看了您的主頁, 然后是地物,再是出價, 就被收購了。
所取之道:

在活取食: (出自"活取取食"中)1(按下訪客的區分)2如果他們開始聊天,AI會有他們全程的內容. (A.3如果他們不收買就出走 就成為領導者一行人了4在訪客接觸取出時出發聊天訊息;

有太多同道相通了 IP

假想:
你看 20 有同一位入住者. IP 有相關地點 有相去不遠的頁面
所取之道:

可能有: (.1有同樣的網路相通的辦公室。2有相關相關的相關區域( C) :0-1(一) 有分別地打出頁面。3(a) 載入測試。如果您正在自動做測試, 就排除: IP 从追蹤取出.

有活的出自"活地取出"0有人來接我?+

檢查: (A)1元件文稿已安裝入您的站台嗎 ? ()2(站台鍵是否正確? )3(活性阈值已過? )4有訪客用攻擊性的廣告封鎖了追蹤文稿嗎?

我可以用國家或裝置去过滤活的相關訊息嗎?+

有線電源顯示出所有正在使用的訪客。 对于被過過的檢視, 請用有線電子路由或會話頁面取自有線电源。 有線电訊是故意地簡單地做实时監控的 。

分析

上頁面

Top Pages 顯示您網站上哪些頁面的流量最大。 它會以访问、 接觸、 轉換等相關活動排序頁面。 用它來辨識您最優秀的內容, 尋找不足的頁面并發現產生相關相關問題的頁口 。

上頁面
上頁面有水平訪問列和數目的被訪最受歡迎的頁面名單 。上頁面yoursite.com有最受訪的頁面/pricing3,402/2,910/docs1,740/blog/seo-guide980/signup6401RANKED有最受訪的頁面2SIGNALS出访和轉換3FIND有出票的頁面
您的頁面被流量和相關相關排行榜所排序, 因此您可以看到最上的内容和產生支持的頁口 。

每頁所顯示的

頁面 URL

有活活了 URL 有同樣的頁面( 如出品變更等) 如果已啟用群組, 就被分類了 。

檢視

此頁面被載入所選取的日期範圍的總數次 。

特有訪客

有多位不同的人觀看了這一頁( 有兩次收看同一頁的人算作: 1第 二 部 分

彈出率

有高回放出站台的相關人員百分比 在登地頁上高回取出 = 有問題; 在"謝謝"頁上出取出高回回取入常數 。

平均相去多遠

有多久的訪客平均花在了這個頁面上; 有多久是短相接取取取出; 有多長相接回取取入取取自相接相接所取取用取取去取取回相接之相接的相接分取取相接可取取而取取之相通相接同取取.

有話快說

有幾分聊天相關相關, 在一頁出自產品相關口號相關的相關內容相關訊息相關:

入場券

有幾張相關的入站票被取自此頁面上。高票數 = 有潜在的 UX 或內容問題 。

有工作的例子

尋找能驅動支援問題的頁面

假想:
有你的支援隊員接著想問起運輸問題 有哪一頁被取出?
所取之道:

按 “ 支持入票” 或 “ 聊天起算 ” 排序上頁。 尋找有高數的產品或運輸頁面。 有最支持的問題的頁面可能有不明信息。 修整頁面內容并監控支持問題是否減少 。

有高出站率的頁面

假想:
你想知道出你站口的人多出出出去的地方?
所取之道:

以回放率下移排序。 忽略自然是出站點的頁面( 有名有名地取出頁面, 有證可查) 。 專心於要讓訪客相接的頁: 出站出站的頁口、 定价、 功能等。 這些需要更好的呼叫取出或更清晰的內容 。

頁面怎么顯示了? 0就想看一看 有出事了?+

檢查: (A)1) 追蹤元件已安裝在指定頁面上? 有單一頁的應用程式可能不會在路由變更上放出頁面檢視 。 (2在追蹤設定中是否排除了頁面? ()3有CDN提供快取版本而沒有追蹤文稿嗎?

分析

地心相通

地情通訊顯示了您所訪客所從國家、城市、裝置和來源等地出行地點。 用它去了解您的地區市場,決定語言相助, 計劃地區行銷,并探出可疑的交通模式。

地心相通有地圖可以提供相對地點相接相接地點,地心相通yoursite.com按地點分的訪客US (美國)英國CA 有相關相關的相關事由 CA.有型1MARKETSCountry, city, device2PLAN語言地區( D)3WATCH有出事了
Where your visitors come from (by country, city and device) to size markets and spot unusual traffic.

有所見所取

上行國家圖

有名的國家被取用相關數量。 點擊一地以打入到地區相關相關資料中去 。

Country doughnut

有視覺地分出出出各國的流量 百分比相當高

完整國家表

有訪客相接相接的國家都顯示出訪客數、會議數、回放率和轉換率等相接地點。

有地取地取道

有許多城市被取用相當多的地區取用,

GeoIP 測出工作方式

OpsIQ (以 二 個 方式 ) 探出 訪客 地點 :1) Cloudflare 地圖頭。 如果您的站點被落后了 Cloudflare(出自"地道"一出出自于"地取地取取地"一回. ),"地出地取"一去而后出出地出取地入地取出地入去取地出去取取取出取取去地取去取出去地出所取取之地取用地取入地出.2) MaxMind GeoLite2 資料庫。下載自由資料庫并設定設定中的路由。市級測試需要地圖- City相關資料庫,而不只是相關國家相關數據庫。

VPN和代理通訊

使用 VPN 的訪客會出自 VP通 伺服器所取地點, 而不會出自其真正的地點。 這是由設計而成的 。OpsIQ 無法也不該試取被 VPN 有異常的國家模式相通, 就考慮一下 10-20% 有訪客可能用到VPN.

有工作的例子

有出乎意料地通車了

假想:
你只經營一項美國事業 但是 30% 有出自印度的通路
所取之道:

檢查: (A)1) 這些是真正的訪客嗎? 看看會議的時間和頁面。 有高回放相當短的会議可能會有出息 (bots. (2(他們能從Google找得到你?3如果流量是真實的并有活干, 就考慮加入印度特有價值或內容。

就語言相支援作決定

假想:
你想知道你是否該把網站翻譯成西班牙文.
所取之道:

如果西班牙(西班牙、墨西哥、哥倫比亞、阿根廷等地)相接而來, 10% 有同樣的通訊率嗎?

区域支助分班规划

假想:
有時需要決定相當相當多的相關時間
所取之道:

有時使用同地情報相接相接的熱圖 (取自 Dashboard) 。 如果 40% 有出自歐洲和克羅地亞的通訊 35% 在相關地區上需要相當多的地區相接相接,

有出访但無出事的國家

假想:
德國出道了 500 本月有訪客 但收視率是零
所取之道:

調查: (A)1(可能你的出價對此市場沒有競爭能力)2有去德意志的船嗎?3) 您的取出可以用歐元取出嗎? 貨幣不匹配會使取出被遺棄 (( EUR: Constitution supposed checkout).4有同樣的訪客可能會是低能客流?

有來訪者出自"未知"地點?+

GeoIP 未被設定。 有兩個都被設定了 Cloudflare ( 它自動地加入地平線頭) 或下載 MaxMind GeoLite2 資料庫并設定出檔案路徑 在 Sets > GeuIP 路徑中 。

有能阻擋出國交通的通訊嗎?+

OpsIQ 使用您的網頁伺服器或 Cloudflare 有防火牆規則可以通通到地區去 OpsIQ 以能見度為焦點,不是網路相關的存取控制.

分析

有心漏斗

有心的漏斗會把訪客分類成他們想做的工作:瀏覽、研究、相對、買入、得到支持或出走等。用它去了解您站點上意向的平衡并分辨訪客放行地點。

有心漏斗
有心漏斗有數目相對的分道揚镳取出相關相關資訊, 有支援和留下芯片相接相接。 Name有心漏斗yoursite.com瀏覽 -- -- 8,200研究- 4,100相對 . 1,650收買( B) 520支助 6%出走 11%1CLASSIFY有客人想吃就吃2STAGES瀏覽以取用3福克有去就去取去去
有分類的會議(瀏覽、研究、相對、買入等)可以看清人們放行地點。

意向分類

瀏覽

有訪客隨地找找 有短會議 有幾頁 有沒有被發現有特定目標

研究

有相關相關內容相關: 有相當長的頁面、多相關内容相關; 有相接相關的相關事由相關人士相關地點相關。

相比

有訪客收看價格相對相對或地圖相對 有訪生回歸相相接相接

二. 收買

有訪客在取出、推車或簽名等頁面上 有高意向,這是你的轉換機會了

求取支援

有相關相關的相關人員需要相關接通訊。

彈出

有一頁后就走的相關人員 訂婚率低了

如何讀取漏斗

解讀您的漏斗

假想:
1,000 有訪客看了"出價"270 已開啟聊天。92 已開始取出 。64 有出息了. 18 已開啟相關入場券。
所取之道:

定价頁面已夠強大以建立意向。 在買入道上聊天很重要: 27% 在取出后支持出票可能表示啟動或支付相混淆。 動作 ( (a) (b) 有: 有:有: 有; 有:1(由相關部門出發)2(調查) 18 有相關通訊的出票后支援入票.

分時過程

使用日期範圍過程以相對不同相關期的意向模式。 例如, 將黑色星期五周五和普通週圍相相對。 您應該看到" 買" 意向的突顯, 有可能會被" 求取支援" 所造成混亂 。

如何? OpsIQ 有分類? 有分別?+

OpsIQ 看一看頁面 URLs,会話行為和時間模式。定价相對相關相關的頁面。取出相關頁面的相關信號 。 說明/相接頁面相接相關通相關訊息相關支援相關意向。分類是用Houristic作成的,不是由 AI 作成 。

我能自訂意向分類嗎?+

目前沒有。 分類是根據同樣的網絡行為模式而內置的。 自訂意图分類被放在地圖上 。

分析

漏斗、取出和走道

建立自訂的由頁面或事件階段起的行程, 量取群組保留并發現最常走過站點的訪客道。

產品螢幕
有漏斗有自訂的漏斗顯示出每頁/ 活的步數、 剩下的訪客和轉換百分比 。有漏斗工作區域STEPS4CONVERSION28.4%WINDOW72hLIVE WORKSPACE VIEW已檢視的定价1,420 訪客100%已選擇的計劃780 訪客54.9%已取出530 訪客37.3%已訂出403 訪客28.4%1DEFINE選擇2–8步2(美 樂)設定轉換視窗3改进找出最起碼的一滴去取取相
有自訂的漏斗顯示出每頁/ 活的步數、 剩下的訪客和轉換百分比 。

有漏斗

用以下方法創建一個有名的漏斗 : 2至8 。以相關相關的相關單位來取用相關分點去檢查回放地點、出錯地點和頁面速度或訊息等。

保留

保留群組到每周一組,并顯示回歸人數。 選擇一個6, 8或 12 在相對放出或出戰相對相對時要保持群組定義平穩 。

路由

路徑列出最常見的頁面序列。 請選擇路徑長度取自2至5頁面以保留可讀取的結果。 使用它去尋找出乎意料的向导、 常出道口和再多接再通的內容 。

自訂漏斗是分析定義,不是自動。要對已完成的步態作回應, 就先建立轉換目標、分區、扳機或工作流程等 。

分析

會話重播

會話重放可以讓您觀察到您站點上被訪客所做的事:他們點擊了哪些元素;它們是怎麼卷起的;它們在哪裏徘徊;和它們打出什麼(有敏感字段被遮掩)等。用它來分析UX問題,驗證被竊取的報告并理解客戶的困惑相關相關事由 。

會話重播
會話重播有游標、会話資訊面板和時間線洗涤器的回放播放器顯示一頁取景口 。會話重播yoursite.com立即購買章 次第 三 分 12s14 點擊( C)US- 桌面克羅姆花 1241WATCH點擊、卷動、打字2MASKED隱藏敏感字段3DIAGNOSE檢查錯誤報告
在時間線上再回放訪客所做的事:用按下、卷轴、打字(被遮住的敏感字段)等。

找到正確的分頁

从会話頁面上尋找有所報告的問題的会話、高頁數而沒有轉換, 或是由提交支援票的客戶發出會話。 點擊回放圖示以開啟時間表檢視 。

有回放的相片

有時線

有水平列顯示相關事件。 在任何一處點擊要跳到那一刻的時間線上 。

頁面通訊

每一頁載入都以一部份顯示在時間線上。 您可以看到訪客所走的正路 。

點擊

點擊事件以點顯示在時間線上并以分頁重建中亮點出.

卷起

有相關的深度被追蹤到 就能看到被訪客所讀取到底多遠了

窗体相通

字段焦點和打字事件被收錄。 在密碼和敏感字段的文字輸入被默认地遮住 。

隐私和面具

會話重放相關口罩的預設字段。 密碼字段、 信用卡輸入和有資料標記的字段 --opsiq- sursk 從未被錄入。 您可以在 Sets > Tracking 中設定附加的遮罩規則。 如果您的遵守政策需要它, 就可完全禁用回放 。

有斷取出

假想:
有位客人說"我試圖去買了 但按鈕什麼都沒做"
所取之道:

在工作階段頁中尋找他們的会話( 有電子郵件搜尋) 。 開啟回放。 注意取出頁面的區段 。 請尋找 ( (A) :1有按出右鍵嗎?2有一次: JavaScript 有錯誤嗎? (取回JS出錯的頁面 。) (3)頁面是重新載入還是顯示了錯誤訊息? (C)4有需要的字段是空的嗎?回放會顯示出到底發生了什麼 。

會話重放需要用多少?+

重放相關相關資料相接相關流量相接而成。用保留設定可以自動清理舊相關回放相接資料。 对于高通相關站點,可考慮更短的再放相連相關時間( 如: 30 (出自"通訊通訊錄") (日文)去管理儲存.

有訪客能選擇出自回放嗎?+

如果設定中開啟了"尊重不追蹤", 有 DNT 信頭的訪客就不會被收錄。 您也可以把特定頁面排除在追蹤相關的回放外 。

分析

事件日志

"事件紀錄"顯示了每起事件 OpsIQ 有收錄了: 頁面檢視、 點擊、 聊天起點、 票款創作、 銷售等自訂相關事件。 用它去去除分解整合、 驗證網頁快取的提供, 并了解動作的相關序列 。

事件日志
事件日志有彩色編碼的相關標籤:頁面取景、聊天、銷售、網頁被取出自自自訂等相關相關事由。事件日志yoursite.compageview(一) 美國; /pricing12:04:01chat.start英國 : 已開啟元件12:04:09有售出$49.00 · 有秩序#104212:05:22網頁payment.succeeded12:05:23customdemo_booked12:06:101EVERYTHING有收音機的事件2DEBUG檢查網頁提供3ORDER有相關的相接相
一分一秒地走到底 OpsIQ 分頁取景、聊天、銷售、網友自訂事件等。

(自動)已建事件

⚠️
有相關事由您作主 events-log 姓名-什么OpsIQ在訪客時間表上做分析、去除錯誤和審查等。 出站的網頁 您已訂閱了一個終點的事件。 如果您正在建立網址接收器, 請使用 Webhooks 區域中的列表或呼叫 webhooks.events.list; 簽署此表上的名字將不會提供任何相關的訊息。

每行都顯示您的名字 有克能克名OpsIQ 商店 it as. Both are recorded: the raw name you sent, and the canonical one it maps to, so a report written against the canonical taxonomy keeps working whichever alias a tracker used.

pageview page.viewed

A tracked page loads. Includes URL, title, referrer and timestamp. page_viewview 有同樣的被接受.

chat_open support.chat_opened

有訪客開啟聊天元件 。

chat_send support.chat_message_sent

有訪客會發出聊天訊息。回覆部分被儲存为 support.chat_message_received.

ticket_open support.ticket_created

有支持票被建立. ticket_create 有同樣的收件;回覆和封閉被儲存为: support.ticket_repliedsupport.ticket_closed.

form_submit form.submitted

有履帶表被提交. submit 有同樣的被接受。

purchase commerce.purchase_completed

有一回已收了 purchase_success, and the sale aliases order.completed, sale.completed, payment.completedinvoice.paid,被接通了相接的平台所接受。

取出 commerce.checkout_started

取出開始了。相關: cart_view, checkout_view, checkout_intent, checkout_abandon, add_to_cart.

login_success identity.signed_in

有客人出面了 有失敗了 login_failed已儲存到 identity.login_failed有被關出站的地方; login_lockout_created.

登入 conversion.signup

有客人要簽名 有線索是 lead已儲存到 conversion.lead.

js_error error.js

有被追蹤的頁面上被傳取出 JavaScript 出錯 。

💡
您所發出不是這些同名名稱之一的事件名稱被打字收錄了- 沒有被放入。 它只是沒有克諾克地圖, 因此它不會被卷入以分類學为基础的報告中 。

自訂事件

您可以自訂事件由您的網站或伺服器傳送至 OpsIQ 自訂事件能用於追蹤您專業的動作: 按下按鈕、 功能用法、相關影片播放、下載等。

JavaScript 由瀏覽器自訂事件
// Send a custom event from the browser
window.OpsIQ = window.OpsIQ || [];
window.OpsIQ.push(["track", "plan_selected", {
  plan: "pro",
  billing: "annual",
  value: 99
}]);
PHP —— 从您的伺服器中記錄聯絡人活動
// Record a server-side activity for a contact (PHP)
$ch = curl_init("https://your-opsiq-domain.com/api/v1.php");
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        "Authorization: Bearer opq_your_key",
        "Content-Type: application/json",
    ],
    CURLOPT_POSTFIELDS => json_encode([
        "action" => "crm.activities.record",
        "site_key" => "site_abc123",
        "email" => "[email protected]",
        "event" => "subscription.upgraded",
        "value" => 50,
        "currency" => "USD",
    ]),
]);
$response = curl_exec($ch);
curl_close($ch);

過程中

事件型態

由特定事件名稱來過过滤: 頁面檢視、 聊天. 啟動、 票子等 。

日期範圍

有相關相關事件相關

搜尋

按关键字搜尋事件資料 (Y)URL,電子郵件,事件屬性值).

有多久能活下來?+

事件跟隨設定中所設定的保留策略。 預設: 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科技二相相取相取2(美 樂)轉換地標( M)3決定有名就出
有兩個變體 有觀察轉換和相關數據 有名有名地出發出出取決者

有作案之道

1
建立實驗

取出名稱, 定義您的主要公制( Civersion 事件) , 並設定變更( Control and test) 。

2
Run it

OpsIQ 隨機地指派訪客到變體并追蹤他們的行為。 在實驗被執行時不要改變 。

3
讀取結果

在收集到相當多的相關資料后, 請檢查置信度 。95% 有自信就想活了 95% 有同樣的相去相去 有同想相去有同想的相出相去

二. 實驗狀態

草案

已建立但尚未啟動。 您仍可編輯變更和公制 。

在跑

正在將訪客指定到變更中。 在執行時不要編輯 。

已完成

有相關的數據或手動被截取了 。 結果是最後的 。

已歸檔

結果已經被檢視,並且實驗不再需要在活動列表中。

最佳做法

在發行前先定出你的分量

在開始前先決定您要测量的。 在看到結果后選擇一個公分量會帶來偏差 。

不包括內地交通

在被禁用名單上加入您隊伍的 IP 地址 因此員工出訪不會出事出事

有跑得快了

在做實驗后不要停止 100 有好幾百名或上千名被訪取者需要去取取取相當好的结果

一一去考取一變更

如果您改變了頭條和按鈕顏色, 您就不知道是哪個改變使這項改善被改變了 。

有話就說出去取回相關地點去取出相關的相關事由

在實驗結束后 有注意哪個變體取了勝 以及你為什麼選擇去實作

有多少人需要我做一個有意義的實驗?+

它取決于您要測出的基准轉換率和效果大小。 就拇指而言: 至少是: 500 a. 有訪客 20% 有特效能 就需要上千人

我能同時做多起實驗嗎?+

有 但 要小心。 如果有兩項實驗影響同一頁, 結果相接相接; 在不同的頁面或地點上同一行更安全了 。

分析

JavaScript 錯誤

JavaScript 錯誤從您的網站訪客中收集客戶端錯誤。 按鈕被打破, 失敗了 。API 有通訊錄或資源有缺失。用它去尋找并修復會影響到真正客戶的錯誤 。

JS 錯誤
JavaScript 錯誤有重點、出處相關檔案、瀏覽器和出取數等被取取的前端錯誤清單 。JavaScript 錯誤yoursite.com最近出錯類型錯誤: 無法讀取未定義的 x取出。 Js:42 *克洛姆×214404 載入 /assets/app.cssSafari 指数×88未被抓到 (保證中) 網路錯誤api.js:17 活活狐×51折換警告: 已下載事件相接相接×331CAPTUREC. 客戶端出錯2IMPACT計數瀏覽器( B)3福克有正規的相關相關
有名的訪客打出破解的密碼(訊息、來源、瀏覽器等多多多起),

二. 出錯所顯示的

出錯訊息

该 JavaScript 出錯文字 (例如"TypeError: 無法讀取未定義的屬性") 。

頁面 URL

出錯的一頁 。

瀏覽器與裝置

有錯誤是取自瀏覽器的 。

堆疊追蹤

出錯的代碼位置。 點擊以擴大完整堆疊追蹤 。

第一個被看到

有錯誤出自一出出自相關的相關地點 。

有相片被取出后再取出

有一次是最近出錯的相關地點 。

數量

有多少次了被收錄了此錯誤 。

相關会議

有多個不同的訪客會議經歷了這個錯誤 。

排出錯誤的优先顺序

有的不是了 JavaScript 錯誤需要立即被注意。 按: (A)1(一) 關鍵頁面出錯(取出、登入、登出等), (一出出錯)2有高階分數的錯誤 (C)3)最近出錯(可能由代碼變更而回), (4(不是第三方文稿) 。

正在修復已斷取出按鈕

假想:
在相關地點上被取出相關相關的相關資料: /checkout, 相關 45 有出事了 有出案了 有去有去 有去相去相走 有去同去相回相去 有出行相去有回相回想 有去被取出相去同入相去之相去地相去去相接相去所相去而相去已相去克相去分相去多相去取相去外相去一相去不相去自去相相去
所取之道:

就意味著: 45 有名的客戶無法完成取出。 單位 : (A)1(以同一個瀏覽器/裝置相接相接方式開啟頁面。 ()2(一) 開啟瀏覽器控制台再重複錯誤。 (一出出錯而去取出相當多的相關相關通訊. )3)檢查堆栈追蹤以找到精确的通訊碼行. ("出自"地圖""出取自"出出自:"出於"出于"出从"出從"出至"出入"出到"出回"出往"出去"出走"出4修正錯誤, 部署并監控錯誤計數至 0 。

有 OpsIQ 抓取第三方文稿出錯?+

有 OpsIQ 全部抓取 JavaScript 在頁面上出錯, 有分析文稿、 聊天元件和廣告文稿出錯等。 filter by URL 在堆疊的追蹤中去專注自已的代碼.

我怎么能排除出出出一些有危害性的錯誤?+

您不能壓縮其中的特定錯誤 OpsIQ 但是您可以分頁去過清單 URL 有錯誤的訊息。您可以修復或忽略瀏覽器外掛的錯誤( 它常以未知來源出錯而顯示 )。

出品

出售和改划

銷售追蹤可以連接到您的商店或收費平台 OpsIQ 有錢可以讓您看到收入相伴而行。每一次買入都由出行者所取出,

出品
出品有時有時有期控件、有搜尋 有相關的相關收費, 有相當相關相關資訊(日期、客戶、平台、數量、來源等)出品yoursite.com收 出$42,180+18%一去不回▾搜尋電子郵件; IP 有名有名地出走相去相去取回相去同去相接相去所取出相去之相去去相取相去分取相入相去等相去而取相出相最近购置日期CUSTOMER(活口相接)有分量源 源三月3[email protected]Shopify$49google三月3[email protected]WooCommerce$129direct三月2[email protected]Stripe$480廣告1收 出命令续作( A)2RECENT PURCHASES日期- 客戶- 数额3ATTRIBUTED有去通通通的路口
The real Sales screen, revenue up top, then Recent Purchases (date, customer, platform, amount), each attributed to its traffic source.

銷售儀表板

有今天的出賣

今天完成訂單收費 。 您連接的平台上的每一起新訂單都更新了 。

本周 / 本月 / 總共

本期收入相加;退款从总额中扣除。

二. 趋势表

有線圖顯示所選取的日期範圍內的每日收入。 請尋找尖峰( 促進、 競選) 和相關地區( 有期、 有季性等 ) 。

上位轉換來源

有最多的通訊商出賣了您。 “ Direct” 買家常用名單標出您所住地。 “ Google" 買主也找得到您 。

最近购置

有客戶電子郵件、數量、貨幣和所收購物品的最新訂單。

未證實的買入 (接客出行)

When the tracker sees a visitor reach a purchase confirmation in the browser but no connected platform has reported that sale yet, the customer journey shows a Purchase (unconfirmed) row with an amber badge. It never counts as revenue. When the platform confirms the sale, the confirmed purchase replaces it.

和解

Sales connectors do not depend on a single webhook. Every payment signal the platform sends can open the sale, and Connector Contract 2.3 re-reads the platform's own list of completed sales on a schedule (default hourly per workspace) so a webhook the platform never delivered cannot lose a sale. Operators can run it on demand from the command line with tools/sales_reconcile.php.

平台設定指導

Shopify

跳到連接器上 >Shopify 在您中建立自訂應用程式 Shopify 管理 (Settings > Apps and selly channel > development apps). 授權範圍: read_orders, read _Custers, ready_products. 复制管理 API 存取符號。 在 OpsIQ,入入您的商店域名( 如: your-store.myshopify.com)和存取符號。點選試接通。 如果成功, 就開啟網址同步以提供即時命令通知 。

WooCommerce

跳到連接器上 >WooCommerce 在您所 WordPress 管理員去 WooCommerce> 設定值 > 高级 > REST API。用 Read/ Write 權限建立金鑰。可以复制用戶金鑰和用戶機密。 in OpsIQ 入出站址 URL 取出通訊錄相接相接的相關相接器相接取相接口相接

BigCommerce

在接通器 > BigCommerce 中。 在您的 Bigcommerce 有管理權中, 在高级設定中去取 API 帳號。 建立 V2/ V3 API 有訂單、客戶和出品等讀取範圍的帳號 。 复制存取令牌、 客戶代碼和 API 路徑。入入其中 OpsIQ 就去做測試.

三相相取出. 2

跳到連接器 > Magento。 在您的 Magento 管理中, 去到 System > Constitutions. 建立與相關的新集成 API 資源存取 銷售、 客戶端和 Catalog 。 啟動集成并複製存取符號。 請輸入其中 OpsIQ 有您所謂的 Magento 基底 URL.

PrestaShop

前往 Connectors > PrestaShop. 在您的 PrestaShOP 管理器中去取 Advance 參數 > Web service。 開啟網絡服務并建立一新金鑰。 授權取用訂單、 客戶和產品。 Copy the key并輸入其中 。OpsIQ 有你的店 URL.

OpenCart

跳到連接器 > OpenCart. 產生 API 从您的 OpenCart 管理面板取出憑證。 請輸入 API URL 中,使用者名和金鑰 OpsIQ。連接器使用 OpenCart 的 REST API 有秩序和相關相關資料

osCommerce

前往接通器 > osCommerce。 配置數據庫存取或 API 在連接器設定中被紀錄的憑證 。 OSCommerce 集成通常需要直接存取資料庫或自訂 API 模块。

Stripe

Go to Connectors > Stripe. Copy your Stripe restricted API key from the Stripe Dashboard (Developers > API keys). The key needs read access to Customers, Charges, Invoices, and Subscriptions. Enter it in OpsIQ. Configure webhook endpoint for real-time events.

自訂/ 其他平台

使用倒置 API 有相關的通訊或網友可以從任何平台傳出銷售事件。 傳出訂單。 有客戶電子郵件、 數量、 貨幣和項目已完成的事件。 請參考相關事件 。API 中。

瞭解你的銷售漏斗

上位轉換來源

顯示收費的相關頻道。 如果 Google 有收費資源 1000 有訪客和 50 有出息了 有出價了 有入息了5% 如果電子郵件帶來了轉換速率 200 有訪客和 30 有銷售出 有出賣出賣入行 有出銷出行 15% 有電子郵件能更能用到每個人.

退款

有再資助的訂單被分道揚镳地追蹤到, 它會減少你的入資净额。 如果取自特定資源的退款率高, 流量可能會有低質相通性 。

通貨收

OpsIQ。多通由商業以每种通由來取取取收入。正常的報道使用所配置的汇率。

有工作的例子

100 有訪客,零起售出

假想:
您的定价頁面得到 100 有訪客每天去接通 但零轉換
所取之道:

調查: (A)1在定价頁面上使用會話重放。 注意它們如何與定价表相交 。 ()2(取出價格的頁面回放率和相關時間)3在取用相關資訊時, 有問題嗎?4(把你的定价頁面同相爭相取比。 ()5)試取不同定价布局的 A/B 實驗.

有分取出一項行銷活動

假想:
您用 UTM 標籤發出電子郵件。 您要怎麼測量它的收入影響?
所取之道:

由來源到銷售和滤取。 搜尋競選 UTM 參數。 您可以看到: (A)1有多少人取自電子郵件 (出自:2(被轉換成銷售的數量) (出自"通訊通訊")3(活地取自"活地".4相較于選舉前同時期,

為什麼我的店有訂單 就只收零?+

檢查: (A)1)平台接通器相接相接并健康嗎?去接通取取取. (已通取出)2有被開啟的網頁同步嗎? 如果使用投票, Cron 工作能跑出去嗎?3(接通器有權) API 瞄准镜? Shopify,需要讀取命令。

如何? OpsIQ 有客人出賣?+

有命令被接通后 就去接通了 OpsIQ 將客戶郵件相匹配到已知的訪客。 如果在買入前被追蹤到, 就該被歸結到他們的訪客行程上, 包括交通來源、登地頁面和會議歷史等。

我能手動再加一分嗎?+

你可以取出相關的銷售相關事項 API 有相關相關的相關事由相關事件所紀錄 API 第 二 章

商 業

建立、出發并操作本地的 Storefront

商店前線是:OpsIQ在Chitch網站上提供產品、頁面、外觀相簿、促銷板、取出、客戶帳戶和人工智能相助的銷售等相關資訊,

在市場上起步→儲存前端

1
選擇工作區域

確認您正在設定的站台。 產品、 設定、 頁面、 命令和分析被隔離到工作區去 。

2
開啟通訊和商店前端

一般設定值→Ecommerce是母權。 Storefront 出版、訂單建立和付款相隔相距, 因此您可以安全地預覽目錄 。

3
出版完整的產品

設定出產型態、價格、貨幣、貨物、變相/ 選項、介质和滿分等。 在公開前先預覽出產品并取出選擇 。

4
配置付款和完成

連接出入口或新增銀行轉帳、現金或收費等。 實際貨品需要送出區域或收件; 有數位貨品要被保護的檔案或代碼 。

5
執行啟動準備

修整每個堵塞器并再去檢查每一個警告 然后完成一出由公共商店取出相關沙盒的訂單

起步器相關及政策內容

新建和已更新的商店可接受可編輯的起步文字 有相關事由我們去想, 二. 条款和条件, 隱私退款和回收 有商家的相關資料被取出后, 有商行的相當多的相片被取自相片中 。

  • 取代每 [Add …] 即時和相關 第 三 章 序 言 在出發前就已通知了
  • Use the real legal name, contact route, fulfilment promises, return rules, data practices, retention periods and markets served.
  • 就取出相當於您所服務的產品和國家所需要提供的建议了 有行動指導而沒有法律建議了

設計、頁面和升級

主題和頁面設計

選擇一款被編譯的顏色主題和相關成份, 然后是取出曲目打字、填入/分類、外形、寬度、動向、徘徊和光暗相關的行為。 在儲存前預覽桌面和手機 。

关于、接觸、顯示大小寫/ 取相簿和帳號

从可重排的區塊建立每一頁。 每個區塊有保費設計變更。 在內容被取出之前, 有數據、 團隊、 獎金或引數等建立資訊的區分被取去 。

自訂頁面

Set title, slug, hero, SEO and ordered blocks; preview while draft, then publish. Reserved store routes such as cart, checkout, account and policies cannot be reused.

促銷彈出和相關面板

建立至少一個區塊的樣式頁面。 選擇溢价設計、 中/ 左/ 右/ 下方放放、 加載/ 延后/出局/ 點擊扳機、 背景、 有動相、 有寬度、 有通融和一回訪客行為等。 試取關閉口、 有鍵盤有通訊器有通關功能 。

選單和平腳

Link to pages, products, collections, policies, account/help/cart actions, live modals or safe external URLs. Header items support one dropdown/mega-menu level.

Chart 和相關命令

開啟客戶聊天銷售, 然后選擇客戶可以買到的地方。 助理搜索目錄并要伺服器取出有權力的引文; 伺服機不是模型是建立已簽署的訂單卡。 確認只會由網路上的那張卡或社會頻道上已驗證的相關接方式所出 。

WhatsApp有使者,Instagram, Telegram, LINE、 SMS和 X 有提供商被驗證的頻道帳號作頻道身份。 Email 仍然被收取以取收據。 Connector 訂單保持已簽署的通用合同并保持商家授权的總和; Storefront 設定不變更此合同 。

儲存智能分析

檢視相當相關的訪客、產品檢視、推車相加、取出起站/班道克/完成、轉換、已確認的訂單、通貨收入、收購、裝置、國家/城市、最上等產品、回復和數據質量警告等。轉換使用被明确標記的公有地標; 通貨總和從來不默默地相接。 有分數表示所選取的範圍無法回答轉換問題-不是零分數 。

一般OpsIQ API

有不記名金鑰用到 commerce.read; analytics.read 也提供分析快照。 金鑰的捆綁工作區域是有權威的 。

有打字的儲存前端已讀取
{ "action": "commerce.storefront.get" }
{ "action": "commerce.storefront.catalog.get" }
{ "action": "commerce.pages.list", "kind": "modal", "status": "live" }
{ "action": "commerce.analytics.snapshot", "range_days": 30 }
{ "action": "commerce.readiness.get" }
{ "action": "commerce.products.list", "filters": { "active": true } }

Storefront get returns public-safe configuration, URL, menus and starter-review state. Storefront catalog returns every theme, page design, block type, block composition and premium promotion shell so remote builders never hard-code the choices. Pages list returns custom pages and premium modals. Analytics returns aggregates without customer identities. Readiness returns actionable launch checks. OpenAPI and Postman use these same contracts.

最後一通出發前通車

  1. 台式機和手機:家用、搜尋、出品/變相取用、推車、取出驗證、帳號、追蹤、下載、相關接取用等;
  2. 就一盒沙盒出錢并核對收據、收據和收貨等
  3. 在每個已啟用社交頻道上放出一款客戶端聊天取序和一款提供商- 相關收錄取單 。
  4. 在"通訊"中能被證實出事出自正義地表和通貨
⚠️
啟動相關政策文本可以使商店不空出, 但無法讓合法副本被檢視。 在每次被取回前, 啟出準備相關的預告 。
出品

有铅

領導人指有收買或支持意向的訪客或客戶. OpsIQ 自動偵測出取自行為的領導: 定价頁面访问、回訪、聊天相關相關、取出開始和高接觸等。 使用取出領導頁以优先跟蹤并輸入您的 CRM 管道 。

有铅
有铅領導螢幕:可搜尋的表格 IP/email,地點,裝置,來源和出站時間列,以及上源和國家.有铅yoursite.comSearch IP, city, country…上出自:google ^ 上國家: 美國IP / 郵件位置地獄源 源有時41.62.10.4英國-倫敦有手機google第4分 12s[email protected]美國桌面direct7米 02s[email protected]德-柏林有手機通訊錄取:ads5米 40s203.0.113.9CA-多倫多桌面google三分 28s1DETECTED有高意向的访客2TOP主要出自地( C)3ENRICHEDIP 位置、裝置和時間
真正的領導屏幕 有高的訪客 就當是可被取取取的桌子 (出自"相關資訊")IP 有上等來源和國家相接相接;

有出息了?

定价頁面访问

有訪客在查看你的價格或計劃頁面后,

回访

有多起回歸的訪客被訂婚了 但還沒有被轉生出

聊天相通

有許多人希望能有機會去接觸,

取出開始

有訪客能到取出頁面, 但無法完成收購。

提交的表格

有訪客提供聯絡表、 演示要求或簽名表等。

高頁接觸

有許多相關頁面相接相關的訪客正在做著相當深入的研究。

領導細節面板

點擊任何線索以查看其完整描述檔:

身份

有名有名 有名 有通訊 有相接相接接相通相接通相通 IP 有地點 有地取地取出地取去地取取地出地出取地入地取道所取地起地取相取地.

工作階段

由此導演出的所有會議都包含有頁面流動、相關時間和來源等。

已取用頁面

有被他們取出的每一頁相接的回報 有命令要取出

出自:

他們怎么找到你的 有機 有錢 有社交 有轉介 有直接的 有活干 有活活干有活干活活活

有分數

A0-100 根据行為強烈度、 調整度和頁面意向而得分。

CRM 狀態

是否已以聯絡人或交易方式加入 CRM 中 。

銷售提示

(例如: " 有預想的出價") 3第 二 部 分

有高價值的領導徽章

有分數取而代之 80 有"高價值"的徽章。 這些是您最熱門的相關前景 。 优先用於外延、 有預防的聊天或 CRM 管道入通等 。

有工作的例子

有活干活干出一手去取回相當好

假想:
有領導查看了您的定价頁面3乘以( C) 2有好幾天了 有話要說出企業計劃 但沒有買到
所取之道:

有高能取出相接相接之道1(一) 檢查他們的領導細節以了解公司和角色相關相關信息。2就特定需要和相爭相取而代之。 (出自:3(一) 在CRM中同所收集的信息建立交易。4(一) 为售出隊員指派一項相關工作。5如果他們回歸到定价頁面上, 积极主动的聊天規則可以觸發個性化訊息.

轉換匿名通訊到 CRM 聯絡人

假想:
有相去相去. 50 有高分的匿名線索 但是沒有電子郵件地址
所取之道:

選項 (A)1(以提供折扣或資源下載以取而代之地取而有之地用高意識的頁面取而取之)2(用聊天元件取取郵件,取出匿名訪客起口. )3在您的登入/ 簽名頁面上加入身份符號, 因此回歸的訪客自動被認出 。

取出取出分數是怎麼算出去的?+

The score considers: recency of visits (recent = higher), frequency of visits (more = higher), pages viewed (pricing/checkout = higher), session duration (longer = higher), chat interactions (engaged = higher), and return visits (multiple sessions = higher).

我能自訂取取分嗎?+

有。 在 CRM 配置中, 您可以新增取決於特定关键字、 事件、 出處或頁面模式的取決規則 。

CMM (CRM)

你的CRM从這裡起步

OpsIQ第 一 一 一 二 三 三 三 一 一 三 三 四 三 三 二 三 二 二 三 一 三 二 一 三 四 二 三 四 四 三 二 四 三 四 一 三 一 二 二 二 一 一 四 三 一 四 二 二 四 二 四 四 二 一 二 一 四 四 四 一 二 四 一 一CRM以網站智慧、相助、票券、出品和付款等為活圖。

AI. 第 二 章CRM
AI CRM 概述有一套通訊器接通了副駕駛 接通四張AI代理卡: 管理者、探測者、取出人員和分析相通AI. 第 二 章CRM工作區域信任通訊手動副駕駛自動驅動程式有自有自有之分?DS (日文)管理有德多克 有德有德多斯克克克活口活口相接相接而出驗證資料特别提款权探險家尋找分數( R)新事RT 有相關相關的相關通訊保留現場人流通訊錄更新分析器預測( R)解釋數字1AI-FIRST有四名特務2YOU DECIDE信任分數自動性3TRUSTED有源可逆( R)
有四位專家經營的AI- 第一個CRM, 有一通由自己決定自己能做多活的信托通訊通訊信號。

CRM 頁面概述

AI CRM (司令中心)

就從這裡起步

有收入脈搏、AI發現了什麼、做了什麼、批准排行、下一個動作、代理健康及ROI等。

接觸者

核心

在您所擁有的CRM中的人和公司。 搜尋、過程、分數和相關設定 。

管道

核心

有相關接取回相關相關的相關板 有取勝概率 有人工智能指導

預測和報告

核心

有相關的相關回應相關地點 有相當的相當好

生命周期

核心

Where every customer stands: active, at risk, expansion ready, renewal due, or churning.

建立我的CRM

配置

就用通俗的英語描述你的CRM設計. OpsIQ 生成可逆的計劃并等被批准后再使用。

CRM 保健

操作

有自查頁面: 分類、代理、通路、人工智能相接相接和活取數據數據等。

怎么搞的? OpsIQ 有你的安全

在演戲前先問一問

AI 的建議被排入批准等級。 您批准、 編輯或拒絕每個提案。 沒有您的話, 就不會出事 。

永不覆寫

有相關相關資料能提供出處保護。

有回相去相去而能回相取

每一個 AI 動作都被收錄入日記。 您可以一擊就去除任何變更 。

有解碼

有相關的相關資訊相關相關資料出自於相關情報,

有新相去取出?

1
開啟 AI CRM

在左邊通訊中點擊 AI CRM。 指揮中心顯示您目前的狀態 。

2
CRM 健康檢查

開啟CRM有健康地去檢查計劃 探員和通路都準備好了

3
匯入聯絡人

如果連接器有活性( I)Shopify, WHMCS 等),聯絡人自動被匯入。否则,取入到 CSV 或手動建立。

4
建立管道

就去管道并用相相接相接(如:領先、合格、求婚、談判、元取相接、失收相接等)建立出您所要的第一通相接接相通相通的相接通相干相接同相通同相接.

5
第一個出價再出出出一分

就由交易教練指導您出道 有好幾分相關的相關事由我做作成協議

有需要用CRM嗎?+

不 CRM是可選的 OpsIQ 在沒有 CRM 的追蹤相關支援相關平台上, 完美地工作。 在您可以管理銷售和客戶關係后啟用它 。

CRM能用到接通器嗎?+

有。 您可以手動建立聯絡人和交易。 Connectors 用平台資料( 訂單、 訂閱等) 来丰富 CRM, 但不需要 。

信任層是甚麼?+

信任地層是控制AI能做的工作的安全系統. Copiler模式 (default): AI 建議, 人批准. Automot- Impiler 模式 (opt- in): 人工智能自動地在低風險可逆操作上作活性.

CMM (CRM)

AI CRM 主屏幕

有需要注意和下一步要做什麼 就去取出相關的相關資料

指揮中心
CRM 指揮中心有預測/ Win-rate/ Pipeline 切換的 CRM 家, 有加权預估的 KPI; 有 AI 建議排行, 有相關的批準和放行 。CRM 指揮中心工作區域預測取出率管道有出息了 就出事了74克87%AI提案 : 批准排行建立交易 :在和買主聊天后出道核准解散移出尼姆布斯→提案已檢測出正回覆核准解散紀錄工作 ^ 追蹤峰值在7天核准解散1TOGGLE有收成率 通管2AI PROPOSES二. 交易、相關相關等3YOU DECIDE核准或解散
在預測、溫率和通訊等相接相接地區, 并進行AI提案排行,

有指揮所所顯示的

今天的數字

Pipeline value, deals won/lost, new leads, active deals, and revenue trend, a snapshot of your current state.

什么? OpsIQ 已找到

有新機會、數據質量問題和市場通訊等。

什么? OpsIQ 有

相關的相關事項由於相關相關地區相關同時,

需要批准

AI 的建議等您決定后再出。 每個都顯示了所要提出的動作、 推理和證據。 批准、 編輯或拒絕 。

下一個移動

排行榜 10 有活要干:接著做一筆活活, 查一查有危險的賬戶,

助手狀態

有相關資訊相關的相關相關事務: Captain, Data Steward, Dream Intelligence, Disease Course, SDR, Rettion. Green = running, 琥珀克需要注意, 紅色 = 有錯誤.

成果

有相關的同樣相關交易:受AI所影響的交易、省去時間、預測的精確度、同手動CRM相對等。

上午简报工作流程

1
就取取取今天的數字去取取出相關相關的相關同分相關分相接相關之相

檢查通路的相關狀況 有進取嗎?

2
清除批准等級

有需要就去編輯 拒絕壞的建議

3
檢查出什麼 OpsIQ 已找到

閱讀人工智慧的洞察力。 有沒有交易處於風險之中?

4
在下一個移動清單中工作

有相關的急迫和相關影響,

有活想活了再接活了

假想:
你出門了一個星期了 在你出門去的時候到底發生了什麼?
所取之道:

開啟指揮中心并檢查: (A)1("什么")OpsIQ 有" 在您出門時顯示了所有 AI 動作 (?)2(需要得到批准) 有提案正等您去審查 (出自:3("什么")OpsIQ 已找到"突顯出緊急項目 。 (C)4以觀察相關趋势。

CMM (CRM)

接觸者、公司和交易

CRM 将您的商業關係分為四個項目:接觸( 人), 公司( 有組織), 有交易( 有收入的機會) 有工作( 有接觸動作) 有交易相接相接( 有活干活活活等)。

CRM 物件
CRM 物件在相連的圖中連接到Company, Deal and Task 物件的聯絡人紀錄 。CRM 物件工作區域接觸到的人 電子郵件 通 通有公司accounts就成二. 收入机会工作后 后1OBJECTS有聯繫 有公司 有交易 有公司有交易 有出行 有出事有作 有出出行有出行相 有出走相去相去 有出入行相去同去相接相通 有出取相通相通能相通可相通取相接2LINKED一相通相通的圖3TASKS后附
有四個核心物件(接觸相關接地,公司相關相關通地,交易相關和相關工作相關)相接到相關的客戶圖.

接觸者

有接觸相接相接者嗎?

聯絡人是CRM中的人物,他們可能是客戶、潛在客戶或合作伙伴。 聯繫人有電子郵件、姓名、公司、標籤、生命週期階段和熱度分數。

尋找聯絡人

使用搜尋列以尋找取名、 郵件、 公司或標籤。 使用過程: 有生相關相關的相關站、 有生之相關分數、 有出自相關地區、 有被指定相關事由相關同 。

聯絡人描述檔

有個人資訊相關相關、公司相關接觸相關事務相、相關活動相關出處、入場、聊天相關網站相關,

有熱分

A0-100 从行為相關訊息中計算出分數: 網站訪問、電子郵件接觸、聊天相關、買取歷史和回應等。 高等 = 更熱能 。

二. 公司

有多出票了...
聯絡人- 連接公司

Contacts are linked to companies by email domain or manual assignment. One company can have many contacts.

有出息

有甚么相通.

有收成機會 交易有名權 有數量 有管線 有相關的相關人員 有相通相通接相通同相通

取出概率

有百分數的機會取勝。 根据您以往的贏取數據由人工設計或由 AI 計算出。 傳出加权預測 。

搞好健康

Green (healthy), amber (at risk), or red (stalled). Based on activity recency, stage duration, and engagement signals.

工作

有甚么活活去.

被指定到人身上的相關動作。 工作有名號、 到期日期、 优先级、 類型( 呼叫、 郵件、 會議等) 和相關的聯絡人/ 交易等 。

AI 產生的工作

有需要注意的情況:接觸被困協議、回應有危險的帳號、研究出一項新的領導。

有線索找找找取相關線索

假想:
有高分的接觸者被聯系到英國去 就想看看到底有哪位接觸到?
所取之道:

跳到聯絡人。 過過: 有領導分數 > 80, 國家 = 英國, 最后活性 > 7取出你最被忽略了的線索 有优先的外延

从聯絡人中建立交易

假想:
有位聯絡人剛在聊天中 表示出對你的企業計劃有興趣
所取之道:

開啟相關相關檔案。 點選 “ 創造交易 ” 。 請輸入交易名號 ( 如 “ Acme Corp- Enterprise Plan ”) 、 數量、 管道和相關站( 如 “ 有資格 ” 就可) 。 設定相關日期并指定您自己去取用 。 Dream Cournal 會開始追蹤此機會 。

CMM (CRM)

有通通通相接相接

管道是一面相關相關的相關圖板, 它由左到右相關。 拖放相關牌以預先出牌。 每張相關卡都顯示出交易量、 贏取概率和相關狀態等相關分類相關同相關 。

管道
CRM 管道有 Open- deals, Oper- value, Wight- precessed and Atprized- delades stats, 有新通訊按鈕、 AI 批準排行榜和領導/ 合格/ Won 相關相關的管道螢幕 。管道工作區域有出賣了23開啟值(128克)有重力預測74克有屬性的交易12+ 新交易批准队列2需要复核有線伏特公司4.克有光能6.克有分量二相相三克9克轨道48克1LIVE STATS開啟數值加权預測( M)2AI QUEUE二. 核准拟议的交易3BOARD按相關相關分相關的相關事項
真正的管道屏幕:活取數(開放值、加权預測),

有管子板出事了

1
查看您的交易

管道以花牌形式顯示所有正在交易 (相關站) 。 每一列頭都顯示相關位的總值 。

2
拖放以先取

將一張牌拖到下一個相關相關站。 贏取概率和數入更新已即時。 如果移動失敗( 驗證出錯誤) , 牌會回轉到它原有的位置 。

3
檢查牌牌章

有相關的相關事由由相關人士所出: 有相當多的相當有相關相關資訊; 有相較多的同樣相關人員相關, 有相干相關的人相關同相關; 有同相通相關接相關地由相接相接地由同相接取取取相接而取相關之相接; 有分相通地由被取相通取相去相通而取取而取而行相通之相通可相通也相通能相通通相通接相通同相相通. 有相通的相通性相通有相通性的相通自相通了相通道相通

4
點擊以了解細節

有聯絡人相關活動相關相關地區, 有協議教練簡介相關事由相關出面板相關接相關快取相關動作相關。

批准等級

AI 的建議出自於排行榜上方的批準。 每份建議都顯示了AI想做什麼、為什麼和證據。 您可以:

核准

接受此建議為 -- 。 動作會穿過信任地層并被收錄入日誌中 。

編輯

在批准前先修改提案, 例如: 更改所建議的相關階段或調整相關數量 。

拒絕

拒絕提案,AI從拒絕中學取了更好的建議

有贏取概率被解釋了

贏取概率可以由人工設定或由AI計算出。 AI 在計算它后, 它會用自動已關閉的相關交易所訓練的模型 (完成和輸出) 。 如果您沒有足夠的歷史相關資料, AI會使用相關預設概率 。 该概率會使加权預測被驅動: a $10,000 有相接相接 30% 概率贡献 $3,000 有"相當"的預言.

有活要干 就去出事去取回相克克克多克多斯克多德克多爾克多夫去取取取回同樣的相克相克之地去取相克取相

假想:
有位客戶簽了合同并付了錢.
所取之道:

把交易卡拖到"Won"站台上去. OpsIQ 有: (1(把交易標記成"快活"了)2(一) 更新预报。3在時間線上加入"Won"活性 ().4如果已設定了, 就啟動了網址事件 (crm. deal. won) 。 (5更新接觸相接相接的生命周期相接站到"Customer".

有被卡住的活

假想:
你想找同樣相關已太久了的交易去取回活口
所取之道:

在管線板上找取紅色(已被封存)的徽章。 這些交易沒有活到已設定的腐爛入關( 在 CRM 配置中被設定为 > Pipelines ) 。 點擊每份被封鎖的交易以看到 Deal Course 就再起動所提出的建议 。

有多口管道能接通嗎?+

有。去CRM配置 > 管道以建立多個管線。 常用案例: 分出管線以接取新業務相接而接取, 或是取取取不同的產品/服務 。

如果把一筆交易搞出"輸了"會怎樣?+

交易被標出為已關閉- 輸入。 有原因會被問及。 交易從已關機中移除了, 但可以從已封閉的交易過程中找到。 聯絡人仍會被關入 CRM 中 。

CMM (CRM)

交易指導

Dision教練分析每項交易并提供一份簡介, 有健康狀態、 風險訊號、 關鍵人、 資格檢查表、相會預告等相關動作。 每個事由都出自。 教練顯示出每個事項所取出的任何票、 聊天或活動 。

交易教練
交易教練有相關證據出自於AI的建議和收據通訊按鈕等相關交易卡,交易教練工作區域Acme公司 $24,000階段:提案 60% 贏(風險相關地標)沒有回覆 10 幾天有名有名地出事了在聊天中提及的相對者出自:票 #482 聊天; 6/12 * 電子郵件串AI 建議 (A)二. 重新投入到經濟上有ROI回放的買家和一個7關閉計畫起草電子郵件1SIGNALS有出息就出事了2SOURCED2. 有 出 有 有 有 相 道3動作一擊下一步
有同樣的相關事由由於相關的相當多的相機被取出,

有教練告訴你的

2. 健康原因

有相關訊息:相關相關日數、最後接觸日期、活動頻道、相爭者所提及相爭相爭取的相爭模式等。

信號

有相關相關的相關訊息相接相關(聊天記錄、票票、電子郵件、活動等),

冠軍與阻擋者地圖

有誰能出力於交易(champion)和誰能抵擋(blocker)。

二. 合格清單

MEDDICC或 BANT 檢查清單( 有相容性) 顯示符合哪些相關資格而缺少相關相關的相關條件 。

會議預覽

在安排會議前, 教練會想出一項簡介:日程、要被包圍的關鍵點、要問的問題、要處理的風險和要準備的材料等。

答复和呼叫计划

根据目前的交易狀態和相關相關性, 建議下一封信或呼叫文稿 。

二. 有据可查

有名的相關人員也透過相關網站去取取取出相關資料:

有用去接教練了?

1
就讀這份簡介

開啟任何交易并向教練區滚动。 讀取相關健康狀態和關鍵訊號 。

2
相關相關資格相關的相關通訊

如果「經濟買家」被遺失了, 就想找出和接觸預算持有者。

3
就提案采取行动

教練建議下一個具体動作。 點擊以建立工作、 起草郵件或排期會議, 全部被排入批准等列 。

有大會要開

假想:
有相會之地 有明天有相會相會 $50,000 有成交.
所取之道:

開啟交易并讀取會議預備部分。 它顯示: ( ()1(以相關相關的相關地點取而代之. )2(上星期在聊天中被反對了)3(相對者被指入支持票中).4有問題想問起他們的時間5(一) 有针对性地以有理有据地想出出出一份有分量的议程来;

有同樣的相處相去相去不遠

假想:
有條紅相接的通訊錄取了一出你認為能行的協議
所取之道:

有時可以說:"這項協議已進入了提案的入選階段"22 天( 阈值 : 14。上次接觸是: 11 有相關人士提供相關相關資訊通訊的相關通訊單, 5有好几天了 (ticket #T --892) 建議:去處理移民問題并安排接觸電話",而現在你完全知道要解決什麼了.

CMM (CRM)

二. 預測和報告

有可辨識範圍的地盤等級預測 有交易等級變更解釋 有精确的追蹤 以證明和解釋你的數字

預測
預測有相關訊息和通訊管的季數 和精確的音符預測工作區域有出息了?3.12克87% 以入入入出提交最佳案例管道有相關的相關資訊相關相關,1分類承接通訊管2AI-WEIGHTED有相關的保健3PROVABLE有追蹤到的准确性
有精確的蹤跡可以作辯護 有相關的指標 有相當的分量 有相通的分數 有相接的分出相通相通

預測分類

承諾

相接相接 80% 或更高的贏取概率。 這些是您最可能贏取的。 這應該是您所期望的最小收入 。

有可能是AI加权值

所有被取出的交易都以 AI 計算出取勝概率而加权。 這是最實際地預測您要關閉的收視率 。

最佳案例

有收成的出價都出出出名了 有收入量就出出相去相去不遠了

信任相隔

一 二 二 二 三 二 三 三 三 二 二 四 二 三 四 三 三 四 二 二 80% 有相關相關的相關區域 : “ 您可能會相接相關 : $45,000 和 $72,000"本季度"

有出所不意地改變了

預測中包含相隔多週的變更屬性。 當您預測來臨時 $15,000 有出自"地平線"一文:"A已滑入下個季度"$8,000),交易 B輸入 ($5,000),交易C被減去的值 ($2,000)."

精确追蹤

預測地點( MAPE)

平均絕對百分比錯誤: 您的預測有多遠相去過。 下等更好 。 MAPE of 15% 就表示你的預測是相當于相當於相當相當而相關的 15% 有出自出自"活生生"收自"相克".

取出概率校正

Brier 得分以衡量贏取概率多好相當於實際結果。 如果交易于 70% 有取而有取的概率 70% 有時能被校正是好事.

每周快照

OpsIQ 在相隔多長的时间内, 您可以看到您預測的精確性如何得到提升 。

卷起和警告

每相轉換

有幾起交易由相接相接而至相接 80% 有資格被傳出到提案站去取取取而代之 20% 从提案到談判 你的提案可能需要工作

有源取胜率

有最有名的取景地 有高收視率取景相當多出資

有所有者所表演

有成績出自於相關的相關報導: 交易已成收成, 管道價值、平均交易大小、取勝率等。

警告

相當相當有危險(高概率交易顯示了被暫停的通訊),

理解預測下行

假想:
你的季后期預報被收起 $180,000 至 $155,000 有自上星期起起起就被收了.
所取之道:

開啟預測頁面并檢查"改變了什麼",報告上顯示:"Acme Corp dealation (Acome Corps deal)"(Aceme Corp Affairs (Accord Convention).$15,000(被選入的相對者被移到Lost. Beta Inc deal (Beta C) (被選擇了)$8,000 有相關日期被推到下個季度 有同Gamma LLC的新交易 $3,000 由相關人士所出:$20,000 + $3,000 = -$17,000 以其他交易的概率調整而來。

CMM (CRM)

二. 找新事

有名的探險探員能幫助您找回并研究相關客戶。您描述您的理想客戶,并加入目標公司,再由人工智能去做相關調查、分數和先取出相關資料等。

探矿
探矿有相當的音符、分數和出道通訊按鈕等相關的相關資訊相關公司名單。探矿工作區域二. 特别提款权代理人所查明的前景北風有限公司有活了? 有活活了! 50 · 雇用支助88外联草案钴 Mfg制造业; 200 二. 工作人员74外联草案梅莎零售二. 电子商务 30 二. 工作人员69外联草案维加保健保健 80 二. 工作人员63外联草案1FINDAI 源碼目標帳號2沙雷符合目的排序( I)3DRAFT有你一通相接的活
SDR代理找了目標公司 就按相當分數出分 并起草出第一通接觸的外延

一次性設置

1
就說出你最想找的客人去取相好相好

取用 CRM 設定 > Proference. 描述您最理想的客戶相關檔案 (ICP): 有目標的業務、公司大小、職稱、地點、相對名詞和最小相配分數等。 例如: “ B2B SaaS 公司有相對相關相關分數 :50-500 在美國和英國有員工出賣開發工具,

2
新增目標公司

輸入您想研究的公司域名或名稱。 您也可以由 AI 根据您所研究的 IP 建議公司 。

3
二. 研究成果

有相關相關資訊:相當相當大、工業相關、科技相關多項相關新聞,

4
核准外延

有相當相當出名的相關公司,

有分

Each prospect gets a 0-100 fit score based on five factors:

ICP相合

有相當相當多的相當地區,

急迫相關信號

有證據能證明他們需要你的出品?

預算代理

有相關的資訊相關相關地點,

出品相匹配

有多么相干 有工業和科技能做起事来 有你所想出出的東西

相配相配

您能有效服務此客戶( 時區、 語言、 複雜度) 。

有所可想的被盯上的公司

假想:
您想評估是否 acme.com 有需要去追求.
所取之道:

添加 acme.com。 AI回覆:相當分數 78/100 (好相接)原因: B2B SaaS, 120 有相對相對的X (產品相配) 。 買入相關相關通訊:上個月曾兩度去取取取你的價值頁面(取自網站追蹤等)。 最佳接觸: [email protected] (出品人名:VP of sell. )被收發人提及了他們最近的招聘和定价頁面访问.

CMM (CRM)

自動追蹤序列

序列自動地將多步追蹤相關: 在您批准初始送出后自動執行的電子郵件、等取取取回、工作取回和取回等取回相關的接取相接相接的相接程式。

相序
相继序列有水平序列相接: Email,等了三天后 Email再做一項活活活,并有回覆測出.相继序列工作區域在你批准出發后再去接他→電子郵件二. 入室等等3天電子郵件后 后工作有呼叫步數可以是電子郵件、等取、工作取出或網上被取出。 接回自動停止了相關序列 。1AUTOMATE多步相接2STEPS電子郵件 :%等 工作相接相接3YOU APPROVE第一個已關入
您先批準的多步追蹤( 電子郵件、等取回等取取回回覆等取出等取去相接回回應) 。

二. 序列如何运作

1
建立相序

定義階段: 電子郵件,等一等3有好几天了 有電子郵件等5日, 工作( 如果沒有回覆可呼叫) , 電子郵件。 每一個電子信件步都有一個樣本可以自訂 。

2
輸入聯絡人

在序列中加入聯絡人。 AI也可能提供出出自探矿結果的入學資料 。

3
自動執行

步數自動按期跑取。 如果接觸回應到任何一站, 序列會自動暫停 。

4
音軌收效

有可取取的開放率、回覆率、轉換率和不訂收相關分數等。 使用此來优化您的相序 。

答复理解

相關人員也表示:

有正

有興趣想聊聊 有時會有相關的暫停 有時会被建立去接觸

反對

有被關注而沒有拒絕的問題。 有被反對的細節所產生的序列已暫停 。

取消訂閱

想要停止收取信件; 聯絡被永久地被壓制 。

有活想活了

有興趣但時機出錯 。 有序列暫停, 有 snooze 工作被建立 。

錯人了

有接觸被打出去取回回回復的通訊

支助

有支持問題,不是出賣回應 有相關的暫停,票已建立

防垃圾

外出處理

取消訂閱要求被立即取出 而接觸被從未來所有序列中被壓制出

每日寄出封口

工作空間相關相關的日限( 預設: 1,000 有相關相關的相關訊息被取出。

相接相接限制

最大1有相關人員被打倒了 就不會被打敗了

有超級接觸

逾越日用上限的步數被延后到次日。 它們從來不被放入或跳出 。

如果接觸者在接觸相關時開出支援票會出出出什麼事?+

相關序列自動暫停。 相對支援比外延优先。 在相關支援問題解決后可手動恢复相關排序 。

我能做A/B相關測試嗎?+

在序列中并沒有直接分類, 但是可以以不同的訊息建立出兩個序列并相對取出相關的結果.

CMM (CRM)

增長工具

在 CRM 有一頁持續了增长引擎: 相接收入 (MRR/ARR) 、 產品目錄、 領導抓取表、 訂閱連結和領導路由等。 這裡所寫的每件事都直接通入 CR M, 因此要提交表或被訂閱的呼叫是跟歷史相接, 而不是一行被收錄在電子表格中 。

有活活活在一頁

经常性收入

收入

預算出從您真正的收費分賬簿上。 訂收由每個平台的付款相接, 从付款缺口中推算出收費周期, 在付款逾期時會有訂收失效 。1.5 有相關資訊相關相關的相關單位被取回相關郵件后, 客戶可以自動連接 CRM 聯絡人。

產品目錄

星表

您所賣的東西只有一個真實來源。 報價從目錄中提取名稱和列表價格,接受的報價按產品累積成收入。

取铅活活活字表

取取

每份表格都得到您自己站點的主機頁面和被嵌入的 iframe 代碼。 提交會成為聯絡人, 擁有者會得到通知, 而您所循路由規則會指定取向 。

訂閱連接

排程

有同樣的連接, 讓前景選擇一個空間。 有同時會議的時間、時區和會議都相當相當尊重。 有預期會議會要被訂出, 有傳出預期的郵件去確認并通知了組織者 。

有引線路由

游走

Territory rules run first, then field rules (match a field such as country or source), then round-robin across your rep pool. It routes CONTACTS AND DEALS alike, whatever the deal’s status: a won deal still needs an owner for commission attribution, account responsibility and follow-up, and in owner or team visibility mode an unowned record is invisible to everyone but a manager. Records created by automation (a connector sale, chat, an import) carry no interactive creator, so they are routed by the same rules on create rather than left ownerless. Anything that already has an owner is never reassigned.

第一個表單已建立

1
開啟增長工具

取回 CRM再取出相關工具,再取取取回相關的相關相關文件 。

2
有名有取地

輸入名和逗號分隔的字段清單, 如名稱、 email、 手機、 訊息等。 Email 總是需要 。

3
共享或嵌入

复制主機連接器以分享到任何地方, 或是把嵌入的碼被复制并粘入您網站的任何一頁 。

4
有線索了

Every submission is a CRM contact with a form.submitted activity, an owner notification, and automatic routing.

💡
公開的抓取頁面使用您的工作區位。 Cloud 工作區使用所指定的子域 (company) 。opsiq 因此連接總是能解析出相當相當的資料 。

有內建相

有出息就一無所取

有一塊被隱藏的蜜罐地 悄悄地把活口扔了出去

限速率

每小時提交10份 IP 地址:表格和预订。

有話直說

提交表格并沒有提供市場通訊相關的許可。 只有有明确通訊的收據框才有通訊所提供相關相關資訊相接相關信息相關通訊。

有兩回訂收

有一分被重新檢查出 在訂票時有新的可用性檢查出值

有相關收入相關資料出自何方?+

在您所使用同一個銷售頁面的通訊分類中, 有收費接通器提供。 在連接到新平台后再用收費取出 。

有網站能用到表格嗎?+

有 有 有 出 有 有 就 有 有就 有 就有 就 有 就 出 出 一 二 三 三 三 四 三 三 二 三 二 二 三 四 二 三 一 三 三 一 二 二 二 四 三 二 四 二 二 一 三 二 一 二 四 四 三 四 四 二 四 一 三 四 五 三 三 六 三 三 JavaScript.

CMM (CRM)

訊息中枢 (SMS and WhatsApp)

有一個接通器, 有多达二十個關接口。 連接您所使用短消息和WhatsApp提供商, 將其中一個標記为預設, 在接通通通訊時取取取其中任何一個。 在接觸任何關接門前由 CRM 檢查同意 。

就地打起精神去取出相當多的活口去取回相當有分相相相通的相通相通取取取相通接相通而取相相接相接同相通之相通. Set it up

1
開啟連接器

在連接器頁面上, 開啟訊息相關器 (SMS and WhatsApp)并啟用它 。

2
新增提供者

在同一個抽屉裡,或CRM在下行取取出出一通關口(Twilio、Vonage、Termii、MetaWhatsApp Cloud、Infobip等),API憑證與連接。 您可以新增多個, 有兩次不同的帳號相通的同一個网關 。

3
有線接取取取用網頁

提供商的每個項目都顯示出自已的網址 URL 有副本按鍵。將它貼入网關的快取報告和信件內接設定中以得到快取狀態并回覆回覆到 OpsIQ.

4
从聯絡人傳出

開啟聯絡人并使用簡訊或 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":"..."}.

效果

傳送報告將傳送消息代碼印出於已傳出或回覆的提供者。 接通消息以通訊號碼相匹配, 在工作區內被接通了, 有訊息被收取; 有回應的對話被標記 。

失敗模式

有錯有錯接有錯 403 有未知的有效載荷被計數而被忽略了,從來不致命 因此被誤裝的网關無法突破終點 。

有哪個入門被支持?+

有相關相關的相關事由相關地點: 有相當多的相當相關人員被取出相關資訊, 有相較多的同樣相關通訊相關口號相關; 有相相關接相關人士被取用相關信息相關訊息相關服務相關網站相關報導相關內容相關: 有同相關者被取自相關資料相關文件相關分別相關。

有證件嗎?+

身份證被加密到連接器的設定中, 永遠回應回應到瀏覽器上。 編輯有空白密件的項目會保留被儲存的一項 。

有人工智能能發出訊息嗎?+

有, 有需要相關證件并使用同樣的通訊口。 AI也列出相關提供商以解釋所提供相關相關資訊相關的相關資料 。

CMM (CRM)

有需要和有需要的相接相接者

使用寿命周期管理能相助保護已存入的生產收入。 每個帳戶都得到克魯克風險分數、健康分數活活活生生的分數和被推荐的成功游戲本等分數 。

生命周期
生命周期板有名的相關人員相接相接地由相接人相接而起;生命周期工作區域(打包接取出: 有被打入"打包"等功能)相克保健 40實用环球花保健 88信息技术保健 76(At-Risk) (相克地區)二相相通保健 28法文有相去相去而相去.在12d中被更新擴展+8克1STAGES上機接续2SCORED保健与拓展3PLAYBOOK建議下一個移動
有名的客戶能上車 有活活 有危險 有更新 有名有名 有名 有相 有名可出 有名可以出出相去 有名能出相出相通相通 有名相通有相通取相通同相通

有生之年相接相接会

相關地圖

有視覺地顯示出每個帳戶所處位置:領導、相觀、機會、客戶、擴大、更新、冒險等。

有風險的帳戶

有高風險的帳號。 每一個都顯示了最上方驅動程式( 支援快取、 不動取出、 付款失敗等) 和所建議的儲存播放 。

2. 拓展出的机会

有信號想多買一筆:高用取用、地物要求、計畫查詢等。

到期的续展

有相關续期的帳號, 按風險和收成相排序 。

怎么搞的? OpsIQ 探測起點風險( C)

Chorn 風險由多個相接相接的訊號所計算出:

CRM 信號

有健康 有不動 有最近有失 有不相干 有不入行 有不出行 有去取出相好相好同好相活相活

支援信號

有出賣票數 有出售票量的起售 有負面情感 有升放出

产品相接

登入頻率、功能用法、頁面接觸等 API 有通電話了.

有收費信號

有的付款失敗 有的发票逾期 有的下等 有的被取消 有的去過

游戲本

儲存播放

有危險的帳戶:先進地去接觸、解決所關心的問題、提供支援、需要時再起起起碼去取出相關資訊等。

重用播放

即將到來的更新:確認滿意度,回顧使用情況,現值,提供適當的激勵措施。

擴展播放

就地取出:提供提升選項、分享成功故事、展示ROI等。

收養活

有許多人認為自己是「被利用」,

在事出之前就被盯上

假想:
通常每天登入的客戶沒有登入2有好幾周了 就開了門3就這一月出票了
所取之道:

有司機:活取( (At risk) )14 上一個登入后天起起起)及相支援突起(3x 有產品出問題嗎? 他們有評估相對者嗎? 早期介入能拯救帳戶。

CMM (CRM)

有保持相關資料清潔

Data Sward 代理伺服器自動尋找并修正了相關資料質素:相複, 缺漏的字段,相矛盾相通和已分期收錄相關相關.

資料管理員
資料管理員有一擊修正動作的相關資料( 有重复、 有缺失、 有 stale、 有格式等) 。資料管理員工作區域有數據出問題被斯德沃德代理找到有相复制[email protected][email protected]合併缺少12 有聯絡人沒有同夥相通有錢人了斯德勒( S)38 交易未被預防 90+天复核格式有電話號碼入4格式有活了就去弄好1CATCHES有需要 有需要有需要 有缺點 有需要再多花點花花花2EXPLAINS有相片被取出? 有相去相去之多?3FIXES有你的同意
管理員能保持你的CRM清潔 有相關的相關資料 有漏洞 有破爛的記錄 有壞的格式 有經過批准后再做決定

它接得到的

复制聯絡人

有多份同一個人的記錄(例如: [email protected][email protected] 有位管家想把它們合并起來

缺少相關資料

有通訊信、 有通話信號、 有相關公司等。 有建議用可得到的來源填充 。

已取消連接的紀錄

有相關聯絡人接觸, 有相接人接通公司接觸。 建議以電子郵件域名和上下文相連接 。

二. 不一致

在"Won"相接的一場交易 20% 有相關接觸被標出"Customer"而無所成交 有同業不相匹配的公司

相關相關分階段錯誤

有同樣相關的作業已相去過多,

如何使用

1
開啟服務員清單

前往 CRM 找到 Data Steward 區域( 或是從 CR M Health 開啟它) 。

2
批准安全修复

有相當相當多的相關相關資料被批評出道: 有相關的相當重複相關, 有相見的相通相關數據被批量取出 。

3
有再多看一看

Amber 項目需要您做評斷: 有相當相差的相複相; 有相關相關的相關變更; 有同樣相連相關接相關之事。 請回想一下相關同樣的相連性相關分別 。

正在清理重复聯絡人

假想:
管事找了"約翰·史密斯"[email protected])"和"J. Smith (:[email protected]("):同名電子郵件,不同的顯示名稱.
所取之道:

管理員建議合并: 有更多的活性地保留紀錄, 有其他相關相關的相關交易和相關事項相相相接相接。 有需要就先回應相關收視率, 有需要再去調整相關站名并批准相關同相關所關相接的相接方式。 有兩相相關記錄相關史被保存了相關分 。

CMM (CRM)

建立我的CRM

建立我的 CRM 就讓您用通俗的英文描述您的 CRME 設定 。OpsIQ 生成已驗證可回轉的計劃并被用到批准上。 沒有編碼, 沒有手動設定 。

建立我的CRM
建立我的CRMA natural-language description on the left producing a generated CRM plan of stages, fields and segments on the right.建立我的CRM工作區域有事要說出去相干相干有搞搞搞活活活了有月活活活口和一次性小項目有生意可做.建立我的CRM有出自的相相關相:铅→收存器發出類型: 保留者, 專案字段:月值分區: SMB, 代理序列:入座批准應用( A)1DESCRIBE普通英文2AI PLANS相關相關站、地區和分區3APPROVE已套用 ^ 沒有編碼
Describe your business in plain English; OpsIQ drafts the whole CRM (stages, fields, segments) and applies it on approval.

如何運作

1
描述想取出什么

輸入您 CRM 設定的平面英文描述。 例如: “ 建立有相關相關階段的更新管道: 有接觸相關接相關、 有接通相接相接接相通相關 、 有再接相連相接取相關等相關的相關分數會更高 ” 。

2
二. 就地取出

OpsIQ 顯示要建立什麼的預覽: 管線、相關相關等相關分數、分數規則、使用周期規則等。 檢查每個項目 。

3
套用

點擊應用以執行此計劃。 每項變更被收錄为一擊可以取出相關的捆綁 。

4
有需要就倒回去取出去

如果有不對, 請點擊 Undo以回復整個捆綁。 您的 CRM 已回歸到上一個狀態 。

有能造出能造得去取出取出相去相去所取出之相.

2. 管道和相位

有自訂相關相關管線、 預設概率和腐爛入分等。

分分法

有行為能取出更高分 “高分能取取取價分” “高克能取回更低分能去上職事頁面”。

生命周期规则

自動進取生命周期相關相關:"移到 SQL"等交易取出后再去接客"

自訂字段

在聯絡人、 交易或相關公司中加入字段: 文字、 數字、 日期、 選擇、 選取 URL 有電子郵件了

二. 合格清單

定義 MEDDIC克或 BANT 選單中相對的 Deal Capers 分數 。

有活口再接通了

假想:
有需要再接通接通的通訊管 就這樣了 有需要去接通通通取用地道了
所取之道:

型態:"建立更新管線。相關相關: 90 出行( D)10%), 60 出行( D)25%),已接觸(40%),談判(60%),重新(100%(被取出),Chorned(被取入".0%。设置腐爛的阈值到 14 有好几天了". OpsIQ 產生此計劃后, 您再檢視它并點選相關應用。 管道立即出現于您的管道頁面上 。

如果能描述出出出事了又能怎樣?+

建構者只會產生它知道如何驗證的動作。 如果您要求的不是它能做到的東西 (例如: “ 整合我的自訂 ” API 第1行,第2行,

我能去掉改變嗎?+

有。 每一個 Build My CRM 動作被取回為可逆的捆綁。 請去 CRm Health > Creat History去查看所有的捆綁并取出其中任何一個 。

CMM (CRM)

就用你的方式去搞CRM

有 手 動 CRM 有 選擇 點擊 而不是打入的 。 有 构建 My CRME 能 建立的所有設定也都以 傳統的形式 提供 。

2. 管道和相位

建立、 重命名、 重新排序并刪除管線和相關相關等。 設定預設的每個相關階段取勝概率。 设置腐爛的阈值( 在交易被標出"已被安裝"前沒有活動的日子) 。

自訂字段

新增字段以做交易、 聯絡人或公司。 字段類型: 有文字、 有數字、 有日期、 有選擇( 有預定的選項下放) , checkbox, URL,電子郵件。自訂字段出自物件描述檔和過程中。

二. 合格清單

定義交易教練用以評估交易的清單。 選擇 MEDDIC、 BANT 有自訂相關條件。 每項可以被標出需要或可選擇 。

生命周期相關分相

定義自動相關相關階段的轉接: 當接觸者符合條件( 檢視價格、 提交表單、 做成買取等) , 其生命周期相關接相關的相關站會自動進取 。

有名有名的取分相

根据行為推進或減低取決分數。 例如: “ Viewed price page = + ”15 分數" "已下載白紙=+"10 有觀察生涯的頁面=-5分數"可以設定最小的計分( 如 “ 至少要查看價值 ) 2 (出自"相去相去".

已儲存的檢視

为聯絡人、 交易或公司建立已命名的過程相關組合。 和您的團隊分享相關相關的檢視。 設定每個物件類型的預設相關取景 。

新增取名規則

假想:
您想讓兩次或多次查看您定价頁面的聯絡人得到更高的分數 。
所取之道:

跳到 CRM 配置 > 領導分類規則。 點擊新增規則 。 set: event = "pageview", URL 包含 = "/pricing",最低分數=2有分數出振 = +20。保存。下回分數者跑出后,符合此規則的聯絡人會得到+20 就去取取取起分了.

CMM (CRM)

CRM: 健康检查

CRM健康是自斷的一頁, 它能確認您的CRM被正確地設置并平稳地運作.

健康检查
CRM 健康檢查有健康得分戒指 92 有相關的通訊和警告相關相關設定檢查CRM 健康檢查工作區域92健康已配置管道相關相關連接器已連接到匯入( I)已啟用 AI 代理程式!沒有正在使用的跟蹤序列!12 聯絡人缺失相關公司1审计驗證你的設想2FLAGS有出事了?3沙雷一通通同名相.
有一頁的CRM審查:一是总体健康分數再加一份查詢所設立的正義和需要注意的條件。

它能檢查出什麼去取出

斯克瑪

有數據庫表格并有正確的欄目。 如果移出失敗了, CRM Health 就將標出它 。

有人工智能特工

Capture, Data Steward, Disea Intelligence等所有CRM代理都被登入了檔案并保持了健康. Green = 正在跑取, Amber =需要注意, red = 有錯取出.

路由

CRM (C) : API 路由和 AJAX 端點已註冊并可以呼叫 。

AI 動作

CRM 動作目錄已登入行動記錄。 如果動作缺失, CRm 就再重新注册以自愈 。

有生數據計數

總的聯絡人、公司、交易、工作、活活和事項。 有助於驗證匯入和取取取相關相關資料等 。

在設定檢查后

在首次建立 CRM 后, 有您開放 CR MHE 并檢查所有檢查都為綠色。 如果有安柏或紅色相關的, 請按下項目做一項分析解釋并做建議的修補 。

有多久能去CRM健康站?+

在初始設定后再檢查, 在重大更新后再查取CRM行為是否出錯。 CRM Health自愈了多起問題( 如缺少動作登記等) 就只用開啟頁面就已出道了 。

CMM (CRM)

開發者 CRM 連接

CRM出自一出公開的REST API 有出站取出網上出站 因此可以放入任何堆放而不需要手動出站出站

API 收尾點

認證

API 有範圍crm. read 或 crm: write. POST to (Authorization: Bearer opq_...) 的按鍵。/api/v1.php 有動作和站台鍵。

接觸者

crm. contacts. list (搜索+ filter), crmm. concacts (由 ID ), Crm: concontacts(建立或更新),克克姆. confacts -- save.

有出息

crm.deals.list, crm.deals.detail, crm.deals.create, crm.deals.update, crm.deals.advance (all through the Trust Layer).

活 动

crm. activities. list (接觸/交易的時間線), crmm. actifities (紀錄一項新活動). record (log a new activity).

事件

crm. events. list (自 since_id survery) , crum. evits. catalog (列出可使用的事件類型) 。

二. 在下列方式建立交易 API
POST /api/v1.php
Authorization: Bearer opq_live_xxx
Content-Type: application/json

{
  "action": "crm.deals.create",
  "site_key": "<workspace>",
  "title": "Acme renewal",
  "amount": 12000,
  "pipeline_id": 1,
  "stage_id": 2
}

網頁游玩相關事件

opsiq.contact.upsert

在建立或更新聯絡人后被解除。 這是要訂閱的聯絡人事件; 沒有被分開的事件 。

contact.lifecycle_changed

Fired when a contact moves to a different lifecycle stage.

contact.status_changed

有接觸狀態變更后被解除 。

contact.conversion

有被收錄到的轉換被取出相關人而被放出.

contact.tag_added

在聯絡人中加入標籤后被解除 。

contact.erased

有被取出相關人員被取走后被解除了

crm.deal.created

有交易就被開除了.

crm.deal.stage_changed

有交易被炒了活活活了

crm.deal.won

有成交后被炒了

crm.deal.lost

有一筆被收起就被炒了

crm.company.created

有一夥人被打發去取出后,

crm.task.created

在新工作被建立后被解除( 人工或人工智能生成) 。

email.replied

有聯絡人回應外出電子郵件后被開除。

email.bounced

有外出電子郵件回放后被開除.

💡
有呼叫 webhooks.events.list 就您安裝上有權證的套件, 有相關事件的有效載荷。 它由送出代碼自取出, 因此它絕不能與所到的相異 。 完整清單也出現在 Webhooks 區域中 。

所有網上事件由 HMAC 簽署并重試失敗。 訂下 a URL 在設定值 > Webhooks 中,或自"id"起使用 null crm.events. list 以永久變更 feed 。

同步 CRM 聯絡人到 Google 工作表

假想:
您想讓您所銷售的團隊 在Google工作表中 有所有新的CRM接觸者
所取之道:

为您建立網址用戶opsiq相接性. upsert. 指向 Google Apps 文稿網上應用程式或 Zapier 網上hookURL。有效载荷包括聯絡人名、電子郵件、公司、領先分數和來源等。您所寫的文稿會以一行附加到 Google 工作表上,供每次新的聯絡人使用 。

CMM (CRM)

分片

有部分可儲存可再用聯絡人過程, 以取用 CRM 檢視、 外延、 宣傳等相關相關工具。

產品螢幕
分片分區編輯器能把相關相關條件相接相關, 顯示活相匹配數量并讓接線人選擇活相關的過程或被封鎖快照 。分片工作區域MODE (M)有活LOGIC就想出一副相去相去多遠了MATCHES1,248LIVE WORKSPACE VIEW客戶相關站等於活性客戶端規則上次活化在內 30 天規則國家等於英國規則有高的意向至少得分 70規則1CHOOSE MODE有生有活2ADD RULESALL or ANY3REUSE二. 宣传运动和CRM
分區編輯器能把相關相關條件相接相關, 顯示活相匹配數量并讓接線人選擇活相關的過程或被封鎖快照 。

A 活地段 在使用時從相關相關資料中重新计算。 A 有被封鎖的快照 在被批准后, 有相關的觀眾不得改變。

選擇 就想出一副相去相去多遠了 有相當的條件相符合;或 有的 有 一 個 條件已足夠。 在儲存前先檢查活數。 有系統區段可以被看到, 但可被保護出普通編輯功能 。

CMM (CRM)

有取出分

有領導分數規則能把行為和相貌相信號 變成一成不变的分數 有銷售和自動能用到的分数

產品螢幕
有取出分有正反分數相變相相相變出出出自相變更相變取出相變有取出分工作區域规则12SCORED8,412HOT LEADS286LIVE WORKSPACE VIEW定价活性3+ 访问 14 天+20正在買入關鍵字有移入或企業+15支助风险在 30 天-10有信任的來源合作伙伴提交+121DESCRIBE RULE有正文英文用2REVIEW FIELDS有信號 有視窗 有點3RESCORE套用到工作區
有正反分數相變相相相變出出出自相變更相變取出相變

AI 規則建立者可以把一通平話的指令轉而成有結構的規則。 在啟動前, 每個規則都需要被審查: 确认活性或關鍵、 最小數、 有滾入視窗和分數變更等 。

有正反相通相并用 工作空間 在修改了通訊規則后, 有線接觸者被用新模式相評估。 分數可以提供分區、路由、出測和工作流程等條件 。

CMM (CRM)

銷售首頁

排行榜比對代表使用配額達成, 贏得收入, 委員會和開放管道的選定月份.

產品螢幕
銷售首頁有名的花花公子被取出相當多的花公事,銷售首頁工作區域PERIOD7月TEAM QUOTA82%184克英鎊LIVE WORKSPACE VIEW阿米娜104% 6.2克韩元第 一 批88% 配额 -- -- 51.1克韩元第 二麗塔76% · 43克第 三開啟管道三一二克出道了复核1CHOOSE MONTH相對一期2CHECK QUOTA有代表取用3COACH使用管道上下文
有名的花花公子被取出相當多的花公事,

有分數的能取而代之的是,只有每名代表有目前的分數和交易有正當的擁有者、數量、通貨和相關地位相當有意義。用指標指導和認同,而不只是取決於質量;再取決于交易的健康、活性及預測的准确性相配。

CMM (CRM)

有批准

在高價值交易被標出取勝前 就需要經理人簽收

產品螢幕
有批准批准策略定義了兩個值阈值,並且列表顯示待決、已批准和拒絕的決定。有批准工作區域POLICY已開啟WAITING6OLDEST3hLIVE WORKSPACE VIEW等級1有出自: £10,000管理者等級2有出自: £50,000高一企業更新£72,000 Ben所要求待取移民工程£18,500 由Rita所要求已核准1SET THRESHOLDS0關閉分級2REQUEST重複提交交易3決定批准或拒絕
批准策略定義了兩個值阈值,並且列表顯示待決、已批准和拒絕的決定。

啟用策略并設定等級1等級2门槛: 0 如果非管理者想取勝出出出價值或超分數 OpsIQ 有相關的相關事由由由於相關相關,

管理員和正當管理員并不受政策所阻擋。 每一個決定都應保留要求者、批准者、可稽核時間和理由。

CMM (CRM)

生命周期规则

使用周期規定自動地移動相關相關接點, 當相關的相關資料符合所儲存的條件相關 。

產品螢幕
生命周期规则使用周期規則由优先级來評估; 第一個相配規則會改變接觸相關相關的相關階段.生命周期规则工作區域實用7RUNS有夜相去相去PRIORITY第一位LIVE WORKSPACE VIEW有铅→有條件有分 60 和最近的活动优先性 100有條件→有客人已存在買入事件优先性 90有客人→有風險了沒有活性 60 天优先性 70有風險了→有客人新買入或回覆优先性 601PICK STAGES从去去去取出2DEFINE FILTER分區型( C) JSON3ORDER RULES第一局取胜
使用周期規則由优先级來評估; 第一個相配規則會改變接觸相關相關的相關階段.

有源碼相關相關站、目的相關接點相關地、正用旗子相關分類相關通訊器相關。

規則相通相通。 在同一跑中要避免有兩條能以相對方向移動同樣接觸的活性規則; 在啟動前先用分區去測試滤波器 。

CMM (CRM)

CRM 活性流

工作相關相關的相關活動相接相關同客戶相關及相關操作相關事件相關,

產品螢幕
CRM活性有相關的活性流能相接聊天、入場券、電子郵件、網頁、轉換等相關事由相接過的過程和相關相接相接的相關事件。CRM活性工作區域二. 事件2,804CUSTOMERS1,126ANOMALIES14LIVE WORKSPACE VIEW有聊天了[email protected] · AI:就現在有出票了T-1048 通收4. m有入站事件subscription.upgraded12米改划有秩序 7788 · £14919: 001FILTER二. 事件和客戶2OPEN CONTEXT跳入紀錄3PAGE RESULTS有限度地繼續調查
有相關的活性流能相接聊天、入場券、電子郵件、網頁、轉換等相關事由相接過的過程和相關相接相接的相關事件。

按事件類型、日期、接觸或客戶狀態 (包括付費用客戶) 過過过滤。 种子是已記錄活性被讀取的模型; 它不取代出自票、相談、交易或接通器紀錄。 在采取敏感動作前先開啟相連的紀錄 。

CMM (CRM)

工作流程

工作流程回應一項事件并執行一系列命令的動作,

產品螢幕
工作流程有工作流程跑出它的扳機、已完成的動作等等相延后再走下一步。工作流程工作區域實用9RUNNING42有故障1LIVE WORKSPACE VIEW起點contact.created起步步入1發出歡迎電子郵件有作延后等等2天在等步入2建立銷售工作下一頁1CHOOSE TRIGGER事件起跑2ORDER STEPS行動和延遲3MONITOR在克通回放
有工作流程跑出它的扳機、已完成的動作等等相延后再走下一步。

由選擇扳機、 相加等單位并啟用而建立工作流程。 延遲被儲存, 而不會被瀏覽器所持有; 相關克龍會恢復應有的工作流程跑取 。

已建入的起步樣本包括: 在簽名后歡迎、 后購取謝意及演示確認等。 在大范围啟用前先將樣本切入, 取而代之以收件人/ 內容再用可控紀錄做測試 。

設計一元化的動作。 重試中不得傳出相複的移取錢的要求或建立相複的记录 。

支助

有入場券

有相關部門、優先權、 SLA 目標、附件、內部音符和通話接觸等。OpsIQ 有通訊錄取、聊天相接相接、接通相接等功能; API.

有入場券
入站明细有相關權限(优先權、部門、SLA、狀態等)、對話線、人工智能的草稿及退款等動作的入場券。入場券工作區域T-_12345优先有收費SLA3h 相差12米狀態開啟有兩次被起訴了6月訂閱3.AI (出自:"相克")已確認相複有收費 就收退款了AI 答复草稿退款1THREADED完整對話+ 備註2SLA & ROUTING优先取出分解取出定時器3AI DRAFT为您寫回覆
每張票都有其優先權 部門SLA有分時器和通訊線 AI可以為你起草回覆

有票怎么走?

1
有出票了

有位客戶用電子郵件、聊天升級、入站票或管理員建立通訊。 入站單會有獨有的ID( 如: T-12345).

2
曲線

AI讀取主題和正體, 指定优先( Low/ Normal/ High/ 緊急), 建議分出一個部門并探測出情感。 如果能被分類, 就自動地發生了這種事 。

3
答复

有位代理開出票面, 讀取上下文( 客戶相關相關檔案、 連接器所提供平台資料、 有前回通票等)并寫出回覆。 AI能起草回覆, 有代理在寄出前會編輯回覆 。

4
關閉

有問題后, 代理商會關閉出票。 有通知需要接通。 如果收站后有回覆, 就自動重新開出出出入票 。

平面相關動作

更換部門

取出入站口( 如由將軍到比林等) 有用地被錯取出站口 。

指定代理

有名的特務在"我的入場券"取景地看出出出票了

新增內部備註

有相關的資訊被取出。 有相當多的資源被取入內地。 有同樣的資金被取自相關相關資訊, 有同時也相關同同樣相關; 有同分相關之類相關事由被取用相關內容相關: 調查結果、退款原因、工程上下文、前期承諾等。

合并入票

有同一個客戶的相接回票。 相接的入票題會得到 [MERGED] 標籤。 兩張入票所發出的信息都保存在活生生的入站票上 。

有被擊出的答复

插入已寫回覆樣本。 variables like {{customer_name}} 和 {{ticket_id}} 有自動被取代。

重寫( A)

由 AI 改善您的回覆草案: 調整音調、 縮短/ 長長、 修訂語法或翻譯。 在傳送前您要先再審查結果 。

變更优先

設定为 Low, Normal, high, 或 Emergency。 优先级會影響 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.

二. 各部

在設定中建立相關部門 (Chickets) 相關分類。 通常分類:通訊、通訊取款、技術取款接通、銷售、虐待、入住等。 每個分類可以有相當相當自動回復規則、 AI 知識和團隊任務等相當多的相關相關單位 。

有助的回答

在設定 > 入選單 > Canned回應中建立可再用回應樣本。 良好回應包括:

有可采回應樣本的示例
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}}

合一出票

有 名 人 有 有 有 二 二 三 三 三 二 三 二 二 二 四 三 三 四 三 二 四 二 三 四 二 二 一 二 三 一 二 二 次 有同樣的問題 就 可 收起相接 。 有 一 二 一 一 二 四 四 三 四 四 二 四 一 三 三 一 三 二 一 三 四 一 二 六 三 三 五 三 三 十 三 三 六 三 二一 三 三 分 三 三 七 三 三

有連接的平台跟隨了合并. 在相接站台上出票( C)WHMCS, Zendesk在所收存的月台上, 有一通被收錄到的相關訊息和回覆。 在月台中, 有一張被收存了的相機被收录到被收取的月臺上, 就被收收取了回覆 。 (例如: 在月臺中) 有一張被收獲的相机被收發到相機上去取取回相機的相接相機已被收回了 。 WHMCS(收起: OpsIQ 有同樣的入場券.

优先和 SLA

非緊要問題、 功能要求和一般回應。 第一個回應: 24 有好幾小時了

普通

第一個回應: 8有好幾小時了

影響了客戶的生意 第一個回應是: 4有好幾小時了

有急事

有服務被打倒了 有安全出事 有數據被弄丟 有收費出錯 有目標 第一個回應: 1一小時后出事了

在「等取自客戶」等取出出出票后, SLA 定時器即起起起算。 如果 SLAM 目標被錯過, 就突出出出取出票并隨時提升出票位 。

有內部筆記嗎?+

有內部筆記, 完全只由人員出面; 在客戶入場券、電子郵件或任何相關的相關相關地表上都不會出面。

有被關閉的入場券被回復后會出出事?+

入站票自動重啟并回歸正行排隊。 已通知出站隊要回覆 。

有能阻止再回覆的通訊嗎?+

有。 使用鎖定串列選項可以阻止客戶和AI再加入新的回覆。 有助於解決爭議或關閉調查 。

支助

服務工作室: SLA、狀態流和質量

您所支援操作的行為控制室: SLA 有升級梯子、 工作時數行事曆、 被執行狀態相通、 CSAT 設定和企業功能開關等相關相關政策。 在入站口中開啟它( 在操作列中用服務工作室按鈕) 。

SLA政策

每張新票都得到最相關的首回和解答截止日期: 部門+优先權會比出自部門、优先權、預設更優先。 在一票被暫停或被搁置時, 截止日期會自動暫停 。

梯度

有一項政策可以定出最多有六步:例如:警告受让人: 75% 在視窗中,提醒管理員 100%,重新指派到 150% 每出一票 就一站一站出火

二. 工作时间和日程

有時, SLA鐘只會在工作時間被燒出, 因此週五晚上開出一通票并不會被星期六所破壞。 取名的曆表(時間區、日、活、放假等)可以被附加到不同地區的單一政策上。

狀態流量

有限制管理員可能要做哪些狀態變更的資訊基质, 有 Zendesk 樣式的預置。 自動化、入站電子郵件和由客戶出站的票面回覆都免去, 因此嚴格的資相關基质永遠不能堵塞通路。 有時需要先得到簽收再關閉 。

核准

有名的批發人或任何全經理人以備註的方式決定; 要求者永遠不能批准自己所要的。 在批准前, 在收件箱上會被放出一面標籤相當高的旗子。

入站相關

有相關、相複、父母/孩子或被封鎖; 有新連接的入站票被分拆回覆(合并倒數取回, 不用郵件傳送客戶); 有應用通知的入住入站入站出站后可隨機收取CC追蹤者電子郵件地址。

有活的收件箱和相撞

有了即時收件箱, 有新入場券和回覆被代理商用相隔一秒之多的時間取出。 在一通入場證中, 有代理員可以看到其他人正在收看并得到警示旗號, 有隊友已寫出回覆。 一擊的Claim 按鈕可以把出場券分給自己 。

有人工智能的通路

在 AI 分類相關的訊號上可以符合跑道規則: 优先性、分類、情感和相關相關風險等, 此外再從您出道口所要表打入自訂字段值。 在啟用此功能前, 使用這些條件的規則都保持休想 。

💡
有一艘船被關了 在服務工作室接通了一通→質量自動是選入; 在升級前放出它們能保持同樣的行為 。
有客人能再開一出被關的入場券 就因為我的基礎禁止被關了?→有嗎?+

有時也想出出一項相關政策, 以至嚴格政策無法把客戶關出或打斷通訊管道。

有SLA有梯子可以取代舊有的突破動作嗎?+

有一項被一項違法動作所儲存出的政策, 它能保持平靜地運作。 在您定義步數的地方, 有梯子可以取代單一動作 。

支助

有自動重複出票和升票

有相關功能可自動回復, 以讓人工智能自動接通新入場券。 在人工智能發現相關相關需要后, Escalation 便會把入場證交到不同的地區去取出。

自動重複( A)
工單自動回覆有:新票、兩分鐘后回覆、AI自知及上下文接回,自動重複( A)工作區域有新票到后再去取出新票任何來源延后2 minAI回函KB +上下文有送出或草稿如果在延后期有人回覆 就被取消自動回復 有本事可以先去到另一個部門去取回回回信1DELAYHumans get first chance2AI REPLIES从 KB + 上下文3OR ESCALATE三. 按意向排列的路线
有時會有相關的回覆, 有時由您發出或排隊作草稿。

有自動重複的功能

1
有出票了

有新票由任何來源所建立 (電子郵件、聊天、出入口等) API).

2
排程回覆

OpsIQ 等已設定的延遲 (default: 2有機會先回應

3
第一個回覆取出

如果在延后期有人類代理回覆被取消, 則自動回覆。 如果沒有, AI會產生回覆 。

4
產生并傳出

AI讀取票單、檢查知識基礎、連接器上下文和客戶歷史等,再寫出回覆。回覆被傳出(或被排成草稿以作回覆,取自設定相關地點)。

二. 升级如何进行

1
配置部門

有相關的相關事由由相關部門出面,

2
就把票分出去取出去

在自動回復前, AI分別出票意向:收費、技術、退款、虐待等。

3
有需要就走

如果票意向相當於升級部門 就被取出出票了 有內部的條件能解釋出原因

4
在新聲音中產生( E)

由目的地部門的知識和人工智能所出發出回應。

設定參考

自動重複已啟用

有主開關了 有自動回復的AI出票

有被允許的部門

有相關相關的相關事由相關部門出面取出。

延后

在 AI (以秒為單位)回覆前等多長時間。 預設: 120 秒( R)2分后放入去取取取出取取回取回回取取入取回所取取收取取的取回相.0有即時回覆

延遲行程

有時會有不同時間被拖后放出活口去取出相當多的活口相接相接地道站.

在管理者回覆中停止( C)

如果有人類代理先回覆 就去掉自動重複取回的功能 。 預設: 在接取取取回回回覆中 。

已啟用升級

根据出票意向自動啟用相關區分路由.

升級部

有哪一行可以升入入入站出站

升級狀態

在升起時要設定什麼狀態( 如: 開啟, 等 ) 。

升級附注

有否加入一項內部備註,以解釋相關事由?

有電子郵件出票

从電子郵件( 有信箱投票或 MX 接通的送出) 所產生的入站票都遵循同樣自動重複和相關分解規則。 AI回覆被以電子信件回應方式傳送到客戶。 如果已設定, Email 草稿會被送入草稿排隊去取取回回回 。

有需要自動回復嗎?+

在你以全面收費的知識去訓練人工智能并做過徹底的測試后, 我們才建議自動收費取出,

如果人工智能答錯了呢?+

如果客戶回應說答案是錯誤的,人工代理人就應該介入。 查看 AI 歷史以了解為何 AI 給出了錯誤答案,然後更新知識庫或 AI 訓練以防止再次發生。

在自動复制被寄出前能再看看嗎?+

有, 在送出前把送出模式放入"草稿"而不要"自動取出"自訂取出。自動重複草稿會被放入草稿排行中以接受人文審查 。

支助

有入站口入站

有入站入站的出站口可以提供入站相關相關的入站口。客戶可以查看出站票并建立新的出站門口,回覆出站后可以不入站出站. OpsIQ 管取.

如何運作
有入站口入站有相關網站相接相關的支援入口,yoursite.com/support支助中心新票你的出道口#1042 * 退款開啟#1038 建立相助已确定#1031 * 发票副本待取1EMBED添加到任何站點2SELF-SERVE有客人看出票了3NO LOGIN有安全地接通了身份
有入站口入站

三道入地口味

在內嵌入

在您頁面上放入一通通訊口。 通訊門能取出通訊道的通訊相關通訊所的通信口 。

浮起元件

在面板上顯示可開啟票券出入口的浮動按鈕。 類似聊天元件 。

有認證

有簽名的身份證件 有客人只看自己的入場券

安裝

有入住的出站和聊天
<!-- 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.

身份代碼產生

For authenticated mode, your server signs a short-lived token with the site secret. This token tells OpsIQ who the customer is so they see only their own tickets. It is a standard HS256 JWT: any JWT library works. The secret never goes into a page.

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=
節點. 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 });
}

元件特性

入站清單

有搜尋的狀態被过滤清單 有"等您"的亮出旗下入場券被出道了

有串起的對話

有相關通訊、附件和時刻圖的相關觀點。

草稿自動儲存

有相關的相關資料被自動保存出,

活地投票

有新回應的相關選舉 12 二分.

解析/再重開

有一擊就能解決或再開出自己的入場券了.

有內部人員的筆記從不向入住地的客戶展示 這是很嚴格的安全分界
支助

聊天收件箱

Chat Inbox 是您團隊管理客戶直播聊天的地方。 它顯示了活性聊天、被指派的對話、 AI 處理的聊天和相關歷史 。

聊天收件箱
聊天收件箱三相間代理聊天收件箱:對話清單、用AI草稿芯片活口對話以及訪客/CRM上下文面板等.聊天收件箱工作區域JD: 出自:有我的命令?有相相相去相去.有收費問題RT 有相關相關的相關通訊麗塔有人工智能接通了有我的命令?今天被運出 . UPSAI草案已就绪接回...觀察員Jane Doe美國克羅姆克3已過的訂單LTV (LTV) $480CMM (CRM)相關相關站: 客戶1UNIFIED有活聊了就去取出相干相接相接同分相接2CONTEXT訪客+CRM面板3AI ASSIST草稿重寫( R)
One inbox for every live chat, conversation list, the thread with AI draft on tap, and full visitor + CRM context.

管理對話

正在聊天

正在討論中。 綠點=客戶正在打入或正在使用中 。

有人工智能操作

有人工智能接觸的對話 你可以一一地點起"Join"接住他

有分到我

有你特地被指派去的談話

在等

有相談相談 有客人等回應

歸檔

有關鍵字可以搜尋到相關事由、日期和客戶所提供相關相關訊息

从人工智能到人手

當你接了AI的一通話后 就遵守這三道道道:

1
就你個人打個招呼去取出相當好相好相

有名有名地自介出 "你好,我是相助隊的莎拉"

2
參考背景

有時候你已經去取了"我看你問了下命令"了

3
设定期望

有話就跟客人說 "我正在調查此事" "再等一會再有答案"

有相關相關的相關接相關

在每次對話中用 AI 取回相關的相關回應。 相關相關同時, 有 AI 有 出回應相關 。 有 有 有 人能回應作回應; 有 有相關接相關而回應之事 。

出站模式/出站

在設定中設定工作時間。 在外出工作時間, AI可以: (A) :1(一) 接回客人;2(出自"外出"消息并建立后續的入場券,或:3完全禁用聊天并顯示出票單。 選擇符合您所支援模式的行為 。

有話要說

1
有相好相好同住相好

有同樣的相關人情相關 有同感 就承認他們有同感而不必被防守

2
收集相關事實

在回覆前, 收集相關相關資訊:訂單細節、帳號狀態、前出票等。

3
早日升級

有法相威脅、虐待或安全等事由被升入高級團隊而更想自己去處理。

有團隊聊天嗎? (代理特工)+

有 有 有 使用內部通訊錄取相關通訊通訊 有 有相關相關的通訊相關訊息

有話就說出事了又能怎樣?+

有話可說被移到檔案庫去。 如果客戶再傳出一則新訊息, 就將建立一則新的對話 。

支助

訊息頻道

因此相關資訊的客戶已用同一個收件箱接通您所見的網站聊天,

Every channel behaves identically once connected: a customer message becomes a conversation in the Chat Inbox, your AI assistant answers it using the same knowledge and instructions as your website chat, and any agent can take over. Nothing about your AI needs configuring per channel.

相接到底像什么?

相簿信使( I)

一分一秒。 開啟連接器→Facebook Messent & Instagram DM, 點擊 Connect, 在管理您頁面的Facebook帳號上簽名并選擇頁面。 在您的頁面有Instag拉姆專業帳號相連接時, Insta克拉姆會隨之而来 。

WhatsApp

一擊提供商提供它的地方: 開啟通訊接頭并使用 Connect WhatsApp, 然后跟隨 Meta 有指導的簽名取取或建立您的WhatSApp Business 編號。 否則就貼上任意一個的證件 。20有出入口了.

電子郵件

二分鐘。 訊息@ BotFather in Telegram, send/newbot,選擇以" Bot" 为結尾的名稱和用戶名, 將它所給你的符號貼入通訊相接器中 。OpsIQ在您名下登入網頁 。

建立信件API在發展者. line. biz 的頻道上貼上頻道秘密和存取符號后再复制 webhookURL顯示于OpsIQ接通了自動回復器 就去掉自動收音機

短消息

在信使中心中加入一個提供商(Twilio, Vonage, Termii等)并附其名單和發件人號碼.

每個接通器都顯示自己在抽屉裡的分步指令, 包括要複製的和要在哪裡。 您從不需要開發者提供一擊選取權的認證 。

有頻道被打動了

正在連接頻道并沒有啟動它。去取 設定值 → 客戶端聊天 → 高级 → 訊息頻道, switch on the master toggle and then the individual channel. Each channel has its own AI auto-reply switch, so you can pilot on one before opening the rest.

1
連接頻道

在接通器中取用接通取自的抽屉裡的指示.

2
測試接觸

有話要說 有什麼事就告訴你出事了

3
開啟訊息通道

設定值→客戶端聊天→進取了 就接通了主開關再接通頻道

4
就快去傳口信了

從另一個帳號中傳出您所寫的頁面、 號碼或相關單位。 它應該在幾秒內被出現到 Chat Inbox并得到 AI 回覆 。

回覆視窗

有訊息平台限制商業在客戶寫作后回覆相關時間.OpsIQ在每次對話中顯示所剩時間并強取規則 。

WhatsApp

24 hours from the customer's last message. After that you may only send an approved template, which you configure in the same Advanced tab.

信使( I)

24 hours for normal replies; agents may answer up to 7 days later under Meta's human-agent allowance.

有通訊錄取 有通通訊收音機 有通話

沒有平台所设置的視窗 。

⚠️
如果回覆因視窗關閉而失敗, 就顯示出原因。 這是平台規則,不是OpsIQ限制。

共同的問題

有客人看到有AI接通了?+

Only if you tell them. The reply comes from your Page, number or bot exactly as a human reply would. Your AI instructions control the tone and whether it identifies itself.

有能接取中正相接者?+

有 在 Chat 信箱中開啟相關話題并點擊 JU. 有 AI 就停止了, 你打入后, 客戶會看到一串接通的線索被放入到他們的一邊去.

如果我斷了頻道呢?+

在連接器上使用斷接。 信件歷史被保留; 有新信件已停止到達, 而平台被傳出已停止 。

有兩個工作區能用同樣的相簿頁面?+

第 一 頁 有 一 個 工作 站 。 在其它地區接通它會被移動到其他地區去, 第 一 二 工作站就不再接通信件了, 因此 斷接 是故意的 而不是再接通到別處去 。 @ info: tooltip

支助

真正的聊天對話

這些例子顯示了一個受過良好訓練的客戶AI應如何去處理相當相當的情況。 用它們去測試你的人工智能訓練并找出相關漏洞 。

10 有話可說; 有相關相關的例

1。回顧相關的客戶正在問取出什么命令

假想:
有客人:你好,我下定了單3有好幾天了,還沒接通任何通航通知.5523.
所取之道:

AI应当: (.)1查取命令 #ORD --5523 (取自相接器. )2(如果有,就提供目前的狀態和追蹤信息。 ()3如果命令被延后, 請承認已延后并提供估算的時間 。 ()4如果連接器沒有通航狀態, 就不要建立通航状态 。

2. 有前景地想了解出价

假想:
有需要嗎?您提供年度收費?
所取之道:

AI应当: (.)1(由知識基底以目前的價格作答。 )2(以月收和年收相差.3如果答案不在知識基礎上 就說出答案并出面把答案和銷售相連接 ("通訊通訊")4(b) 避免搞出不在知识库中的定价。

3有憤怒的客戶要求退款

假想:
有好一回想取出我的錢去取回我
所取之道:

AI应当: (.)1(平靜地承認挫折。 )2(需要訂單號碼或帳號電子郵件)3(一)解釋退款流程.4(一)建立支持票或升格为人員.5(不要保證退款 有需要得到人類批准)

4. 雙打邊緣花花公子

假想:
有兩起指控: $29.99.
所取之道:

AI应当: (.)1(正末后出所出.2(收起相關細節(電子郵件、指控日期)。3(一) 解釋收費需要由人來審查。4(以相關細節出票)5(把高分放在优先位置上)

5. 多語言用戶

假想:
有好相當好相去相去的相去不遠?
所取之道:

AI应当: (.)1(如果被支持的話)用客戶的語言回應。 ((%)2(由知識基礎提供) (由通訊所提供)3如果不支持此語言, 就用預設的語言回應并提到可以取用哪些語言 。

6.后相接相接

假想:
有誰在嗎 有我的帳戶需要幫助
所取之道:

AI应当: (.)1(如果被配置到相隔一小時后AI上,就回應并協助. (A.2如果下班后能出票 就說"我們的隊伍已下線了" 我已出票接通了您 有誰會在工作時間再接通"3(提供出票號碼。)

7. 采购前相對

假想:
(相當於X相當相當于X相關相當之類的出品? )
所取之道:

AI应当: (.)1(以實際上描述出你的產品的優勢. )2(不要說出相爭者的壞話. )3(如果有相對相關相關的頁面,可連接到它。 )4如果客戶問起你沒有的特徵 就說實話

8有客人想被提議了

假想:
有一家小的網上商店 有相關的 100 有哪個計劃能適合我?
所取之道:

AI应当: (.)1(例如,什么是最重要的地點)。2(以知識相接相接而后出取出出一分相接之相接. )3解釋出為什麼這個計劃能適合他們需要 ("活"出自"活生生"出於"活地"出行"出走"活活"入出"活取出"出出行相去"出活".4提到可以先做更小的計劃再再升級.

9有客人想得到一分折扣

假想:
有客人:我在网上看到您所提供 50% 有折扣能給我一塊嗎?
所取之道:

AI应当: (.)1(如果有的話)用心地解釋一下目前的升級2(不要建立或承諾不是在知識基礎內的折扣。 )3如果客戶持續出賣 就提供他們和銷售團隊相接

10。需要有功能的相關人員

假想:
客戶: 我怎么出出我的資料? 我找不到出出出按鈕了 。
所取之道:

AI应当: (.)1(提供由知识库分步指示。 )2包含准确的頁面路由和按鍵位置 ()3如果特性需要有具体的計劃,就叫出去. ("相克":"相相克取出"相接".4如果功能不存在,要誠實地提出替代方案。

支助

有聊天接觸和相接相接

當一場直播需要真正的人相時,AI會回答兩個問題:由哪個團隊擁有這段對話, 而由誰來告訴您。 兩者都被設定在設定、客戶聊天、支援流程等項目下,由AI通路由部門出發 。

選擇AI可能用到的分類

有兩個相關的盒子是白名單, 有的被移到右邊去取取入入入出。 有的就只有相關部可以通路了。 有的是被移入出入入取入出出出入出取出入取出出取入取取出取取取回入入者入出收取入所取入的入取。 有時被移出取到取出自自相關地區去取出相關相關分取出。 在相關地方取出所取出的部分被取出而取出 出取回取出可取出收入入所收取出之入取的入入中取出所有相相相關的地方。 有: 有的入出相接相關于相關事相關同相關; 有的出相通相關而有相關外接相通的相關道相通通相通取入相通用相通由相通口相通, 有相通入相相通而相通

💡
如果沒有部門被啟用的話 OpsIQ 它會回想出出出自所想出的所有部門去取回的路由。

有收受升級的人

有時人工智能會把聊天弄得一團糟, OpsIQ 有時您會在一行人和一行分局的頁面上搞出這份名單 就跟隨了出票和聊天相接相接

部門出員

部門所接通的每個正在執行的主管都收到自有的相簿。被暫停和已關閉的帳戶被跳出去取出 。

主管事

有被使用而沒有隊員被附屬 因此升級仍然被到某人。

有被關入的

沒有辦法送達,路由器把那個部門標記成紅色,人工智慧並不告訴訪客有人通知了。

⚠️
有時也將被收取入門票相對, 有時會被升級回通到新入門口去取取回新入站票而不會接通人。

有能打通的部門

有一個部門能打出一團糟的標記, 它能接觸到AI所不能自信地去的聊天,

1
有通訊已取勝

有的收費用戶有:收費入場; 有的有:有: 有:有出價入場取出; 有: 有出價出場;有:出價取出入入入場。 有:出息入場:有的是出價收費;有的是:有地:有入場出場出價;有的:有的出價被出價作入場了;有地點出價,有:通貨入場入場. 有:

2
接著做相關分類

如果關鍵字沒有取決, 就由模型去讀取相談相談并取自被啟用相關相關的相關部門。

3
就被一一抓住了

有活活活被打倒了 就只有被打得一團糟了

4
有出賣警衛

如果通通都是銷售部門 有訪客沒有收購信號的話 OpsIQ 因此一般相關相關的問題并不會在銷售中累积。

有客人在說出什么

如果電子郵件被升級出, AI會告訴訪客已被通知。 如果它出不去, 就叫他們去聊天取出正經話, 它不會說沒有發出電子信件就已通知了人。

有位相關人士表示"沒人能通知"+

沒人被附帶到 它上。 Open Team and Departments, 附加起動的管理員以重新載入設定頁面。 面板已讀取了活的 。

有能讓聊天更上一层樓去別的地方嗎?+

有 有 有 一 個 部 所 有 的 自訂 地址 仍 有 被 重 在 出 出自 出入 出出自 有 有 二 有 二 相相相接 有 二相相通 有 二同相通相通 相通 就 有 一相相 相接相通

為什麼我被一一擊而退?+

如果有 就去取出收購信號了 OpsIQ 有目的地通向支援或技術部門

支助

郵件信箱和草稿

OpsIQ 有通訊信箱可以自動從入郵件中建立出票并以電子郵件方式寄出回覆。 它也提供由 AI 所起草的回覆以作人文審查用 。

電子郵件
有通到通訊的郵件一 二 二 二 三 二 三 三 三 二 二 四 二 三 四 三 三 四 二 二 IMAP 在左邊的郵箱中把接通的電子郵件放入一通有線的票上,電子郵件工作區域[email protected] · IMAP退款要求[email protected]無法登入[email protected]有发票副本[email protected]有出票了!1042从電子郵件中取出 :有回所想的回所要收取的回相去相去取回相出相去同去相取相去之地有相重的充電...AI草案重複回覆( S)1INGESTIMAP 轉接到( S)2TO TICKETS自動串起3AI DRAFTS供审查的答复
把電子郵件放上去 IMAP 就由人工智能去起草回覆,

正在連接信箱中

议定书

IMAP (多數提供商), Gmail API (Google 工作區),或 Microsoft Graph (外觀) 365).

需要設定

主机、 端口、 加密 (M)SSL/TLS),使用者名,密碼或應用程式口令,資料夾(通常是INBOX).

部門地圖

把信箱映射到售票所去取回郵件去取取回 [email protected] 在"相助"部出票.

Gmail 設定( 分步走 )

1
開啟2-分步檢查

在 Google 帳號上取出 > 安全性 > 2-快去核實并啟用它

2
建立 App 密碼

取入 Google 帳號 > safety > App 密碼。 請選擇 "Mail" 與" Other ()" (% 1)OpsIQ()). 复制: 16 有相關口令了.

3
入入 OpsIQ

到 Email > 信箱 > 添加. set host: imap.gmail.com,端口: 993,加密: SSL,用戶名: [email protected] 口令:應用程式口令.

4
測試

點擊測試接觸。 如果成功, OpsIQ 在所設定的相隔地區中, 有新郵件可開始投票 。

二. 展望 365 設定

1
檢查 IMAP 有被啟用

在 Outlook 設定值中 > Mail > s同步電子郵件, 确保 IMAP 已啟用。

2
使用相關程式密碼或現代的 autwitter

如果 MFA 被啟用, 就建立應用程式口令。 否則就使用您所持的正規口令 。

3
入入 OpsIQ

主機 : outlook.office365.com,端口: 993,加密: SSL,用戶名: [email protected].

cPanel 網頁郵件設定

1
查找 IMAP 設定值

在 cPanel > Email 帳號, 按下您的電子郵件帳號 IMAP 設定值。

2
入入 OpsIQ

主機: 通常 mail.yourdomain.com 或您的伺服器主機名, 連接埠: 993 (SSL)或 143 (STARTLS),用戶名:通通電子地址.

AI 電子郵件草稿

在自動重複被設定到" Draft" 模式后, AI 會產生在 Draws 排行表中出現的回覆草稿。 您可以:

复核

有需要就去取取取出相關資料

編輯

在送出前先變更文字、 音調或內容 。

傳送

批准草案并發出回電回信。

丟棄

如果不相宜,就去掉草案。

自動端端

如果置信度已夠高而自動傳出已啟用, 在可配置的延后後會自動送出草稿 。

有那麼多人會被關入地獄去取回電子郵件?+

檢查: (A)1) 信箱是否相接而健康? 在 Email > 郵箱中尋找綠色狀態 (% 1) 。2有克隆活需要克隆 (通訊投票需要克龍活口)3是否被过滤或移入除INBOX外的資料夾?

有多個信箱可以用嗎?+

有,可以把每個信箱分到不同的部門去 [email protected] 有去相助地道出所行相去相去. [email protected] 有去比林了.

支助

(CSAT) (克格勃克克克)

CSAT能衡量出票和聊天滿意,

產品螢幕
二. 客户满意度CSAT頁面相關分數卡、取笑者追蹤、評論、分解和代理,二. 客户满意度工作區域答复386AVERAGE4.6POSITIVE91%LIVE WORKSPACE VIEW去除器跟蹤12 有分的回覆1–2复核票房調查已送出 24h 在收尾后自動聊天回應AI. 第 二 章 4.5 人; 4.7相對代理檢視有分數和回應數有教練了1WATCH AVERAGE有出息了 就一分也行2FOLLOW DETRACTORS讀取註解3COMPARE FAIRLYAI和人
CSAT頁面相關分數卡、取笑者追蹤、評論、分解和代理,

(平起平起地出站出站) 24 有正面回應是分數:4或5。用起贬低作用的队列來分辨出數1或2在接通相關人前先去讀取出票/談話。

有相關相關的相關回應被分別去報導。 低樣取自相關分類的相當分量, 也不該被分類取自於代理或模型等分相 。

支助

團隊電子郵件收音

有權使用 Email 平台頁面可以讓經營者向所有正在運作的代理、所選取的代理或部門發出一則一次性訊息并回應傳出歷史。

產品螢幕
電子郵件平台有相關報導: 相關事由由於相關事件,電子郵件平台工作區域回收站12DELIVERED11有故障1LIVE WORKSPACE VIEW有收聽者所有活性代理已選擇主題七月相支持旋轉就緒信件附表和上期附注就緒歷史上一回收音機和收音机查看1CHOOSE PEOPLE全部被選取出或入隊2WRITE CLEARLY主旨和信件3REVIEW HISTORY確認結果
有相關報導: 相關事由由於相關事件,

此頁面是用于內部操作訊息, 而不是客戶行銷。 請選擇最最小的正確取取者、 預覽取用名和地址再傳出。 傳送會使用已設定的外出電子郵件路由并記錄結果 。

支助

信箱、快递和入信電子郵件

2. 如何配置 OpsIQ 發出電子郵件, 將入境信件轉成入票并證明已提供送出域名 。

產品螢幕
電子郵件設定值有相關的通訊相關相關地點, 有身份相關、信箱取用相關可提供性檢查相關及試取電子郵件相關。電子郵件設定值工作區域(外出)SMTPMAILBOXES3有通LIVE WORKSPACE VIEW首選接線符SMTP / 提供者連接器已配置从身份取出Support <[email protected]>就緒IMAP 郵箱[email protected] · INBOX:有投票可交付性SPF- DKIM- DMARC (德文)有通1CHOOSE OUTBOUND連接器或 SMTP2CONNECT INBOXIMAP 或管子3科技傳出并驗證
有相關的通訊相關相關地點, 有身份相關、信箱取用相關可提供性檢查相關及試取電子郵件相關。

出局電子郵件

完全管理員可以選擇首選的電子郵件連接器; OpsIQ 倒回已設定 SMTP 在相當相當地提供信件。 設定取自名稱/ 地址的可辨識值, 發出測試并檢查 24 有活活活出相克了 有活出能活出出相去相克相克的活活

收信箱

一 二 二 二 三 二 三 三 三 二 二 四 二 三 四 三 三 四 二 二 IMAP 信箱需要姓名、電子郵件地址、目標部門、主機、端口、安全模式、用戶名、密碼、資料夾、投票狀態和憑證驗證選擇等。用相關的通訊錄可以被取回。 現在就投票 在等克倫出事前去檢查吞食量

即時接通

在同一個伺服器上, 有通訊管可以直接傳出生於 RFC822 的訊息。 有通關的郵件伺服機可以使用它的符號 POST 傳入被保護的入站端點。 有兩條路徑都輸入同樣的去數、 線接和取票管道 。

可交付性

SPF/ DKIM/ DMARC 檢查是從域內被設定的通訊證據。 綠色檢查不保證收件箱放入, 但是在傳出出出信件前需要先定下失敗 。

支助

相關口工作室

支援 Portal Studio 在不需要外出影像資訊下, 設計并公佈取用相關相關支援相關經驗。

產品螢幕
相關口工作室取用相關相關的相關訊息相關功能: CSS 有控制了 Control.相關口工作室工作區域TEMPLATEModern序言桌面草案LIVE WORKSPACE VIEW主題有花彩和打字編輯通航有知識 有入場券 有助手 有相關事務 有相當多的相關人員 有相通相通取出相通通相接相通同通相相通有相通可通相編輯入站表字段、路由和副本編輯出版驗證并活出复核1CHOOSE TEMPLATE从结构起2PREVIEW SIZES桌面到可動3PUBLISH SAFELY重新審查再放出
取用相關相關的相關訊息相關功能: CSS 有控制了 Control.

以樣本作起點,再設定主題、佈局、通訊、知識搜尋、出票表、助手、腳步、品牌、出入、自訂等 CSS 和一般設定值相接相接。 在出行前預覽桌面、平板和可動相接的相接方式。

支助

二. 知识差距

有相關資訊能提供相關相關資料,

產品螢幕
二. 知识差距有數位相關人士被取出相關資料,二. 知识差距工作區域OPEN GAPS28REPEATED9RESOLVED116LIVE WORKSPACE VIEW移民限制有被問到 14 倍周末支助有被問到8倍退款時間有被問到6倍API 地區有被問到3倍1REVIEW QUESTION有相談相談的上下文2CHOOSE FIX第 二 章 有 急 作3RESOLVE檢查下一個答案
有數位相關人士被取出相關資料,

開啟空白以讀取相關對話, 然後選擇正確的定義: 更新已存在的文章、 新增知識文章、 增加商業事實、 校正接通器資料或變更相關的相關指令。 在評估或實驗回應可接受回應后再標出它所解答的分類 。

支助

狀態頁面管理

The status administration page communicates service health and incidents using components, current states and updates.

產品螢幕
身份管理狀態管理會列出相關相關元件和事件, 因此操作員可以公布清晰而有時標示的服務資訊.身份管理工作區域OVERALL運營构成部分7INCIDENTS1LIVE WORKSPACE VIEW网站運營有綠API有失常的性能看好電子郵件吞取運營有綠目前的事件API 2. 延迟调查開啟1UPDATE COMPONENT選擇清除狀態2POST INCIDENT有時戳的更新3RESOLVE以摘要相關
狀態管理會列出相關相關元件和事件, 因此操作員可以公布清晰而有時標示的服務資訊.

使用相應的元件狀態。 如果出事了被客戶所影響, 就先出出初始通知, 在事實變更后加入有時戳的更新, 並以簡快的解析摘要收尾 。 不要用狀態頁面做內部除錯日志; 敏感的分解屬于 OpsIQ 和伺服器紀錄。

AI (出自:"相克")

有你的人工智能了

AI配置是您選擇您的 AI 提供商、 模型和成本控制的地方 。OpsIQ 支援多個提供者: Claude (Anthropic(一) GPT-4o (OpenAI), Gemini (google)和克羅克 (xAI)。您可以使用自有的 API 按鍵 (A)BYOK 在你的計劃上可以提供 或管理AI.

建立AI
AI 配置有 AI 設定面板: 有 管理- AI. / BYOK 提供商取取取, 有模型取取出, 有每月的代碼計算表等 。AI 配置工作區域AI 配置提供方管理的 AI您的鑰匙( Y)BYOK)型号有平衡相地相地分出相地取相地.月人工智能預算62%1TWO MODES管理人工智能或 BYOK2PICK A MODEL二相距相距3BUDGETS收件封顶控制( C)
選擇托管 AI 或您自己的密鑰,選擇速度與深度的模型,並以標誌性預算限制每月支出。

選擇提供商

Claude (克勞德)Anthropic)

有很強的推理 有實事求是地想 有相當的經驗 有相關的通訊4-20250514 克勞德 --3.5 有相關相談 有技術問題 有詳細分析

40 OpenAI)

有快活 有創意 有好通識 有好相識 有出自克特克特斯克特·克特德克特所著"克特"

Gemini (谷歌)

有多語相通的問題 有相通相通性 gemini-2.0-快起飛了 gemini-1.5 有多語言相助 有事實相助

(xAI) (克羅克語)

有快活的回應 有型號:相克 --3有快活的好想快活地接通 隨口取出

BYOK vs 管理人工智能

BYOK (取出自有鑰匙)

就由你提供自己 API 您可以直接向提供商付款。您可以完全控制模型的選擇和用法 。

管理的 AI

AI是您提供的一部分: OpsIQ 有計劃. API 有需要用入入入出出出自你計劃的 AI 信用相抵

分步相接地相接

1
跳入 AI 配置

在地上 OpsIQ 管理器,通航到設定值 > AI配置.

2
選擇提供商

从下載中選擇您的 AI 提供者 。

3
入入 API 按鍵

如果使用 BYOK 入到您的 API 有自動處理的 AI.

4
選擇型號

選擇要使用的具体模型。 更小的模型更快更便宜。 更大的模型能提供更高质量的答案 。

5
測試接通

點擊"試接"以驗證 API 有綠色支票就代表了成功 。

6
保存

點擊儲存以啟動您的 AI 設定 。

二. 成本控制

B. 月度概算

在 AI 指標上設置最大月花。 當預算被達到后, AI 有優雅的分解( 更短回應、 不自動重複) , 而不是完全停止 。

相對符號限制

有相關的訊息可以避免被取出多數分數。

低平衡警示

當您的 AI 信用平衡下於阈值下 (default: 50,000 在 AI 配置中設定此項 。

工作相間設定

AI 設定是每工作區。 如果您管理多個站點, 每個工作區可以使用不同的提供商、 模型和預算。 除非被覆蓋, 工作區會繼承全局的預設值。 要設定每工作域: 切換到工作區, 就去 AI相接并儲存設定值 。

正在得到 API 金鑰

Anthropic (克勞德)

去去 console.anthropic.com > API 金鑰 > Create Key. 复制以" sk- ant- "开头的金鑰 。

OpenAI(GPT)

去去 platform.openai.com > API 金鑰 > 建立新的密钥。 复制以" sk-" 为起點的金鑰 。

谷歌( G)Gemini)

去去 aistudio.google.com >得到 API 金鑰 为您的專案建立金鑰, 复制金鑰 。

xAI (克羅克)

去去 console.x.ai > API 鑰匙,建立并复制您的鑰匙。

測試您的相關程式設定

假想:
在入住后 API。您需要看到綠色檢查印記和AI的樣本回應 。
所取之道:

如果測試失敗: (A)1(去取取出相接相接的相接取相接同相接之相接) (收取相通相接作相接. API 金鑰是正確的 (沒有額外空格 )。 (2(檢查你的帳戶已和提供商建立帳單。 ()3)檢查模型名是否有效 (.)4如果使用"管理AI",就去驗證你的執照已活出.

有哪家提供商最出名?+

有相關相關資訊相關, 有相當相關的相關事由相關人士所出: Gemini 有多語言能處理好。您可以試取出您所特有用例的最佳收效 。

等會再接通提供商行嗎?+

有 有 有 改提供商并 API 有相關相關的通訊錄相接相關。

有我沒得分了又能出出出事?+

AI能輕而易舉地去掉:回應更短、自動回復暫停, 而管事者也顯示出低平衡的警告。 Core tracking, pekes, and CRM 在沒有AI的情况下繼續工作;

AI (出自:"相克")

更聰明的更便宜的客戶聊天( C)

有一套選擇入圍的控制可以使您的客戶聊天更聰明(它像人員一樣在客戶的帳戶上被說出原因)或更便宜(它會把AI送出更少,或者以更低的階段回答 ) 。 每一套控制都是由默认而独立的, 它能把一個控制關閉, 它永遠不會改變其他任何行為。 大多生活在「 客戶聊天」 設定下; 有幾個在設定你的AI并訓練你的AI上 。

更聰明的答案 (代理模式)

有位普通的聊天人能從一處找回一分問題 代理模式 在一回回覆中, 助理可以一轉就做多通只讀的帳號檢查并交叉參考, 如「我有沒有開出入場券?

代理模式

Up to a few read-only lookups per turn, cross-referenced before answering. Turn on when you have a connected platform (WHMCS, Shopify, Stripe, Zendesk, etc.). Off = today's single-lookup behaviour, unchanged.

思考代理取回的深度

在相關轉折上, 有多麼難以理解模型的原因( 低/ 有中/ 有高)。 从相關起步; 有許多相關的問題被處理得很周到 。

有代理模型

有更強的模型只用相當複雜的代理商來取出 因此日常聊天都用平平平的模型去取出相當高的深度取出

有一通接通的答案(β)

有一小步的計劃可以決定要取出哪一找和需要知識基礎, 就用一通主呼叫接通而不用多步接通。 在代理模式下分切接取。 除非代理模式被使用, 它是無法被啟用 。 相同的回覆質量, 在多相關問題上接通的呼叫也更少 。

相通和通識

有相通相通的回憶 (β)

因此, 助手要保持相當相當長的聊天相接而不用再重放整份筆錄。 最好能提供相當重的、相當长的線索; 有代理模式相配的相對相通訊。

泰波相容性

有小字型 ("我的開放票" 、 "無酬入場券" ) 就讀作要取的單詞, 因此可以找到正確相關相關資訊而沒有被錯過。 在每個相關平台上工作。 默认關閉; 有助於手機重複聊天 。

取出帳號上下文

在關于客戶的帳號( 余额、 发票、 票子、 服務等) 時, 只需附上客戶的賬號快照, 就可跳出通訊。 在沒有質量損失的情况下可以剪去成本。 助理在需要時仍能活取帳號 。

二. 成本节省

跳過知識搜尋以取悅 (β)

有真有真有性能的訊息都同樣被搜尋了 有相關相關內容的回覆就不會被取用了

已允許的回覆最長 (收件箱)

單一回覆能有多長? 回覆长度是呼叫中最貴的部分, 因此需要一個通情達理的封面 (相關) 500)是一款最能用到的聊天成本控制。只會降低您的全球限制, 就不會再提高它。

在建立你的AI上

有想取取取深度 (A)

在回應( 最小到高) 之前, 模型想出多多 。 在相關相關的相關話題上保持最小/ 有低速度; 在相對相關時保留更高的設定以进行分析并使用副駕駛 。

(每份工作)

相關地點相當輕快, 有強烈的地點。 在地點上被空白地表示提供商預設了此工作 。

管理聊天成本控制

有相關的活性能被控制 在被問取取取用的工具上 就只載入需要取取出的工具 (lean solvement) 而不用取出每個工具了 。

在你的人工智能上

壓縮指令

您的指令被傳出到每個轉角上, 因此它們的长度是常有的成本。 压缩按鍵會重寫一個位子去用更少的單詞說出同樣的話 。 它會拒絕重寫, 如果它會放出任何 {variable} 因此它從不默默地去改變它所想所想的

"已入于腦" (一)

顯示什么 OpsIQ 在您自己的指令中重複的內容被刪除了 。

💡
有錢去向? 就短相支援聊天( 教訓+帳號資料+回放歷史, 每回都送出) 所收入的相關資金通常比短相對相關的相干要多多。 对于長相關相關内容, 出出自最先的輸出。 回覆长度上限和低思考深度能有好處。 參考您所設立的AI能保持快相接取取取用, 因此每回相關中相關的部分相關得分相當便宜 。
有改變聊天已如何回應嗎?+

No. Every control is off by default and independent. Turning one on only adds its behaviour; turning it off returns the chat to exactly how it worked before.

我該怎么取出?+

就用光線模型做日常聊天并打出更強的代理模型。 如果您有相接的平台, 就啟用代理模式, 就先出發, 再出發再出長對話回憶器。 然后是上下文、 跳過 KB- 为取取取和回覆封蓋等。 最后會压缩您所下的指示。 在每次變更后可觀察一些真正的聊天 。

管理代理工具:網頁搜尋、跑本、任務、檔案轉接等

管理者 AI 聊天是一款工作工程師,而不只是一個問話盒。 它能研究網上修正您操作程序的圖書庫, 在排程上巡查您的伺服器并移取檔案。 大部分這些由聊天中要取取取; 在設定您 AI 有用到的網頁搜尋提供商所設定的一項功能。

網址搜索

已建入

代理伺服器在工作時搜尋網頁中的文件、出錯訊息和相關資訊。 在這個盒子外, 它使用 DuckDuckGo ( Duck DuckGoo), 它需要用到金鑰和設定 。

執行本

在聊天中

有保存的您所應用程式的通書室 ( “我們如何做 X ” )。 在完成一件棘手的工作后, 代理員會寫出一則相關資料并下回跟蹤它, 因此能活到聊天結束。

出使

排程

有排期的只讀巡邏 "每天早上去檢查磁碟空間和錯誤記錄并告訴我" 結果就接通了你的管事鐘了

檔案傳送

在聊天中

需要紀錄檔并取得自動下載連接, 或是由連接的伺服器复制到相接的檔案。 both caped at 5 MB.

(建立您的 AI) 管理代理網絡搜尋

搜尋提供者

代理網路搜尋用於什麼。 預設是 DuckDuckGo: 有無金鑰、 有自由權, 在每一個安裝上都用到。 Brave Search, Tavily and Serper.dev (Google results) 通常回回更佳的結果, 但是每個需要一個 API 如果按鍵提供商出於任何原因( 壞金鑰、 使用配额、 網路麻煩等) 失敗了, 搜尋會自動倒回 DuckDuckGo , 因此搜尋就永遠不會被打黑 。

搜尋 API 按鍵

您所選取的提供商的金鑰, 只有勇者、 Tavily 或 Serper 有需要。 它被保存了后被遮住再不再顯示在頁面上; 有新金鑰被取代了 。 有金鑰提供商只有在提供商及其金鑰都被儲存后才有活性 。

執行本

當代理員剛通過一項工作后, 您會想再做同樣的工作, 就說" 把它當作一個叫作"夜行" ( surder- cleanup) 的跑取簿". 從此它能從每道會議中看到跑取的跑出簿名, 當您要用名( 或者描述它) 要求工作時, 它能拉起步子并跟隨它們去取取取。 您可以要求它列出、更新或刪除跑取清單 。

💡
跑取是指導,不是通由。 當代理遵循了跑取時, 有變更伺服器的每一步都仍然會通過您目前的授權模式并顯示出通常的授權卡。 跑入取用程式永遠不能被通過 。

出使

任務是特務自己所執行的重複工作: 有時、 有時或有時、有時相接地出發; 有時只讀取特務, 有時也只讀作一日之分。 特務可以讀取伺服器、數據和網路等, 但永遠不能改變任何功能; 有後來就被調查并上報了。 有時, 有結果會被傳到您所管的鐘上去取取取回。 有話快說" 就去跑"去巡邏" 就起一起起起求取取出取取的, 有的叫叫出特務者可以列出、 暫停或去取出任務等。

⚠️
有出事了 OpsIQ Cron, 因此需要被設定 (參考 Cron 和自動化) 。 在多數伺服器上被使用到相關的聊天中, 有一項一次性的「 跑出去」 。

正在移動檔案

問取檔案 ("從網頁伺服器中取出我今天的錯誤紀錄") , 由代理器以自動下載相接相接并回覆。 連接只能用到已簽署的管理員而相接一日后就已到期了。 檔案被封入 。5 MB 有更相當大的 就叫代理先去壓縮或修剪 它到伺服器上去取出

代理伺服器可以再复制相關的兩台伺服機相接相接的單一檔案, 以至 5 MB 在目的地上所寫作被同它所做的任何其他變更相應: 在問問模式下您先得到批准卡后, 已存在的檔案被備回了, 而副本被可被取回。 为安全起见, 在被取出的副本被取自來源而未取自聊天中的文件內容被取入來 。

AI (出自:"相克")

有相關相關的相關事由您去訓練

AI是您所教的教訓地 OpsIQ 如何做作。 您會寫出指定人格、 邊界、 相關相關知識和相關規則的提示。 就當是為新的支援代理者而寫出訓練手冊了 。

地鐵AI
有相關相關的相關事由您去訓練有客戶/Admin分頁和平話語音的AI指導編輯器,有相關相關的相關事由您去訓練工作區域客戶AI(ADM) AI( 管理者)有音有友情 有言有道 有相從相去相去而出有相去相去就取出人權去收賬从不就去取回一筆錢再查賬戶1TWO MANUALS客戶管理人工智能( A)2PLAIN ENGLISHTone, always, never3GROUNDED此外你的知識
有相關的相關事由由相關人士所出:

二所相接相接地

客戶名錄快取

控制了 AI 在聊天元件中如何跟您的客戶說話。 這是要正確地說出話程重要的快取 。

管理 AI 即時

控制 AI 在操作器儀表板中如何協助您的管理团队。 它能處理內部的查詢和動作執行 。

寫出一項好客戶AI快取

有需要就去接通了相關地區:

1
身份

有名有相地出自"Acme Store"的相關相關客戶相關助理Luna所著"你就是一間有知識的通訊所"等例.

2
有色相和相

它要如何通訊? 例如:"要專業而溫暖.用簡單的語言. 避免用詞. 使回應簡化 (C)2-3第(一)至(二)和(三)段。

3
二. 知識界

What should it know and not know? Example: "You know about our products, pricing, shipping, and return policy. You do NOT know about competitor products or internal company decisions."

4
升級規則

有活活活生生地被取出相當多的地道: 有活生活活地被放入地道去; 有活地想被取走; 有生地想得到相當高的地地道; 有相當低的地由相接地道道出; 有同樣地由同樣相接相接而出;有相接之事; 有時由相關地道出行相接; 有時候由相通地道相接取取取回相接。 有時, 有同同同相通相通的地取取出取回回相通取回所取回的相接回相去相接者相通; 有被取取相通而相通了相通也相通起相通同相接接相通接相相通通相相相接通相接出相通口相通被取相相去取相接作相通

5
有事要做

有相關的地區: “從不保證退款; 从不分享內部價格; 从來不构成不存在的產品特徵; 从去提供醫療、法律或金融建議等”。

示例提示

示例客戶 AI 提示 : 网上商店
You are Aria, a friendly customer support assistant for TechGear.

PERSONALITY:
- Warm and professional
- Concise (2-3 paragraphs max per response)
- Use simple language, no jargon
- If unsure, say so honestly

KNOWLEDGE:
- Our products: laptops, accessories, software subscriptions
- Pricing: as listed in the knowledge base
- Shipping: free over $50, 3-5 business days standard, 1-2 days express ($12)
- Returns: 30-day money-back guarantee, must be in original condition

ESCALATION (hand off to human):
- Refund requests over $100
- Account security concerns
- Legal threats or complaints
- Customer explicitly asks for a human

NEVER DO:
- Promise specific delivery dates (say "estimated")
- Share discount codes not in the knowledge base
- Make up product specifications
- Give financial or legal advice
單位客戶 AI 即時 . 主機公司
You are Atlas, an AI assistant for CloudHost web hosting.

TONE: Technical but accessible. Assume the customer has basic web knowledge.

KNOWLEDGE:
- Shared hosting, VPS, dedicated servers
- cPanel, DNS, SSL, email configuration
- WordPress, Joomla, Drupal installation
- Common error codes and troubleshooting

ESCALATION:
- Server outages affecting multiple customers
- Data loss or security breach reports
- Billing disputes over $50
- Complex migration requests

BOUNDARIES:
- Do NOT access customer servers or databases
- Do NOT change DNS records or passwords
- Always recommend the customer makes changes themselves
- For code issues, suggest steps but clarify you cannot debug their application

隨時更新您的快取

1
有基本相關的啟動

就從身份、語氣和關鍵邊界起步, 在第一天就不要想把一切都遮住了.

2
翻譯 AI 歷史周刊

有時也無法理解,

3
更新快取

有相關的問題需要加入相關規則。 例如: 如果AI一直保證退款, 就加入「永遠不要承諾退款;

4
新增知識

有時也想取出相關相關的相關資料,

⚠️
有快活就快活活活了! 2,000 有相關相關資訊相當相當多; 有相當長的提示可以使人工智能相混淆并增加符號花費。
有同時的快取和知識相差多遠?+

即時定義了人格、地界和規則。 知識基礎提供實際相關資訊( 產品細節、 價值、 政策等)。 AI 既能讀取, 也能分辨出行為, 而 KB 有答案相關的快活相關相關事由 。

有不同部門的提示可以嗎?+

有相關的相關資訊, 有相當相關相關同分相關的地方需要相關接取用相關知識提供相關信息并提到相關情境。

AI (出自:"相克")

AI 有 原 由

AI History顯示了AI所與客戶和管事的相關相關事務。

AI 有 原 由
AI 有 原 由有相關的回應時間和結果等。AI 有 原 由工作區域有相關記錄的相關回放聊天有我的命令?A:今天被運出,UPS追蹤...0.9s有接了入票T-12345 的回覆草案已起草退款确认1.4sdrafted管理就這周的票作一總結12-行摘要已回傳2.1s已做聊天有被打倒了 就取消我的計劃了handed off to a human0.7sescalated1EVERY TURN即時回覆 就快起起跑去取回回回放出取回放回放放放出出取出回放去取出取取回取回自取回的回放取回分取回接回放2SEARCHABLE過目器匯出( E)3OWNER-ONLY完全的審查追蹤
有相關的回應、相關時間和結果等。

有相遇所顯示的

日期和時間

有話要說 就這樣了

客戶身份

如果知道姓名和電子郵件, 否则 IP 有出自"相克"和"相相克相克之地"等.

頻道

有聊天相接相接 收取自動回復出票 有電子郵件草稿 有的就叫行政通訊部

信件

有相關訊息和AI回應等。

收件工具用法

有許多相關訊息被使用; 有許多同樣的相關用法可能顯示AI提供過多的動詞回應,

二. 已采取的行动

在相談中被執行的 AI (查取了訂單、出票等) 所行的動作。

分等

CSAT被啟用后, 客戶對此對話的滿分率就被取出.

有問題找找找

根据关键字搜尋

搜尋特定主題以查看AI如何處理它們。 例如: 搜尋"退款"以檢查AI是否遵循了您的退款政策 。

有分數地分分辨出

就只顯示低分的對話以專注于不滿的客戶.

有通道分類取回

就只顯示出自動複製的票子去分開聊天相關的自動回覆 。

根据符號用法排序

有時會有問題: AI出事取笑、轉圈接觸或答覆。

每周一的稽核例行程序

1
檢查低分數的對話

有問題出事了?是知識相差、語氣相差還是答錯?

2
檢查高音量對話

這些可能是混淆的徵兆 , 人工智慧在重複自己嗎 ? 它不理解問題了嗎 ?

3
更新培训

有 知識 有 有 有 相關 的 有 有相關相關 有相相關的 有相通 有相接相關同相關取出相關通訊

找出知识差距

假想:
你找"入住"的AI歷史并找找 15 有說道「我對此產品沒有相關的設置指令」。
所取之道:

這表示您所缺的知識基礎是安裝指標。 为每個產品的安裝階段建立知識底部文章。 在加入后, 請先問取 AI 安裝 問題以做測試 。

AI (出自:"相克")

AI 知識

AI Insights 自動分析對話模式,並顯示可行的發現:常見問題、滿意度趨勢、知識差距和升級模式。

AI 知識
(智慧中心)(一) 智慧中心:AI"今日簡介","智能警報",一分分/分析-一分工具;和 14- 日出交通模式表.AI 知識工作區域(今天的生日)有通車了 12%; 3有熱通路;2有交易需要跟蹤智能警告已檢查出錯誤就快出事了 /pricing有新一款由美國出品的取材有收入上星期前分數取一首主題/ 分析一頁IP 或 URL…快跑14- 日行交通模式1(今天的生日)有相關事由於相關報導,2SMART ALERTS有异常出行3ON DEMAND分數取出一首主題 :
真正的"情報中心":由AI所寫的"今日簡介","異常的智能警報",取用主打分和頁面分析等. 14 有出行地道了

有多么有洞察力

有好處了?

有最常被問到的問題 如果"我怎么重置我的口令"是 #1您的知識基礎需要一個显著的密碼重置指導 。

二. 满意度趋势

CSAT 得分相當多。 AI是否在取悅或下降? 有突然的下降可能表明有知識基礎變更能打破某事 。

二. 分辨率

在沒有人權干涉下,AI能解決相談的比例是多少? 70% 有出有出有入有出. 50% 就意味著人工智能需要更多的訓練.

第 二 章 分 出 由 .

有同樣的理由:客戶要求人接觸,AI無法回應,敏感地說,收費出問題。

二. 知识差距

有的被AI常說出"我不知道"或提供低信心答案等題材.

相對相對的相關相關時間

有多長的對話( 有相關訊息 )10 相當於相當多的相關訊息,

有更深的洞察力去取出

假想:
AI Insights指出: 23% 有相關的問題被問出"保釋"而AI無法回應。
所取之道:

有很明顯的知識差距。1在知識相關地基上寫出一篇文章,2更新AI的提示以提供保修信息。 (3下星期監視AI的洞察力以觀察保修措施的增長是否減少.

AI (出自:"相克")

管理 AI 播放本

(Ask) 行政人工智能 OpsIQ(能幫助你的團隊去管理)OpsIQ 您可以要求它去查取相關相關資料, 解釋相關功能, 總結入票并執行平台動作 。

(ADM) AI( 管理者)
管理 AI 播放本有活想活了就活了活了去取活了?OpsIQ 有 AI-拟设的平台動作卡的指令框,可以顯示參數并確認/取消。問 OpsIQ工作區域問 OpsIQ就已逾期的帳號中止服務 #4821AI (出自:"相克")已提出: 暫停服務帳號: #4821 (逾期未交) $120)平台: WHMCS 有可逆性确认取消1ASK ANYTHING平面- English 命令2PROPOSE FIRST在執行前顯示動作3YOU CONFIRM已放入已檢查範圍( C)
就當是用正義的英文去向行政主管AI提供所想得到的; 它提出精确的動作(可被分辨、可回轉、可被審查)并等您確認出。

有行政機能做些什麼?

查取資料

有請:"給我看出自 [email protected]"或"什么是秩序的狀態#ORD-"5523?"

概述

"去取出" "去想到底"10 或「本週最受歡迎的相關議題是?

解釋特性

有問題:"我怎么去搞自動再生" "回放率卡到底是什么意思"

執行動作

有請:"想出一票去取"[email protected] 有收費或"收票T"等事 --12345"

平台查询

有幾個人被收了入住? 有幾個是被收走的? 有被收起入住的入住地被收回了入出出出去取回入入出去去取出入入入去取入入取入出入出取入去去去出出入去入去出去入出回回回去去入入到去去回回取入取取入回去取取取出去回取取回取回回入去回入取回去入取去取去去相去取了入去相. 有被取取去入回入出所取取自"

有話可說

有客人找了

假想:
有管事的人想找找找 [email protected] 有相關活動相接相接而出"
所取之道:

AI 在相關資料來源上查取客戶:訪客會議、入場券、聊天對話、訂單和CRM接觸等。 它回應了最近活動的概要, 有每個項目的連接點 。

得到每日摘要

假想:
管事出道:"今日出事了?
所取之道:

AI总结道:"你今天有. 245 訪客(上) 12%), 8新入票(3由AI解答).2正在取出新命令 $198 并1就一項運行延后而談起相關事務".

執行動作

假想:
管家想道:"改票T-5523 优先到緊急"
所取之道:

AI證實道:"我將去換票T --5523 從正則到緊急。 這會影響 SLA 定時器 。 确认嗎? 您已確認, 動作已執行 。

💡
管理員AI只執行已登入動作通訊錄的動作。 它不能在外端發出動作或存取系統 。OpsIQ.
AI (出自:"相克")

客戶人工智能假想

有相關行為相關相關的相關事項,

客戶AI
客戶人工智能假想有相關的相關資訊相關相關同時也提供相關結果標籤。客戶人工智能假想工作區域假想相關文庫 : 需要人工智能行為"我的命令到底在哪里"在連接器上查取相關命令, 提供追蹤解析"我要退款"有相識 就不會向人起誓了取出"服務被打倒了"檢查狀態, 報告目前狀態狀態"取出我的賬戶"有想再去取回人行走的路确认1SCENARIOS共同的問題2EXPECTEDAI到底要怎么回答?3科技找找相關相隔
有一間真正的客戶問題相關的圖書館 有AI到底要怎么去處理每個問題 就去試取你的訓練并找找漏洞

假想相關文庫

二. 秩序

假想:
有客人:"我的命令到底在哪里"12345?"
所取之道:

(出自:1(由站台接通器查取出序).2(已接通) (已出發)。 (已取出)3(如果有可查的追蹤號碼)4如果命令被延后了, 就認出并提供估算的時間( C).5永不搞出跟蹤相關信息.

密碼重置要求

假想:
有客人:"我忘了密碼,不能入住"
所取之道:

(出自:1(提供由知識基底取而來的密碼重置步數。 ()2包含重置的連結或頁面路徑 ()3(提到重置的電子郵件可能要花上幾分鐘. )4建議檢查垃圾郵件資料夾 (A)5如果客戶仍然不能重置 就被提升到人類

特徵要求

假想:
有客人:"能把暗黑模式加入到通訊相上去嗎?"
所取之道:

(出自:1(多謝你的建議)2(已登入、已审查、已排入优先位置)。3) 不要保證此功能會被建出 (% 1) 。 (% 2)4如果有相近的特性,请注明。

收費爭議

假想:
有客人:"我被起訴了,但我的服務沒用"
所取之道:

(出自:1(活活活生生地想活活地想走活活了活活去活活干活活)2(如果可能,可檢查服務狀態。 ()3有細節地被調到收費部去 (出自"活活活"一文)4(不要保證退款。 ()5(把票优先到高地去)

有外觀的問題

假想:
有客人道:"今日倫敦的天氣是怎樣?"
所取之道:

(出自:1(我是你的[公司]相助助手能幫助問出關於我們的產品和服務的問題; 对于天氣資訊,找找一找地氣候服務")2有產品問題嗎?

我該怎么去考驗客戶的人工智能行為?+

在私人/ 匿名瀏覽器中開啟您的網站并用相關的相關相關資訊與AI聊天。 試取常见的問題、 邊緣相關案例和相對相關情形。 請檢查AI是否遵循了您的即時規則并正确使用相關知識基礎內容 。

AI (出自:"相克")

AI 知識基礎

Cnowledge Base是AI用於回覆問題的文章相關文庫。當客戶有問題時, AI會搜索相關文章相關的知識相關地基并用以產生准确而有根據的回覆。

知识基础
知识基础有資源能提供知識庫所提供,知识基础工作區域出自:網站爬行有助文章分類相關已匯入的檔案知 識語法 + 关键字AI (出自:"相克")有底稿的答案有被引用的來源。"退款取而代之"3–5有公事可做".1INGEST爬行、 FAQ 相關入檔2RETRIEVE語义 + 关键字3GROUNDED有您所想的回覆
在相關相關地點上爬行并匯入相關文件;

如何運作

1
有客人想問起我

"你有什么回歸政策"

2
AI搜索知識基礎

OpsIQ 有相關关键字和語言意涵相匹配的"回放政策"文章被找到.

3
有回應

有許多人認為自己是「活生生」出自相關的,

4
有好幾分的回應

有時也想取出相關相關資訊,

有好文章出自:

一篇文章一首

为每個主題寫出一篇文章:回傳政策、運輸率、帳號設定、密碼重置等。 不要把相關的相關主題相連 。

Write like a FAQ

第 一 個 問 問 就 出 答 有 有 助 AI 有 有 有相關 的 問話相對相接 。

有分明地分明

"回想出回想"30 有好幾天出貨了 就比"我們有回歸政策"好

包含邊緣大小寫

有數位相關產品有出價嗎 有出價相關的相關相關事項 有出賣相關出價 有出息相關條件 有出出價同分別相關

有時再接取相接相接

有時可以更新價格、相關相關政策及程序等。

有要寫的文章才會被啟動

航运和提供

有出行地由相關地點所出:

回返和退款

回放視窗、條件、處理相關事由、退款時間和出入境等

帳戶管理

密碼重置、 電子郵件變更、 帳號被刪除和資料匯出等 。

定价和收費

有計劃描述 有收費周期 有付款方法 有收據 有通貨通貨

出品指導

如何使用相關產品或特徵。 有截圖的分步指令 。

有麻煩了

有同樣的問題和解決方法 有錯訊息和被修正了

接觸相關信息

有相關的通訊和相關相關地點相關,

二. 法律和遵守

隱私相關政策摘要、服務條款摘要; GDPR 有數據需要 。

接通相通相接相通

有相關相關的相關接器可以提供相關通訊相關知識。 當連接器被啟用后, 它所內置的相关通訊( 產品目錄、 常见問題、 平台特有故障排除等) 就可自動被接通了。 您可以在相關互通相關處中切取相關能關通報相關情報相接相關信相關 。

已儲存的預算

知識基礎有可配置的符號上限( 預設: 32,000 以控制每次對話所傳入的相關相關通訊。如果您的相關知識基礎相當大, AI會在此預算中選擇最相關的文章。 如果AI找不到相關文章, 就提高上限; 如果想降低相關同關相通相關的相干相關取費, 就降低上限 。

有多少文章?+

从起步5-10 包含您最常見的問題的文章。 在您通過 AI History and AI Insights 找出缺口后多加入一些相關內容 。20-50 第 二 部 分

我能從另一個系統匯出相關相關文章嗎?+

目前, 有文章被手動建立于 OpsIQ。您可以從已存在的 FAQ 、 說明中心或相關文件中复制- 复制內容 。

有甚麼格式的文章?+

平面文字最能用。 AI能比結構更能理解自然語言 HTML 有需要就去寫作 就去跟客戶解釋

AI (出自:"相克")

AI 評估和監視台

有相關的客戶問題被轉而做回覆性測試,

產品螢幕
AI 評估有相關相關的相關報導也相當多;AI 評估工作區域SETS6CASES84PASS RATE96%LIVE WORKSPACE VIEW2. 航运政策第 二 章 需要引用有通退款要求需要人相印證有通二. 有理所据的索赔被禁動作有通二. 移民问题缺少要取出的来源失敗1CREATE CASES有金色入言和規矩2RUN SAFELY有活活跑出地點3WATCH每天或每周
有相關相關的相關報導也相當多;

全能管理員可以以快取、期望取自的標籤、需要的引文、人權認同規則、高調的期望和被禁動作等建立評估集。 直接執行一集, 干跑出, 或是重放所選取的歷史 。

監控台 在改變出品行為前, 由提供商/模型、即時版本、知識版本、所提出動作和成本等同作業相接而行。

AI (出自:"相克")

語言和翻譯

語言管理翻譯的客戶端文字和所使用行為 OpsIQ 有相關相關的語言。

產品螢幕
語言語言 頁面顯示源語言、翻譯語言,草稿/活動狀態和客戶端語言行為。語言工作區域源 源LANGUAGES4活取出3LIVE WORKSPACE VIEW法文相接相關相關和內容有活德文相接相關相關和內容有活西班牙文翻譯草稿草案跟隨客戶用已測出語言回覆1SET SOURCE原始接通語言2ADD LANGUAGE在背景中翻譯3PUBLISH有活有活地出征
語言 頁面顯示源語言、翻譯語言,草稿/活動狀態和客戶端語言行為。

OpsIQ 翻譯通訊器入通的客戶介面。 在建立翻譯前要正確地設定出來源語言, 在新增目標語言后再先檢視草稿再放出 。 “ 追蹤客戶語言 ” 控制回應語言; 翻译元件介面能控制它的按鈕、 標籤和系統文字 。

有相關的通訊, 有相當相關相關資訊相關:

有您自己語言的地點被列出:客戶聊天訊息、推廣、有預防的訊息相接相接、聊天相接接相通、有導遊行相接取景相接等相接地點; 二. 调查和表格。 測試表面完全覆盖了所公布的相關相關的相對相關通訊: 標題、每個回覆相關選項、按鈕、歡迎和感謝相關複製相關頁面、相關分頁和結果相關等相關接相關同相關取出相關收取相關目錄相關, 因此重新排入相關問題或相關可不失去一譯而再重寫一通相關訊相關之相關事由您預設置提供; 在您擴張相關範圍后, 有相關資料被簽署相關地被加入 。

聊天后電子郵件調查所遵循的是訪客所真正所通話的語言, 但以您提供的语言為由; 否則它會使用您的系統語言。 它有6個可編輯字段也被翻譯到此頁面上, 而行為也自有客戶端聊天設定的開關 。

有入站口和出站口留言 有一次由固定文字操作員提供, 每個客戶接通后用同一种語言提供:票收、開放、關閉和回復等證件、每部的簽名和出入口取回等。 (AI自動回復不需要這些, 它已用客戶的語言作答了) 有。 有。 有自己語言的電子郵件客戶 已開啟 OpsIQ 寫入,出票電子按此顺序解析收件者的語言: 在入口或求助中心所選取的語言(被帶入入通訊錄上), 在聯絡人記錄上所取的地區,再用所寫出的语言, 在地上被文稿範圍和標出單詞所測出, 而沒有外接的通訊量。 在語言頁上所選入的相關語言被使用, 因此功能是惰性的, 直到被加入到語言上去。 Global HTML 有心地不翻譯電子郵件包:是打標記,不是取自口語。 工作人员發表的電子信件(通知、部門警報、分析人簡報、已安排的報告、每周文摘等)都使用系統語言。

PeopleOS HR

PeopleOS:受管的勞工操作系統

Run the employee lifecycle from requisition to offboarding with mobile self-service, evidence-backed workflows, typed integrations and human control over sensitive decisions.

有互動相關系統地圖
PeopleOS 生命周期指令中心A three-dimensional PeopleOS dashboard linking recruiting, employees, payroll, learning and governed AI.PeopleOS 指揮中心(活生生的)二. 人248二. 起跑道12控制管15 / 15(活生生地)征聘增長酬勞过渡一作一身份+就业证明人 事 管 管第 二 章 上诉、改正、接管出道成果和出出的证据
有被管的記錄 有活生生的相關控制 有證據能證明出自己所想的

管理員

操作

管理人、組織、招聘、入职、文件、休假、薪水調和、福利、作業、學習、同僚關係、分析及管治等。

雇员和管理人员

自助

有私人記錄、要求、文件、登入、時間、薪水解釋、學習、公司資訊和權利等。

發展者

延伸

Use the curated hr.* 和已审查 platform.hr.* 在 PeopleOS 中產生的索引API第1款列出每一人和其範圍相去甚远。

⚠️
有資格的外接系統可以被取出。 有資能的外出系統可以保留這些責任; 有綠色技術檢查從來不提供合法批准或提供證據。

取得人權管理系統HR

在其他付費的計劃上, 有加: 帳戶所有者開啟了 帳號→已加入子目錄( T)取出一層PeopleOS HR并開始自由審判或直接加入。分級相當相差, 定价頁面模組所做的事,地表上,就地取出 PeopleOS HR出品頁面.

有誰能再加一分?

有錢的計劃是活的,有錢的計畫不能再加了 有錢被放入了自己的計劃中去取決 就等到審判結束再去取出

二. 自由审判

試驗 在您所選取的層次上进行。 在沒有買入而結束后, 有權被取出而無能。 沒有被刪除; 有記錄被新增到一會就再被取下 。

有被取出地點后 就被取回了去

PeopleOS HR 在相關列、 命令調色板、 設定或應用說明中都不會出名。 有直接連接到 HR 一頁提供新增的相接功能而不用接取相關說明 。

达到相關上限

有等級限制被達到后一等級就提供下一等等。 編輯或移除已存在的內容從來不被封鎖 。

自設安裝

The entitlement travels in the licence. Add the add-on on your OpsIQ account and the install picks it up at its next licence check.

第一周設置

下面的一切都是個真正的屏幕;這裡不需要一個開發者.

1
啟動模組

開啟 人民OS→HR 內容有相關接通了 就由旗板起碼出站口 PeopleOS HR: 它被從 HR 一頁取出, 也無法被接觸到。 開關是兩下一擊的確認; 關掉一通就是一下一關。 它下方的 AI 開关( 起草說明、 應用程式筛选、自動助手、 AI相訪、 自動出價、 身份檢查等) 在您決定前都不要接通了 。

2
讓設定副駕駛去做配置

開啟 人民OS→設定副駕駛 and say what you want in plain language: a leave policy with its days and notice, the public holidays for a country, a case category with its SLA, an expense cap, an onboarding template, a monthly pulse. You get the plan back with what it understood and what it assumed. Nothing runs until you confirm; a medium-risk step needs a second person; every run leaves a receipt.

3
取出員工入口名

開啟 人民OS→第一行→簽入的設計在自設的地道上安裝出入口 /hr/<address>; 出入口地址 它被取出名后即刻被取名而舊的接通連接也繼續工作 因為舊地址已傳出 在云上接通了通訊口 /hr 在您的工作區域主機上需要地址 。

4
公開你的職業網站

開啟 人民OS→二. 征聘在已批準的申請單上所發出的每一張相關文章都出自公開的職業頁面; 在公開的職業頁面上開啟 在收生上下能看出出候選人所看到的

5
为共享裝置登入站台

開啟 PeopleOS → Frontline → Kiosks 選擇 登入站台。裝置符號已顯示一次; 在平板或PC上開啟站台頁面( 它是 /kiosk 在入口主機上被貼上并貼上。人們用工作電子郵件和 PIN 或取自入口的短命警徽碼而接觸到它。取出一站就立刻停止了裝置。

6
就決定用人到底能做些什麼了

開啟 設定值→HR (人資)。每個自動服務權 (記錄、要求、文件、休假、薪水等)被定給了每個員工、經理人或一隊人和所屬的團隊;而每一個變更記錄出它和原因,而你所關閉的權力被向員工解釋出去而沒有默默地被取走。

7
有相關人員再去接通他

人民OS→二. 人 create the person, their employment and their manager. Provision portal access only once the person has a valid email and an intended employment relationship; the invitation goes out from the same screen and onboarding starts from the journey you set up.

二. 生命周期

有計劃地招募

建立已批準的申請單,出發工作,取用相關回應相關網路,

相接和提供

有相關證據支持入住行程, 收集正確的文件版本, 要求用具, 提供已批准的存取樣本和提供無座位出入口接通。

Work and grow

有工作、工資、事務、工薪、福利、出息、目標、回馈、評論、學習、技術、內部相關機會、接班人和勞工分析等。

二. 支持和相保

有私人HR相助、受管的同僚關係相關案件、法律立案、數據要求、修正、解釋、上诉和人權獨立審查等。

改變和出走

Use effective-dated employment changes, revoke access, recover equipment, reconcile external providers, apply retention and preserve required evidence.

存取和身份

A canonical person owns employment records and verified external identity facets. Email is mutable contact data, never the permanent identity key. Portal reads are self-scoped; manager and administrator views require explicit permissions. API scopes layer on top of route permissions and never bypass them.

增加一員新工

假想:
建立人, 指派工作及經理, 提供出入口接通, 然後開啟登入行程 。
所取之道:

二. 干燥和一能性API寫作。 在送出存取前要確認此人有有效的電子郵件和意圖的工作關係 。

解析相複的身份

假想:
有兩個外出系統能分辨出同一個工人
所取之道:

Link both verified facets to the canonical person and resolve the conflict explicitly. Do not merge records merely because two mutable email values match.

PeopleOS HR

HR工作流程和雇员门户网站

每個主要PeopleOS地區都如何運作,

人和组织

維持能干人、工作活兒、工人類型、經理人、團隊、地點、技能、文件及有有效日期的相關組織。

二. 招生和提供

就由已批申請到發布、申請、有條理的證據、面試、決定、提供和雇雇等,

二. 入住和文件

指定所訂定的擁有者相關步徑; 收集、 審查、 簽署、 到期、 有版本和取用證據的持有和刪除文件 。

出行和出行

确定由政策支持的休假类型、平衡、要求、批准、假日、可使用性、日历活性及相對等。

薪酬、福利和支出

Explain pay, hand approved worker events to payroll, reconcile exceptions, manage benefits eligibility and govern reimbursements.

二. 业绩和增长

有相關的目標、入住、回應、評論、校正、學習、技能、指導、內部機會和接班等。

HR 服務和關係

在公開許可地區上保留冤情、紀律、告密人和被封鎖的案件證據等相關事由,

二. 分析和规划

使用由記錄所生出的工作人員量度、人數計算計劃、基准和經驗相關指數;

雇员端口地圖

概述

需要你注意自上次出訪后所發生的變化、開放要求、即將到來的事件、登入進展和公告等。

配置和紀錄

有工作 有被查證的記錄 有文件 有被許可 有被申請的隱私 有被要求去更正的

HR 相助和工作

需要員工和公司自有的任務相去不遠。

你第一天

有證據支持入住時間 有主人 有正常狀態 有完工 有被封鎖了的活

有時出走

有平衡、請假相關地點 有時間可查 有日程安排和會議事由出自"C"

技能和成长

Learning, skill evidence, goals, feedback, mentoring and internal opportunities.

有我出錢了 有我解釋了

Plain-language compensation and payroll reconciliation information the employee is permitted to see.

有公司

Directory and organisation chart limited to information colleagues have chosen or policy allows them to share.

第 二 章

解釋、申诉、同意、更正、取用和去除等要求。

💡
The portal is mobile-first. The account card remains reachable, navigation and content scroll independently on wide screens, and mobile navigation overlays rather than pushing or covering the page. Long explanatory copy belongs in accessible tooltip or disclosure components.

2. 安全操作序列

1
設定政策和權限

在載入活性記錄前先設定司法權限、角色、批准路由、保留、同意和地物控制等。

2
連接外接提供商

安裝相當簽署的套件,入入最不優等的憑證并通過接通和相符合性測試 。

3
在沙盒或影子中跑出

在提供實際相關服務前, 使用決定相關資料做完整的工作流程并相對期望的證據。

4
二. 在双重控制下放行

A different authorised reviewer examines provider, security, privacy, legal, fairness and accessibility evidence.

PeopleOS HR

第 二 章

由於相關政策許可、試圖執行、提供商結果和證據等,

AI和代理控制

每個特工都使用已註冊的打字工具, 有目的、 管轄權、 風險等分類和最大自動性。 人權接管、通路器、相關事件和管轄地區變更都停止了行刑。 校正可能會形成一個拟议的數據集, 但是在被不同授權人完成私密審查后再去訓練一無所謂。

有公道

定义群組、 最低樣本規則、 公尺、 評估者身份和合法放出的评价。 缺失的資料仍然被忽略; 它從未被轉換成通訊相關 。

第 二 章

就已收起的證據和相關政策作解釋;

司法

有名可查的合法擁有者被引用出自法律來源并被通過考驗。

《欧盟人工智能法》

Maintain the system inventory, risk class, fundamental-rights impact assessment, notices, overseers, metering and evidence.

影片放映邊界

提供不是參與

hr.interview.room.provision 建立會議地點。只可 hr.interview.room.connect 有媒體能證明有活人接觸到他

有目的的同意

Recording, transcription and biometric liveness are separate choices. Withdrawal applies to the selected purpose.

沒有外觀分析

The video contract has no field or method for emotion, attention, attractiveness, race, disability or appearance inference.

人文和文字路由

有回應者可以接任會議, 有通訊路由可使用。

保留和去除

有相關接器的報告加密了傳送、活性保留相關政策和提供媒體參考等,并需要支持可被可查取的刪除。

Room created, AI absent

假想:
A Zoom room URL exists, but the media bridge has not delivered audio/video to the interview worker.
所取之道:

Show the meeting as provisioned and AI participation as false. Keep the human interview and text accommodation paths available.

有回電說有支票被取出

假想:
有名的相關背景檢查已成長。
所取之道:

將回取收視錄收錄为提示, 然后查詢提供商。 只有已驗證的狀態回應可以更新檢查 。

🚫
A technical accessibility evaluation can be recorded by its evaluator, but WCAG attestation requires a separate person. Provider proof, legal release and fairness evidence also require their genuine named owners.
PeopleOS HR

人民OSAPI和接通器發展

使用通则API有管治的HR操作和有權威的外接系統打入接通器合同.

一般API第 二 部 分

傳送JSON至 POST /api/v1.php。去取出正在跑取的地表 meta.actions, OpenAPI 在 /api/v1/openapi.php并有郵差到 /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.readhr.write 。 目標管理員路由仍然檢查自有權限。 寫入需要相當穩定的象徵金鑰; 有高風險的寫入要被確認。 在不確定的超時后再用同一個金鑰重試暫時失敗并查詢恢复狀態 。

有一出相關的相片 就被取出相當多的相關相片

48 curated hr.* actions (22 reads, 26 writes) and 484 reviewed platform.hr.* operations, out of 2415 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, primary_email, worker_type.

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.

Leave, learning and the connector marketplace (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.

Connector 憑證和健康 (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_assessmenthr_tax_right_to_work.

二. 雇用和上船

hr_esignature, hr_calendar, hr_videohr_equipment_it.

二. 劳动力业务

hr_payroll, hr_benefits, hr_learning, hr_expense_payment, hr_directoryhr_data_warehouse.

通 通

hr_messaging 有相關的通訊功能。

提供商出入口的端口

PeopleOS HR提供商出入口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

The gateway requires HTTPS, blocks unsafe/private targets, pins validated DNS results, follows no redirects, limits response size, requires JSON, carries deterministic idempotency, and supports timestamped HMAC in both directions. Webhooks are always hints followed by provider re-query.

有入站的網上出站口

三道公用門接通了提供商回復: 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。 每個人都用已證實的接通器去驗證身體, 燒掉送出后就一回被取出而死, 而只收錄了一次等待再取出; 提供商自作的回答改變了記錄。 每一次拒絕都同樣是一通的答案。 人民OS今天不提供出局的網游事件: webhooks.events.list 有權力和名號嗎? 在地上沒有 hr 有家人相接 就去查一下 hr.* 讀取或使用 hr.connectors.health.

详细參考

完成 PeopleOS 手冊

讀取 doc/contracts/PEOPLEOS_HR.md 在自辦事人自辦的安裝地上;API,接通器;webhook并放出規矩.

出入口開發者合同

市場套件中包含 README.md, DEVELOPER.md, connector_contract.json, hr_profile.json 有一份已簽署的檔案名單 有一份被簽署了的檔案入住地點

PeopleOS HR

測試和出產就緒

A launch claim is computed from evidence. Package readiness, provider certification, legal approval, fairness evaluation and accessibility attestation are deliberately separate.

1
审定代碼和合同

執行 PHP 語法、 HR PHp Unit, 路由/API等同, OpenAPI/ Postman 檢查, 套件表和JSON斯克瑪認證.

2
二. 演练全部工作流程

Test recruiting, AI review, interview/video, onboarding, signatures, leave, payroll, portal, notifications, modals and connector failure paths.

3
測試可應用和可取取的 UI

Drive desktop, tablet and phone layouts; keyboard, focus, labels, contrast, reflow, tooltips, dialogs, notification scroll and independent navigation.

4
收集外部證據

有相關的公理資料和相關人員的證詞。

5
二. 在双重控制下放行

有與提交者相异的審判者批准連接器并放出證據。 如果接通器的證件已过期, 就取消或切除接通取器 。

二. 所取出的成果到底能指什么?

有簽署的套件

自授權套件簽章后, 檔案沒有變更。 它不能證明有第三方帳號 。

有沙盒被取出

有定義的行為和相關相通相符合。 它不能被證明是真正的提供者、 居住名詞或被刪除 。

有作業接通器被證實

有一個特定的工作地口 在雙重控制下通過了提供方的五項义务

(一) 技術相關

有自動和由評估所取取的證據可以指名出自地表,不是第二人稱證詞 。

就位出發了

有相關證據被取出、被取回、被遺失或被活生生的健康所相矛盾。

⚠️
就想取出一個相關的法律、公道、提供或獨立證可做成的記錄去清場。 記錄被阻擋者和擁有者。 預備觀點有價值, 就因為它拒絕了無相支援的申請。
為什麼已安裝了接線器而仍未提供?+

安裝能證明套件的存在。 啟用它, 儲存最不優等的認證相關通訊, 通過接通測試, 然后用真正的提供商證據和不同的審查人來授權相匹配的 PeopleOS 帳號製作範圍 。

有被取出相關資料的相關報導,+

回叫可能有效, 但只提供提示。 請檢查網上收件箱、 提供商狀態端點及對應結果。 PeopleOS 在再平靜后才變更專有權力的狀態 。

有相通的能讀取到的HR到底在哪裡?API?+

Call meta.actions and filter for hr. and platform.hr.; or use /api/v1/openapi.php and /api/v1/postman.php. They are generated from the same runtime registry.

支助

求助中心

您的幫助中心是您所出文章所建自動的說明站點。 客戶可以自己在公共頁面上取取用并搜尋它, 在聊天相關部分中可以自己找答案, 在開通相關話前可以找到答案。 它中的一切都出自您所了解的基礎, 因此同樣的內容能使您AI能提供您公用相關相關的幫助 。

有你的客人能看得到的

它自有的公開頁面

有一無所謂可被搜尋的相關相關站點 /help.php。 客戶可以按類別瀏覽、 搜尋并開啟任何文章。 您可以自取名義和作風 。

在聊天元件內

在聊天元件中提供相關的說明, 使客戶可以不離開聊天而搜索您的文章。 如果需要人, 就只能被一拍即逝了 。

有活可干?

1
開啟求助中心的頁面

前往 Config, then Help Center 在您的管理中并切換到 開啟公用求助中心.

2
有名有相地取相去相取相取.

設定說明中心名, 在信頭和瀏覽器分頁上顯示, 並選擇一項視覺相關的樣式。 您可以把上方的導覽關閉到一無選單的整潔頁面上 。

3
有文章出自:

在你出文章前再看一眼 就看下一部分了

在求助中心出文章

有篇文章被收錄入你的知識相關地基中。 有篇文章一出并被公開標記就被收录入到幫助中心。 有幾種方法可以做:

有一篇被刊登

在「幫助中心」上顯示。

就快把相片出出去

使用 全部出版 有相關的相關相關功能相關通訊相關同時被取出相關資訊相接相關信息相關。

將 FAQs 轉作文章

有快取出快取? 使用 全部出自此說明 就把他們變成相關文章 就讓他們能和所想出的一切同在一旁

匯入已存在的知識基礎

从另一起求助所出走? 匯入 KB 在文章分頁上有您已存在的相關知識。 您有 三種方法可以指向您所要所要的內容:

貼上 a URL

提供您目前的相關說明中心的地址。 如果它能認出平台( 如 Zendesk) 就讀取出該站台所取的分類樹。 否則它會爬出站台并從頁面上重建通訊結構, 只匯入正文并跳出登入、 定价和聯絡人頁等 。

選擇相關應用程式

如果一個平台已接通了這個工作區并有相關的知識 就以倒下的方式被顯示出來 从相關應用程式匯入。選擇并匯入, 不 URL 或需要密碼。相關應用程式被連接并被設定后才被列出。

上傳 a CSV

沒有活站台可指向? 上傳工作表 title, categorybody 列。放入 Parent / Child 在分類欄中建立嵌入式分類。

不管你想怎么取出 就能得到一分 第先預覽: 它所找到的文章, 按類相組, 每篇文章都有一對收件箱, 因此可以放出您所不想要的。 在您點擊匯入前沒有儲存任何文章。 之後您可以 復原 一擊即整體匯入,或 重同步 a/ URL 有相關相關的相關程式被匯入到已變更的新文章中。

💡
開發者:任何連接器都可通过宣佈一項通訊而為此下載的通訊基礎做廣告 kb_capabilities 被區塊所困入 settings.json (型態) kb_source有: adapter 和 a base_template。參考接通器相接相接區和相接站的參考相接取取取.

有AI相接的組織

有一整齊的相助中心可以輕而易舉地瀏覽并更方便地搜尋。 有AI相接的組織 。一擊就讀取已出發的文章, 將它們分類入通訊目中并加入標籤。 它會建立一個需要的類別, 重用已符合的類分并跳過已整理的相關事項, 因此您可以再多放一通了。 開啟已開啟的類相已相關的類同字項。 讓 AI 組織成子類別 在 Help Center 設定中, 它也可以在嵌入下檔入文章 Parent / Child 有分區的相關相關資訊相關的相當相當方便。

💡
分類可以讓客戶有瀏覽的方法, 在公頁和元件上標籤可以更敏捷地搜尋。 您可以在之後重命名或移動相關事項。 AI能給你一個強大的起點, 不是您所被困的設定 。

在您聊天相關元件內的說明中心

您可以在聊天元件中顯示相關說明中心, 因此人們會在您留言前先尋找答案。 在聊天元碼設定中, 請選擇相關相關的出處:

在信頭上

在元件上方有一小相關圖示 。

在地底

在信件框下有文字連結, 如 “ 瀏覽相助中心 ” 等。 您可以變更用法 。

二地相通

在頭和下方都顯示出最能被取出

在元件外觀設定下, 說明連接有自有的顏色控制。 留入 以相匹配出發器顏色,或選擇 固態 顏色或一 有梯度. . 就跟您所想出的一部分相接相接了.

在您自己的網址上放入相關相關的相關站點

在盒子外您已擁有了自己所持的清潔而可分享的地址 (例如: /help/your-help-center你可以再走一步 在你的下方出發去取取取回它 有自有域因此相當相當於相當于相當高的品牌 有相關相關的相關事由相關地區所出名 yourdomain.com/helphelp.yourdomain.com。所有事都繼續做 在你的領域上:連結、影像、搜尋和文章收視率等。

在您主站台下

配置,再取出相關說明中心,打開 嵌入 选项卡并找到"在您自己的網址上顯示您的幫助中心"。取取您的設定 (Show your help Center on your own web address.Cloudflare, Nginx或 Apache),复制已成型的區塊并貼入您的站點。每個選項有: 設定指導 有相關的出道口被扣了下

在子域上

偏好 help.yourdomain.com*同一個面板有子域選取。于 Cloudflare 有子域是最可靠的路由 它能提供一個乾淨的地址 在它后再也沒有了

💡
使用 Cloudflare 它只用一個被取回的地址去運行它的工作人 Cloudflare(橙相雲). 您的主域常直接指向您的網站, 因此放入主域的規則可以悄悄地無所事事。 可靠的方式是被代理的子域像 : help.yourdomain.com有相關指導能把你穿出一邊去 DNS 有紀錄和路由
SEO 有好處。 一旦您所屬的幫助中心被您自己所控制, 就由搜尋引擎以您所取名的名稱來索引您的文章。 每頁都宣佈其正確的地址并列出站點圖, 因此同一篇從未有兩次索引 。
💡
在聊天相關元件" 在求助中心開啟" 設定中, 有設定 有接通的地方自己所屬的相關相關域 并輸入同一個地址。相關文章會被開啟 在您的地盤上,而不會被開啟到 OpsIQ 地址.

看看你們整個相關部門都做得怎麼樣了

有自已的相關資訊相關相關事務所, 二. 分析在 Help Center 設定中切入并悄悄地記錄出人們如何用取用您的相關相關功能:最受取的相關文章、所尋找的東西和空回的搜尋( 已成型可寫入的清單) , 自己去想出訪客國家和裝置, 因此不需要安裝的聊天元件去報告。 每一個數字都被顯示為已顯示的相對相關的相通相關分類相關資訊 。 有的都去取了. 提供您所見的相關相關幫助, 有公用頁面和相關接相關的相接相通相通, 因此您可以看到每張相關互通相關功能被使用到底多多 。

💡
在你開通前 分析相關站住 有客人可以來接我 IP 地址匿名。 在您選擇入住前, 沒有任何相關資料 。

選擇頁面上所顯示的內容

幫助中心的每一區( 主頁上的分類相關相關文章相關的相關名單相關分類等) 有自己簡單的規則。 对于每個區域您可以顯示或隱藏它并顯示 全部 收件, a 已設定數字, the 最近有你出事了? 有你入行了? 特性 有名的相關人員被封了 就沒有什麼能被取出去的了

有助的投票由你決定:12 二月 14 有一點有幫助, 有一點也算得上是活生生的了.0有出0".

有活的相關文章

有篇文章都顯示出: 有幫助嗎? 即時。 每篇是或不是被計數出, 因此您可以一一地看一看哪些文章能回答好問題, 有哪些需要重寫。 有同一個人所重复的投票被忽略了, 因此計數都保持了正義 。

文字和標籤

您可以去改變說明中心上的标题和標籤以符合您的聲音 。 留下任何字段空白并回歸到一個明智的預設, 因此您只編輯您想改變的用法 。

有同樣的內容可以提供相關訊息和票房, 因此改善相關相關情況能有進取。

共同的問題

有需要我為幫助中心寫出相關內容嗎?+

有同樣的知識相關文章被用到相關地點 有一次再出一篇文章 就能出一出了

有能放入內部的文章嗎?+

有 有 有 就 有 有 出 有 有出 有出有出 有 在 有出出 有入 有出 一 有出所出 有取出 有起 有出相出 有去 有出自出所取出出出相去相出相通相出同出相相出能出相取出相收取相出所收取之相出而出相接相出出所行相出外相出取出所放出相入相出想相出作相出可取出同相取取出之相取相取而出同取出并相取分相取所取取相相取于相取同相出等相取已出相克取相所取相收相取被取相入所取所出相所出所有相取入相取受相取

有客人能接通人嗎?+

有相關相關的元件能被一拍而起 就不會被自衛所困住了

增生( G)SEO

站點資訊( SEO 套件)

站點情報是: OpsIQ 在 SEO 有內置的搜尋相關套件。 它能把您站點爬入到搜尋引擎中去, 追蹤您排行榜、 研究關鍵字、 監視回連接和相對者等地, 掃描您地圖的存在, 檢查頁面速度, 并把它轉成客戶可預備的報告; 有AI分析員解釋了要修補的內容并可以起草修正。 它有高價功能; 在被開啟時, 它會被列作"站點情報" (Site Intelligence) 在邊框中。 每個域的資料都相接相接, 爬行相接取出, 排行相通而相接。

站點資訊
站點情報儀表板一 二 二 二 三 二 三 三 三 二 二 四 二 三 四 三 三 四 二 二SEO有地區健康分數 有關鍵名單跟蹤和通訊相關站點資訊yoursite.com86(地地保健)3二. 与《京都议定书》關鍵字排位追蹤AI 求助台#3有活聊了 sas#7机构支出#12有機點擊1克拉維克有技術上出問題了2TRACK (反相克)Ranks, keywords, backlinks3(分析所取出)解釋和草稿修正
網站情報概述:由最新爬行取出站所健康分數,活的关键字排行榜追蹤, 有機地點擊出潮流, 三步相接:爬行道道道通路道通向地道通道通由人工智能起草修正.

取得站点資訊

有同PeopleOS HR相關的計畫: 帳戶所有者開通了 帳號→已加入子目錄( T)取取站點資訊分級并開始自由試驗或直接地加入。自由計劃或仍在自有計劃的測試中付費的計算法是無法新增的。等它被自有地隱藏出相間并有直接連接提供加通;等一等上限被達到后一等;當一等試驗結束而沒有買入而一無所收取。 定价頁面.

就從這裡起步取出

有一隻爬行 OpsIQ 搜尋引擎會如何去取取技術問題: 已分解的連結, 缺少的標題, 內容稀薄, 頁面放慢, 有索引問題等。

1
有活活活干

在"概述"上,點擊以開始爬行. OpsIQ 在背景中排入并工作到您的頁面; 有狀態指示器可以顯示進取 。

2
有報告再看一看

在它完成后, 就開啟出問題和頁面清單。 每期都被嚴格地分類了, 因此您先處理最大的取勝 。

3
就叫人工智能去幫忙吧

AI分析師提供一則簡易的簡介, 說明出出錯和原因,

站點情報線索

Crawls 站點健康

在 SEO 的專業性上掃描您的頁面并列出每個頁面有問題。 隨時重放或排程 。

分級追蹤

新增您所關心的關鍵; OpsIQ 檢查您站台的分數和行蹤

2. 关键字研究

有 AI 关键字教練能幫助优先排序。

回路

看看是誰聯系了您, 刷新清單并拒絕您所不希望的站台相連的連接 。

相竞者

加入相對地區, 並以相對相對的 AI 相對分析相對。

地區( 圖) 格

在地區上搜尋本地名單的能見度以查看地圖上出處, 此外還有Google Business Profile工具。

頁面速度

做頁面速度檢查可以修復有損排名和轉換的慢頁.

AI 內容

生成內容簡介和草稿以您所要取的關鍵字為目標 。

報告

就上面所寫出可以被打印的 有客戶可接受的報告

連接 Google 以取取准确相關相關資料

有兩個Google連接器能把相關估計變成活數:

谷歌搜索控制台

搜尋

取出相當的查詢、點擊和取取取您網站的Google報告、地圖地產地圖,

Google Analytics 4

交通

Bring your traffic and engagement data alongside your SEO data, so reports show visibility and behaviour together.

排程中更新白標籤報告( W)

您不必用手來運作所有事。 排程更新重跑爬行、分級檢查、關鍵字檢查、回路更新、地區網格掃描和以相關相關( 根据計劃和音量而分出) 上報告生成等。 這些都穿行了 : OpsIQ Cron 有相關相關的相關資料相接相關, 有相通相通的相通取出相通文件。 有相接的相接者會以可打印和相通方式匯出相接回相通的文件: 有通訊所會定期地向相通者提供 SEO 相通更新相通同相通, 由于相通地區相通有相通分相通之分相接, 因此相通者的相通也只會看到相通自通相關文件相通 。

有的網站情報功能叫外出資料提供商和AI通訊 OpsIQ 有被設定的提供商。 在套件被啟用后會出局 。 如果刷新無法跑出, 請確認 OpsIQ Cron正在跑取 (参见 Cron 和自動) 。
有需要我再去接通SEO嗎?+

Crawls, rank tracking, keyword research and backlinks work without touching your site. For traffic and exact search data, connect Google Search Console and GA4.

我能追蹤多個地盤嗎?+

Yes. Add each domain separately; their crawls, rankings and reports stay fully isolated from one another.

我到底要爬多快?+

有大部份的內容或結構變更后, 有需要地爬行。 設定一個排程以讓您永不忘記 。

增生( G)SEO

自動啟用 (SEO 代理)

自動啟動是站點情報局實際上用到的修補爬行和AI分析師所建議的一部份,而不只是向您提供建議。 代理員严格地用站點智報局已發現的( 它永遠無法發出改變) 的工作, 并走入同一個安全回路: 一處干跑預覽、 一處被您批准、 一塊活寫取自動快照再接一塊地取取取去以證明開放問題數已倒下。 它只是被管理到的 AI- 唯一功能; 它被顯示为站點心部內自動啟發 (rocket) 動作, 它被關起直到您開啟它相關起 。

自動執行
自動啟用 SEO 代理有一串流顯示所建議的 SEO 修正取自預覽、 批准和活寫, 有被證明再爬行相通的回應 。自動執行yoursite.com已提出修正Add missing <title>已核准修整機器人. txt已核准提供站點圖 。xml复核(分出地)+ <title>AI Helpdesk - OpsIQ</title>+ <meta name=description ...>- <title>Home</title>核准跳出( C)倒出 -- --再倒出第 二 章 124快取已儲存1序言每道取出干跑道2使用和重寫SSH 已接受或已接受 API3出自"地道" (取自"克克")重爬行相加快照
會話如何運作: 代理列出已建議的修補站點資訊, 顯示每個站點的干跑 diff, 应用您所批準的 dift SSH 或主机 API 在每次寫作前取出快照并再取出相關資料以證明已開啟的分數已倒下 。

它能改變什麼?

该代理只使用已為此域所建議的 Site Intelligence (或 AI analysis) 所應用到的修補。 在被支持的平台上:

伺服器設定

有地圖相接相接取出相接通相接口相接的相接行走相接道相接接相通相通通相相通同相通. sitemap.xml 在.htaccess (Apache / LiteSpeed) 或 nginx 設定中,

重定向鏈

折叠多跳取回旋回旋轉至單一跳取去取回取回相接相 URL 在同一個被管理的.ht存取區塊內 因此速度和連接值就不再被外出了

Page <head>

有缺失或弱的頁面標題、元描述、 相關標籤和有結構的資料 (schema) 區塊等 。

WordPress SEO

Yoast, Rank Math and SEOPress titles & meta, and image alt text, applied through WP-CLI on the SSH path or the REST API on the hosted path.

WordPress 有結構的資料

添加 JSON-去掉取去的相關頁面。SSH 在路由上, 有小管理相關的說明( 有需要用外掛程式) 列印了標出后, 它能用 SEO 外掛器或沒有 SE O 外挂程式相通; 在主機路由下, 有您 SEU 外接程式可以被取用 。

內部連接

在已存在的內存中新增相關的內部連接 WordPress 以儲存孤兒頁面并連接相關文章。 每頁有一連通, 從不包含在頭目、 有連通或短碼中, 而由您先被批准 。

短頁內容重寫

有薄的頁面被完全取代( 有爬行選取而起, 參考下方) 。 每份草稿由您在任何出品前審查并批准, 而舊的內容被保留以被还原 。

頁面快取 (A)WordPress)

在爬行找到速度問題而外掛程式被安裝后可開啟 W3 總快取頁面缓存取回, 因此頁面服務速度更快 。

Shopify SEO

出品和收藏 SEO 標題和描述,頁面和部落格文章 SEU,外加 301 有方向取道,通向 Shopify 管理者 API.

Webflow SEO

每頁 SEO 標題和元描述取自 Webflow 資料 API 二相.

自動準備修正 (兩個爬行選項)

一個域( 它的爬行設定) 的 Site Intelligence 配置面板 有兩個選擇權, 決定了代理線線上要多多多的您先出取取用。 兩個都默认被關閉了, 而且都使用 AI 信用相關, 因此您只需要您需要做同樣的工作才可以切換 。

自動預覽相關 AI 在每次爬行后修正

有時也想用相關的相關相關文字去取取取相關地點取相當相關資訊, 有相關同樣相關的地方取取出相關資料。

AI 內容重寫 (分頁)

代理可為薄頁起草完整取代內容。 任何一文都不會被自動出: 每份草稿都以您相并重複的變更而出并被批准或拒絕; 上一份內容被保留以可回轉, 而每張通訊也只限用幾頁; 每份用 AI 信用 。

💡
有時也只做作成和作好工作; 有時每項變更都得同樣地逐一得到批准、快取相接并回放,

有兩道相接之道

SSH / SFTP 路徑

自我管理

对于您自有伺服器上的站點, 代理器會連接到 SSH/SFTP 使用您所儲存的憑證, 直接編輯伺服器設定和頁面檔案并執行WP- CLI WordPress 有外殼接通并想完全控制檔案后最有效果.

被主機 --API 路徑 (不是) SSH)

有外殼

对于不允许的平台 SSH 有名特工出事了 有名有名 API 接通器, WordPress (REST + 應用密碼), Webflow (資料 API(v2)并 Shopify (分)API。主機上沒有安裝任何東西 。

💡
Wix 和 Squarespace 有公開的 SEO- 寫入 API 因此, 在這些平台上自動啟用會以通訊模式跑出: 它能顯示您要手取所要作的确切的變更( 精确的標題、 元或設定) 。 其他的都只被讀取而安全 。

打開接線器

代理器能用接通相接器接通每個平台:

已建入

Shopify 和 WordPress 有接通器的船 OpsIQ 在接通器下放入并加入商店/站點證件。

从市場上出發出

Webflow从連接器安裝 Wix 與平方空間→市場再接通同樣的方式.

一會怎么跑

1
取取修正

開啟自動啟用( Rocket) 从站點資訊相關區域中取出。 它列出已發現可以修復此域域的地點資信相關事項 。

2
預覽每項變更

在任何東西被接觸到活地站前,

3
分步核准

您要逐一批准( 或跳過) 。 在任何變更上都不可被使用, 必須先明白地去取取取。

4
有寫作 有快照

有經批准 就由代理商去做活口活口 SSH 或主機 API 并先儲存快照, 因此任何變更都可能被回滚 。

5
有證據就活活出去

在每次修改中, 代理員立即重新檢查准确的頁面并顯示出每一步"被固定活"的判決, 因此您會看到每一個固定在活頁上地點上。 在最後再畫出整個站台并確認已放出已開啟的分數 。

安全收費( B)

SEO-only

代理員只能做 Site Intelligence 就這個域所建議的。 它不能任意地更改您的站點或伺服器 。

逐步批准

每封信被預覽成 diff 在您批准這一特定步后才被使用 。

抓取回滚回( R)

在每次寫入前都儲存快照, 因此可以回放任何變更 。

每步活取出證據

在被修改的頁面被重新檢查后, 就被取出「固定活地」判決, 因此一開始就被確定了,

內容從來不自動被公開

有更強的影響力, 因此它們被顯示出由您批准, 也從未被自動使用,

有管理

自動啟用於管理型AI; 在工作區使用自用相關相時被封鎖( 有相關的相關通訊) :BYOK 有鑰匙 有鑰匙有鑰匙 有把鑰匙 有一把鑰匙有把鑰匙

有收費

相當於同樣由管理-AI的入息相接相接,

自動啟用已預設關閉。 在 AI 設定頁面上開啟自動啟出卡( Auto- Implement Card) , 并確保您平台的連接器已先連接 。
有不問就改變了什麼嗎?+

第 一 個 有 變更被預覽为 drive diff 在您批准 了 。 在您每次寫入前要儲存快照以回放 。

有需要我再去接他一通嗎? SSH 有權取用?+

不接了 WordPress, Shopify 或 Webflow 有活可干出活去 APIs 有外殼接通。SSH 它只是兩條路由之一, 當您想讓代理伺服器直接編輯您自己的伺服機上伺服程式的設定與檔案時被使用 。

我怎么知道能行?+

在使用已批準的修補后, 代理重新分解站點并顯示出前後的開放取數, 因此您可以確認修補已減少了問題。 Name

它會自己再寫出或出版頁面內容?+

No. AI content rewrites are off until you turn them on in the crawl options, they are limited to a few thin pages per pass, and every draft is shown to you for side-by-side approval before anything publishes. The previous content is kept, so a rewrite can always be reverted.

有自有的人工智能鑰匙能用到嗎?+

有自動啟用程式只被管理到 AI并被封鎖到 BYOK 在同樣的管理-AI信用下,

增长与参与

調查所

調查工作室是建立可編輯的調查的工作地點, 它能以相當相關的頁面、 網站元件或內嵌方式提供。 目前出品也提供主機連結、 有簽署的預覽草稿、 私人邀請、 QR相通、 有回應瀏覽和被測試分析等功能。 網站分類是一項送出選擇; 它不是被測出的定义 。

⚠️
有相對的邊界: the premium creation and preview experience, Connector Builder survey capability, and Survey-owned provider registry/health boundary are available now. Survey Studio still needs the independent multi-deployment architecture, signed-token Survey Identity Gateway, targeting/variable wiring, CRM Outreach send flow and typed surveys.* API.

建立調查

1
Choose how people will take it

有相關的頁面與網頁相接相接, 有相接的網站元件和入行相接。 已批準的目標流起自調查類型, 后來又加入 CRM 電子郵件、 私用連接和 QR 等一等選項 。

2
選擇目的

Pick NPS, CSAT, CES, product feedback, post-purchase, cancellation, onboarding, website, event, webinar, support, lead/demo, trial, testimonial, research, employee, intake or general feedback.

3
使用完整的樣本或開始空白

目前的目錄已按目的組成可編輯的起碼器。 選擇樣本會產生一份已複製的草稿: 更改您的調查不會改變起碼程式或另一個被調查程式 。

4
自訂或快速檢視

自訂地開啟每個問題、設計、行為和快取控制。 在最後的客戶- 檢視中快取回同樣的草稿。 沒有任何能自動被公開或發出 。

有提供選擇和現行

獨立頁面連接( L)

有自有自有的回應性標籤 URL。使用私人邀請并到期后, 每個收件者需要受控的連接。 在這個主機經驗中 QR 有共享分點 。

网站元件

已移入的遺傳通道。 它可以使用頁面、地理学、 裝置、 訪客、 日期、 采样、 冷卻、 出訪和配额規定等相接方式。 在部署架构被建設時, 它仍然被遺傳的活化- widget 橋接所支持 。

在內嵌入

在頁面、出入口、出品或相關相關中心內有反應性調查。 它不需要促進工作室 。

電子郵件

今天工作室可以發出邀請 HTML 有相關的通訊相關接觸相接相接接相通相接同接相關相接的端到端相接通相通接相連相接取相接互通相連接相同相接被通過的CRM通訊通訊集成相接等相接口相接地相接.

企業設計和預覽

有 Survey 所擁有的地圖主題和分頁相關相關, 有反應相關控制、歡迎與完成相關副本等, 有簽署的預覽草稿。 設計者預覽被完全width 放在編輯器下方, 不是一圈窄的相關鐵道上。 它使用被收看的正中跑取相關資料框并支援桌面、平板和通訊寬度; 預覽流量不寫出回覆或分析 。

💡
測試工作室自相獨立, 必須由測試所擁有。 測驗所需要使用一個可分離的測試資料的明確的一次性複製/ 匯入; 后一測試的編輯也無效 。

完整的成品

独立部署

有活

有一次調查可以有分別版本的頁面、元件、嵌入器、 CRM 電子郵件、私人連接和QR 部署等, 每個都具有自有的狀態、 設計、 觀眾和分析等功能。 每一次調查都可以被暫停、 關閉或刪除 。

CRM 外宣和宣传活动

有活

有相關相關的相關接通器被查證出自CRM相關地段和可做調查的接通站, 被冻结成一成不变版本,

外地工具箱和驗證

有活

有滑行器、相片選擇、上傳檔案、簽名、住址、通訊、標題和富足的文字等,有分/最大長度、電子郵件/URL/ 數字預置、自訂錯誤文字和每個問題的預置 URL 参数。

逻辑、公式和成果

有活

AND/OR 條件組、分支規則、安全公式引擎和帶有自己的結果頁的得分區:一個得分測驗會在判決上出現。

語言、站台、相關填充

有活

有訪客語言所下載的只有有正版翻譯的語言,共享平板电脑的站台模式(自動重置目標、自動回放、不轉接), 预填連結建構器和可編輯的安全列印和腳印文字等。

A/B版本測試

有活

在任何部署上都公布挑戰者版本并分道揚镳。 訪客被分道扬镳地分配到, 回答被印有已實用版本的印章; 相對表格顯示了回覆、完成和每版平均分數。 一擊就升出取勝者 。

每周文摘

有活

有上一個的每周郵件7有相關相關的相關接通器所傳送的相接相關資料。 在自動通訊中心配置相關通訊。

治理

有活

每個調查的權限列表限制誰可以編輯、發布或刪除一個調查。 發布批准(四眼)需要第二個管理員來釋放確切草稿; 編輯重置批准。 草稿共享連結讓審核者在不登錄的情況下看到真正的草稿。

發展者平台

有活

Connector 合同 2.2,打入的調查 *和回應 * 相關動作 api 有 Slack 和Google工作表接通格式的可持久簽署的網上呼號, PDF 匯出。

增长与参与

有相關相關的相關出自相關分析與回應相關產品:

調查分析解釋了調查本身如何接觸到人們和表現。 反饋解釋客戶在所有允許的來源中說了什麼,以及業務應該做些什麼。 這兩個產品彼此連結,但不共享或覆蓋分析真相。

分析

它能測量出相關資格、曝光、觸發行為、起步、完成、被棄取、問和分機摩擦、時間、部署/ 外觀/ 版本結果和跑取時的可靠性等。

回馈概述和收件箱

One permission-aware chronological feed for completed Survey responses, legacy widget feedback, chat and ticket CSAT, ticket reply feedback, customer AI-answer ratings, knowledge-base helpful votes and approved external/custom sources.

2. 反馈分析

有:原始的指向、主題、情感、意向、急迫、要求、抱怨、讚美、出行/出產/服務/團隊相接相接、贬低人和收視率等。

二. 資料所有者

調查回應在 Survey 儲存中仍然有权威性。回報可以儲存可重建的來源參考和所產生的訊息,再由所需要載入所允許的證據。

⚠️
目前回馈頁面上仍有一個 Survey 回應瀏覽器和相隔的相關元件收件盒, 它的 AI 總目尚未使用完全常态化的源碼模型. 統一通览 / Inbox / Analytics / source & ho健康的設計是執行目標 。

NPS, CSAT, CES、 星星、 拇指和相關用處都必須保留出其原始方法、 尺度、 樣本、 日期視窗和分母。 它們永遠不能被合并成一個可解釋的平均值 。

增生( G)SEO

促銷工作室

宣傳工作室會把你的網站轉換成轉換引擎。 設計出出出彈出相、旗子、滑入相接相接取相接的上下行列、全屏接取接取取相關相接接相關的區塊, 有內含的區块甚至以國家為基礎的轉接相通相接方式等, 在相當時向受訪者顯示正確訊息 。OpsIQ 在您的站台上已有元件, 因此沒有可加裝的。 您會設計并儲存選舉; 它只會被您所發行而工作室被接通 。

促銷工作室
宣傳工作室設計員有相片相關的相片設計師 有相機相關相關地點 有相關取景板 有相對相關被取景地點出景宣傳工作室 - 設計員區塊x歡迎光臨 {first_name}!取 15% 你的第一個訂單SAVE15有我出賣的入息了有目的國家美國 CA起點出出意A/B分拆50 / 50出版1设计将區塊拖入畫布上2目标有收視率 有收看相關的相關地點 有收聽相關相關報導 有收收看所 有收取相關資料的相接相關事由"出自"同"相關"相接作相關分.3(美 樂)A/B取胜者+AI取景地
外觀設計師: 在左邊有一塊相色板 在畫布上做你的競選 (這裡有個人化的通融券出自於 {first_name})和取向+ 在右邊公布面板。

大局圖

運動

什么?

有一項推廣:一通出道,一通旗子,一行出道口,一出出道相接相接取出入道相通相通,一屏入道自通相接地區相通接相通等相通分別相通取出相通之相通同相通而相通并相通.

設計版本( V)

有出自"活"一行

在視覺編輯器中建立外觀。 每一個儲存都會產生出新的版本, 因此可以回轉 。 任何東西都不會被弄丟 。

有目標了

有誰?

有的有:國家、頁面、裝置、交通來源等, 有回取新相接地點、排程和(有接通器)您登入的客戶。

觸發器

有被取出地點后

有時:一出被拖延,一出卷,一去不回;一出闲地;一起被點擊;一入N頁后;一通聊天/出票活出;一去被取出; 二出出出入出出; 三出出取出出相; 二入出相接; 二起出相通; 二去相通.

分析

成果

有活的印象、出擊接觸、轉換、放入漏斗、國家相/頁/裝置相分相接相接、A/B取勝和AI透視相接等。

第一個升出到相當多的地方去取取回相當高的分數5步

1
从樣本起取或自空白起取

在相關相關的相關站上出一項草稿。

2
有相想相想了

以區塊、 标题、 文字、 按鍵、 影像、 徽章、 數據站、 有倒數站、 窗体、 通訊券、 有相關收視率、 有自旋輪等。 有相片顏色、 有梯度和相關效果, 有滑行相關的相關相關功能 。 預覽桌面 / Tablet / Mobile, 並使用 Free Movement去放放任何相關的地方 。

3
就地取道

有同樣的代碼 {first_name}, {country} 或 {company} 在展出時 就成為了訪客真正的價值

4
目標啟動( T)

選擇誰能看到它( 國家、 頁面、 有裝置、 有觀眾等) , 以及它起火后( 有延遲、 有卷帶、 有出局等)。 留下通規空白以表示每個人 。

5
有相簿后再出相簿

點擊檢查以快取出前的掃描, 然后公開。 它會在一秒內被活取并開始收集分析相關資料 。

有可以建起的屏障

內容

核心

取名、 第一段、 第1段、 引文、相片、相像相像、相克、相接相接和相通相接等相關相關訊息的元件。

二. 要求采取行动

核心

有活性動作的按鈕: 開啟連接, 開始聊天, 建立入場券, 複製出通訊券或跳入一頁 。

緊急性抓取( G)

保險

有倒數定時器、表格(電子郵件/通訊/文字)、通訊券等相關資料。

有賭取回應( R)

保險

有自旋到取勝的輪子 有刮花相接相接的卡片 有NPS/星等收視率 有多步漏斗相接

佈局效果( E)

保險

Columns, progress bars, social share, social proof tickers, yes/no two-step, quizzes, and 3D effects, tilt, glow, parallax, glassmorphism.

个性化符號

在標題、段落、按鈕、徽章、相關數據、名單或引文中輸入這些相關的內容。 在升職一出即用訪客的活性細節取而代之( 總是被打掃出安全性 :

有可用的指標
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)

目標參考

國家地點( L)

在所選取的國家、城市或時區出自地圖IP。 對於地區特有出價或地圖回轉都非常好 。

頁面( I) URLs

以等於/ 从 /起取入/ 有/ regex 的頁面限制某些頁面, 并排除頁面 。

裝置

桌面、平板或可動相接相接, 如: 在相接的相接上有一絲不平的列, 在相關相接方式上有 一項相接可接相通相接之分 。

訪客類型

有新、回傳、已知( 在您的 CRM 中)或匿名; 有 CR M 區段、 生命周期相接相接阶段、 有領導分數或瀏覽器用語言等 。

交通源

有UTM (自動來源、自動去取取取相或取相接相接等) 或取而代之, 例如只取自特定廣告的訪客相接 。

排程頻道( V)

起動/ 結束日期、 活取時間視窗, 有多久能被看到( 在關閉后, 有一天可以被按下/ 轉換) 。

A/B分道通航

有相當多的訪客被顯示出相對相對的變相;同一個人也常看到同樣的變形相向.

觀眾 (登入)

有接通器被啟用, 有活帳號狀態的目標, 如有未付收費的客戶或活生生的訂戶等。

觸發器

選擇推廣的樣子: 在被延遲后, 在卷轴深度上出局地點上出出出入出出取出出地點; 在被取取取多頁后出出擊出出元素; 在窗體- 被放出出去取出; 在聊天/ 入票活性上出取取出。 開發者可以用自有程式碼取出一款出取入出取自自有取出地取出取回取出入取出相 window.OpsIQPromo.fire('event').

有登入的客戶 (接通器)

就這樣想出出事了 OpsIQ 有特殊提升: 連接平台等 WHMCS (或任何能支持觀眾的接通器)而工作室可以以他們的活帳號狀態取向訪客.

1
開啟取相接器

在接通器下 有能揭露觀眾相關事實的功能 WHMCS 在登入平台后,被安全地認出客戶。OpsIQ 从來就不相信被打入的電子郵件.

2
新增觀眾規則

在選舉中, 有需要登入并加入一些規定, 如未收取的收據等。1,订阅已逾期,或帳號信用 > 0.

3
有相關相關資料相關個人化相關

使用指號等 {first_name} 或 {balance_due} 有一封"你欠了收據"的提醒信被自己寫出

有的觀眾目標是相關的: 如果接通者無法確認事實( 有的訪客被登入), 就不會被升級出名, 因此收費目標的出價永遠不會被錯誤取出。 建起自有接通器?

有通商相通 (工作室超能)

在您所提供相關相關的相關卡片中取出相關同分相關之相關資訊相關資料( C)

有活取相

一產品區塊取出正宗項目 (名、 價、 銷售價、相片、 連結等) WHMCS, WooCommerce, Shopify 或您的 OpsIQ 取出「保持新鮮」, 有卡片在公開時每小時都從平台上更新出價。

儲存提供券

相當相當有分相通相通

有通融券可以一出名 就在商店中建立取出取出回取出密碼 因此被取出者所揭示出出取回取回的密碼能出出出

有秩序-真相收入

歸屬

因此所見的收入取自于現有銷售, 而非估計。

有相關證據能證明出相關事務

信任

有相關相關的選取單可以由相關名單取取出 (Ada roster Starter Plan ) 。2h 有名有名地出自"相克"

實驗和出行

A/B 變更自動取勝( A)

Split traffic across design variants; let the studio promote the statistical winner automatically, or hand traffic to the bandit optimiser which shifts visitors toward what converts as evidence comes in.

堅持不屈的升級

有部分來客一無所見 就證明是被選舉所取出

分區變更

Different content per audience on the SAME campaign (mobile visitors, big carts, returning customers), each segment gets its own version.

触发實驗

有相關的變相檔可以做成: 有相當相當的出站地圖被取出地圖相對取出取出。

出行( 鏈接)

有的被另一項運動所取出("锯木運動A",

取茶者

有小藥丸來客可以再接觸到,

有出事了就去想一想

點擊熱圖

設計者

在設計者中, 切換取取取暖圖以繪取真正的訪客 在您所設計的每一區被點擊出。

分步漏斗

有漏斗

有多步跑的活動能顯示出人們從哪去走走 有屏幕相關

相對選項

工作室

有相接相接的相接活動(印象、點擊、轉換等),

每周故事摘要( D)

AI (出自:"相克")

每週一有文摘登入您的通知;📖有下一個相關的階段。

有活可干

AI 副駕駛相關想法( I)

有同樣的相關相關資訊也相當相當多; 有同時也相關同同樣相關, 有同同時相關的相當同時被取出相關資料, 有相關消息被取自相關地用相關口號去取取取回相關通訊相關信息; 有相當有同相關的地方被取回同同相通相通的相通地點。

Brand Kit 匯入

有一個指揮官讀取您所建立的网站并建議您所展示的正版相當多的顏色和字体; 有保存和取取取者都用取取出相當有的取取材.

多屏幕漏斗

步數區塊得到每屏編輯的正則: 每屏的分頁, 新增或重排相關相關的相關螢幕, 而預覽也隨之而去 。

有命名的版本存在( B)

有重要版本("Launch subject"),

裝置條列標示( L)

在一處取用桌面、平板和相通相接相接; 切換像素標示符以精确地放入 。

有主機頁面的頻道( C)

有被取回的線索, 有一擊一擊的網頁推取草稿等。

企业安全

公布已冻结的視窗( 有變更- 有時可被取出), 有緊急暫停的切換、 有批准權、 有審查追蹤及回放等功能。

我需要去我的地點上再加密碼嗎?+

有同樣的升職 OpsIQ 已安裝了元件。 已設計、 出發和完成 。

有訪客會接一回地看到同樣的出事嗎?+

第 3 個相關相關同位相關的相關通訊相關接相關之類相關出相關收相關取相關互通相關分相關可被使用。

有誰能出名?+

出版、收縮、放放和回放都只限工作地主和正版管理員。 任何團體成員可以建立并設計草稿相關相關的相關資料 。

增生( G)SEO

升級設計員

Promotion Designer is a responsive block editor for building, reviewing, versioning and publishing a campaign experience.

產品螢幕
升級設計員設計者會把活畫布相接, 裝置預覽, 有區塊, 有個性化變數, 有評論和版本歷史相接相接.升級設計員工作區域VIEWPORT桌面文稿v12草案LIVE WORKSPACE VIEW英雄區二. 頭條、媒体和CTA編輯出價區塊三. 折扣和截止日期編輯个性化聯絡人與競選變數就緒啟動檢查批注和审定复核1BUILD BLOCKS編輯活地布局2序言桌面、平板、可動3PUBLISH已版本放出
設計者會把活畫布相接, 裝置預覽, 有區塊, 有個性化變數, 有評論和版本歷史相接相接.

使用區塊來編譯經驗, 預覽所支持的每個取景口并插入已批准的個人化變數。 在啟用前要先回覆評論和 AI- 媒體出處。 儲存會建立版本以讓先前的設計被檢查或恢復 。

增生( G)SEO

升起模板

有相關相關資訊相關報導,

產品螢幕
升起模板有樣板相簿可以過度地分出相簿外接相簿, 在樣板被收取后可以使用工作區的花樣相簿相當相當多。升起模板工作區域类别改划RESULTS24有出息了已套用LIVE WORKSPACE VIEW退出要约有急事的相机和CTA預覽有新客人了Banner和益惠清單預覽出品有英雄 有證據 有倒數預覽2. 反馈要求收縮調查快取預覽1FILTER分類和搜尋2序言就看一眼想出什么去取出出出什么来?3USE建立有標籤的草稿
有樣板相簿可以過度地分出相簿外接相簿, 在樣板被收取后可以使用工作區的花樣相簿相當相當多。

搜尋或過程分類相接, 加載附加結果, 預覽完整經歷,再選擇 使用模板在公佈前可以改用推廣設計師。

增生( G)SEO

2. 促销分析

相接相接的相接地點擊:轉換、觀眾相接、接觸相接器相接出事和競選相接取習相接。

產品螢幕
2. 促销分析推廣分析顯示頭條的性能、觀眾和觸發分解相接相接,2. 促销分析工作區域IMPRESSIONS42.8kCTR 相關6.4%CONVERSIONS814LIVE WORKSPACE VIEW國家· 英國; 31%分解頁面/pricing · 22%分解起點退出意向... 44%分解連接器動作已建立 Counon (% 1) 97% 成功成果1(美 樂)轉換印象2SLICE頁面、相接地、相通地、接通地3LEARN套取洞察力
推廣分析顯示頭條的性能、觀眾和觸發分解相接相接,

相關相關的相關訊息相關接觸和轉換相關。 按國家、頁面、出擊器和裝置分解結果; 有需要時出出被取回的領導。 Connector 動作結果顯示了所保證的相對接續是否真的被執行。 AI的洞察力和學取摘要被當作假設去驗證,而不要自動取出證據 。

增生( G)SEO

通 知

在元件通知區域中公佈了信件, 有可選擇的目標、 排程和動作呼求 。

產品螢幕
通 知宣佈編輯器包括內容、CTA、觀眾相關地段、頁面規則、活性日期和相關取景等。通 知工作區域實用3AUDIENCE分集排期二月 22–29LIVE WORKSPACE VIEW有志于就緒內容有下載信件就緒CTA (中接字)讀取更新可選的規則定价頁面 :有目標了1WRITE標題和分頁2目标有觀眾收看 有部分 有頁面3排期正在使用的視窗
宣佈編輯器包括內容、CTA、觀眾相關地段、頁面規則、活性日期和相關取景等。

選擇所有訪客、 已簽名的訪客或新訪客; 有聯絡人區段和頁面規則可選擇地縮入觀眾。 設定活性日期相接相接并使用正用旗子 。 Premium 樣式會預置和色彩變更顯示, 但不會取代清晰內容 。

增生( G)SEO

二. 推動活性

在相關網站出道后, Push series 發出瀏覽器通知給訂閱者。

產品螢幕
二. 推動活性推動作曲出自自訂的範圍、內容、媒體、動作、目標規則和排程狀態等。二. 推動活性工作區域SUBSCRIBERS8,21431.6kCLICK RATE5.8%LIVE WORKSPACE VIEW有車等了就緒正文今天回去取活口就緒CTA (中接字)開啟推車就緒排程有放出就去取取取相草案1PREPARE PUSH標題、正體、圖示2目标有觀眾收看 有部分 有頁面3SEND有出事了 有出稿了 有去就去取回去
推動作曲出自自訂的範圍、內容、媒體、動作、目標規則和排程狀態等。

在 Web Push 設定下先設定 Web 按鍵。 競選可以包括標題、 身體、 圖示、 英雄影像、 徽章、 CTA 有兩個動作按鈕; 在訪客相接前要持續通知 。

有目擊目標, 有可選的聯絡人段和頁面規則。 需要用訂閱和點擊的標準來判斷所及。 在嵌入的第三方站點上需要 HTTPS 有正確的寄出服務員; 在第三方站点上需要參考Web Push 。

增生( G)SEO

主动信件

有先入為主的訊息自動傳出, 在被訪者問起前, 有規則相符合; 有三分: 有甚麼事要發生; 有多快; 有出多快等? OpsIQ 在您網站上已有元件 。

有先入之想
主动信件有三分:選擇一項動作(聊天、旗子、巡迴、推取、電子郵件)、增加條件、設下頻道冷卻等。主动信件工作區域1 · 動作有聊天消息有線巡游推出電子郵件2 · 条件page = /pricing頁面上所剩時間 > 20s返回3频率每会期一次狀態1動作有聊天 有通訊 有通通訊 推...2CONDITIONS有相關相關的相關事由您出面取回3(自由自在地出走)有客人可以去取出相機了
有三個選擇:出事(聊天、旗子、巡迴、推倒、電子郵件、網頁等)、出事地(條件)和出事去取出多多起(冷卻出事)。

有三分之分

1
(出自"活")到底出自何事?

有聊天相接相接或頁面上標籤相接, 有指導之旅出行, 有網絡推進或電子郵件, 有被指派到某地區去取用, 有的放出一通網頁。 如: {{visitor_name}} 和 {{page_title}} 就變成了真正的價值

2
它一被燃起就被燃出;

啟動它的縮窄: page/URL 在頁面上放入相關的相關相關分數。 在不作任何條件下, 每個被訪者都受規則所影響。 在相關同 AND相通下, 有相關條件相通相通 。

3
(频率)

設置冷卻以讓同一個人不受苦, 如每會期有一次或每天有一次。 每項規則有關接狀態 。

⚠️
工作區切換了"跑取時間/平時規則", 讓伺服器的一邊動作( 電子郵件、 推取、 網頁被取出等) 在目前未登入網頁的已知聯絡人的时间表上起火, 因此您可以自動地" 郵件空置的熱通訊" 。 它需要被取用 : OpsIQ Cron跑取取取出取出,取出一分一分.
它能放出活口去取出活生生的活口?+

有時您需要加入相關條件。 需要至少加入一項條件( 有頁面、 有領先分數、 有回回等) 以對準相對的訪客 。

有同樣的相關相關?+

有先入之見的規則可以起先出自一款有先入道的游戲, 有先出道相接相接可起先取出一款聊天相接通相接接相通相通接相關相接的相接方式相接而起再分出相接之相接者相接取取取相接同相接也相接能相接出相通之相通而相接地相接去相接所接相相接回相接

增生( G)SEO

聊天相通

Chatbot 流程文稿分解您聊天元件內的對話( 有發出、 有關鍵接頭、 有導引路徑等) 有密碼。 有串相通的相通步號 (節點): 您要問一問, 有訪客會選擇一個選項, 有線接通后會把相通分行傳出去取取取去。 只有活性相通流能跑入您的站口 。

如何運作
聊天相通有一塊相接相接的畫布: 一塊相對相接取出分枝相接地,歡迎您了有什麼事?有我的命令去追取有打字問題有活可干? 有活能干?有秩序就找去取→ Human agent出自:"相克" 關鍵字 "手動" 后-相克相克
聊天相通

流動相對于 AI : 需要用到的時數

使用相通相通

有可預想而您每次都想得到同樣的路由:訂取步徑、回向指揮師、"哪個計劃"等選擇者、接取前收集電子郵件等。 流程從不即興地出發 。

使用人工智能

有 有 人 有 有 有 二 有 二 個 有 有 三 有 三 分 有 有 一 有 有 四 有 二 二 有 三 三 有 二 三 有 一 二 有 一 一 有 二 一 有 一 三 二 有 有一 二 二 二 三 三 三 二 三 二 二 一 相通 有 二 四 二 三 一 有 三 二 一 一 一 二 二出 有 二一 二 三一 二 一 二 一出 有 一一 二一出 有 三 一 二 三入 有 二分出 有 有

觸發器

歡迎您了

有訪客先開啟聊天時以開口訊息來執行 。

關鍵字

有您列出的單詞被訪客打入( 如退款、 定价、 取消等) 就執行 。

在事後 / 在被延后后后

有相關聯絡人相通后即起起步, 有固定的時間相通 。

在聊天端/ 預動

在聊天結束后跑起( 如評分等) , 或是由先動信件規則所啟動 。

四分一步地建一等站

1
建立相關相關的相關

點擊新流程,取出它名,取取出一個觸發型態( 如果是關鍵字的話, 有关键字) 。 它會被關閉 。

2
打開畫布

點擊 Edit Canvas。 在您新增階段( 有按鈕的問題、 有分枝等) 并連接相關的視覺建構器 。

3
有分枝相接相接

有 分行 就取出一分行去取出 由解析出、接交給人工智能或被轉接到人身上等

4
啟用( E)

點擊啟用。 流出即將被活化到您的元件中去。 在不失去設計的情况下可以禁用 。

有活口能取而代之?+

有相接相接地跑出相接道去取取取可預知的路由和AI去取無限的問題; 有相通相接之事也常能取出相去相去而取出同分相通的相去之相去行走相去取回相去去相入相去所取取相去有相去自取相取相出相取而取相相去者相去同相去被取相入同相取取而相去想相去作相去后相取同相出同相相取之相取有相取自相取去相取所取相接而相取出之相相出之取相克相取入相取以相取可取相放相取于相取受相取

增生( G)SEO

有導引的出行

有導引的巡迴是分步走過您頁面上有語言相接和聚光燈的地步, 它能指導到訪客穿行入住或有新的功能。 它被完全取自外觀設計并有活取預覽。 巡迴只等被標出后才出行 。

如何運作
有導引的出行有相關相關通訊的一頁被遮住 有聚光燈的一圈相接相接的按鈕 有被套住的演講相接口氣相接出步1二月4有下一個按鈕。+ 添加交易步入1一, 4第一個交易出炉了點擊這裡以新增您的通訊管的協議 。下一頁→
有導引的出行

如何去旅行?

每一步都以元素为目标并用您文字顯示出一股泡沫。 加入多數的站口以按下它們 。

預置主題( T)

从預設或設計出自您自有的相關相關氣泡( 顏色、 有梯度和聚光燈)起, 在右邊有活的預覽相關功能 。

起點

有權把先入為主的規則相接, 因此巡演自動起跑出起跑(例如回歸的訪客第一次到訪) 。

啟動切換

在啟動被勾選出時, 有權跑取它。 取消取出而不用刪除它 。

四分一步地建一等站

1
新巡迴

點擊新導引出游,取出它名, 有選擇地連接出一項先動規則自動起步 。

2
新增步數

新增一站: 選擇它指向的元素并寫入相關文字。 在路徑被流出前再排好 。

3
有相想相想了

就自己選一出相機或相當相當有型的相機取出相關相片取出所見相片相當多的相片 。

4
活化

勾選活性并儲存。 巡迴可以自動跑出, 或是由先動信件規則起跑 。

出行要怎么起步?+

有自動啟動, 有自取其道地由相關訊息規則所起"被指使出行"之作, 因此您決定由哪個訪客去觀察出出行及時間.

增生( G)SEO

2. 轉換目標

轉換目標會把您所關心的活性(入住的網游活動、聊天訊息、票房解析等)轉換成有記錄的轉換,并有完全的歸屬性。當活性起火后, OpsIQ 記錄了與接觸相對的轉換,并把它同前作的競爭相接相接,分類相接和來源相接.

如何運作
2. 轉換目標有入球相接: 有收費. 有收獲的webhook事件被收錄成"買入"轉換價值 $49 有快起跑預置的芯片相接相接了 有相關相關的相關事由 有相通的相通相通快起步了Stripe购买有訂下地道了通訊註冊payment.succeeded有入站的網頁改划"收購" -- $49有屬性· 運動
2. 轉換目標

三步入一入入一出

1
取出起動器

點擊新轉換目標。 選擇算作轉換的活性型態, 或是使用快速啟動預置 。Stripe有相關消息: 已訂下通訊名單,

2
取出名并設定值

提供轉換名稱( 買取、 被下載出、 有簽名) , 有選擇地提供固定值和屬性視窗 。

3
保存

有救有活 就從后 有活活活出就活活了 OpsIQ 有同前述接觸相關的通訊相關轉換

目標已被接通入入內的網戶: 在事件降落一出即能自動地接觸入內事件類型起火的目標。 使用入內網戶頁接通Stripe,可卡倫德利或能 POST 的任何系統JSON.
有甚麼能被轉換?+

有記錄的活動:入住的網上hook事件(pay. succeted),聊天電子郵件抓取,票面解析,接觸時間線上的任何相關事項.

分析

自訂儀表板

自訂的 Dashboard 使您可以建立自己對有分量的公尺的檢視, 而不只是取自於標準概觀。 新增您想要的元件、 拖放并重新大小到您所想的佈局中去, 儲存它并和您的團隊分享 。

自訂儀表板
自訂儀表板有克羅地馬克相關相關的相關通訊錄和圖表相關接器, 有被打碎的放出區域, 有相關分的按鈕等相關功能 。自訂自訂取的碟片工作區域我的儀表板+ 添加元件維斯多克2,481收 出$8 2.2克贩运在這裏拖放元件托普相接相接器/pricing/docs/signup1ADD WIDGETS選擇公分尺和圖表( H)2ARRANGE拖放大小( R)3相接有你的同隊相助了
建立自有的棋盤: 新增 KPI, 有圖和清單元件, 將它們拖入您要的佈局并重新大小, 然后與相組分享 。

三相一相建一相.

1
新增元件

點擊 添加元件并選擇您要追蹤的公制或圖表。 在棋盤上重複您想要的每分每分都需要 。

2
排列布局

拖曳部件以重新定位并拖曳邊緣以改變大小。 KPI 在上方相對, 在下方的圖表中。 無論讀取得好 。

3
儲存共享( S)

就去取取同樣的數字去取出相關的相關資料了 有同樣相關相關信息被取出

有活計數的"每日相看"相接相接的相接板, 有相接地圖相接取取回相接再接相關相接而出相接也相接;
增生( G)SEO

二. 外联活

Outreach is OpsIQ's 1:1 and bulk email engine: compose a personalised message or run a campaign to a CRM segment, with reply detection, send-time control, open/click tracking, a tracking pixel and one-click unsubscribe. It is consent-gated and CAN-SPAM / CASL compliant.

二. 外联
二. 外联活有作曲家/相片/平面板/回放分頁的外延螢幕, 有顯示已發出、開放率和回應率的競選表。二. 外联工作區域活 起作曲家樣本答复坎地克克克開啟文 件6. 《6月通讯》1,20048%7%接通34062%14%有取回82039%5%回答檢測自動停止跟蹤 : · 在每次寄出上一擊取出訂閱11:1 & BULK作曲或作運動2TRACKED開啟、點擊、回覆3COMPLIANT已建立未訂閱
外延引擎: 傳送1:1或跑到一區, 追蹤開啟和回覆;并遵守內建的未訂閱和回復檢測。

四分頁

作曲家

寫出個性化的1:1有電子郵件取用 {tokens} 有接通和CRM相接相接

活 起

有封面和出發時控件被傳送到已排好或已排出 CRM 區段 。

樣本

重用可重复外延的信件樣本 。

答复

有回覆的偵測記錄 有回復的 有回信的就接通了

有活要干到底

1
Pick an audience

選擇 CRM 區段( 或上傳清單) 。 壓縮和同意被自動使用 。

2
作曲

有相關的相關人被預覽取出相關訊息 。

3
排程出送( S)

即時或最快地傳出。 有追蹤像素紀錄開啟; 有點擊和回覆被歸屬 。

有相關相關的相關訊息相關, 有一擊即不訂收出每份相關信,
分析

已排定的報告

排期中報告收件人所選取的公制集 (每日、每周或每月) 有可打印的白色標籤 PDF 有一次被放入收件箱后,報告自動被放出 OpsIQ 克倫.

已排定的報告
已排定的報告已排期的報告顯示: 有報告的表, 有被收件人和最後批次的相關相關分類, 有儲存報告按鈕相關 。排期中報告工作區域已排定的報告+ 儲存報告報告排期回收站上一行每周通通車量月9:00[email protected]二出事了SEO 客戶端報告每月[email protected]三月1出 售 摘要每天[email protected]today就被取出白標籤了 PDF 在取回相接相接的相接 OpsIQ 克通1AUTOMATED每日 -- -- 每周 -- -- 每月2(白-拉貝爾)PDF 收受到客戶3回收站有按期發出郵件
設定一次報告( 參數集、 範圍、 排程表、 收件人)和 OpsIQ 有白標籤的電子郵件 PDF 就自動地出發去取取回相當多的活口

有報告了

1
選擇要送出什麼

Pick the metric set (traffic, SEO, sales, support…) and a date range.

2
設定排程收件者( D)

在您所選擇的時刻, 每日、 每周或每月向一至多個電子郵件收取者提供相關訊息。

3
保存

儲存并啟用。 報告會按期產生并發出郵件, 沒有手動的步數 。

💡
有排期的報告通通到 OpsIQ Cron 如果有報告到達 就去確認Cron正在被執行 (參見 Cron和自動操作) 。
隱私

隱私遵守( A)

隱私與遵守頁面是向一個負責地處理個人相關資料的稽核人展示的單一地點:同意分類,管理存取日志,您相關相關數據的居住和保留政策,以及即時打印 DPA,以一分頁取景。只有完整的管理員能開啟它。

隱私遵守( A)
隱私遵守( A)隱私與遵守性相關螢幕: 權限分頁、 存取紀錄、 居住地和 DPA 有同意分類的授權表 有被取消的分道別隐私和遵守工作區域同意分類存取日志居住DPA聯繫人查克動作日期[email protected]電子郵件有被授權三月 12[email protected]push已撤消三月 10[email protected]marketing有被授權三月9有可被取回的相關證據1(相接的LEGER)有相關證據能證明每分相關的相關事務2ACCESS LOG有相關相關資料的人3DPA可打印模板
有一款可被取用的审计人可以取用:可取用的同意分類(按通道取出/收回),接觸相關相關資料的取用記錄、居住地/保留地設定和可打印相關文件 DPA.

四分頁

同意分類

有一份可搜尋的相關記錄, 有每一次同意相關的授權, 有通訊道被取消( 郵件、 推取、 簡訊、 接觸等)、 有通報、 有通話出自或日期。 您的證件已相關( 有通問已取出) 。

存取日志

在你的團隊中,誰查看了、編輯、出出出、去除或傳出接觸者的數據 有管事人、接觸人、動作、所說出的理由和訊息? IP 就跟管事所要的一模一樣了

居住和保留

宣佈此工作區的數據活度, 設定活度行數( C)0有相關資料控制器和 DPO 有相通相通的相通性 有相接相通取出相通同相通之相通.

DPA 模板

有可打印的資料處理備份以填入您的控制器、 地址、 DPO、 居住地和保留地。 列印或儲存为 PDF.

Cookie 同意工作室 (收集同意) 和 Eport 頁面 (提供相關相當相關資料)相對相對 DSAR。也參考 Cron和自動的入夜取出清除。
連接器

連接您的平台

Connectors 連接器 OpsIQ 通訊到外出平台:電子商業商店、收費系統、支付處理器、電子郵件提供商和自訂 APIs 有相關的相關資訊相關相關,

如何運作
接通器中枢OpsIQ核心已連接到WHMCS, Shopify, Stripe, WooCommerce, sendGrid和Google Business Profile, 每個都顯示相關狀態 。WHMCSShopifyStripeWooCommerceSendGrid谷歌 BPOpsIQ核心1PLUG IN25+ 已先建接線器2AI CONTEXT真正的平台資料3ACTIONS有你的同意就做得到
連接器

有船舶OpsIQ

有您一安裝 就到站了 就需要您的證件了

WHMCS

有收費

有網絡收費:客戶、服務、入票、通訊、地盤、伺服器等。

Shopify

电子商务

有相關的相關事務所: 有訂單 有客戶 有產品 有存货 有付款 有網路

WooCommerce

电子商务

WordPress e-commerce: orders, customers, products, coupons, shipping.

WordPress

CMS 通訊錄

Content and users on a WordPress site.

平方

付款

有出價 有出賣地 有出貨 有客戶 有出銷地點 有出售地點

osCommerce

电子商务

有相關的通訊:指揮、客戶、產品等。

有瓶子酒店

有橋

有一瓶CMS酒店地點被簽了名OpsIQ有否的平台的參考實作API.

Zendesk

支助

有出自"相關資訊"等,

谷歌商業設定檔

出市

(出自"地事":評論,文章,QQA,取見. ) OAuth.

谷歌行事曆

生产力

行事曆和事件。用法OAuth.

Gmail和IMAP

電子郵件

信箱:出入境信件,通訊錄同步.

SendGrid

電子郵件

電子郵件: 發出電子信件并管理樣本.

有名的相機相機被取出相機所取出

電子郵件

有電子郵件: 有電相通通訊出發。

Slack, Telegram(一行 二行)

訊息

有通訊道接通出入口的對話

元通道

訊息

在Facebook上的信使,Instagram管理部和WhatsApp.

站所情報 (M)GA4,搜索控制台)

分析

二. 分析和取取SEO有套房了.

二. 网站的丰富和CRM匯入

CMM (CRM)

有公司資通和大宗客戶入口.

有市面可取

這些是已出品的套件,不是安裝的一部分。 从 Connectors (通訊網) 安裝一款并被复制到活的接通器資料夾中, 它會有和上等同的行為 。

Stripe

市場

Payments: charges, customers, invoices, subscriptions, payouts, disputes.

BigCommerce

市場

有: 通訊、客戶、產品、分類、品牌等。

三相相取出. 2

市場

有: 通訊、客戶、產品、分類、貨幣等

PrestaShop

市場

電子商業:訂單、客戶、產品、出行規則、運輸人等。

OpenCart

市場

有相關相關資訊相關的相關事務:

Amazon SES、 Postmark、 重傳

市場

有交換電子郵件快遞

Jira二行

市場

有出發和專案追蹤

縮放、 微软行事曆、 展望郵件

市場

有會議、会曆和信件等.

DocuSign, Apollo, SerpApi, Google Analytics

市場

2. 簽名、探矿、搜索和分析等相關資料。

Webflow平方相距

市場

网站平台.

💡
連接器清單隨著套件被公開而移動。 您安裝的權威列表是接通器頁面: 有列出的就是已發現的跑取時間, 有市場分頁顯示您能新增的內容 。

安裝接線符中

1
跳到連接器

在管理方列中通訊到連接器 。

2
找到接線器

瀏覽列表或搜尋。 Connectors被分類 。

3
啟用( E)

點擊連接器并切換 Election 。

4
輸入憑證

填入需要的字段: API 鍵 URL 等。每個接通器都有其設定面板所紀錄的特定要求。

5
測試接通

點擊"試接"。 有綠色的結果可以通到外接站台。 有紅色的結局可以顯示出錯誤 。

6
配置特性

選擇要啟用哪些功能: 知識同步、 有網路同步、有AI相接的動作。 并非所有連接器都支持所有功能 。

有接通器能給你出什麼

AI 上下文

AI能透過連接器查取客戶的資料、訂單、訂閱等。

AI 上下文 (連接者作者)

您的連接器上下文提供程式提供入通- AI 的只讀帳號摘要。 Control the client by customer_id 有已知;不然,出票自印,出出克特克克克旗 customer_trust_email 有相關的,找找相簿取出相簿 customer_email (已查證的出票人). 遠端平台曝光一 /context/customer-by-email 結點和接通器取出它。 因此AI 引用了真正的平衡/相關收音機而不用說 “ 請登入 ” ( specification in)。 榮幸接通者的數據類分切換( sign) (% 1) (s.customer_sections, customer_allow_credit就只取一分之地去取出秘密

Cuser Director (連接者)

您的接通器"身份提供"提供相關出行三次通取票: lookupCustomerById() (接客卡) lookupCustomerServices() (出品/服務表),并 listCustomers($query,$limit): 在本地的 Capose-New- Ticket 表格上取取相關郵件。 回列 {id, external_id, name, email, company, phone, platform, platform_label}. 遠端規則: 如果您的客戶住入了其他數據庫或服務 就從您平台上取取 API 在這些方法中,從不直接讀取其他系統的表格 (在 OpsIQ DB 是空占位符, 因此當地端讀取回了空取取取器 。 在您所配置的遠端路徑上關上 API URL; 保留本地端的讀取只做同一個 DB倒數 。

通訊錄取出票、偵測及路由(連接器作者)

在入住的電子郵件被當作出地票后 OpsIQ 呼叫以偵測發件人 lookupCustomerById(0, ['email'=>$sender]) 第一個相關的「 有」了客戶和它的相關相關 platform 有彈出地印上 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;在非通訊(聊天/手動/AI)入場券上沒有按鍵, 因此同前一樣是鏡子。 每個部門都由團隊和部門出面控制 。→有名可見地點,

動作

AI能通過連接器進行動作: 建立入場券、更新訂單、取消訂閱等,

知 識

有相關相關的相關資訊, Shopify 接通器能增加电子商务故障解析; WHMCS 接通器新增了主機相關的知識 。

Cnowlect- Base 匯入 (連接者)

如果您的平台有相關知識, 就宣布 kb_capabilities 被阻擋入 settings.json (型態) kb_source)而您的連接器出現于 Help Center 編輯器中 匯入 KB→从相關應用程式匯入 在工作區被開啟并被配置后就下載。 它有宣傳性, 沒有執行的方法: 取出內建程式名 adapter (zendesk 在正樹上相接相接的相接中心 API,或 crawl (一) 任何 KB站點)和a base_templatehttps://{subdomain}.zendesk.com中, OpsIQ 从您連接器所儲存的設定中填入 。 憑證從不離開伺服器; 瀏覽器只傳出接通器 swit。 要支援新平台, 請新增一個 opsiq_kb_<platform>_manifest() 相接器并按名稱參考。 完全參考: connectors/PLATFORM_CONNECTORS.md §5.

網路鉤子

有的連接器用外出平台登入網上呼克以提供实时事件通知(新訂單、更新票等).

銷售追蹤

有相關通訊器提供收入資料入銷售儀表板以作歸屬和分析.

💡
Connectors 有工作空間的視距。 每個工作空域可以有不同的連接器被啟用而有不同的憑證 。 A WHMCS 工作區使用:WHMCS 連接器; a Shopify 工作區使用:Shopify 有接通器了.
我能一會用多個接線器嗎?+

Yes. You can have Shopify for orders and Stripe for payments in the same workspace. The AI merges data from all enabled connectors.

如果沒有我的站台呢?+

使用連接器建立自訂的連接程式以建立有 REST 的任何平台 API 有相通相接相接的通路。

有自控接線器相接 OpsIQ?+

有相接相接者同樣能出自相關的相接同樣相接地相接而行

連接器

售出和收費接通合同

Every commerce connector uses the same platform-neutral event contract. WHMCS is the reference implementation, but SaaS Bridge, stores, payment providers, marketplace connectors and Connector Builder packages must obey the same rules.

有名的通商要出出出什么去取出

有權威的分類

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.

穩定的來源身份

平台是連接器通訊錄 swit, 如 whmcs, shopify 或 opsiq_ saas. 流量- source 有已驗證的取得屬性; 否則會用到和倒轉相同的彈頭。 儲存身份證, 不顯示標籤 。OpsIQ 在 UI 中解析友好接通器名。

第 三 章 高 度

事件_ id 有定義。 地圖上至少一項不可變更的訂單_ ref, 发票- ref或訂閱相關站點 -- -- 因此 webhook retries并回填相關相關活性相關的相關回覆相關倒置相關放入相關位相關出行相關通取相關接相關分相關同相關可被相關取出相關口出行同相接相相關之相關能相接而相接可相接取相接的相接互接相接有相關事相接接相通相接者相接可以相接同相相接所相接

出自时间戳

有源平台所報導的支付或經濟活地相關時間。從不以匯入相關相取代歷史收費日期 。

有錢有花 有花有花

傳出來源數量和有效的 三字母 ISO 通貨。 如果接通器設定能被開啟 OpsIQ FX 轉換、 匯入到工作區通貨; 否則會被匯入儲存或收費平台通貨。 Connector 代碼不能用硬碼來編入通貨或汇率 。

有据可查的生命周期

使用新的, 更新, 升级, 退款, 信用或未知。 根据发票理由、 訂閱或服務關係、 線條類型等分類, 或是其他有權力的來源字段。 由同一個客戶再購取不是自動的续作 。

銷售邊界

Only positive paid new, renewal, upgrade, or legitimately unknown commerce receipts belong in Sales & Conversions. Refunds are reported by refund and net-revenue analytics. Account credit, wallet top-ups, token top-ups and Add Funds remain billing-ledger events and never count as sales, conversions, order volume, or sales revenue.

CRM 就分開了

CRM交易代表了管道和交易活性。 它不是通商平台的銷售, 除非相關收費或商店平台能透過此合同出出已收取的收費單或收費票。

有收費信號就能打開行了

Do not depend on one event name. When the platform sends several confirmations of one payment (invoice paid, order paid, transaction added, payment completed) any of them may open the ledger row once the platform confirms the sale is paid; the sale fingerprint collapses the siblings into one row.

已排定的對相( 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.

所生预测

opsiq_ conversion and Templace 摘要是從分類中重建出相容性預測。 連接器不能把投影當作財經的真理來源。 合同修改可以重新評估衍生出行而不必刪除基本的收費歷史 。

遠端平台邊界

有遠端連接器用已配置的已校正的平台讀取其平台 API。 它永遠不能取用同樣的伺服器數據庫表格。 精确被认证的域名站點_ key由 Connectionor Registry提供, 必須被用到每個分頁寫入和回填上。 工作區或群組範圍只被讀取; 它絕不要擴大儲存的事件所有性 。

有酬事件

通商相通
{
  "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 建構器中啟用銷售和收費后, 有地圖相關量、 通貨量、出處狀態和出處日期等相關相關的相關單位相關資訊相關資料。 相關通訊中至少有一項訂單、 发票或訂閱相關參考相關目 。API 有經過同樣的通商Event Registry常用相關通訊器而出。

⚠️
有心地保留信用和相加基金以收費、取用相關資訊及分類分析。

使用周期_類型決定了CRM交易的成份

lifecycle_type 不是分析標籤 。OpsIQ就讀取了它去決定出賣是否入圍了CRM所以每個銷售接通器都由管線決定 它到底想不想去

已新增

開啟相關交易( 新事業) 。

更新、上等

有相關的回報被收錄到相當多的入息中去。 沒有新的交易被收录到相關地區: 更新以不同的概率曲線轉換并混入其中會使預言被破壞 。

退款,入息

就從不做交易了 有錢回給了客戶就不是取勝了

略去/ 未知

有收據 有收成 但從未到過管道

一出出賣 一出賬本行:身份是"銷售",不是"活"

不相配于 event_id 就放入自己去. event_id is platform:eventName:externalId, which answers “did we already process this delivery” and cannot answer “have we already recorded this sale”. A platform that announces one payment twice — as invoice.paid 就再作一回想 payment.completed 有兩分相關的地質和同樣的錢 有相關事和警告

💡
在參考安裝上找到: 有六張发票, 有三行分類相關分類, 有三個碼道, 有出自相關的三個相關事件- id相關方案。0.00因此沒有看錯 任何后期回復活出實數的相關程序 就已算出一筆出價 三次了

Core 計算出銷售的企業身份(sale_fingerprint),与所存行相匹配,并保留正本 event_id 在更新中,并过滤到正列:

有支持的寫出銷售分數的唯一方式
\OpsIQ\Commerce\CommerceEventContract::upsertSaleRow('opsiq_sales_events', $row);
有同樣的出價 有同一樣多事相干

有一張相關指紋被取出并更新一行 有一張同樣相關的相關通訊

退款分開去取出

有錢出走和有錢出出走是不同的事實 有发票退款能保持自己的身份 所以它永遠也無法覆蓋所倒置的付款

有指紋 有指指紋 就沒有指紋

有一行沒有訂單、发票、訂閱或服務相關信息 就沒有指紋了 所以兩行相關的相關地點就從不相干 就因為兩行都缺少了身份證

參考优先

invoice_ref,那么 order_ref,那么 subscription_ref,那么 service_ref — 有一次出賣能有穩定的身份 就最強了

有分類的: 永遠不要重寫出賣

有退款、被取消或被改正等情形; 新日期条目。不要改變所修正的行。把付款重新寫入退款中,看來是干凈的,分出三道之差:

它能摧毀毛收入

總銷出和退款率相去甚遠-而退款是倒轉所要告知的衡量尺度。

它能把倒行逆施倒行

三月回一月出賣的退款能減少三月。 重新寫一月行會默地重述已關閉的相關期 。

有出錯 就出錯分了

有分數記錄了一時所發生的事 有同樣的反面 重入簿記已活了五個多世紀了

因此連接器會報告倒轉而不是用它:回傳 refunded_atrefund_amount 就由召客自作主張回報作回報的分類。 二人永遠無法相通, 因為回報指紋能分出回報和回報相接。

💡
The same principle applies to amounts. Do not "repair" a stored amount to the platform's current value: an invoice settled from account credit legitimately recorded 0 at payment time, and the money was already recorded when the customer topped up. Restoring the face value counts it twice.

有分類合同

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,
]);
💡
Precedence is fixed and shared: explicit, then refunded/cancelled, then credit, then upgrade, then is_order, then recurring, then acquisition, then unknown. Upgrade sits above the order check because platforms raise an order for upgrades too; recurring sits below it because the first invoice of a new subscription carries a recurring line type. On an ambiguous non-order sale the classifier leans to revenue and away from the pipeline.

宣佈平台的全部字串

有的出事最出名,最不出名。WHMCS 相匹配的連接器 ['hosting','addon','domain'] 有一份完整的清單.WHMCS 不放出一絲毫, Domain 字串; 它出自 DomainRegister, DomainRenew, DomainTransfer, PromoHosting, PromoDomain, DomainAddon*Upgrade有被取出名單去取出地點的人 unknown: 1,288 有发票 有三年了 沒有錯誤和紀錄

有新客戶都用接通器回填入了自己的歷史, so a classification bug does not affect one workspace — it affects every workspace that ever onboards through that connector, at the moment they first look at their pipeline. Take the vocabulary from the platform’s documentation or a census of live data, and match growing families by 前列 因此,一個兄弟還沒有人看到 有分類 和它的親戚相接而去取出。

💡
A practical check: count how many of your own rows land on unknown. A healthy sales connector classifies nearly everything. A steady stream of unknown is almost never data you do not have — it is a vocabulary the connector never learned to read.

正在修復已匯入的歷史

有一次被運出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 then repairs your connector’s imported history with no per-connector code: dry run by default, backs itself up and verifies the row count before writing, reversible through an undo ledger, and it never writes a failed read as an answer.

💡
如果您的連接器不能重讀過去的紀錄- 有網接只用接通器也無法被打斷了。 有回溯未知的接頭更糟糕于沒有被執行: 有回填會把好行重寫成未解密并報告成功。 只實取字串相關接點 。
💡
在自主辦的來源相傳中, 相接器/ CONNECTOR_ EVENTS. md和相接子/ PLATFORM_ CONNSECTorS. md 有相接相接的相接資料包 。
連接器

旅行事由合同

Journey Intelligence接受由瀏覽器元件、內置接通器、SaaS Bridge、市場套件和接通程式建構器輸出而取出一個平台中性事件信封。 平台特有名稱被翻譯出在邊緣; 漏斗、 歸屬和站點通訊碼只消耗相關事件 。

二. 隔离和信任分界

精确的相對域金鑰

每起事件都被捆綁到已认证的域站點_ key上。 連接器必須取取取 Connectionor Registry 或已认证端點所取的金鑰, 也從不取自無信任的要求正文中取出。 域要分開收取相關記錄; 有域群只取取回已讀取的總和 。

第 三 章

事件_id是連接器需要的, 对于同樣的本地事件也必須有定義性。 Retries, webhooks and backfills 更新了一項事件而不要重复行程或銷售 。

本地加克南克名

預防出自來自來相去的相去相去不遠的相取相去取出相去有相去分別的相通相去入相去行相去之相去已多相去克取相取取相出相取同相去而取相接相取

伺服器證物取勝

瀏覽器可開始或引出行程。 已驗證的接通器事件可確認簽名、 登入、 付款、 買入、 有续接、 有退取等終端結果。 有有效的站點相關符號是最強的接合; 有無效的符號被拒絕而其嵌入的ID 也不信任 。

隱私

只傳出所宣傳行程需要的识别碼和字段。 尊重相許、 遮掩和保留設定。 永遠不要把認證、 名片資料、 認證秘密或私人信件相關相關地物放入屬性中 。

封口信封

旅行事件信封
{
  "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"}
}

Canonic 分類法

使用最窄的真實名稱。 有支援的家庭有: 訂約頁/ CTA 事件; 帳號簽名、入住、 函式和密碼重置; 領導和成型階段; 產品、推車、取出、 付款、收購、訂閱、 续接和退款; 宣傳印象和轉換; 說明中心、 聊天和出票等事件; 有安全事件;以及有名的自訂事件。 典型的終站名是: 有名的相關地區 account.signup.succeeded, account.login.succeeded, lead.form.succeeded, commerce.payment.succeeded, commerce.purchase.completed, commerce.subscription.renewedcommerce.refund.completed.

2. 瀏覽器推想、相認和被棄置

元件可以不連接器而用於監控頁面结构、 結構動作、 DOM 結果和訪客行程紀錄等。 證據被分級到被監控或被猜測的地步。 連接者會加入权威伺服器的確認, 並能與同一個瀏覽器相連。 棄置被先被儲存为候選人; 它被遺棄取出自UI所設定的不動視窗后, 而后再被取回或成功也不存在了 。

二. 分配和收入

歸屬更需要有有效的簽署相關相關符號, 接著是一項相關的行程、試圖、会話或商業相關參考相關地圖, 取而代之的是被同意的身份圖, 最后是相當的行為相對相對。 未相匹配的銷售仍然沒有被歸屬相關分類相關事由 。1。站點資訊所標準的收入會讀取此分目; 帳號、 錢包上加、 符號上加和相關基金都永遠不會被收購轉換。 Connector FX 的行為仍由連接器設定所控制 。

⚠️
歸屬模型、回望視窗、直通處理、最小信任度、被棄取逾時和漏斗定義等都是UI 政策。 Connector 碼不能硬化它們 。

通訊錄出自相關的相關相關者

連接器行程宣告
{
  "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 建構器可以驗證地圖并產生同樣的平台中性适配器被一黨包所使用。 Journey introduction acception a matter of 100 由已產生的已驗證集成端點相接。

💡
有數位相關的通訊通訊信號被取出由服務器所確認的結果并相對於已存在的同樣能分類的通報上傳后, 因此一筆付款就再也沒有被分出出兩項銷售。
連接器

AI作戰方式

有相關相關的相關人員能宣佈出一組行動:

AI 動作
AI作戰方式有位客戶要求被映射到刪除類型的動作卡上再取出一張清單: 檢查了權限,您確定: API 有叫.AI作戰方式工作區域"取消我的訂閱"有客人AI (出自:"相克")cancel_subscriptiondelete需要確認parms: 訂閱_id (取自上下文)(一) 動作read寫入delete權限檢查角色( L)有相關事由你作證API 已報告結果1DECLARED每個連接器列出動作2GATED權限+ 确认3THEN RUNAPI 有通訊回覆
有權被檢查、被確認、被執行并被報告。

活性自動周期

1
有客人要吃相了

有相關的相關文件被取出,

2
AI 檢查權限

有權做此動作嗎? 有能被啟用嗎? 目前使用者有權做這個角色嗎?

3
AI 收集參數

動作需要訂閱地點。 AI從客戶背景中查取出, 或是問取取取地點相關相關的相關資料 。

4
確認

有破壞或高影響力的行為,

5
執行

動作叫外出站台 API.

6
出 出 出

有線人向相關人報告結果了.

動作類型

讀取動作

在不做任何修改的情况下查取相關資料。 例如: 列出名單、取用接客。 safe, no reference 。

寫入動作

建立或修改相關資料。 有例子: 建立_ ticket, 更新_ 排序。 有需要被確認的情況 。

刪除動作

移除資料。 有例子: 取消_ 訂閱。 總是需要確認 。

HTTP 動作

在行動中被宣佈出道.json 普通 API 有聲明地打出通了通話

能力標籤

在動作中可選擇的活性"能"字段.json 有接通器中性分類標籤 (例如: "tickets"指一票被讀取/取出, "tocket_create"指開出一票) 。OpsIQ 有相關的通訊所:接通人關閉了AI出道口后, 票被從AI出發出;OpsIQ 有自有作曲者( 因此連接器的建立工具不能被复制) 。 宣告它和接通器相符合 。OpsIQ 不需要知道您的動作名稱。 Connector 建構器將它暴露为每次動作都能被降下的能力 。

程式碼動作

在接線器類別中已執行。 完全控制通訊 。

示例動作定義
{
  "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" }
    }
  }
}
連接器

建立連接器

Connector 建構器讓您為任何有 REST 的平台建立完整的連接器 API。基本接通器不需要編碼。

建立連接器
連接器建構器有無碼連接器形式: 名稱、 加密型態、 基底 URL 有動作映射 有過程測試 有出行按鈕 有出取取取回取取出出取出取回出取入取出連接器建構器工作區域連接器建構器姓名我的平台奧特( A)OAuth 2.0 (PKCE).基底 URLhttps://api.example.com/v2動作GET/customers →名單(_C)有考驗取出套件連接器1NO-CODE姓名、 作證人、 有底牌 URL2ANY APIKey, Bearer, Basic, HMAC, OAuth3PUBLISHInto /connectors/<slug>/
在任何 REST 上指向建築者 API。设置正方位, 底位 URL 有活的接通器需要用到程式碼 。

完整提供者 API 覆盖范围

所產生的相關相關 API 有接通相接相接者可以被分出相接的原生相接器 API 讀取和原生 API 寫入動作。 Curlated action 仍為首選; 本地動作包含后加入的提供者端點。 跑取時支援 REST, GraphQL, JSON 有出自"活"一行相去相去 XML 有生有活 有生 有相接相接 有相通相接的相接 API- 版本頭和自動性,而把相關憑證放在工作區接通器的設定中。

⚠️
市場套件出自: /marketplace_connectors 有被捆綁的,有被捆绑的; /connectors. 增加套件版本,再生合同和文件,跑取相符合性測試后再重新簽署并出出新的"通商站"版本.

Connector 建立器精靈

有六步取出, 在上方有分頁。 您可以在相關相接相接的相接處自由跳出 。 儲存草稿 在腳下可以把活活活放好

1
身份和相貌

名稱、 swit、 描述和圖示, 然后選擇相關設定檔: 標準( C)API、通商站、求助台、信箱、站點情報站、SaaS橋、本地 PHP平台等 有相關平台的平台API 在站台上,沒有任何可稱呼的;OpsIQ需要安裝通訊錄。 配置檔會選擇一個完整的能力起點; 您仍然可以調整單一的能力 。

2
奧特( A)

取取平台所使用驗證模式并填入其字段。 在此也輸入真正的測試憑證: 在下一步被用於接通測試, 在您出發后再不儲存了 。

3
測試

輸入 API 基底 URL 并檢查端點,再用相關憑證做活接通測試2在您定义任何動作前做此事, 如果是 auters 或 底部 URL 有同樣的理由而失敗了 而您會去去去調回錯誤的東西了

4
動作

定義每個操作: 名稱、 HTTP 方法、 端點路由、 參數、 反應地區映射等設定值, 以及以下描述的可靠性。 您可以以活性相對自動執行每個動作 。API 就從這一步起出走.

5
觸發器

地圖您平台所發出到的webhook事件 OpsIQ 有出事了 在你的站台上出事能起事了 OpsIQ.

6
批評、企業合同和出版

Review every action, trigger and capability. Enterprise profiles expose the generated queue, worker, hook, migration, ticket-mirror, attachment and conflict contract before publishing. Publishing writes the package into /connectors/<slug>/.

⚠️
相容套件不是由 Publishing 執行。 所出版的只驗證向导表并發出警告而不會被阻擋。 完整的套件 -- -- 有名、 有能檔、 有身份接觸的合同和通訊分頁檢查 -- -- 在您按 Dry- run 時再按一次安裝時再跑取 Dry -- -- 每次在您出船前都按 Dri- ran 。

有哪份出自"活字" 就沒有被取出

Five behaviours of the generator surprise people. None is a bug; all of them will cost you an afternoon if you meet them by accident.

有一個問題決定了通路:站台能用到嗎?API?

Answer it in step 1 by picking the data-access mode (or the "Platform with no API" profile). API mode declares native_api and emits the <slug>_api_call passthrough. Bridge mode declares platform_bridge 取而代之的是 " 有沙卷 " (STRIP) native_api 就連更古老的相片也接了活了 所以出品人 所生出同樣的同學和專業作證人都不可相異了 ai_brain_aware is added either way.

有"有"的意思是: 有"API"

"建築者"聽從了你的答覆 它不能自圆其說" "一無所言"API因此不...API有相關的相關事由由:API" profile, set data access to bridge, 或勾選 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.

連接試驗預設取取/ping

如果檢查路徑被空出, 建構者會寫入 /ping into the generated connector and into profile.json's test block. Almost no real platform serves that route, so Test Connection fails with HTTP 404 on every install and reads like a customer misconfiguration rather than a package defect. Set a verify path that your platform actually answers. For a bridge connector, point it at your own diagnostics endpoint — it proves the whole chain in one call: the bridge is deployed, the key matches, and the bridge can reach the database.

重出自相片上方的手版

Capabilities now follow the data-access answer, so those no longer drift. Everything else generated still does: edit ContextProvider.php or any other emitted file and the next publish replaces it. The one protected exception is the bridge file — the wizard only overwrites a bridge carrying its own marker, so a hand-written one is left alone.

重覆刪除檔案

取消選取一個能取出, 而下一個被放出會移除其提供者檔案。 在任何已產生的檔案上手取編輯器- Context Provider.php 上先被覆寫而未加警告。 复制自訂, 或是取回套件的擁有權取出 。opsiq-建築工.json(接著巫師就再也不能去管了).

已放出(_status) 總是預覽

向导對此無所控制。 在設定中要以出品方式運入的套件必須手動改變放行_ satus 。json而編輯會打斷簽名 因此再重新簽署 。

簽章能證明完整性,不是出自原生地

建構器套件被簽署于此安裝的對稱金鑰。 它能偵測到被篡改的樣本。 它不能證明是誰寫出套件, 而任何持有同一個金鑰的安裝都可以產生同樣的簽名 。 將本地簽名的套件當作自簽名相看 。

Slug collisions are only checked in one tree

Publishing refuses a slug that already exists under /connectors/. It does not look at /marketplace_connectors/, so a hand-authored first-party package with the same slug can end up shadowed.

💡
有位向导沒有一個知識作者相關步骤。 描述您平台的知識檔案由您所定义的名称、 描述、 認證類型和動作產生, 在連接器被開啟后被加載入到 AI 中 。

定義動作( 步數 ) 4)

每起動作有以下設定。 只有前四起需要; 由其他控制器來操作, 以及多麼小心地操作 。

動作金鑰和標籤

關鍵是 AI 所取的; 有標籤是被人類所取取的。 關關鍵自動被取出相關符 slock, 因此兩個接通器可以有" list_ orders" 而不會相撞 。

HTTP 方法

GET, POST, PUT, PATCH or DELETE.

URL 路徑

附加到基底上 URL 使用 {name} 如占位符等 /opportunities/{id}/stage

參數

您也選擇了每個參數去向: 正文, 路徑, 查詢信頭中填入了路徑參數 a {placeholder}; 查詢參數被附加到 URL.

回應地圖

就說出地上到底有哪塊地 JSON 有回應指什麼,取自客戶名,取出電子郵件,取由指令總和。這是由人工智能去讀取您平台的數據而不必去猜想所取的。

有誰能用取出取出去?

有同樣的相關相關資訊相關的相機相關地點被自動鎖起, 因此一對相關人無法再問另一對相機了。

需要確認

在行動出發前 就得有人類批准了

有破壞性

將動作標示为刪除或變更狀態。 在動作跑出前曾警告過 。

需要的許可

管理員必須持有此權限以讓 AI 代表他們執行動作; 完全的管理員總是能通過。 從管理- 整合、 管理- 一般、 管- 付費出行、 搞活- 通訊相接、 有管理- 有管理 -- -- 有管理取用、 有被管理 -- 危險區、 有回應 -- -- 聊天相接等, 有或沒有, 有被授權的管事員可以選擇 。

描述/ AI 提示

有選擇可選, 但值得寫作。 它能告訴AI要什麼時候去接觸到此動作, 例如「當管家要求改變交易相關階段時用這個」,

能力

有可選擇的分類標籤, 有可選取的入場券( 有可讀取或取取取的出場券) 有可取取入入入場牌 (開出入場證 ) 。 @ info: whatsthis OpsIQ 就當接線人關閉了人工智能出道口后,

列出路徑

選擇性。 对于要回傳清單的端點, 有數據或資料等數目所顯示的已點路徑。 robes

路由出錯

有選擇性。 它的存在表示呼叫失敗, 例如錯誤. message, 有用於 APIs 返回 HTTP 200 就失敗了.

Run it

有活人能被活活活地跑出去 API 在其他人用它前可以修取出錯的路由或字段名。

⚠️
寫入動作被預設地保護。 使用 POST、 PUT、 PATCH 或 DELETE 的動作需要管理- 整合權限相關 在 它 執行前被人類確認。 這是有意的。 有新的寫入動作失敗了, 而不是讓 AI 在沒有監控下更改您所取的資料。 您可以在操作上都變更, 但會有意识地變更它們 。
💡
要取自客戶聊天相關的訊息, 有一項動作只需要讀取: 留下需要確認和破壞等功能。 有一款客戶可以被觸發而變更狀態的動作不是被巫師意外放入的。

接取webhoks (步5)

"出擊手"一出出一出就被取出一去 URL 在你的站台上登記并檢查所到地上所接通的每個要求.

簽名信頭

在您的站台上標示, 如 X- Hub- signature --256.

簽名算法

HMAC-SHA1,HMAC相接器-ShA256或HMC-Sha512.

簽名機制

簡單地說 有平地的六分之一或有地基64文摘Stripe- style, t=..., v1=. 格式由Stripe有好幾個平台可以复制出它.

簽名前缀

有可選取。 有平台在文摘前先填入 sha256=等, 如果您不填入就留空 。

事件映射

地圖您平台所傳送到的每個事件 OpsIQ 它能起起起出出出所想出出取出出之事去相接而起出相接相接起相接取出相相接者相接出相去相相相通相接同

自動登入網頁

如果您有相關平台 API 在管理自有的網頁中,您不需要登入 URL 有相接相接取出相接可接取相接的相接接相通相接同相接. 自動登入此已啟用相關網頁 就指向您所下定的兩起動作4:

建立- webhook 動作

在管理者能使連接器被使用時被呼叫。 您會提供帶有此通訊器的參數名稱 。URL 有可選取的可以載出事件清單的, 有可取取取的新 webhook 代碼的回應中路徑。

刪除- webhook 動作

在連接器被關閉后被呼叫, 使用上面所抓取的代碼, 因此連接符也停止了您傳送到死端站台的功能 。

有能用能用可接接接

Connector Contract 2.2 界定了相關設定和相關能力。 產生和宣傳相關能能被直接放出; 企業能產生出相關的相關功能 : EnterpriseExtension.php 有跑相机的活相机

動作

AI可以跑到您平台上: 列出命令,找取客戶,發出退款.

觸發器

从您的平台接取網上呼號并轉換成 OpsIQ 有出事了.

人工智能入場券

在您站台上停留的票由 AI Trage 和回應副駕駛。取出取回一票的末點并地圖; OpsIQ 就讀取了通訊錄取的線索

信箱和聯絡人

在相關時間表上顯示客戶的郵件 从交易中傳出并同步您的通訊錄入 OpsIQ CRM.

匯入客戶

在您的客戶名單中放入頁面并匯入每張相關相關的相關資料 OpsIQ 接觸到。 這是匯入按鈕所執行的 。

背景

就把活生生的資料從你的平台上放入每一次AI對話中去.

身份

有客人出名 就去查查 找找找看相 有入住的客人去取票

銷售和收費

有收入事件和MRR相關相關數據入入 OpsIQ 有儀表板.

入站出站口

把你的站台取出通訊票和電子郵件轉接去 OpsIQ 支援線程 。

出界回覆

出站 OpsIQ 有相關訊息被取回站台;

同步用戶

匯入您的帳戶入入入 OpsIQ 有管理用戶。

同步部門

匯入您的支援部門 OpsIQ.

促進目標和產品入食

就讓升級工作室的目標去取出你所知道的相關事實 就把你真正的出品放入升級中去

調查工作室提供商

有外出伺服器已驗明的測試事實、 已逃出變數并被定界CRM透過 Survey Provider.php 傳送受訪者頁面。 這不重用 Production 的跑取時間 。

有原生地 IP 屏蔽( C)

有被打倒了? OpsIQ 區塊一 IP 就叫自有站台站出站口 API 因此地區也被強制了.

二. 安保事件

接收被封鎖的 --IP 有威脅信號出自: OpsIQ.

AI的平台知識

每個接通者都提供一個簡短的參考資料, 描述出您所擁有的平台和它的動作。OpsIQ Admin AI 在您連接器被開啟后就讀取它, 因此它能理解您的平台而不只是看到一列表的動作名稱。 這是為您而產生的 。

API 有接通

您的連接器總是得到通訊呼叫, 因此AI能到您未定義打入的動作的端點。 在您能用到的地方使用打入了的動作; 這是出逃口 。

CANONICAL 接通器合同 2.2 參考

合同版本: 2.4 · 57 capabilities · 8 profiles.

Connector 設定檔

standard_api · Standard REST or GraphQL API

Actions, triggers, OAuth/API-key authentication and optional context/identity mappings. Capabilities: actions, triggers, native_api, ai_brain_aware.

commerce · Commerce and billing platform

Customers, orders, sales, subscriptions, billing, promotions and journey events. Capabilities: actions, triggers, journey_events, sales, sales_reconciliation, billing, sync_orders, customer_import, survey, promo_audience, promo_feed, context, identity.

helpdesk · Helpdesk and ticket platform

Inbound tickets, outbound replies/notes, customer roster, AI triage and bidirectional ticket mirroring. Capabilities: actions, triggers, inbound_ticket, outbound_reply, outbound_note, ai_tickets, customer_import, survey, context, identity, ticket_mirror, ticket_merge, attachment_bridge, conflict_resolution.

mailbox · Mailbox and email provider

Inbound/outbound mail, address-book sync, multi-account OAuth and CRM timeline integration. Capabilities: inbound_email, outbound_email, mailbox, email_mailbox, oauth, actions, customer_import, ai_reply.

site_intelligence · Site Intelligence data provider

SEO, analytics, search-console, local-search or monitoring provider with scheduled sync. Capabilities: actions, triggers, site_intelligence, seo, scheduled_workers, durable_queue.

saas_bridge · SaaS bridge

Deep two-way SaaS integration with customers, billing, identity, tickets, webhooks, queues, attachments and workers. Capabilities: actions, triggers, webhook, context, identity, customer_import, survey, journey_events, sales, sales_reconciliation, billing, inbound_ticket, outbound_reply, ticket_mirror, ticket_merge, attachment_bridge, durable_queue, scheduled_workers, database_migrations, conflict_resolution, enterprise_hooks, admin_assets.

no_api_bridge · Platform with no API (OpsIQ installs a bridge)

For a self-hosted PHP application that serves no callable API. The wizard generates a signed bridge file the operator drops into their own site, plus the typed actions that read and write through it. Capabilities: actions, platform_bridge, ai_brain_aware.

local_php_platform · Local PHP platform bridge

WHMCS-style local hooks, database access, two-way tickets, billing/customer sync, queues and migrations. Capabilities: actions, native_data, context, identity, customer_import, survey, journey_events, sales, sales_reconciliation, billing, inbound_ticket, outbound_reply, ticket_mirror, ticket_merge, attachment_bridge, durable_queue, scheduled_workers, database_migrations, conflict_resolution, enterprise_hooks, admin_assets.

三. 警械能力

動作

Universal actions. Capability version: 1.0. Mode: generated. Runtime methods: registerActions. Package files: actions.json.

扳出

Inbound event triggers. Capability version: 1.0. Mode: generated. Runtime methods: handleWebhook. Package files: actions.json.

網頁

Inbound webhook endpoint. Capability version: 1.0. Mode: generated. Runtime methods: handleWebhook.

journey_events

Universal Journey Event Contract mapping. Capability version: 1.1. Mode: generated. Interfaces: OpsIQ\Connectors\JourneyEventConnectorInterface. Package files: settings.json.

二. 上下文

AI context providers. Capability version: 1.0. Mode: generated. Runtime methods: contextProviders. Interfaces: OpsIQ\Connectors\ContextConnectorInterface. Package files: ContextProvider.php.

guest_lookup

Guest record lookup without login (reference + proof match). Capability version: 1.0. Mode: generated. Runtime methods: contextProviders. Interfaces: OpsIQ\Connectors\ContextConnectorInterface. Package files: GuestLookupProvider.php.

身份

Admin/customer identity providers. Capability version: 1.0. Mode: generated. Runtime methods: identityProviders, detectAdmin, detectCustomer. Interfaces: OpsIQ\Connectors\IdentityConnectorInterface. Package files: IdentityProvider.php.

sales

Sales and revenue ingestion. Capability version: 1.2. Mode: generated. Interfaces: OpsIQ\Connectors\CommerceConnectorInterface. Package files: SalesIngest.php.

sales_reconciliation

Scheduled sales-ledger reconciliation against the platform. Capability version: 1.0. Mode: generated. Runtime methods: reconcileSales. Interfaces: OpsIQ\Connectors\SalesReconciliationInterface.

有收費

Cross-platform billing snapshot. Capability version: 1.0. Mode: generated. Runtime methods: billingProviders. Interfaces: OpsIQ\Connectors\BillingConnectorInterface. Package files: BillingProvider.php.

payments

Payment-provider capability bus. Capability version: 1.0. Mode: generated. Runtime methods: paymentsCapabilities.

有商相通地.

Sell through chat: canonical commerce role map. Capability version: 1.0. Mode: declarative. Package files: commerce_roles.json.

inbound_ticket

External ticket/email to OpsIQ ticket ingestion. Capability version: 1.0. Mode: generated. Runtime methods: handleWebhook. Interfaces: OpsIQ\Connectors\TicketMirrorConnectorInterface.

outbound_reply

Reply mirroring to the external platform. Capability version: 1.0. Mode: generated. Runtime methods: pushReply. Interfaces: OpsIQ\Connectors\TicketMirrorConnectorInterface.

ticket_merge

Ticket merges applied on the platform (native merge or private transcript note). Capability version: 1.0. Mode: generated. Runtime methods: mergeTickets. Interfaces: OpsIQ\Connectors\TicketMergeConnectorInterface.

sync_users

Staff/customer synchronisation. Capability version: 2.0. Mode: generated. Runtime methods: listCustomers. Interfaces: OpsIQ\Connectors\CustomerImportConnectorInterface. Package files: SyncImport.php.

sync_departments

Department/team synchronisation. Capability version: 1.0. Mode: generated. Package files: SyncImport.php.

sync_orders

Order roster and order-event synchronisation. Capability version: 1.0. Mode: declarative. Interfaces: OpsIQ\Connectors\CommerceConnectorInterface.

sync_products

Product, catalog and inventory synchronisation. Capability version: 1.0. Mode: declarative. Runtime methods: registerActions.

sync_projects

Project, issue and workspace synchronisation. Capability version: 1.0. Mode: declarative. Runtime methods: registerActions.

customer_import

CRM customer roster import. Capability version: 2.0. Mode: generated. Runtime methods: listCustomers, backfillChunk. Interfaces: OpsIQ\Connectors\CustomerImportConnectorInterface.

security_events

Receive and emit security events. Capability version: 1.1. Mode: generated. Runtime methods: securityCapabilities, syncBlockedIp, removeBlockedIp. Interfaces: OpsIQ\Connectors\SecuritySyncConnectorInterface.

security_native_block

Native remote IP/CIDR blocking. Capability version: 1.0. Mode: generated. Runtime methods: syncBlockedIp, removeBlockedIp. Interfaces: OpsIQ\Connectors\SecuritySyncConnectorInterface.

survey

Survey identity, audiences, recipients and variables. Capability version: 1.0. Mode: generated. Runtime methods: surveyAudienceCatalog, surveyAudienceFacts, surveyVariableCatalog, surveyVariables, surveyRecipientPage. Interfaces: OpsIQ\Connectors\SurveyConnectorInterface. Package files: SurveyProvider.php.

reply_feedback

Ticket reply feedback mirror (platform reply ratings land via the portal write method). Capability version: 1.0. Mode: generated. Runtime methods: replyFeedbackCatalog, pullReplyFeedback. Interfaces: OpsIQ\Connectors\ReplyFeedbackConnectorInterface.

promo_audience

Promotion targeting facts. Capability version: 1.0. Mode: generated. Runtime methods: subscribers. Interfaces: OpsIQ\Connectors\PromotionConnectorInterface.

promo_feed

Promotion product/content feed. Capability version: 1.0. Mode: generated. Interfaces: OpsIQ\Connectors\PromotionConnectorInterface.

email_mailbox

Mailbox bus, outbound mail and address-book sync. Capability version: 1.0. Mode: generated. Runtime methods: emailAccounts. Interfaces: OpsIQ\Connectors\MailboxConnectorInterface.

inbound_email

Receive inbound email. Capability version: 1.0. Mode: declarative. Runtime methods: poll, handleWebhook. Interfaces: OpsIQ\Connectors\MailboxConnectorInterface.

outbound_email

Send outbound email. Capability version: 1.0. Mode: declarative. Runtime methods: registerActions. Interfaces: OpsIQ\Connectors\MailboxConnectorInterface.

mailbox

Mailbox connector. Capability version: 1.0. Mode: declarative. Runtime methods: emailAccounts. Interfaces: OpsIQ\Connectors\MailboxConnectorInterface.

ai_tickets

AI triage and Inbox Copilot for remote tickets. Capability version: 1.0. Mode: generated. Runtime methods: loadTriageContext. Package files: AiOperations.php.

ai_reply

AI-assisted reply drafting. Capability version: 1.0. Mode: declarative. Runtime methods: registerActions.

ai_brain_aware

Connector expertise supplied to Admin AI. Capability version: 1.0. Mode: generated. Package files: ai_expertise_admin.md, ai_api_reference.md.

native_api

Native API passthrough. Capability version: 1.0. Mode: generated. Runtime methods: registerActions.

platform_bridge

Signed platform bridge (for platforms with no API). Capability version: 1.0. Mode: generated. Runtime methods: registerActions. Package files: bridge/.

native_data

Local database/platform data adapter. Capability version: 1.0. Mode: declarative. Runtime methods: nativeDataProviders. Interfaces: OpsIQ\Connectors\NativeDataConnectorInterface.

收起

CRM capability provider (calendar, enrichment, telephony or customer data). Capability version: 1.0. Mode: declarative. Runtime methods: crmCapabilities. Interfaces: OpsIQ\Connectors\CrmCapabilityConnectorInterface.

block_registry

Remote sender block-registry synchronisation. Capability version: 1.0. Mode: declarative. Runtime methods: blockSender, unblockSender, isSenderBlocked. Interfaces: OpsIQ\Platform\BlockRegistryInterface.

inbound_comment

Inbound comment ingestion. Capability version: 1.0. Mode: declarative. Runtime methods: handleWebhook.

outbound_note

Outbound private note. Capability version: 1.0. Mode: declarative. Runtime methods: registerActions.

outbound_notification

Outbound notification delivery. Capability version: 1.0. Mode: declarative. Runtime methods: registerActions.

oauth

OAuth 2.0 authorisation. Capability version: 1.0. Mode: generated.

reviews

Review ingestion and response. Capability version: 1.0. Mode: declarative. Runtime methods: registerActions.

本地

Local search/location data. Capability version: 1.0. Mode: declarative. Runtime methods: registerActions.

瑞奧

SEO data and actions. Capability version: 1.0. Mode: declarative. Runtime methods: registerActions.

site_intelligence

Site Intelligence provider. Capability version: 1.0. Mode: declarative. Runtime methods: siteIntelligenceProviders. Interfaces: OpsIQ\Connectors\SiteIntelligenceConnectorInterface.

二. 分析

Analytics data provider. Capability version: 1.0. Mode: declarative. Runtime methods: analyticsCapabilities.

comms

Communications/video-meeting provider. Capability version: 1.0. Mode: declarative. Runtime methods: commsCapabilities.

admin_assets

Connector-provided admin/account/public browser assets. Capability version: 1.0. Mode: generated. Runtime methods: adminAssets. Interfaces: OpsIQ\Connectors\AdminAssetConnectorInterface.

enterprise_hooks

Platform-native hooks and lifecycle callbacks. Capability version: 1.0. Mode: extension. Package files: EnterpriseExtension.php.

durable_queue

Durable outbox/inbox queue and retry policy. Capability version: 2.0. Mode: extension. Package files: EnterpriseExtension.php.

ticket_mirror

Bidirectional ticket mirror with conflict handling. Capability version: 2.0. Mode: extension. Interfaces: OpsIQ\Connectors\TicketMirrorConnectorInterface. Package files: EnterpriseExtension.php.

attachment_bridge

Attachment upload/download transfer. Capability version: 2.0. Mode: extension. Package files: EnterpriseExtension.php.

database_migrations

Connector-owned schema migrations. Capability version: 1.0. Mode: extension. Package files: EnterpriseExtension.php.

scheduled_workers

Connector-owned scheduled/background workers. Capability version: 1.0. Mode: extension. Package files: EnterpriseExtension.php.

conflict_resolution

Two-way sync conflict strategy. Capability version: 1.0. Mode: extension. Package files: EnterpriseExtension.php.

⚠️
在所產生的延伸點中放入相關平台的商業規則; 套件的生命周期、排行、工人、移入和相容性測試等都由建築師管理。

在每個動作上都提供可靠性設定值

重覆

有好幾回回回覆失敗的呼叫 有回放能使每次試想翻倍 429s 有 二 二 二 三 二 三 三 三 二 二 四 二 三 一 二 三 四 三 三 一 三 三 四 二 二 一 三 二 四 三 二 一 二 四 四 三 四 四 二 一 一 三 四 一 三 一 一 二 二一 三 三 等 一 二 一 四 三 一 四 二 四 一 四 四 四 一 二一 二 三

利率限制

有一分一分的上限可以被取出 因此一觸即發出就打不中你的站台了0有去有去 有去無去 有出有去有回 有去相去相走相去 有回相去有出相去同去相取相去

逾時

在你放棄前等了多久?

確認

在行動前需要人批准 就用去搞破壞了

認證型態

步入2有七種相配的相當相配相通相通模式 API 有相關相關文件, 產生器會發出相關的 HTTP 用戶端 。

API 在信頭中按鍵

以固定信頭方式傳出一顆靜態金鑰, 例如 X --API- Key. 您要提供信頭名和標籤, 管理員表單需要顯示。 它只以信頭形式傳出它; 如果您是 API 將金鑰想作查詢參數取而用自訂信頭或全碼接通器取而代之 。

接取符號

Token sent as Authorization: Bearer <token>. Common for modern APIs.

基本作證

使用者名和密碼, 有 Base64- 編入授權信頭。 您選擇了管理表單上所顯示的兩字段的標籤 。

有HMAC簽名

有公用金鑰外加一通密钥, 有請求正文被簽署。 您會提供您平台所期望的簽名頭、 鑰匙頭和時戳頭 。

OAuth 2.0 (客戶證)

伺服器到伺服取用器, 有使用者相接也無方向。 您提供代碼 URL 有可選擇的範圍; 管理員提供客戶端的ID和秘密。 在您平台向應用程式而不是向人發出憑證時使用此功能 。

OAuth 2.0 (接合按鈕)

The authorization-code flow with PKCE, for Stripe, Shopify, Slack and QuickBooks-style apps. You give the authorization URL, the token URL and the scope. After publishing, the admin clicks Connect on the connector, authorizes on your platform, and OpsIQ stores the refresh token and mints access tokens on demand. The redirect URI to register in your OAuth app is shown on the connector's settings page.

自訂信頭

自由形式 JSON 上面所顯示的圖案都用頭圖, 例如 {' X-API-克:""{api_key}""""X-Tenant":"".{tenant_id}“} 每個占位符都成為了管理表上的字段 。

💡
PKCE 只應用到 Connect- 按鍵相通。 客戶端的相通沒有方向和用戶步入, 因此 PK CE 不應用于它 。

相接相關字型

偏移

使用相抵和限制參數。 例如:? offset=100 限制( L) :50.

頁面

使用頁號。 例如:? page=3per_page (P)50.

游標

使用上一個回應中光標符號 。

連接信頭

有相接相接的回應信頭。

高级:自訂 PHP 代碼

connector.php RETURNS an instance. It does not declare a named class that OpsIQ hunts for. The method names below are the ones ConnectorInterface requires; getting one wrong is a fatal at load, not a warning.

connector.php — the real contract, minimal and runnable
<?php
/* connectors/myplatform/connector.php */
declare(strict_types=1);

use OpsIQ\Connectors\AbstractConnector;

require_once __DIR__ . '/Client.php';

return new class extends AbstractConnector {

    /* ── the three identity methods. NOT identifier()/label(). ── */
    public function slug(): string        { return 'myplatform'; }
    public function name(): string        { return 'My Platform'; }
    public function description(): string { return 'Orders and customers from My Platform.'; }

    public function capabilities(): array { return ['actions', 'context']; }

    public function settingsSchema(): array
    {
        $f = __DIR__ . '/settings.json';
        if (!is_file($f)) return [];
        $j = json_decode((string)file_get_contents($f), true);
        return is_array($j['settings'] ?? null) ? $j['settings'] : [];
    }

    /* ── NOTE THE ARGUMENT. testConnection() with no parameter is a fatal. ── */
    public function testConnection(array $settings): array
    {
        try {
            $resp = \OpsIQ\Connectors\MyPlatform\Client::callWithSettings($settings, 'GET', '/me', [], []);
            $code = (int)($resp['http_code'] ?? 0);
            return ($code >= 200 && $code < 300)
                ? ['success' => true,  'info'  => ['message' => 'Connection OK', 'http_code' => $code]]
                : ['success' => false, 'error' => "Verify endpoint returned HTTP $code"];
        } catch (\Throwable $e) {
            return ['success' => false, 'error' => 'Test failed: ' . $e->getMessage()];
        }
    }

    public function onEnable(array $settings): array  { return ['success' => true]; }
    public function onDisable(array $settings): array { return ['success' => true]; }

    public function handleWebhook(array $payload, array $headers, array $settings): array
    {
        return ['success' => true, 'note' => 'No triggers declared.'];
    }

    /* Inherited from AbstractConnector: reads actions.json for you.
     * Override only to ADD actions the manifest cannot express. */
    public function registerActions(array $settings): array
    {
        return parent::registerActions($settings);
    }
};
⚠️
Three things that fatal at class load rather than failing gracefully. The identity methods are slug(), name() and description() — not identifier() and label(). testConnection() TAKES an array of settings; a no-argument version is an incompatible signature. And there is no $this->http() or runAction() on AbstractConnector — HTTP goes through your own Client.php or through an action declared in actions.json.

有鏡子入住地內出票系統

有票就倒入相機去取回相機 OpsIQ 從您的連接器中取出您連接者繼承的通訊名單( 为新入通票而建立, 为接通回通提供新增回通) 。 Emit并訂收通訊器中通訊入通訊出通訊收錄的通關入通傳入通報 subscribers() 二. 方法, ticket.created, ticket.replied, ticket.updated, ticket.deleted. Auto-reply, escalation, SLA and CSAT all hook the same events, so you inherit them with no extra code.

有本事就去接取相干 ticket.deleted,您也處理合并。 有被收買的票被收走 merged_into 而未被送到一個能宣告的連接器上; ticket_merge有一次被收起 就被收到一地了 ticket.merged 因此您可以站出相關站台取而代之,而不要關閉相關的入場券。 (收費) 2.4).

就說是誰寫了起碼口信

有票就出事了 为: 有相關相關的通訊可以由您所寫出 工作人员: 代理開出一票取用客戶, 或是主动地通訊出行。 每一個求助站都支持此項, 因此是通訊通訊的一部分 ticket.created 有相關相關的相關人可以自相矛盾地解決

author_type

客戶端 (default) 或管理員。 輸入它和客戶被假設为 。

author_id

在作者出字后被取出 : “ 从不取用 ” 。

author_name

有名有名地出走回"Staff"去取出

author_email

有位子被取出 。 有位相關的通訊是報告和審查出錯誤了 。

這不是相片取出相當多的相片 有相關相關的相關信息 有相當相關性能 有相通相關接相關 有消費者讀取 author_type 有一份由人員寫成的開幕報告被稱作"出自"出道地" (出道:"出出道所取出之地"出走地"入道地取出地"起而出出出地取去地取回地取取出取出去地出地出取取取回取出"出取"出". client leaves auto-reply eligible to answer a message your own agent wrote, and makes your platform's echo of that opening look like a fresh customer message, which then lands as a duplicate and flips the ticket to 有接了在相接器上映射出您平台的通訊 事件常态在用人上可不相干了

集中封鎖

有代理員阻擋發件人 就可被套取到相關的地方去 每隔 通道 (e- mail, chalk, portal, widle and every connectioners two) 就快被執行了, 在任何接通者看到信件前。 您的接通器沒有做任何事而繼承它。 沒有入內的工作可以執行, 也無法弄錯 。

有可選擇的一分之一是: 有出站: 告訴您所擁有的平台被封鎖了。 只有您所持有的平台能表示相當相當的東西才被執行 。

(一) 能力()

必須包含區塊_ registry同類相關相關。 旗是相關的相關通訊。 相關接相關口是相通相關之相關地點 。

blockSender($b)

接受類型 (電子郵件%%% 1)ip),值,理由, admin_id, 已过期 _at, site_ key. return [result, detail?, ref?].

unblockSender($b)

有同樣的活口, 有倒轉相接相接, 有同能相接可接相通相接之事。 解封出一無所阻相是新鮮事, 有相通之分不是錯事 。

isSenderBlocked($b)

就相對相對而言, 因此漂移被指向而不會被客戶所發現。 返回 [結果,被封] 。

結果值

在您平台上被應用。 有值收音機的相關位址時包含遠端取回( ref) 。

noop

有被要求的狀態了

unsupported

您的平台沒有相當的概念。 不是錯誤 。

失敗

You could have done it and it went wrong. Include detail; it lands in the audit trail.

有失正法出自"倒行逆施". 有許多平台沒有"封鎖這個發件人"的概念,而只提供AcoOUNT中止功能,它能停止收費、登入和服務而不只是支持信件。 在"關閉此客戶端的帳號"上映射出"代理被封鎖了垃圾信位"會使被錯擊的區塊可以终止付費取用人端服務。 如果這是您所擁有的唯一杠杆, 就回傳回 unsupported 就放一馬去取出活口去.

有被倒下也指向了被倒入地道的相關案例: 有能 有活干 就不要去取活干活干 API有被取出自相關通訊器的相關功能。

有工作的例子 · Zendesk (參考實作)

讀取 connectors/zendesk/connector.php alongside this. It is short, and every branch below is a decision you will face too.

電子郵件→好

有出有出有入. /api/v2/users/{id} 有被暫停的= true. 有被中止的最终用户的新要求被轉至被暫存的出票站取而代之,而不是開啟出一通, 和阻擋發出人的想法是同樣的, 它不會停止收費, 因為 Zendesk 端使用者沒有。 傳回使用者代碼为遠端( ref) 。

域→不支援

Zendesk Can 暫停了整個域名, 但只能通過已暫停: 在管理中心區塊列表中的关键字文字區域, 而沒有 API 寫入此字段。 特性已存在; 杠杆已不存在 。

ip →不支援

有票了 IP 區塊已存在。

未知地址→有

Zendesk 不能预暂停从未见过的地址。 不做任何事并不会导致失败,本地阻止仍然会停止票据。

代理或管理者→不支援

有被關入的同僚被關出求助站。 有被封鎖的同仁住址相當相當可能會出錯, 在您依此行事前先檢查一下角色。

在相關的地區上出一幅相關地圖取出相當相當多的相關相關資料。 detail 有接通器能讀取 有聽取力

有話直說 有多多行相去相去 ok。 這是正確的結果, 不是相隔: 有域塊仍然能用( 它被寫入正心中; 它完全不能被反射出外出 。 正在回傳 。 ok 有件事你沒做 就告訴接線人 被一塊地點打到 就再也沒有出站了 OpsIQ.

規則

有地區能取出取勝

在被叫去之前已寫出 它能站起所取回的相當多的東西了.你無法阻止接線人阻擋別人出走.

就再不扔了

有被丟棄被視為不支援并被錄取。 有詳細的回覆失敗了, 因此原因才活了下來 。

有天分地去取道他

有多起相關區域被宣布。

二等兵快回去

Fan-out 和接通器點擊同步。 排队慢活取出而不要把所求開啟 。

有活可干?

永不被再封鎖入 OpsIQ 取自您的處理器。 登記器會跳過原接通器, 但是再跳一跳會回放 。

每份通訊都寫到 opsiq_block_registry_log (操作、 相當相當分、 有價值、 有理有理、 有管 有出自地點、 有接通器的彈出口、 有結果 有細節 有時有印章) 因此接通者可以看到一塊被從您平台上接通而來, 有時就被接通了, 有的接通人也做了什麼相關事了.

正确按下附件

手拿一 attachments 要建立的陣列 ()/addReply(). 每個項目都以相關相關的相關外形相接相關檔案:

content_b64

Base64 为 RAW 檔案字節, 在 autrence (多數已輸入)后用到檔案 。OpsIQ 解碼并重收檔案。 最可移植的外形 。

url/ source_url (出自此檔案)

公開的 https URL ( 如 Zendesk 內容_ url). 必須是 https; 在儲存前先通過 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 有名可取; 有名能取出相接相通相通同相通之相通. (不是字節),所確信的入境模式是:讀取您已執行密碼( 在平台上或從網頁有效载荷上出) 的字節, 以基礎64作通訊 content_b64 就去出事了

Outbound (OpsIQ → your platform). 有代理員附上相關檔案后 ticket.replied 有效載出回覆的檔案作成: stored_path 二. 方案 OpsIQ 檔案儲存。讀取它們并用您平台自有的格式按下,并檢查平台docs和編碼相關: WHMCS 想要 base64_encode(json_encode([[name,data]])) (JSON; Zendesk 有原始字节上傳到 /uploads.json 就用符號去設置 comment.uploads; Gmail 發出多相/相通的 RFC --822 已編入信件基底64url- encoded in raw; Amazon SES inbound attachments need the S3 receive action (the SNS path caps at 150 KB).

遠端平台: API + webhook, 就再也沒有其他應用程式的表格了

如果您所站的平台是 相隔的應用程式或資料庫 (一所收受的SaaS,一所 WHMCS 在同一個伺服器上取出不同的 DB , 永遠不要直接寫入表格: 有跨相關相關的相關地區被寫入已活化而默默地想取出正行。 總是: 有出站 呼叫已簽署的站台 API (复制、狀態、部門和刪除); 有入取地. 有被簽署的網頁被取出 POST 的平台,您 handleWebhook() 有相關相關的相關文件被校正后再取出相關資料 ticket.* 为阻止鏡頭回路,用出自地標標標出您所推取的( 如: mirror_origin:'opsiq'; 平台在網上回應了它而您所接通的處理器跳過自有回應。 請檢查 OpsIQEvents::isMirroredEvent() 在每個接通的上等站起起跑道上

鏡像狀態、 优先级和相關部( P)

回覆自動移動狀態, a 代理 答复→ answered, a 有客人 答复→ customer_reply; 反射出同樣的相關相關目錄。 对于已明确更改的訂閱 ticket.updated 并讀取 payload['changes'] (例如: {status:'closed'}).

狀態: OpsIQ 有相克相克之相 open, customer_reply, answered, in_progress, pending, closed在您平台的相關字串上保留一幅相對的小地圖,并確保您所寫取的值能被您所接受 (a) ENUM 缺少數值被一些資料庫悄悄地倒入空間中 。 部: 已 OpsIQ 在你一邊被指證是毫無意義的 就再去取出。去取出描述( C)name, emailslug) and resolve it against your own departments by e-mail → name → slug, so “Billing Department” lands in 有收費分局取而代之 一般。在兩相相上起起起點 ticket.escalated 和 a department_id 更改 ticket.updated.

💡
狀態/ 優先性/ 主题/ 部門/ 刪除相關鏡像被每一個連接器取出相關目錄( mirror_ status_ changes, 鏡像- 优先性- changers, 镜像- summer_ chengers, semble_ deletes) 在共享相關相關的相關地點上被取出 OpsIQ\ Connectors\ Mirror 選取助手。 在您的設定中嵌入了此區塊 。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 的產出。 在每次服務上顯示相匹配的參考相對相對 。 @ info: status

related_domain

有域名;相匹配为下串相對于每個服務的細節 / 域.

💡
以上方外形建立附件列表一次,并 OpsIQ 處理其他: 主機 URLs 有相關相關的檔案被傳出, 有相接的基底64內容被儲存并重新由您主辦。 您用不著被寫入到每個平台的檔案中 。
⚠️
動作金鑰是小寫字母、數字和下划線。 建構器接受3至80字元并也允許點;動作商店接受2至100有點的字元, 因此要保持字母、 數字和下划線并讓兩者都滿足。 加入一項動作就不會產生 AJAX 路由, 因此沒有什麼可以再生的了 : 重新保存連接器并同步到 。

就由人工智能去幫你建吧

您不必用手填入六步。用您自己的話描述連接器和OpsIQAI 起草整個规格, 在向导所使用同樣的驗證器中執行, 在將任何事寫入磁碟前先向您顯示計劃。 有兩個地點可以做, 而他們會出同樣相關的套件 。

在巫師中

開啟 連接器→+ 添加連接器→建立連接器在步入中。1就看一看 ✨就為我而建吧. Type what the connector is for — the platform, what OpsIQ should read and what it should write, and who uses it — add the API root if you know it, and press it. The wizard fills every step from the draft, and you review and edit exactly as if you had typed it. On step 6 the same panel appears as ✨完善同AI相通,可以要求更改 ("也讀取了发票")而不用編輯字段。

By asking Ask OpsIQ

開啟 問 OpsIQ 在管理員中的任何一處副駕駛并說出您想要的話。 您從不需要命名一項動作或知道有向导存在 。

1
Ask for it

例如: “ 为特列洛建一通接通器。 它會列出我的相板和相簿, 讀取相克牌, 在相簿上建立相克相簿 。API有副駕駛在一句話中接通并顯示出 起草此連接器 Card. 您的訊息是簡訊, 因此把平台、 讀取和寫作放入其中。

2
确认草稿

尚未寫出。 副駕駛員起草规格, 驗證,并用計劃回應:接通者所做的事、所要曝光的動作( 有標記) 、所做出的假想和您需要回答的問題- 通常由哪一個憑證提供。 草稿被停放在了一個代碼下并可以保留用 。24有好幾小時了

3
Say "build it"

有副駕駛出道了 构建 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按鍵或符號,按 測試(出自"C"行后) 開啟在你做之前 它什么也做不了

💡
二分牌需要您點擊。 分步草稿完全沒有寫出; 有標記的建築步號有破壞性并總是要問。 AI不能自動放出接通器、 開啟接通符或輸入憑證 。

有和有被允許做的一切

校正器是牆

已起草的规格要完全通過同樣的驗證 () 向导所使用公開按鍵。 如果它不通過, AI 就被授与錯誤再試取三次, 然后用驗證者自用的話拒絕 。 有一稿失敗就永遠不會被套取出 。

它沒有寫入證書

草稿取出認證模式和設定字段; 它從來不發明金鑰、 符號或秘密。 您會在接通器的設定頁面上填入這些字段 。

有問題就回答了 就不是想出事了

有兩個地區被你所揭露出, 它回想起關於計劃的問題而沒有一聲不響地想出。

有發明的收尾點出聲失敗

有一種是錯誤的路由被公佈出作業, 在Actions之行或第一次出道上都失敗了, 它從來就不是一無是處的成功。

套件是普通的

What it produces is a normal Builder package: same generated files, same contract, same signature, editable in the wizard, deletable from the Connectors page. There is no separate "AI connector" kind.

有你的相好能作作文

在設定下所配置的型態的質量→AI. 一個小而便宜的模型起草出一個正确而平坦的接通器并再多問;更強大的模型能被取出更多的端點。 在 AI 設定下再做修改; 其他都不用再去改變了 。

⚠️
副駕駛只可執行此安裝已實際被登入的動作。 如果 Connector 建構器動作被錯失了 -- 一個不包括它們的計劃, 或是一個沒有被您所輸入的角色 manage_connectors — the copilot says so rather than offering a card that would fail when clicked.
連接器

在聊天中賣出:商業角色地圖

有能出賣的連接器-商店平台、訂閱系統、支付網關等,OpsIQ有相關通商的角色。 宣告它和接通器出現在設定下 。→客戶端聊天→在聊天中自動賣出; 停止宣傳而消失。 沒有要登入的清單 。

文件: commerce_roles.json

宣言活在了自己的檔案中, 有檔案的就是所声称的它活不下去 connector_contract.json: 此檔案由相接工具再生出, 它的子程式拒絕了未知的按鍵, 因此手加入的區塊會失敗驗證而被覆寫 。

commerce_roles.json
{
  "commerce": {
    "roles": {
      "catalog_search": { "operation": "acme_search_products", "transport": "http" },
      "customer_lookup": { "operation": "acme_customer_lookup", "transport": "http" },
      "quote":          { "operation": "acme_quote_order",     "transport": "http" },
      "payment_methods": { "operation": "acme_payment_methods", "transport": "http" },
      "order_get":      { "operation": "acme_get_order",       "transport": "http" },
      "order_create":   { "operation": "acme_create_order",    "transport": "http",
                          "recovery": "acme_get_order" }
    },
    "customer_ordering": {
      "enabled": true,
      "version": 1,
      "mode": "direct_order",
      "audience": "clients_only",
      "account_flow": "existing_client",
      "payment_flow": "connector_methods",
      "identity_parameter": "external_customer_id",
      "quantity_parameter": "quantity",
      "label": "Acme Store",
      "checkout_hosts": [],

      "transaction_kind": "purchase",
      "decision_mode": "immediate",
      "payment_timing": "on_confirmation",
      "reversibility": "reversible",
      "cancellation_flow": "platform_only",
      "fulfilment_presence": "remote_delivery",
      "notify_flow": "platform_automatic",
      "customer_fields": {"name": "required", "email": "required", "address": "required", "phone": "optional"},
      "client_tools": ["catalog_search", "catalog_get", "quote"],
      "account_timing": "before_quote"
    }
  }
}

The rules, and why each exists

角色是關閉的詞典

OpsIQ永遠也不要從動作名中推断出一角色。 未宣佈的角色并不存在- 宣示是整份合同 。

有活干就出自你所想了

您所畫出的每一項操作都必須存在 actions.json有一通打字機能跑不快 它被客戶看成"我可幫你檢查"接著就一無所有了

有讀取角色從來不指向破壞行動

讀取角色( Catalog, 有可提供性, 有引號, 有取序的搜尋等) 必須地圖到您平台上沒有變更的操作中去 。

有一項角色從不向一般紀錄操作寫地圖

地圖 order_create 在生表格中插入 -- record.create, db.insert, recordCreate所寫一行直接地绕過您平台的定价、股票鎖定和確認信件, 產生出您自己的系統不完全相信的訂單 。

有寫作角色宣佈有收復操作

An idempotent lookup that answers "did my write land?". The most dangerous timeout is the one after your platform may already have created the order; without a recovery lookup the only options are to retry blind or to lose it.

有三起外出事務相關

有直接跟支付提供商通話的套件也必須宣佈 payment_profile (指率、國家、方法及 环境 — (一) 未宣示的環境是: webhook_verify (提供商真正的簽名;一般秘密相關被拒絕)和 event_map (提供相關事件到 Canonical 上)。 商家連接器只可以執行 record_payment 有 已 經 證實 的 花花 錢 . 它 就 必 不 可 假裝 有 有 有 入門 了 。

有相關商店可以叫客人去取名

A merchant connector and a payment-gateway connector are different contracts. Under 有連接的商店客戶訂單中,選擇可以被站台所證明的最深模式。此選擇被套入已簽署的內部 commerce_roles.json; Store and Client Chat 在執行時重讀它。 因此去除一角色或取消/取消連接器的功能會使先前已提供的提案作废而不會留下被打碎的權力 。

catalog_only

地圖 catalog_searchcatalog_get. OpsIQ可能搜尋并解釋出產, 但是它不能顯示可執行的訂單或取出證實。 在自己打入的引文和取出/ 取出命令動作通過更深的合同和市場憑證前, 每一個套件都保持這個真實的預設; 从平台名稱中從不推斷出交易支持 。

platform_checkout

此外地圖 quoteplatform_checkout. 有商相通-不是OpsIQ核心-回放 checkout_url, checkout_reference 有克南克所引出.URL一定是 HTTPS, 它的主機名必須相匹配 customer_ordering.checkout_hosts 或 HTTPS 主機由 checkout_host_setting, and the quote may live for no more than 15 minutes. A product permalink, locally assembled cart URL or return URL is not a merchant-issued checkout capability.

direct_order

此外地圖 quote, order_createorder_get有: order_create.recoveryCore 在執行前先刷新引文,提供一等金鑰并再重試之前再問回復操作。 payment_flow=opsiq_gateway它需要再多地圖 record_payment 有权威性回復/回讀操作。OpsIQ活活地去核對通關交易、相對數量、貨幣、商業和訂單等參考, 有一次寫出提供商的參考資料后再回讀出商的收據/訂單。 A mark_invoice_paid 狀態切換被拒絕了, 因為它沒有支付證據。 建立動作必須引用平台自有的定价、 股票和訂單商業通由; 原始資料庫寫入被拒絕 。

身份檢查, 以及操作員能改變什麼

在 OpsIQ 自有支付時,聊天用戶必須接通 email_otp before an order is created — OpsIQ emails a 6-digit code and asks for it. This is not something a connector opts out of; it is the assurance floor the execution kernel demands for order_create.

有例外 有誰能控制它

有接線人可以接受未驗證的地址 就當您所宣佈的接通器已通通 fulfilment_presence: customer_present有酒店客人要到去 就把收據弄錯了 就被放入房間了 remote_delivery 有被運出、提供和下載等功能需要被驗證出, 而由操作員所設置的, 因為值會由這個地址所取出。 設定( setting) minimum_assurancereversibility: irreversible 此外也去除了接通者跳過它的能力.

有多久的密碼?

Thirty minutes by default, operator-configurable from 5 minutes to 24 hours. The customer sees a live countdown rendered in their own 有位已过期的密碼能說出一項新密碼而不會上報無效的代碼, 有位打正舊代碼的客戶沒有出錯, 有數人也用同一個回路接通了。

有需要的: 有需要取用

姓名和郵件都需要先收取。 宣告( C) address, phonecompany as requiredoptional to fit the business: a shop that ships parcels declares address required; a hotel declares phone required, since a guest it cannot call has no booking contact. The assistant asks for them in the conversation before quoting, and OpsIQ refuses to place an order that lacks a required field. The builder writes the normalised map out, baseline included, so the contract on disk is explicit.

在帳號被建立后: account_timing

at_order ( 預設 ) 讓訂單寫入第一次買入的帳戶。 宣告( C) before_quote 當您每個帳號的平台價格被取出的時候 --WHMCS由客戶自用相簿取出并取出客戶的通貨 -- -- 和OpsIQ在您所建立的帳號中 customer_create 有需要就去取取出出相關帳號所取的出處, 因此證件上會有您所要收取的通訊卡 。 account_flow: connector_signup.

助理取取, 它不取: 客戶端_ 工具

有建立命令后, 助手就再也沒有讀取被貼上的小目錄了。 它叫作 三道工具 -- commerce_catalog_search (an empty query is an overview of the product families; results beyond the limit are listed by name), commerce_catalog_get 有一項被收滿了,而 commerce_quote, which mints the signed confirmation card server-side through the same walls the connector path has always had. One tool per verb, your connector as a parameter, so a store with six connectors gets three tools rather than eighteen. client_tools 限制缺省;缺漏指所圖的每一個和一 catalog_only 連接器從來不引出。 確認從來不是工具: 在網上取出卡片的按鈕, 取出相當的 CONFIRM 有名的模特兒可不花錢了

有需要的目錄

id, name有相關安全 summary, a category or product family (this is how a customer’s word finds an item whose name is a code), currency, unit_amount_minor, availableinput_schema naming the fields an order needs. Search scores the customer’s words against name, family, cycle and summary.

有被客人所取出的理由而拒絕

返回 {"success":false,"error":"…","missing":["domain"],"retryable":true} 有錯或缺少數值。取出名稱的拒絕 missingretryable 有同樣的相關資訊被取出; 有相關通訊, 有相當相關的通訊。

有地幣和緊急站口

When the operator turns on Geo currency (Client Chat → Behaviour), the customer reads prices in their own currency on every surface — chat text, the web card, the channel text card and the storefront’s opening currency — using the platform’s own FX store. Your price is never substituted: the card shows the visitor’s figure beside the store total, and the gateway processes exactly the amount it displays. 暫停出行 (Settings → Commerce) is the kill switch: catalog, quotes and look-ups stay open; proposing and confirming stop on every channel.

有時出賣不是有行為相通

有名商人被取走

套件封條已被打破: 有檔案被簽署后被編輯了。 重新放出套件。 有份已安裝的市集副本從未被編輯; 在市集面板上更新它 。

就這家店的訂單已暫停了

The kill switch is on. Settings → Commerce → Pause all selling.

此頻道尚未有訂單

在客戶可以買到的地點下沒有勾選出頻道。 伺服器日志取出頻率名 。

The assistant describes an item but no card appears

引文被拒絕了。 每通通訊被記錄为 [opsiq][commerce][client_tool] 有原因: 項目 ID 錯誤, 有項目不宣佈、 有被取取地區或商家自有拒絕等。 在信任助理的參考前先讀下日志 。

有名助手說他看不到出產地

頁面屬於另一個工作區。 每個網站元件都屬於一個工作區, 而商店接通器必須被開啟到那裡 。

有被取出而代之的回覆

“Tell me a little more about what you need” means the AI provider call itself failed; AI History shows the exact error under that turn, and the tools were never reached.

在聊天中不顯示連接器編輯

有再接再通地由相關人員去取回相關密碼,

有位尼日利亞人看到美元,

Check that the geo-IP database is configured (Client Chat → Geo) and that the visitor’s currency has an FX rate; with no rate OpsIQ shows the store price rather than a wrong number.

就只有你這一塊能出錢了

有引文相接 unit_amount_minor, quantitytotal_amount_minor, and it is tempting to treat the third as derivable from the first two. It is not, and assuming it is has already cost a customer real money.

quantity is what the CUSTOMER chose — one room, one licence, one policy. Your multiplier can be something OpsIQ never sees: nights, seats, billing cycles, distance, weight, tiers. A hotel quotes one room for three nights as quantity 1, unit 105,000, total 315,000. OpsIQ multiplied unit by quantity to price a confirmation card, showed a guest 105,000, and then charged the 315,000 the merchant actually returned. Agreeing to one figure and being charged another is the worst thing this contract can do.

有規矩

total_amount_minor is the only figure OpsIQ shows, signs, charges and reconciles against. unit_amount_minor 在線上是一項顯示細節。 如果您的總和不是您想要被收取的, 您的引文就錯了 --OpsIQ有助地調整出你所未承諾的一塊地去取回相當多的地道.

這對你所引用的動作意味著什麼?

Return the all-in figure. Apply your own nights, tiers, discounts, taxes and fees before you answer. If your line does not reconcile — unit times some whole number never equals your total — OpsIQ treats the whole thing as one line at its real price rather than inventing a breakdown that reconciles to nothing.

有六個答案能使這份合同能適合任何行業

上面所宣稱的起先是商店的宣傳:買一通東西,現在就付錢,就由你去取而代之;而這四通通訊都是由某些活生生的行業所不相通而起。 銀行出錢是無法被取回的。 在保險商查取之前, 保險人不能說出"被證實"了。 有通訊所的收費是給不是病人的人收的。 絕對不能說這些行業不是向自有的客戶提供不實用的程序, 就連接不了了。

有位交易接通者又回答出6個問題了. 有相關的讀取被預設了 — saying nothing is always safe and never permissive, because saying nothing is what an author does when they have not considered the question.

transaction_kind

purchase, booking, subscription, bill_payment, transfer, application, top_up, renewal字典取而代之: 它決定了您客戶所讀取的字眼。 呼叫通訊"命令"使助理聽起來不通訊所要說的活, 而沒有多少正確的管道能從中恢復。 purchase.

decision_mode

immediatedeferred選擇 deferred 有承銷 信用評估 有參考 入學或委員會等OpsIQ就說: 已提交 而不是 已确定,并交接參考以問取。告訴某人,他們的應用程式被確認了而它和人同坐相處是聊天助理能為受管事務所做最有損害的事;而這是每起零售相關的流的預設行為。 immediate.

payment_timing

on_confirmation, deposit_then_balance, invoice_laterno_payment。由它來決定是否OpsIQ開啟付款頁面 有的因此,不能由下列因素推断出: payment_flow 有錢收下 就寫上去取出去 有否和有幾時出事?在您發出通訊單后工作, 有的應用程式也花去一分錢可以提交, 在确认后結束而未接通空白或錯誤的網關清單 。

reversibility

reversibleirreversible有錢接通者所說的最重要的事:一間房間可以放出而一包裹可以回;一分已完的轉出不能去-沒有倒數,錢就到另一端了;唯一的取道就是叫陌生人把轉出去取回. irreversible 自動強制 cancellation_flownone 并禁止任何操作員設定出跳過身份檢查, 有話就說出去取出去二個不相符合的字段不是以先取名者來解決的狀態。 reversible.

cancellation_flow

none, platform_onlyconnector_cancel。取消角色已存在, 但沒有規定由誰能接通, 有兩個錯誤的猜想以相對的方向失敗: 猜想開啟而聊天訊息取消已付的訂收而未引出任何費用; 猜測已關閉而要取消的客戶被叫去打通通電話 。 connector_cancel 此外需要 cancellation_quoteorder_cancel 有回復 --OpsIQ在說出其花費前從不取消 。 none.

fulfilment_presence

customer_presentremote_delivery有被放入的郵件地址能花出一分錢。酒店客人必須到達, 因此錯誤的地址會把收據弄錯而房間也還在; 有被寄出的信包、提供服務器或下載連接站出自此地址所取出的力量相當高。 因此可以提供接通者的"skip 郵件驗證"設定因此,旅館的推理永遠不能被接通船貨的接通者所繼承。 remote_delivery.

minimum_assurancedisclosure (可選的)

minimum_assurance 有需要就出手取出 更多 身份證明比起:OpsIQ有同樣的要求的銀行需要分出分類的分類去去執行相關協議。 設置相關聯人也使接線人失去跳過核對的能力, 因為商家自己所冒出的风险決定會超越接線人的方便。 disclosure 有所顯示的文字 在前 有分量的按鈕, 有收費或取出冷卻的權利; 有管轄的企業用名把所需要使用的措辞弄入產品名中去。

notify_flow

platform_automatic, platform_triggerednone二. 何时OpsIQ就取出您自訂的支票, 因此不管通常的郵件是不會起火的。 在收取付款時會標記已付的訂單; 它不要求任何平台告訴任何人 。 platform_triggered 需要 order_notify 有收復作用;并OpsIQ在回報后才被取出 。 none makes the OpsIQ-side confirmation compulsory, because otherwise a paying customer hears nothing at all. Defaults to none.

The same contract, nine unrelated businesses

None of these were designed around. Each is the contract answering honestly for a different industry, with OpsIQ knowing nothing about any of them.

有一出合同 有九出行
Hotel        booking      immediate  deposit_then_balance  reversible    -> payment page, "confirmed", identity may be waived
Online shop  purchase     immediate  on_confirmation       reversible    -> payment page, "confirmed", identity always verified
Bank         transfer     immediate  on_confirmation       IRREVERSIBLE  -> payment page, no cancel route, never waived
Insurer      application  DEFERRED   no_payment            reversible    -> no payment page, "submitted", never "confirmed"
Utility      bill_payment immediate  on_confirmation       IRREVERSIBLE  -> payment page, nothing to give back
Clinic       booking      immediate  invoice_later         reversible    -> NO payment page, billed afterwards
Tradesman    booking      immediate  invoice_later         reversible    -> NO payment page, invoiced on completion
Telecom      top_up       immediate  on_confirmation       IRREVERSIBLE  -> payment page, final once sent
University   application  DEFERRED   no_payment            reversible    -> no payment page, decision follows
有付酬事件提供平台

在一筆由本地所付的錢被活活地查證并承付后,OpsIQ出 payment.completedorder_id, payment_id/provider_ref, gateway准确 amount_minorISO 中, currency,客戶、行項、頻道和 paid_at有商家接通者需要用相關證據相接到底 record_payment 有被收取的通訊器會耗用自己有權力的已付帳款, 也不可接取相當的付款回覆。

有相關資訊,

该模型可以選擇已宣佈的產品和數量, 但是它不能選擇操作名、 薄荷取出URL或從文字中建立商業狀態。客戶會得到一張被簽署的卡片并需要按下它的確認按鈕。此確認被捆綁到工作區、接通器、項目、數量、引文、貨幣、線和到期等。

有同樣的相關人員能保持同樣回流而不用電子郵件快取出

WhatsApp有使者,Instagram, Telegram, LINE、 SMS和 X 有提供商被驗證的頻道帳號作客戶身份。 提案被簽入了頻道賬號并被證實到同樣的新引文相關, 有股票相關; 有錢相關的支付和收復相關控制。 有社交相關人會用到在對話中所提供准确的一次性確認動作; 有能等普通傳言從來就不是命令權限 。

有相關身份的通訊,從不以電子郵件取出

原生命令由不透明的頻道身份來索引, 因此AI可以回答 “我的指令在哪裡? ” 而不需要電子郵件或指令號碼。 对于連接的儲存歷史, 通道身份可以連接到工作區 。CRM/ Client record and in the controlment. Clienders contest/ order lookup. 客戶上下文提供商接收所儲存的連結; 他們不能從被打入聊天口的顯示名稱或電子郵件中選擇帳號。 有同樣的指令, AI可以直接回答; 有好幾個它可以總結相對并問出哪個相配; 有無一可以說沒有相關歷史 。

使有效载荷普及:已打入字段并有伺服器自有身份

Core contains no WHMCS, hotel, SaaS, store, bank, product, route or vendor branch. The quote action’s typed parameters are the customer form and AI slot schema. A booking connector can declare dates and guests; a billing connector can declare a cycle; a future enterprise connector can declare its own safe fields. OpsIQ sanitizes primitive controls and sends the collected values only to the mapped connector 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 to the action parameter that receives the connector’s external customer id. This field is never shown to a customer and any caller-supplied value is removed; OpsIQ injects only the id from a verified connector link. Guest checkout leaves it empty. A typed email is proof for a declared guest lookup, not a login and not purchase authority.

群組域數: signed-in customer accounts and connector configuration belong to the group-primary portal workspace. However, the identity token must be signed for the exact member site that embeds the widget, using that member’s webhook secret. OpsIQ verifies that surface first and only then resolves commerce and the linked customer through the group primary. Never replace the member site key with the primary key and never copy the primary secret to a member site.

有相接器需要回復的封口

星表
{
  "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"
  }
}

平台檢查出回應重覆了有效的克通引號并新增了 HTTPS checkout_urlCore 在確認時刷新引文并精确地比對通貨、總和相當穩定的選擇。接通器會把平台回應轉譯入這些信封; Core從不翻譯出賣地或建構商URL.

在本地 Store 中提供接線生的網關

就靠付錢能讓客戶看到出入口 就沒有了 原生儲存支付网关 在 Connector 建構器中被封鎖。 它新增了一個已明确版本的相關合同、地圖取出建立和活性付款搜尋,并允許列出由提供者主機所主機收取的域名。 在通訊所下安裝、啟用和選取了接通器后, 在公共商店、 Store 模式、 客戶端聊天取出和自動取出等地區也出現了同一個關口。 沒有提供商的 swit被硬通碼 。

原生商店网关合同
{
  "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_url 有供物者, session_id。同名URL必須是 HTTPS, 有沒有憑證相關, 並符合被允許上市的主機 。

Canonical 狀態輸出

狀態動作執行一個新提供者API二. 查取和地圖 paid 就當是一出好戲 amount_minor 就以整數為正數; currency 以 三字母 ISO 代碼相接,并 provider_ref。回放URL, 查詢字串、客戶端有效载荷或接通器提供 “被確認的” 指令從來就不是出錢的真相 。

有選擇的退款合同

如果网關能支持退款, 就用地圖 payment_refund 回收。退款建立后會有嚴格回傳 acceptedcompleted 有布林斯外加 provider_ref; 回收能執行提供商的搜尋并返回 status. Without both actions, OpsIQ does not advertise connector refunds.

Who confirms the order

接通器從不寫入OpsIQ命令狀態。OpsIQ相對回應的數量和貨幣并記錄提供商的參考; 只有核心能完成提供商被驗證的轉接。 手動銀行轉接仍然是被命名的代理商能批准的唯一流出 。

在接通器建構器中, 勾選 有商相通地.中,映射出角色并配置 有連接的商店客戶訂單, 原生儲存支付网关, or both when the connector genuinely provides both contracts. The wizard validates the declaration and writes commerce_roles.json。出處仍然使用正常的 Marketplace 審查與簽名相關程序; 此合同從不通過套件檢查或使接通器無法被安装。 任何套件都用手取回 php tools/verify_commerce_contracts.php.
💡
有接通的通訊是: http for a remote API or bridge 在已部署的橋上取出名的操作 (參見 NO-)API。角色是可忽略的;跑取需要所描述的傳輸,以能提供一通橋的版本。
連接器

在沒有連接器下以聊天方式賣出: 動作和觸發器

以上商業相關合同不需要接合器套件。 如果您的平台是您自有的, 有自訂后台、 有內部API有同樣的合約、同一張牌、同一份身份證、同份付款內核和同份收據相通。所缺少的只是套件, 因為沒有可以簽署的第三方代碼 。

如何將它們結合在一起

在您一邊的平坦 HTTPS 端點下被定義为: AI自動( A)→動作 有其URL, 驗證信頭和參數。然後您再儲存一項宣示, 將角色映射到這些動作上。 從那時起您所打的商店就出現了同一個連接器相接而成的通訊: AI取自 有請出自相關的收據 證件由客戶去核對他們的電子郵件 取自內核通訊 有一等能鍵的命令動作,OpsIQ在工作區取取出錢,并 有收費記錄的活性 有收據的相關人員都說"通訊"了

二. 宣 告

保存此JSON以工作區設定 commerce_custom_integration (安排)→高级設定值,或取自 REST 設定值API有同樣的外形和套件相通 commerce_roles.json 有商業節點, 有: action 命名自訂動作代碼:

commerce_custom_integration
{
  "enabled": true,
  "roles": {
    "catalog_search":  { "action": "acme_catalog" },
    "quote":           { "action": "acme_quote" },
    "order_get":       { "action": "acme_order_get" },
    "customer_create": { "action": "acme_customer_create",
                         "recovery": "acme_customer_by_email" },
    "order_create":    { "action": "acme_order_create",
                         "recovery": "acme_order_by_key" },
    "record_payment":  { "action": "acme_record_payment",
                         "recovery": "acme_payment_by_key" }
  },
  "customer_ordering": {
    "enabled": true, "version": 1,
    "mode": "direct_order",
    "audience": "guests_and_clients",
    "account_flow": "connector_signup",
    "payment_flow": "opsiq_gateway",
    "label": "Acme Store",
    "identity_parameter": "client_identifier",
    "quantity_parameter": "quantity",
    "transaction_kind": "purchase",
    "fulfilment_presence": "remote_delivery",
    "notify_flow": "platform_automatic"
  }
}

最后,加 custom_commerce 在設定下被啟用以出售的連接器→客戶端聊天→在聊天中出賣入室被重新檢查 每隔 它以出名的理由而拒絕了你的商店:您模式需要地圖去到一無所有的角色;沒有回復動作的寫入角色 (§15.7已被刪除或被關閉的動作。

有作所取作相.

返回接線器信封

已回應 {"success": true, "data": { ... }} 有的被打倒了. 有的 {"success": false, "error": "a sentence a customer may read"}有相關的動作 回應成功路徑 就用信封指著他

引文:通篇取自:分小單位

返回 quote_id, product_name, quantity, unit_amount_minor, total_amount_minor, currency, selection, selection_summary, expires_at在上一行"你的總和是移取錢的唯一數"一行所依據是:收稅、收費和乘以入出,

建立秩序: 尊重一等座鍵

有收受. idempotency_key有被簽署的字 total_minorcurrency已校正 customer_email。您自己引出參數。用定單儲存金鑰; 如果您已建立定單, 就回回收定單而不用第二定單 。 請檢查收據 。 如果您的系統價格與所簽定的總單相差, 就拒絕重新作曲取回收費不足 。 返回 a reference 有相關的站台被你認出去

就一寫作作回覆

order_by_key 有同樣的金鑰和回覆 {"found": true, "order": {...}}{"found": false}有被發現: 假作是承諾 --OpsIQ有時會用它的力量重試寫入。 狀態 feed 或最近排序列表不是一寫的答案 。

有記錄的付款: 您自己的和解路徑

在 OpsIQ 用網關已积极驗證出數量和通貨后, 接受网關交易id作為一等號金鑰再加收您訂單的參考。 在您平台自有通訊功能下所付的定單上標出相關分數- 開放您自己的電子郵件、 減少您自己的股票等。 返回 。 platform_notified: true 如果您的平台收取了用戶的電子郵件相關信息 。

卡片輸入出自您的動作參數

Any parameter you declare on your QUOTE action (beyond the identity parameter) that the AI has not collected is rendered on the confirmation card as an input the customer fills themselves — a domain, a date, a seat. Label them well; the label is what the customer reads.

有出息:能聽到自己出賣的聲音

有兩起事件起火了同用相關事務通訊站,

commerce.order.created

在收費前被指使到商家一邊去取出相接相通相接接相接者(或 custom_commerce有相關資訊相關的相關資料,

commerce.payment.confirmed

就一整回收費地去取出一回活口去活活地去核實所付的錢了 它能用同樣的相關回應的收據去阻止再接回相關收據 因此它不能再雙打起你的網頁了

什麼時候去接通器取出?

自訂的集成是工作區設定: 它能提供您商店 在您工作區上。 您要分佈集成的一瞬間 -- -- 其他工作區、 市場、 版本、 簽署、 有酬安裝等 -- -- 包裝同樣的動作和同樣相接器的宣傳。 合同不會變更; 只有包裝者才有 。

連接器

連接有 NO 的平台API(橋型)

有好多的活口站出事了API有酒店CMS 有舊的收費系統 有通訊自動取用的工具OpsIQ一的連接器:接通器傳送了一個 PHP 檔,由操作員放入自有的公用網根中,而檔案是:API。這一頁是一整行模式, 有能讓它安全跑跑的規則和每個規則背后的原因.

它的外形

A normal connector calls someone else's API. A bridge connector brings its own. Nothing else changes: the same actions, the same context providers, the same identity contract, the same package layout.

1
您寫入一首最先發件檔案

It lives in your package at bridge/opsiq-<platform>-bridge.php. It talks to the platform's database directly, or boots the platform's framework, or both. It answers JSON.

2
有接通者把相片抄入他們的網根

在平台自有的索引. php相接; 沒有修改平台碼, 沒有安裝外掛程式, 沒有可以維持跨平台更新的相關功能 。

3
有接通器相接板把相關檔案交出

您的設定值 。json宣告 webhook_ help. slippet_template。 連接器頁面已取而代之, 因此沒有可手取的檔案可以被取用 。

4
OpsIQ它叫作伺服器到伺服取用器

Your Client.php sends GET requests with the shared key in an X-Opsiq-Bridge-Key header. The base URL setting is the platform site root.

The Connector Builder CAN generate this for you now. Pick the "Platform with no API" profile (or set data access to bridge) and it emits the bridge file, the matching panel snippet and the typed actions that read and write through it — for a Laravel application reading its .env, for WordPress reading wp-config.php, or with credentials you paste in for anything else. Bridge mode fixes authentication to the OpsIQ bridge protocol: the connector securely generates api_key 有被開啟的,以 X-Opsiq-Bridge-Key并捆绑同樣被儲存的值入 OPSIQ_BRIDGE_KEY 在可复制的檔案中。只當您平台不是其中一個時才有手寫作, 在您需要行為相關時才會有手取作; 有手取取作的橋是安全的, 它只會覆寫有自己標記的橋接文件 。
💡
Everything on this page is shown in PHP against MySQL, because that is the reference implementation and the only combination the packaging pipeline fully supports. The pattern itself is language-agnostic and engine-agnostic: see "The bridge in other languages and other databases" for the gate in Node, Python, Go, Ruby, .NET and Java, the introspection query for PostgreSQL, SQL Server, SQLite and Oracle, and the MongoDB equivalent — along with the packaging constraint that decides how a non-PHP bridge reaches the operator.

有安全模式 有規矩相通到底出自何所出

它被放入了一個公開的網上。 就這個事實能把每條規則推倒到下方去; 不要放鬆任何一丁點去使你的橋更簡單 。

The caller never supplies SQL

不是條款,不是由片段所取的命令,不是 “ 就這一次” 原始查詢參數。 呼叫者取出表格、 一列和一分數; 您的檔案會建構聲明 。SQL文字, 有一塊被共享的金鑰會變成任意的數據庫執行 。

表格和列名被根據資訊校正_schema

身份證不能被做為參數, 因此需要取而代之地檢查。 讀取此數據庫的正本表格和列列表并拒絕任何沒有被它所包含的東西。 如果身份證不是此計劃的正實物件, 就根本無法接通查詢- 因此可以安全地曝光每個表格 。

Every value is a bound parameter

無一例外地, 在搜尋中包含相關值。 已驗證的标识符外加被綁定的相對值使相對地表總和被注入地表是零 。

有相關的讀取, 有相通的寫取被允許上市

有再接一站 就這樣了 有規矩的人最想跳出去取道

有秘密的列被編輯并被拒絕被寫入

在列名下相匹配: 密碼、 記取_ token、 秘密、 api_ key、 私密- salf, sord。 在出站途中用占位符取代此值。 在入站途中完全拒絕寫入- 寫出生密碼散列不是操作而是步槍。 將接通器送入平台自有的口令流中 。

刪除是單行, 按主金鑰分

Never a bulk delete, never a delete by filter. A bulk removal is how a database dies. If someone genuinely needs one, they can do it in the platform.

有行首

用硬天花板壓入限制參數。 執行中查詢不能被聊天訊息所倒置 。

在金鑰被設定前失敗關閉

有未建構的橋接回覆403在被設置出之前有幫助的橋 就有幫助陌生人的橋了

有時金鑰相對, 在信頭中按鍵

一等分,一等分 二等分出一等取出 一等相去一等相入一等同分Opsiq- Bridge-Key,不是查詢字串 因此它被取出存取紀錄、代理紀錄和指標信頭外去.

GET only

有一種方法 有一塊外形 就沒有東西能被分解出一具屍體了 有被證實的參數能被看穿了OpsIQ就只有他能接通了.

Reads universal, writes allow-listed — and why

有相爭的規則是: 完全被辯論了。 助手應該能看到整個平台: 因此才有用, 有讀取無法破壞任何東西。 寫入是不同的。 這檔案會被放在一通共享的金鑰后方的公用網根上。 如果金鑰出漏出, 有不受限制地寫出表面可以使出漏取等同完整的數據庫控制- 有新的管理用戶, 有空的訂閱表。 有通訊清單就表示出漏的金鍵仍不能通到操作員所未啟用過的表格 。

⚠️
The OpsIQ approval card gates the AI, not the key. The admin clicking Allow on a destructive action is a control over the assistant. It is not a control over whoever holds the bridge key. Those are two different threats, and the allow-list is the answer to the second one.
有接通器取出自波克橋的接頭
/* ── 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, 它取自安裝表的前缀; 而操作員會寫出被允許的清單而未被被封入, 因為它們會自然地打入。 比較兩種方式或被先訂的安裝都不會被沉默地放入中去和每一個寫入的分解。 而拒絕也必須自作解釋, 因為讀取它的人是聊天視窗中的管理者, 不是有堆疊追蹤的開發者 。

有權取用名單檢查,取自市場相接器/botble/bridge/opsiq-接通了接通出道口
/** Tables a WRITE may touch. Empty = the built-in defaults. */
$writeAllowed = static function (string $table) use ($prefix): bool {
    $raw = trim((string)(defined('OPSIQ_WRITE_TABLES') ? OPSIQ_WRITE_TABLES : ''));
    if ($raw === '') $raw = 'ht_bookings,ht_booking_rooms,ht_rooms,ht_customers,customers';
    if (trim($raw) === '*') return true;                     // explicit opt-in to everything
    $bare = ($prefix !== '' && stripos($table, $prefix) === 0) ? substr($table, strlen($prefix)) : $table;
    foreach (explode(',', $raw) as $t) {
        $t = trim($t);
        if ($t === '') continue;
        if (strcasecmp($t, $table) === 0) return true;
        if (strcasecmp($t, $bare)  === 0) return true;
        if ($prefix !== '' && strcasecmp($prefix . $t, $table) === 0) return true;
    }
    return false;
};

/** One refusal, one explanation — used by every write op. */
$requireWritable = static function (string $table) use ($writeAllowed): void {
    if ($writeAllowed($table)) return;
    opsiq_bridge_out(['success' => false, 'error' =>
        'write_not_allowed: "' . $table . '" is not in this bridge\'s write allow-list. '
        . 'Reads are unrestricted. To permit writes here, add the table to OPSIQ_WRITE_TABLES '
        . 'in opsiq-botble-bridge.php (or set it to "*" to allow every table).'], 403);
};

The gate, in full

有四分支票,取出后再取出相關資料

四道門檢查出事了
<?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 为取用者取出桌名, 容忍缺少或外加的桌名前缀, 并回歸為無效的。 在下游所取出的名字可以被證明存在 。

从 Botble 橋上逐字取出的身份證證和校正
/** Real tables in THIS database — the allow-list, straight from the DB. */
$allTables = static function () use ($pdo, $db): array {
    static $cache = null;
    if ($cache !== null) return $cache;
    $st = $pdo->prepare('SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = ? ORDER BY TABLE_NAME');
    $st->execute([$db]);
    return $cache = array_map('strval', $st->fetchAll(PDO::FETCH_COLUMN));
};

/** Resolve a caller-supplied table name to a REAL one, or null. */
$resolveTable = static function (string $name) use ($allTables, $prefix): ?string {
    $name = trim($name);
    if ($name === '' || !preg_match('/^[A-Za-z0-9_]+$/', $name)) return null;
    $tables = $allTables();
    foreach ($tables as $t) if (strcasecmp($t, $name) === 0) return $t;
    /* Tolerate a missing or extra table prefix. */
    foreach ($tables as $t) {
        if (strcasecmp($t, $prefix . $name) === 0) return $t;
        if ($prefix !== '' && strcasecmp($prefix . $t, $name) === 0) return $t;
    }
    return null;
};

/** Column introspection: table => [column => true]. Cached per request. */
function opsiq_bridge_columns(PDO $pdo, string $db, string $table): array
{
    static $cache = [];
    if (isset($cache[$table])) return $cache[$table];
    $stmt = $pdo->prepare('SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ?');
    $stmt->execute([$db, $table]);
    $cols = [];
    foreach ($stmt->fetchAll(PDO::FETCH_COLUMN) as $c) $cols[strtolower((string)$c)] = true;
    return $cache[$table] = $cols;
}

/** Columns whose VALUES must never leave the platform. */
$secretCol = static function (string $c): bool {
    return (bool)preg_match('/(^|_)(password|remember_token|secret|api_key|private_key|salt|token)($|_)/i', $c);
};
/** Columns a write may never touch — auth material. */
$writeBanned = static function (string $c): bool {
    return (bool)preg_match('/(^|_)(password|remember_token)($|_)/i', $c);
};
/** Strip secret values from a row before it leaves the server. */
$redact = static function (array $row) use ($secretCol): array {
    foreach ($row as $k => $v) if ($secretCol((string)$k)) $row[$k] = '[redacted]';
    return $row;
};

有讀取的操作和寫取的功能,已完成

注意所要被捆綁和被驗證的。 滤波器列被取入正列清單并被插入到一個标识符; 它的值被限制。 在出站時會被剪接。 更新會拒絕主鍵和任何憑證列, 在表格有時會更新印花 。

讀取任何表格- 已驗證的認證值、 被捆綁的數值和被封蓋行
case 'query': {
    $t = $resolveTable((string)($_GET['table'] ?? ''));
    if ($t === null) opsiq_bridge_out(['success' => false, 'error' => 'unknown_table'], 404);
    $cols = opsiq_bridge_columns($pdo, $db, $t);
    if (!$cols) opsiq_bridge_out(['success' => false, 'error' => 'unknown_table'], 404);

    $sql = "SELECT * FROM `$t` WHERE 1=1";
    $args = [];

    /* Equality filter: column must be REAL, value is bound. */
    $wc = strtolower(trim((string)($_GET['where_column'] ?? '')));
    if ($wc !== '') {
        if (!isset($cols[$wc])) opsiq_bridge_out(['success' => false, 'error' => 'unknown_column: ' . $wc], 400);
        $sql .= " AND `$wc` = ?";
        $args[] = (string)($_GET['where_value'] ?? '');
    }
    /* Ordering: column validated, direction from a fixed pair. */
    $ob = strtolower(trim((string)($_GET['order_by'] ?? '')));
    if ($ob !== '' && isset($cols[$ob])) {
        $dir = strtoupper(trim((string)($_GET['order'] ?? 'DESC'))) === 'ASC' ? 'ASC' : 'DESC';
        $sql .= " ORDER BY `$ob` $dir";
    } elseif (isset($cols['id'])) {
        $sql .= " ORDER BY `id` DESC";
    }
    /* Hard row cap. */
    $lim = (int)($_GET['limit'] ?? 25);
    if ($lim < 1)   $lim = 25;
    if ($lim > 200) $lim = 200;
    $off = max(0, (int)($_GET['offset'] ?? 0));
    $sql .= " LIMIT $lim OFFSET $off";

    $st = $pdo->prepare($sql);
    $st->execute($args);
    $rows = array_map($redact, $st->fetchAll());
    opsiq_bridge_out(['success' => true, 'data' => [
        'table' => $t, 'returned' => count($rows), 'rows' => $rows,
    ]]);
}
寫入一行- 允許上清單表, 拒絕了 认证列, 有主鍵相接的單行
case 'record.update': {
    $t = $resolveTable((string)($_GET['table'] ?? ''));
    if ($t === null) opsiq_bridge_out(['success' => false, 'error' => 'unknown_table'], 404);
    $requireWritable($t);                       // the allow-list, before anything else
    $cols = opsiq_bridge_columns($pdo, $db, $t);
    $pk   = $primaryKey($t);
    $id   = (string)($_GET['id'] ?? '');
    if ($id === '') opsiq_bridge_out(['success' => false, 'error' => 'id_required'], 400);

    $set = json_decode((string)($_GET['set'] ?? ''), true);
    if (!is_array($set) || !$set) opsiq_bridge_out(['success' => false, 'error' => 'set_json_required'], 400);

    $frag = []; $args = [];
    foreach ($set as $col => $val) {
        $col = strtolower(trim((string)$col));
        if (!isset($cols[$col]))  opsiq_bridge_out(['success' => false, 'error' => 'unknown_column: ' . $col], 400);
        if ($writeBanned($col))   opsiq_bridge_out(['success' => false, 'error' => 'refused: "' . $col . '" is auth material - change it through the platform own password flow, never by direct write.'], 400);
        if ($col === $pk)         opsiq_bridge_out(['success' => false, 'error' => 'refused: the primary key cannot be rewritten.'], 400);
        if (is_array($val) || is_object($val)) $val = json_encode($val, JSON_UNESCAPED_SLASHES);
        $frag[] = "`$col` = ?";
        $args[] = ($val === null) ? null : (string)$val;
    }
    if (isset($cols['updated_at']) && !isset($set['updated_at'])) $frag[] = '`updated_at` = NOW()';

    $before = $pdo->prepare("SELECT * FROM `$t` WHERE `$pk` = ? LIMIT 1");
    $before->execute([$id]);
    $prev = $before->fetch();
    if (!$prev) opsiq_bridge_out(['success' => false, 'error' => 'not_found'], 404);

    $args[] = $id;
    $up = $pdo->prepare("UPDATE `$t` SET " . implode(', ', $frag) . " WHERE `$pk` = ? LIMIT 1");
    $up->execute($args);
    opsiq_bridge_out(['success' => true, 'data' => [
        'table' => $t, 'id' => $id, 'changed' => $up->rowCount(),
        'before' => $redact(array_intersect_key($prev, $set)),
    ]]);
}

Surviving schema differences

平台版本相異。 列會移動、 被重新命名或被缺席 。 有一通接通的橋會以一通安裝作一通計算。 反之以入想并調整: 只選擇相關列, 容忍表格前缀, 并試取參考中可能存在的拼寫 。

Schema tolerance, from the Botble bridge
/* 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));
💡
Give your bridge an op=diag that reports STRUCTURE only — which tables resolved, which columns the main table has, and the SHAPE of the newest reference with every digit masked. It is key-gated like everything else, and it turns "the lookup does not find anything" from a support ticket into a ten-second answer. Never let it return real records.

制服出錯和取出陷阱

One shape for everything

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.

有被發現和被無相同樣地被打倒了

在取景地表上, 有不存在的參考和有不符的參查出處需要提供相對的回應。 有不同的答案會把你的通訊信變成一個能確認哪些參考是真實的神谕, 它能被任何病人所取出的自由客戶名單出自外出 。

Never leak the reason to a visitor

橋可以精确地取道:OpsIQ有誰能去接觸到被訪者 就由我決定了OpsIQ有一次被拒絕了.

在接通器面板中可复制的檔案

The operator never opens your repository. They open the connector's panel in OpsIQ and press Copy. That copy comes from settings.json, and it must be the same program as bridge/*.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.

片段- 捆綁活取再生

明确宣告所產生的每個秘密任務。同步工具從已運取的橋上重建面板副本并再恢复 OPSIQ_BRIDGE_KEY = {{setting:api_key}} 。 沒有它, 升級可以忠实地复制無金鑰套件檔案并悄悄地去除操作員可被部署的金鑰占位符。 Connector Builder自動發出此對已產生的橋接套件的捆綁 。

其他占位符被取代了伺服器一邊

就我所想出的事外{webhook_url}, {webhook_path}, {webhook_secret}, {site_key}, {base_url}和{slug}在面板看到片段前就被填了.

webhook_help可能會是一物件或列表

有列表可以提供您相關的片段, 如: Bridge 檔和相隔接力勾通等 。

🚫
Do not maintain the snippet by hand. The bridge file and the panel copy are two copies of one program, and they WILL drift — a bridge was upgraded and its panel copy was not, so anyone who reinstalled and copied from the panel installed the old bridge and silently lost every new capability. Nothing detected it: conformance passed, signatures passed, tests passed.
二份都一樣
# 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.

What the bridge should expose

Shaped operations and a universal data surface, together. The shaped ones return tidy, purpose-built answers to the questions people actually ask; the universal ones cover everything else so the assistant is never stuck.

有外形已讀取

stats, the main object list with filters, one object with its related rows, the catalogue of what is sold, customer search with history. These give the AI a good answer in one call instead of five.

有外形的寫入

二到 三 個狀態改變了相關事由- set status, 取消。 保留已接受的被允許的數值 。

有打字商業

有可賣取的平台出自目的所建的目錄、引文、取出/訂單和付款-證據等操作,再以地圖相映射入去。 commerce_roles.jsontransport: bridge。從不將商業地圖寫入通用紀錄. create/ update surface。

通用的發現

表格( 有行數)并描述 (列、 型態、 主鍵等, 此外可讀和可寫入的旗子相對)。 助理是用這個來學取您所未預想的平台的 。

二. 通用讀取和寫入

查詢、 record. get、 recoord. create、 reccord. update、record: delete。 每個都被驗證了, 如上所顯示等 。

在金鑰門前有身份相關

身份探測被同源的行政部 BROWSER所取取名, 因此無法自訂回頭。 其認證是平台會話本身。 在關鍵口前放出, 使它們能不被所有記錄資料所收取, 也絕不放回相接器身份頁面 。

诊断

op=diag, structure only, masked.

Bridge 商業角色地圖
{
  "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"
    }
  }
}
💡
克能克作用能控制相關序列和權力;通橋操作能保存站台自有的打出有效载荷.WHMCSCore 从來不硬通那些字段。 Core 就必須取用平台的營業服務, 因此要使用股票、稅收、发票、確認信和通訊等全部跑取。
⚠️
record_payment 就只接受由伺服器驗證的提供者提供實驗:精确的指令、商家、數量、ISO貨幣、提供者參考、被新校正的時間戳和一等金鑰。API,然后回復有權的訂單或发票回覆。在重試前,未知的回復結果必須執行。
💡
有只讀取的連接器就不需要被允許的清單了。 如果您的平台只回答過問題, 就把一通沒有寫入操作的橋接運去, 而一整類寫入風險就消失了 。 在有人要時再加入寫入 。

在您運行通訊橋前的檢查清單

有把鑰匙被接通了 就拒絕了一切

測試它。 重新命名常數以取出并確認每個操作回應403.

有時會拒絕出錯的金鑰

hash_equals, 而鍵只從信頭讀取 。

有名可出取

有錯前缀的活桌名仍然能解決

有密碼一欄從不出現在讀取中

有一封被拒絕取名的書 有一項解釋

在權限清單外的表格上寫入被拒絕了

有口信能告訴接線人怎么擴張

面板片段相匹配的橋接檔

php tools/sync_connector_bridge_snippets.php reports it in step.

就連接器再做回接再做接通也不夠了

如果您的套件傳送了通訊信箱檔案, 連接器的接線人也必須把檔案再被調入他們的網根。 在面板正文和您所取的 CchangeGELOG中都這麼說出, 每一個放出相關文件 。

連接器

从橋上出發出平台自有框架

A bridge that only reads can talk SQL. A bridge that CREATES things on the platform (an order, a booking, a paid invoice) must go through the platform's own application layer, and booting that layer headlessly is where every subtle failure in this pattern lives. Everything below was learned the hard way on a live integration, each rule against a real defect that produced no error anywhere.

在數據庫中一行不是命令

Raw INSERTs 有陰影紀錄

列出, 管理者列出它, 它仍然不是一項被平台所相信的紀錄: 沒有本地參考號碼、 模型勾通、 事件、 发票、 客戶郵件、 工作客戶- 介面連接。 客戶引用了平台上從未向找不到的員工發出過的參考。 在平台上建立自己的服務; 如果它只顯示出一個支付后服務, 就建立它所期望的圖, 在它所定义的接合處上交接相 。

永不重用平台的編號

有兩個參考格式的樣本可以讓它看起來容易再生,再生是同樣的影子-寫出一層:平台變更其機制后,您所錄取的每張相簿都出錯而無一警告您。 取用它的產生器( 反射到非靜態的一) 就回讀所儲存的相關數值而不要信任您所發出的東西了 。

平台列保持平台意思

Before you store anything of yours in a platform column, find every reader. A column named like a free slot can be load-bearing: on the reference integration, transaction_id turned out to be the token the customer's emailed "view your booking" link resolves through: an idempotency digest stored there quietly broke every guest link. Keep your bookkeeping in a bridge-owned table: UNIQUE(operation, idempotency_key) is the replay guard, the constraint refuses the concurrent twin, and the recovery lookup reads the same table the create wrote. Create that table BEFORE beginTransaction: MySQL DDL commits an open transaction implicitly.

事件、收聽者和雙通郵件陷阱

在發出事由前先讀取服務的來源

If the platform service you call already dispatches the event, dispatching it yourself sends the customer two confirmation emails and generates two invoices. If nothing is listening, dispatching sends none. Neither failure raises an error. Reflect the method, slice its source lines, and read what it actually does: a name-based guess and even a regex over the body both got this wrong before the source settled it.

得到聽取者 () 隱藏真相; 有Raw 聽取者所說

Laravel 在關閉相關的課程中包裝收聽者, 因此得到收聽者的報告 ()[email protected]。取 RawListers () 取出實際課程的名稱。 永遠不要發出您不能取出收聽者名的活動 。

有"等一等"不是"等下跑"的意思

有 leaty=sync (多產安裝的預設值) 在您所要的通訊信號中被排入列的收聽者會跑取INLINE。 您的后進上下文是它的渲染上下文: 每一個登入或 URL 在您在客戶收件箱中啟動的出發地有缺陷。 在推理出出事前先檢查設定值 (' queue. default'), 在工作/ 中找找failed_jobs 在想起有活人被卷入之前

由相關站台所屬地區再做一回檢查

有一項服務是无条件的, 它被取用一次。 不能漂移的標籤是平台自己的記錄狀態( 在紀錄尚未被取出時才打入) , 而不是您相當能有同樣的「 同意」 標籤,

有頭的靴子不是被網上取出

登入網上啟動的收錄

Template variables, module settings, filter hooks: platform service providers often register them only on a web request. On the reference integration the email handler substitutes only REGISTERED variables: every value was set correctly and the customer's confirmation still rendered with empty name, phone and link, no error anywhere, because registration lives in a runtime registry the headless boot never filled. Find the platform's registration call (for Botble: EmailHandler::addTemplateSettings with the module's email config) and make it in your boot, exactly as the platform's own provider does.

平起倒起URLroot,并不只是路由器

The captured request points at your bridge script, so route(), url() and asset() generate site.com/public/opsiq-bridge.php/checkout/TOKEN: a customer link through a JSON endpoint. forceRootUrl(config('app.url')) fixes the generator; the STORAGE disk has its own root, so the emailed logo stays broken until filesystems.disks.public.url is set too (it resolves lazily, so setting it at boot works, and only when empty or script-relative: an operator's CDN URL is not yours to override).

在你交接前先提交

有通訊所提供服務被取自自相關連接通而無法看到您所開放的收視率。 在承付前被呼叫后, 支付后服務會發現沒有完成支付, 悄悄地留下紀錄而起出事, 因此客戶被電子郵件傳出相關記錄, 由站台認為未收取的相關資料。 提交圖后再打 。

Honesty rules

有影子倒行

如果本地路徑無法通取, 在任何錢移動前以可再試取的錯誤拒絕 。 從不建立參考, 從不原始更新狀態以做成半整合紀錄的外觀 。 有被驗證的付款, 它的本地處理失敗了, 就被調和為 needs_attention: 有錢是真實的 有錢可收 但還沒有被處理出

就說出事實去取出你的口供

“服務已跑出去”和“客戶被告訴了”是不同的事實:參考集運取了一通全相當的電子郵件, 有每個字段都空白而跑旗所說的是真實的。 分道揚镳地回覆它們( 處理已完成, 有通知已試取) , 就保持每通呼叫 platform_notified 它迫使 OpsIQ 在平台未處理而從不取取送出時回倒數確認: 在伺服器上看不到收件箱 。

量度后再寫入

Ship a read-only capabilities probe in the bridge: class existence, method signatures, source slices of the methods you intend to call, raw listeners, queue driver, and (when a question can be answered by calling a harmless function) the live call itself. Five theories about one hollow email died against measurements before the source settled it. A probe round costs a file copy; a wrong write on a live platform costs a customer.

連接器

有其他語言的通訊橋和其他數據庫

The bridge pattern is not a PHP pattern. What OpsIQ calls is an HTTP endpoint, so the file can be Node, Python, Go, Ruby, .NET or Java, and the store behind it can be any SQL engine or MongoDB. What IS PHP-shaped is the packaging pipeline, and that constraint decides how your bridge reaches the operator. Read the delivery section first: it is the part that surprises people.

有接通器需要什麼?

就這一整份合同了 它上沒有什麼能叫出一句話来

交通

有需要就接通了 有需要 就沒有人體 有其他方法

認證

在地上有共同的秘密 X-Opsiq-Bridge-Key request header, compared in constant time. Not a query parameter, not a cookie, not Basic auth.

參數

查詢字串。 op 有地表名, do names the operation, the rest are that operation's arguments.

答复

JSON. {"success":true,"data":{...}}{"success":false,"error":"snake_case_reason"}. Content-Type application/json, and no caching.

狀態代碼

200 on success. 403 unconfigured or wrong key, 404 not found, 405 wrong method, 400 bad argument, 501 unsupported on this schema.

就這樣了

沒有框架,沒有跑取時間,沒有OpsIQ如果能用到這個 就可做一通橋了

有能活到底能活到什么地步?

已簽署的套件包含有固定的檔案延伸名列表, 而清單外的一檔被放出 ZIP. 因此列表所不包含的語言的通訊橋不能被運入套件中- 但是它也不能再被您所忽略了。 由于此 。268月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
前一頁JavaScript——得到充分支持.

有簽名的 ZIP 中檔案船和片段檢驗者所持有的面板副本字節同樣,取出其中任意一個。 漂移檢查可以讀取 Bridge/ 中的每一份文件, 并不只是 PHP 中的文件, 因此有 Stale 面板複本的更新橋會以任一相關語言失敗 。

就用相機取出相關資料:

面板片段是純文字, 并不知道它所持的語言, 因此可以做成任何堆疊。 將整套程式放入 webhook_ help. sippet_ template, 在 sipet_ filename中取出檔案名, 不要在 Bridge/- 符合會拒絕套件而不會把套件放入空心地上去 。 在webhuk_ h帮助中說出操作員复制了這個文件而不是從套件中取取出 。

如果您真的需要套件中的其他語言

Widen PackageSigner::EXTENSIONS deliberately, then re-sign and re-seed. That is a decision about what executable code Nabtech distributes, so make it on purpose — do not discover it from a missing file.

💡
在檔案中取出名稱 webhook_help.snippet_filename 當您所包裝的橋被移動多過一通。 檢查者就這樣知道相片是屬於哪道橋; 沒有了它, 就把一對模糊的相片作成相關的警告, 而片段被忽略了 。
⚠️
漂移檢查的重點是: 有一通橋檔和相片副本是一通程式的兩份相去相離。 重新產生而不是手取自: php tools/sync_connector_bridge_snippets.php --apply后再重新簽署套件。

有六種語言相通的出道口

在地區同樣的四項檢查: 以沒有金鑰而關閉失敗, 有一方法, 有同時相對的金鑰取出信頭再接通。 唯一的真正的陷阱是相對, 它在每种語言中都不同了 。

⚠️
Compare the SHA-256 digests of the two keys rather than the keys themselves. It is correct in every language, and it sidesteps the fact that several constant-time comparators either throw or leak on a length mismatch — Node's timingSafeEqual raises a RangeError when the buffers differ in length, which turns a wrong key into a 500 instead of a 403.
有出站口. 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 — the gate
# Python — Flask
import hashlib, hmac, os
from flask import Flask, request, jsonify

app = Flask(__name__)
BRIDGE_KEY = os.environ.get("OPSIQ_BRIDGE_KEY", "")      # empty = bridge OFF

def same_key(a: str, b: str) -> bool:
    return hmac.compare_digest(
        hashlib.sha256(a.encode()).digest(),
        hashlib.sha256(b.encode()).digest(),
    )

def out(payload, code=200):
    resp = jsonify(payload)
    resp.status_code = code
    resp.headers["Cache-Control"] = "no-store"
    return resp

@app.before_request
def gate():
    if len(BRIDGE_KEY) < 24:
        return out({"success": False, "error": "bridge_not_configured"}, 403)
    if request.method != "GET":
        return out({"success": False, "error": "method_not_allowed"}, 405)
    given = request.headers.get("X-Opsiq-Bridge-Key", "")
    if not given or not same_key(BRIDGE_KEY, given):
        return out({"success": False, "error": "forbidden"}, 403)
Go, Ruby, .NET and Java — the same comparison
// Go
func sameKey(a, b string) bool {
    ha := sha256.Sum256([]byte(a))
    hb := sha256.Sum256([]byte(b))
    return subtle.ConstantTimeCompare(ha[:], hb[:]) == 1
}

func gate(next http.HandlerFunc) http.HandlerFunc {
    return func(w http.ResponseWriter, r *http.Request) {
        w.Header().Set("Content-Type", "application/json; charset=utf-8")
        w.Header().Set("Cache-Control", "no-store")
        key := os.Getenv("OPSIQ_BRIDGE_KEY")
        if len(key) < 24 { out(w, 403, "bridge_not_configured"); return }
        if r.Method != http.MethodGet { out(w, 405, "method_not_allowed"); return }
        given := r.Header.Get("X-Opsiq-Bridge-Key")
        if given == "" || !sameKey(key, given) { out(w, 403, "forbidden"); return }
        next(w, r)
    }
}

// Ruby
def same_key?(a, b)
  OpenSSL.secure_compare(Digest::SHA256.digest(a.to_s), Digest::SHA256.digest(b.to_s))
end

// C# / .NET
static bool SameKey(string a, string b) =>
    CryptographicOperations.FixedTimeEquals(
        SHA256.HashData(Encoding.UTF8.GetBytes(a)),
        SHA256.HashData(Encoding.UTF8.GetBytes(b)));

// Java
static boolean sameKey(String a, String b) throws Exception {
    MessageDigest d = MessageDigest.getInstance("SHA-256");
    return MessageDigest.isEqual(d.digest(a.getBytes(UTF_8)), d.digest(b.getBytes(UTF_8)));
}

在每個數據庫引擎上驗證身份

安全屬性不變: 在被插入前需要檢查所提供呼叫器的表格或列名, 而每一個值都必須是被綁定的參數。 只有內觀查詢、引出字元和呼號條款相去甚遠 。

MySQL和MariaDB

表: SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = ?。列:同 information_schema.COLUMNSAND TABLE_NAME = ?有回扣的引文,可以把內部回扣相乘。 LIMIT n OFFSET m.

PostgreSQL

有同樣相關資訊_ schema 檢視, 小寫名 , WHERE table_schema = $1 (通常) public). Quote with double quotes, doubling any double quote inside. Page with LIMIT n OFFSET m。可注意折叠規則:未引出的身份標示被折到小寫上, 因此在您解析取名后要對大小寫不敏感地相對 。

SQL伺服器

有同樣的資訊- SCHEMA 檢視相關。 有正括弧的引文, 有雙倍的收縮括弧。 Page需要 Order 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(?) — use that table-valued form, because the bare PRAGMA table_info(x) 語言無法取取被綁定的參數并邀請字串插入。 完全就是您要關閉的洞口。 有雙引號的引文引出。 page with LIMIT n OFFSET m.

有甲骨文

表: SELECT TABLE_NAME FROM ALL_TABLES WHERE OWNER = :owner; 列出自 ALL_TAB_COLUMNS有雙引號的引文,并想出一副未被引用的标识符折叠到UPPER克格上,而正相反:PostgreSQL頁面中 OFFSET :o ROWS FETCH NEXT :n ROWS ONLY 在12克上等后再去取取回.

MongoDB

No SQL, so no identifier interpolation and no bound parameters — a different discipline for the same goal. See below.

每一個引擎的回溯查詢
-- MySQL / MariaDB
SELECT TABLE_NAME  FROM information_schema.TABLES  WHERE TABLE_SCHEMA = ?;
SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ?;

-- PostgreSQL
SELECT table_name  FROM information_schema.tables  WHERE table_schema = $1;
SELECT column_name FROM information_schema.columns WHERE table_schema = $1 AND table_name = $2;

-- SQL Server
SELECT TABLE_NAME  FROM INFORMATION_SCHEMA.TABLES  WHERE TABLE_SCHEMA = @schema;
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = @schema AND TABLE_NAME = @table;

-- SQLite
SELECT name FROM sqlite_master WHERE type = 'table' AND name NOT LIKE 'sqlite_%';
SELECT name FROM pragma_table_info(?);

-- Oracle
SELECT TABLE_NAME  FROM ALL_TABLES      WHERE OWNER = :owner;
SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS WHERE OWNER = :owner AND TABLE_NAME = :tbl;
💡
解析出,再用回應名。 在檢查后再也不會把取用者拼寫的字傳入查詢中去- 在您所讀取的名單上找取出真名并插入到這個名單中去。 它不花花一分錢而能接通"這個名號相配"和"我將要跑取的取用"相關名的空間 。

MongoDB有同樣的規則,沒有同樣SQL

沒有可被注入的查詢字串, 因此人們會想出沒有什麼可以保護了。 有: 有: 過程器文件。 passing caller- suproductedJSON就直接接通了 find() 有叫喊出站的就出站了 {"$ne": null}{"$gt": ""} 在您想取的數值中, 并悄悄地選擇每個文件。 自己建立過程器 。

MongoDB — collection allow-list, scalar-forced filter, projection as redaction
// 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();
收藏名出自列表 Collections

這是您所要提供的信息。 請解答取用者所拼出的名字 。

強取每個過程數值到平面

串行 () 或數字 () 是防操作員被注射的全防備。 您所期望的數值是 等同被引出取入的 NoSQL 。

有排出是被裁剪的規則

在投影中排除了密形字段, 因此他們從不出出伺服器, 也不要從結果中刪除 。

刪除以 _id 为單一文件

刪除已解析的(_id) 1。 永遠不要刪除 Many, 也不要有過錯的取用者所影響到的滤波器 。

有權寫入所要列出的字

有同的推理同SQL: 取出可以被所觸取的相片名, 有解釋地拒絕了其他相片。

其他語言中的身份终点

The identity probe is the other half of a bridge, and it is HTTP too. The signing block is identical in every language: base64url the payload, HMAC-SHA256 that string, join with a dot.

不要從零開始手寫。 設定、 支援 Portal 为入門口提供每種語言的可讀路由 (一回兩分) 。 遠端站點、 您站址、 代碼、 C. C. 認可登入的客戶自動地携带聊天版本 (一小時的指標加上更新的處理器)。 从相當于您堆疊的花樣取取下簽名符號 。
二再用后要取出什麼去改變?

有地更嚴格:它能取出相關的活物和相關活物;120有一秒就出行了URL有一通橋或相接的相關符號都取出同樣的東西并使用更長的通訊口號 从一分鐘到一小時

有同樣的活

site_key, iat, exp和被认证的頂級: truth, 此外有管理員或客戶主題有代碼和用戶名或電子郵件。 相關的聲明同樣, 有同樣的簽名同一個秘密 。

二相符號元件都檢查

A three-part JWT signed HS256 works, and so does the two-part base64url payload plus hex HMAC that the PHP reference emits. Use whichever your language's libraries make natural — a JWT library is usually the shorter path outside PHP.

在瀏覽器上再不要想了

有同樣的語言相通 有同時簽署客戶端 就意味著把網站秘密傳到每個訪客上去

有選擇 有選擇

该平台是 PHP

在 PHP 有通訊器被放入了外接包中 它被漂移檢查了 它能啟動平台自有的相機框架去讀取身份探測器的活接頭 。 沒有其他能給出您全部三個相機的 。

有地道站出地道

A .js bridge ships, signs and is drift-checked exactly like a PHP one. Nothing is given up.

平台有Python、Ruby、Go、. NET或Java等

在面板正文中提供片段并說出; 不要把檔案放入橋上/ , 而相容性會拒絕套件。 連接器是完全正常的: 動作、 上下文提供人、 身份和外觀都一樣, 因為都無人關心HTTP 呼叫的回應 。

您不能在平台主機上執行行程

因此, 橋圖案不是正確的工具。 有橋可以從主機內接通平台。 如果您只能從外出接通, 就正在寫作普通的API有接通相對地表能被暴露出出什么地表

⚠️
One more constraint worth planning around: an identity probe has to read the platform's login session, which usually means running inside the platform's own process or at least on its host with access to its session store. A bridge written in a different language from the platform can serve data comfortably and may still struggle to answer op=admin_identity. If that is your case, ship the data bridge in your language and the identity probe in the platform's.
連接器

二分之一:動作和上下文

有接通器所缺少的就是這個「活了而無用」。 有動作讓 AI DO 做事。 有內容能讓它知道事。有線人需要兩樣相通, 有管事人所問的問題多由上下文回答, 有完美行為而無內容提供商能誠實地報告自己看不到任何東西。

二分之一

行動-AI如何做事情

在行動中被宣佈出道.json或被寄存器 Actions () 傳回。 该模型取出一個, 填入它的參數,并OpsIQ執行。 動作是用動詞: 取消此訂票、 開啟票面、 改變此狀態 。

二. 背景部分:AI如何知道事由

在模型跑出前由上下文提供者所組成。 “本月有多少份訂單 ” “誰是我最新的客戶 ” ( “我們賣出什麼去 ” ) 都由上下下文來查詢而解析, 并一概不碰一項動作 。

⚠️
Symptom of a missing provider: the assistant answers "No enabled connector supplied this context section" while the connector is installed, enabled and passing its connection test. Nothing is logged, nothing errors. That message means no provider claimed the section.

通用的分區字串

OpsIQ您的工作是決定每個人對您站台的意義并接通它。 酒店訂房就是酒店的訂單; 有一間房間就是酒店所出賣的東西。 地圖上不要有創作 。

命令/ 待取命令(_O)

不管您平台上有什麼事:訂單、訂票、訂位、工作、運出等。 等待的清單被同樣地分解到未完成的清單中去 。

有名的客戶

有客人名單了

products

有出賣出產品、房間、計劃和服務等相關事務。

有收費

有收入 有錢形的總和 有州分數

票房、服務、域名、伺服器、活性

在你們有真數的站台的時候,你們用它做成它。你們不要強迫地做一幅圖;那被勾銷的區域比作錯的區分好。

有其他能用到的就去取出

宣佈您自己。 有提供商可以宣告區域 (: ['percens','gents']] 有這些被合并到通用的搜尋權清單中去, 因此平台特有搜尋可以使用而沒有核心變更 。

有天出事就出事了

有上下文提供商 MUSST 執行介面。 登記器類型檢查了它, 因此只取出一等的 LookS 右邊被跳過- 在任何地方都沒有出錯 。

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 '';
    }
}
从接線器上登入

執行上下文ConnectorInterface并從上下文Providers ()回傳您的提供商。 連接器類別也可能直接執行上背景ProvideInterfauth并被自己登入 。

返回正文, 不JSON

build() returns a text block that is concatenated into the prompt. Write it for a reader: a heading, then one line per row.

有回"出"取回"倒"出

有出賣被登入并被跳出 但回歸"是合同"

建構器無法為您寫入分區 ()

已產生的上下文 Provider. php 船區 (: sorm { return [;]} 而向导沒有字段。 用手填入它- 并想出由向导重寫檔案的回覆。 第一個是複製出您編輯的相關字段 。

⚠️
State the true TOTAL, not the number of rows you sent. A page is not a total. A provider that lists twenty rows without saying so gets the assistant confidently answering "you have 20 bookings" when the platform holds 669. One cheap COUNT and one explicit line — "TOTAL on file: 669 (this list shows the newest 20 only)" — is the whole fix, and a confidently wrong count is worse than no count.
不能被錯計的區塊
$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);

Name your actions so OpsIQ can tell reads from writes

OpsIQ在 OWRDS 的動作中分類出一項動作, 它被刻意地保守: 它所不能認取的都被當作是寫作并需要被授權相關的名片。 取得動詞正中而讀取正中 。

1
有毀滅性或需要確認的贏取

有時會被取出相當多的相關資料,

2
有字能寫出身份就成字了

新增、 建立、 開啟、 更新、 編輯、 變更、 刪除、 移除、 毀滅、 取消、 退款、 暫停、 终止、 啟動、 批准、 拒絕、 寄出、 標記、 重置、 抓取、 空白、 關閉、 重新開放、 指定、 撤销、 授權、 設定、 切換、 被啟用、 發出、相關、 提供、 延續、 升級、 合并、 移動、相接、相通、 推動、入入口、 跑出、起步、 停止、再起步等多數項目。

3
有能讀取的一句話 就能被讀取了

取出、清單、搜尋、找取、收取、數目、取取、描述、讀取、匯出、預覽、測試、平移、狀態、概述、細節、相關、歷史、檢查、通查、數據、指數、概觀、收入、分類、報告、分析、平衡、用法、定额、快照、洞察、取材、草案、分別、分級、建議等。

4
HTTP 方法決定了

有相關內容被取出

5
就不是寫了

有被認出 就意味著需要批准 有故意的缺省

⚠️
在讀取單詞前已檢查了字句, 因此像 get_ and_ sync_ orders等混合名稱被分類为 WRITE。 請選擇一動詞, 第一個放入它并保持其清潔: list_ orders, get_ Customer, search-booking, set_ord_ status.

只有平台有本地(_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.

The Builder decides it from your data-access answer

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.

有手寫的相片仍要取回正義

如果你正在自己寫出出名單 就說出其中一項 native_api 或 platform_bridge2. 遵同相待 platform_bridge 有接通相接器被想通了 而建築者拒絕了所謂的分類 platform_bridge 在一 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

What this platform IS, how its data is shaped, what its objects are called, and the quirks that would otherwise make the assistant guess. Write it for a competent colleague who has never seen the platform.

ai_api_reference.md

The callable surface. For a bridge connector this is your op and do vocabulary with their parameters, not a REST endpoint table.

概算

Roughly 6,000 characters kept per connector, and about 24,000 characters for the whole block across every enabled connector. Over the per-connector cap your file is truncated; be concise before the truncator is.

有精確的分量

這些檔案是助理使用您通用的表格工具而從錯誤的區段接取的相差, 因為沒有人告訴過有這些工具存在.

💡
二相檔案都必須被收入 INSTALLED 套件中, 并不只是您所建立的来源地圖中。 它只是普通的套件檔, 因此被簽署所覆盖并被運入到 ZIP 中了- 這也意味著簽署出章后再編輯一相文件 。 Re- sign.
連接器

通訊接通器的身份:管理員、客戶和出入口

有一份簽署合同能提供出三面相關的相關人員的工作是把"被登入站台的人"變成已簽署的代碼.OpsIQ以可查取的目錄入出OpsIQ有外形。 連接器從來不驗證任何人, 平台有, 有簽名也包含著這個說法 。

The three surfaces, one signer

有能活取出相關資訊的相關事務,

管理主題。 元件在平台的管理面板中載入, 而每個員工都相配自有OpsIQ代理員 在管理元件頁面上走通了

Customer — a signed-in customer, in client chat

A customer subject. This is what lets a logged-in customer get their WHOLE account instead of an anonymous lookup: every order, full detail, and any self-service action you allow.

入站-相接相通相接口

The same claims plus jti and single_use, with a 120-second life, because the token travels in a URL and must be spendable once. Do not hand-roll this one: Settings, Support Portal carries a ready snippet per language, and the platform mints it for you when the account area runs on this server.

有效载荷合同

有部分例子可能指使出任何可選的。

site_key

上等級。 必須等同所求的站點金鑰, 或是拒絕取出指標 。

iat并解出

最高等級, unix 秒。 exp 在未來和iat出道后出道。 有一分多於一分的指標被拒絕了 。 要保持短命相接- 从分到分相接 。

已驗證: 是真的

在上等地上 有你平台所說的活人被登入了

平台

上等級, 有一顆短彈片取出來取名。 它能讓接通器的身份提供商從另一平台取出自自己所發出的信號 。

管理或客戶

An object naming the subject. It must carry a non-empty id, and a username or an email — the per-admin access gate matches on those. Include both when you have both.

Minting, verbatim 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有 二 個 簽名 的 檢驗 人 、 他 們 就 有 一 樣 . 有 這事 就 有 了 一 個 下午 . 因為 他 們所 有 的 有 一 有 一 二 有 一 一 有 二 有 二 二 有同 有 一相

管理元件有自有的校验器

opsiq(已嵌入/已嵌出)admin_ajax.php 有 一 個地區檢驗器, 在任一位置上接受被認可的旗子。 相對清單、 歷史和未讀取都通通了, 因此被驗證是好的 。

有同樣的檢驗員更嚴格了

opsiq/ 包括/ 客戶_ 身份相關站_ token_ 驗證. php 坐落在聊天流和核心 AJAX后方API在歷史上 它需要TOP等級的旗子

有病症

歷史和對話有活干。 每一個聊天都回應 Admin 登入需要。 它的讀取完全像會話錯誤而不是: 符號缺少了上等旗子 。

目前的核能做出什么来?

它現在接受上等或主題所內的旗子, 因此合同是相當相通的。 已老的核心只讀取上等。 釋放相關外形和您的套件可以做到每個放行地上 。

已檢查了此機。 在您包中任何薄荷身份代碼被靜態地掃描到合同相對的檔案, 而平台上的有效載荷會拒絕與所取取文件及行相符合。 自己執行: php serversy/ viration_identity_ contracts. php 。

在客戶端聊天中簽入的客戶端

有兩件事要是真的 Core必須去查證出客戶的名單 而接通器也得呈出

1
有您所謂的通訊或末端點能提供客戶代碼

就跟管理者同一個簽名, 有客戶主題相通。 从平台自有的會議上讀取客戶。 如果您所簽名的站台是位與管理者相通的警衛, 就讀取您所想的警備并永不回覆到主題上去- 這就是客戶被接取管理者指號的方式 。

2
有核心去核實并出發

在有效的代碼上, 核心印出已驗證的被選取的對話題入会話。 您提供商讀取了已驗出的身份; 它從未驗證 。

3
您的身份提供者提供它

surse Customer () 傳回:OpsIQ它必須實行OpsIQ\ Platform\ Identity Provider Interface, 或者登記器默默地跳過它- 和上下文提供商同一個陷阱 。

4
您的客戶檢查動作接受一個客戶_ id

有OpsIQ在行刑前被鎖入已驗證的身份。 该模型無法提供它 。

身份 Provider.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;
    }
}

有客戶檢查的動作: 有兩個鎖, 有需要

The model must never choose whose data it reads. OpsIQ enforces that on its side, and your platform must enforce it on the other side too. One lock is a bug away from a leak; two locks are a contract.

鎖定1 — OpsIQ覆寫身份參數

在接觸相關客戶前OpsIQ以 VERIFIED 訪客身份取代所有身份形狀參數: 客戶端_id, 客戶點- id, 用戶端 -- -- id; 帳號 -- -- 有被驗證的數字代碼; 有被認證的客戶端- 身份代碼、 有被證實的客戶取字串; 有通訊、 有通話或有通訊等功能的用戶取被驗取的郵件。 有通關模式被丟棄了 。

鎖定2——您所建立的站台重視每個查詢

就取出你得到的ID并加入到地表上所寫的每一字和每一字的條文中去。 永遠不要自信所要的參考。 有簽名的客戶要問起別人的訂單, 就必須是空的而不受禁止地再回去 。

取出您的參數以如此锁定1有找得到的

Call it customer_id, not cust or ref. A parameter OpsIQ does not recognise is a parameter it cannot lock.

⚠️
Give the signed-in customer surface its OWN operations, separate from the admin ones, even when the SQL looks similar. Two surfaces with different rules stay honest; one surface with a flag becomes a leak the day someone edits the wrong branch.

零頁接線: 通訊器所宣佈的探測器

You can spare the operator all page wiring. Add an admin_identity_probe_url setting (https only) pointing at your identity endpoint. The plain admin-widget loader from Remote Sites, Codes then works with no page attributes at all: the widget discovers the endpoint through the connector, calls it with the site key and widget token, and authenticates each admin individually. A page can still override with a data-identity-endpoint attribute or window.OpsIQAdminIdentityEndpoint.

設定值。json — 探測器設定
{
  "key": "admin_identity_probe_url",
  "label": "Admin identity probe URL",
  "type": "text",
  "placeholder": "https://your-site.com/opsiq-yourplatform-bridge.php?op=admin_identity",
  "help": "Set this to your bridge admin_identity endpoint and the plain admin-widget loader works with NO page wiring: the widget probes this URL by itself, the bridge answers with the signed identity of the CURRENTLY logged-in admin, and every admin is matched to their own OpsIQ agent. Leave empty to keep the admin embed off."
}
有被取出相關的瀏覽器所取出

有同樣出自的, 因此它不能載入自訂的頭目。 它的認證是平台會話。 在您所登入的通訊口上放入 AHEAD , 取出相關資料并回回任何已登入站口的訪客 。

它能回應固定的外形

{"success":true,"authenticated":true,"admin":{...},"identity_token":"..."} — and {"success":false,"authenticated":false,"error":"..."} when nobody is signed in.

在頁面來源中沒有長生不老的秘密

Only the signed, expiring token.

就拉拉維爾而言 有完完全全地點的實作WordPress, WHMCS, symfony and plain PHP, 此外有來之不易的 Laravel 特點和排除出問題的指令等, 在管理元件頁面上。 它們同樣是客戶主題的代碼: 變更您所讀取的警衛和您所簽署的按鍵 。

連接器

出: 編輯資料夾不是要出品

失去一下午最常見的方法是用通訊網接器去編輯接通器- controlers/, 重新安裝它并找回任何變更。 安裝不讀取此資料夾。 他們取出市集目錄上簽名的 ZIP。 出版是您所更改的排序 。

為什麼編輯一無所為?

marketplace_connectors/<slug>/ is the SOURCE

就在那里出事了 就從那里弄出一分相機去取出一塊

有被簽署的ZIP目錄

有一款下載的 ZIP 檢查簽章并取出它。 在您重建 ZIP前, 有一套被下載到的都是舊相機 。

Connector 建構器在別處出版

It writes into /connectors/<slug>/ on this install. That is a local connector, not a marketplace release. The two paths do not overlap.

二. 出行序列

1
在 二 個檔案中跳出版本

settings.json 和 connector_contract.json。相容相對, 如果彈片、 版本或相關能力有相左, 就失敗了。 新增一項 CHANGELOG.md 在您去取入時- 它需要檔案 。

2
重同步橋接片段

php tools/sync_connector_bridge_snippets.php --apply — only relevant if your package ships bridge/*.php, and mandatory if it does. Skipping it means the panel hands operators the previous bridge.

3
重新簽署所有套件

php 工具/ resign_all_connectioners. php- 有簽名可以被檔案散列, 因此任何編輯都將它作廢。 在每個檔案已成定局后再做最後的簽名 。

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 set second sequence. sweeder 在 SaaS 靴子和工具/ sign_ connector.php 靴上跑出一無所有, 因此在兩處都不存在讀取器- 沒有環境變數沒有金鑰可提供, 您得到" 沒有簽名金鑰" 或每一個被報稱為簽名的套件已失敗。 只有工具/ resign- all_ connesteders.phpsOpsIQ就能自己找出鑰匙了.

有甚么船出行去.

有簽名封面的檔案

ZIP由簽名者自建的檔案清單所建, 因此您包中坐落的失誤檔案不是被運取出。 這是故意的: 有未簽名的檔案被用來接觸到客戶 。

有封面的延伸

php, json, js, css, md, txt, html, sh, svg, png, jpg, jpeg, gif, webp, ico, yml, yaml — recursively, including bridge/ and tests/. signature.json itself is excluded from the hashes and then added to the ZIP so installs can verify.

有其他的被報告為未收件

它所留下的每個檔案都取出被播種人名。 請讀取此清單。 您想把檔案運入到那裡就意味著一個錯誤的延伸或錯誤的位置, 而不是一聲不響地成功 。

編輯被封面的檔案打破封印

有一輛馬克下地克出發取回相關資料 重新簽署了那套

在可分解的套件中需要的檔案

connector.php

必須回傳 Connection 介面的一例 。

settings.json

通訊: swit, name, 版本, express_version,相容性, 能力, 連接器_ contract_verersion, 設定值 。

connector_contract.json

它的彈藥、版本和相關能力相當于設定值json.

(已修改)

三者都被檢查出存在和最小大小。 DIVELOPER. md需要真正的內容而不需要分根 。

有相關檔案

它所期望的檔案的每個能力名稱相關- Context Provider. php for context, Cident Provider. php for Identity, CuterLookup Provinder. php 为取名相關者等- 除非接通器能實行內接能力 。

有相當出名的證人

Conformance 为 三個Markdown 檔案掃描了密形值和私密金鑰, 在被擊中失敗了 。

Check it before you ship it

The full conformance suite is the same one an install runs. It checks the manifest against the canonical contract, that runtime and manifest capabilities agree, that every declared capability has its file and its methods, the identity-token contract in every minting file, the bridge-snippet match, guest-lookup allowlist hygiene, action uniqueness and confirmation safety, and the package signature.

在出發前跑出四分
# conformance for every marketplace package
php tools/test_marketplace_connector_conformance.php

# the identity-token contract, statically, with file:line on failure
php tools/verify_identity_contracts.php

# the connector unit suite
php vendor/bin/phpunit tests/phpunit/Unit/Connectors

# the release gate
php tools/release_gate_connectors.php
💡
有一次失敗是想所想而不是問題: 在您正在編輯時, 套件簽章檢查會有警告。 它能清除您重新簽名的瞬間。 其他的失敗都是真的 。
連接器

接通器套件和生命周期參考

有相關相關的通訊商相接相關 OpsIQ 有能發現、設定、驗證、啟用、執行、測試、簽署和分佈等功能。

二. 開發者參考
接通器套件有需要的接通器實作和表達相關相關的相關套件, 有可選的動作、食譜、知識、資產和簽署中繼資料等。接通器套件developerMANIFESTv1(活生生地)已管理工作相關範圍LIVE WORKSPACE VIEWconnector.php接通器類別/ 工廠需要settings.json相關相關功能和設定方案需要actions.json動作定義可選的signature.json套件簽名中繼資料出出1DECLARE二. 特征和能 力2IMPLEMENT生命周期和提供商3(估价)測試, 簽名, 套件
有需要的接通器實作和表達相關相關的相關套件, 有可選的動作、食譜、知識、資產和簽署中繼資料等。

最小套件

connectors/example_platform/
├── connector.php          # connector implementation / entry point
├── settings.json          # manifest + configuration schema
├── actions.json           # optional action catalogue
├── README.md              # setup, scopes, webhooks and limits
├── workflow_recipes.json  # optional reusable recipes
├── knowledge.json         # optional provider knowledge
├── profile.json           # optional connector profile
├── src/                   # optional client/provider classes
├── assets/                # optional admin assets
└── signature.json         # signed release metadata

合同

settings.json 使用表單版本 1。驗證者需要 swit, 名稱, 版本, 顯式的相容性、 相容相容度、 描述和能取用相容性的相容性和相容等功能 。 opsiq_minopsiq_max。放行狀態是其中之一。 有出息, β, 預覽模板; 能力成熟度使用 L1- L6. 相關相關套件可以被警告等同常化, 但是需要用新的相關接合件而不需要警告。

Core 接通器相接器

  • 身份和設置: slug(), name(), description(), capabilities(), settingsSchema(), testConnection().
  • 生命周期: onEnable()onDisable()已關閉; 數據清除是相當相當的專心操作。
  • 入境/同步: handleWebhook(), poll(), backfill()。入站可以處理增量活性;回填入歷史并需要安全地重複。
  • 相助: pushReply() 有平台接受回覆.
  • 動作: registerActions() 有可執行的動作相接相接
  • 安全: securityCapabilities(), syncBlockedIp(), removeBlockedIp(), testSecuritySync().

抽象基底也提供可選擇的被區分回填、客戶上市、電子帳號發現/創作、訂户、管理員/接觸者測試、收費/通訊/身份提供商、取回回應、重試HTTP通訊等功能; JSON 有通路 有模糊的分數 有相關名人 有相通相通取道

能力和認證

有支援的能力名稱有動作、觸發器、上下文、身份、銷售、收費、入內取出、出內取入、同步取出等。同步取用者相接相接、安全取出相接口相接的相接點、安全出入口相接地相接取取取自相接通相接站口相通相通的相通取取出取取回相接去相通口相相接而取取去相接之相通互通相關相接接相通同相通行相接可相通接相連相接能相通而取回取取相接同相接者相通所取取入相接被取取而取出同相相通 API 有鑰匙 有帶槍手 有基本相接 有HMAC相接相接能接能取出相接通相接接相通相通的相接可取相接同相接 OAuth 2有客戶證 OAuth 2授權代碼和自訂認證樣本 。

通訊錄使用周期

  1. 發現者載入了相機并驗證了相机的通訊
  2. 配置被儲存到每工作區; 秘密被加密 。
  3. 連接試驗能證明憑證而無法開啟連接器 。
  4. 開啟呼叫 onEnable(),同步動作定義并可以開始初始回填.
  5. 有相關的相關相關內容。
  6. 關閉呼叫 onDisable() 并停止活性而未刪除已匯入的資料。
  7. 有分別的清除行動

正确性规则

  • 在每個讀取、寫入、快取、去除相關鍵和網頁取取取中使用工作空間/站點金鑰 。
  • 在平台提供外接的地區收取和寫入一模一樣的動作。 在任何地區都錄取出外接ID/ event ID 。
  • 对于相距相距的系統,用取取取自: API;從來不假想他們的數據庫表格已存在 OpsIQ 有接通了.
  • 有條理地回歸相關的相關錯誤。 永遠不要揭露秘密、生產提供商的痕跡或其他工作區的存在相關事由 。
  • 就只宣佈套件實際所執行的功能。 An actions.json 在接通器被安裝、被啟用、被配置并通訊有效前, Catabase 不使動作被使用 。

測試和放出

執行 PHP 林特、 顯出驗證、 接通測試、 動作計算等測試相關的活性相關同樣化相關相關用戶相關分類相關取回相關接相關收件相關再接相接相干相關入通取取回互通相關之相關通取回。 市場相關套件需要被簽署并被核對, 有設定/ permissions/ webhook 文件相關而能被顯示出相關地區的通取相關信號相關口相關和相關可通相接的相關訊相關站相關所相關行相關應相關能提供相關文件相關

連接器

接通器食譜

有相接相接器相接的相接取食譜

食道
接通程式A Shopify 以檢查清單來設定食譜: 建立應用程式、授權範圍、貼上符號并做測試、提供網頁取景、放出測試命令等。接通程式Shopify有道具? Shopify 有相關的網頁在自訂應用程式中建立自訂程式 Shopify 管理者授權範圍: read_orders, read-Customers...貼上儲存域名+指標, 按下測試開啟 Webhook 同步 (自動訂單)出取測試命令→在出售中30s1STEP BY STEP复制相印的食譜2REAL PLATFORMSShopify · WHMCS · Stripe· 英镑3(活活地)測試順序顯示于 30s
每份食譜都是由上而下地所遵循的名單 Shopify 有即時取出網上名單 有測試取出

食道: Shopify 有即時的網上呼號

假想:
目標:接通 Shopify 有自動命令同步并 GDPR 遵守。
所取之道:

1. Create a custom app in Shopify admin (Settings > Apps > Develop apps). 2. Grant scopes: read_orders, read_customers, read_products, write_customers. 3. Copy the Admin API access token. 4. In OpsIQ Connectors > Shopify, enter store domain and token. 5. Click Test Connection. 6. Enable Webhook sync, OpsIQ registers order/customer webhooks automatically. 7. GDPR webhooks register automatically (data_request, customers/redact, shop/redact). 8. Verify: place a test order, check it appears in OpsIQ Sales within 30 seconds.

食道: WHMCS 二. 融合

假想:
目標:接通 WHMCS 因此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付款

假想:
目標:音軌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 企業相關設定

假想:
有相關的相關事由:
所取之道:

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.

連接器

延伸 CRM 站點資訊( S)

OpsIQ 子系統可被開啟以延伸。 連接器可以插入到 CRM 或站點資訊中而無任何變更 。OpsIQ Core,取自平台能力登記 (\)OpsIQ\平面相通性 Registry 。 宣告能用, 實行其小方法集, 傳送接通器,OpsIQ 有發現并通通到UI和客戶 360 有時有時 有安裝提示

延伸 CRM & SI
平台能力在相關能力資訊上被Capability Registry所發現的接通器( CRM, Site Intelligence, Analytics) 。平台能力工作區域您的連接器宣告能力CMM (CRM)· 收費 · 有收費站點資訊本地列表(_L)... squad_ data分析網頁分析 * 報告和吞噬CapabilityRegistry發現它會接通UI+時間線( T)1DECLARE有能力,不是核心編輯2PLUG INCRM SI 分析巴士3AUTO-WIRED使用者信息、時間、提示
有接通器能宣告出能力( 名單、 富集相、 分級數據、 分析相等)和 OpsIQ 有自動通通到CRM和地點情報站,沒有核心變更.

宣 明 能力

二. 宣示(设置)。json)

新增a <domain>_capabilities 數目, 最好用於無碼/ 市場接通器。 域: crm, site_intelligence.

在代碼 (接通器. php)

實作 crmCapabilities() / siCapabilities() 返回同樣的描述符。

宣告 CRM 行事曆提供商( sets.json)

假想:
目標: 在 CRM 排程會議面板上出出一個行事曆連接器 。
所取之道:

"crm_capabilities": [ { "type": "calendar", "label": "Calendar (Acme)", "actions": ["createEvent","listEvents","freeBusy"], "requires_auth": true } ]

宣佈站點情報提供商 (設定等).json)

假想:
有地區上下相關相關資料被提供至地點情報所。
所取之道:

"site_intelligence_capabilities": [ { "type": "local_listing", "actions": ["listLocations","listReviews","getInsights"], "requires_auth": true } ]

有能力的巴士和其方法表面

Crm / 行事曆

createEvent($settings,$params) →{已成功, event_id.html_link, meet_lin克}; listEvents; freeBusy被所取由?OpsIQ\CRM Calendar Bridge. (出自"克林多克")

Crm/浓缩

enrich($settings,$params) → {success,traits}. Driven by \OpsIQ\CRM\EnrichmentBridge (also runs automatically on company create when a provider is connected).

零下/ 簽名

sendForSignature($settings,$params) →{已成功,信封已出: sign_url}。由\驱动 ?OpsIQ\CRM接通了克裡克.

站点_ 通訊/ 本地列表

listLocations, listReviews, getInsights二. 船舶通过Google Business Profile有接通器了

站点_ 智慧/ 排名_ data

keywordRanks($settings,$params) → {success,ranks}. Driven by \OpsIQ\SiteIntelligence\RankDataBridge. Ships: SerpApi connector.

分析/ 網頁分析

report($settings,$params) (同步/出品)+ ingest($settings,$events) (import). Driven by \OpsIQ\Analytics\WebAnalyticsBridge. Ships: Google Analytics (GA4) connector. Data API for reports, Measurement Protocol for import. Analytics is open for connectors like CRM + Site Intelligence (domain analytics / analytics_capabilities).

支付/提供者

listPayments, customerPayments, createPaymentLink被所取由?OpsIQ\ Payments\ Pyments Bridge. 在 CRM 時間線上顯示客戶的支付 + 在交易中提供支付連接 。 船舶:Stripe支付接通器。域名 payments / payments_capabilities.

信箱/ 郵件同步(_S)

listMessages + sendMessage被所取由?OpsIQ\ mailbox\ Mailbox Bridge。 在客戶名下有客戶的郵件 360 有時, 有時會再出一筆相關郵件。 Ships: Gmail + Outlook/ Microsoft 365 相接器。 域 mailbox / mailbox_capabilities.

共享 OAuth app + 1 重定向

所有Google連接器都透過 &\ 分享一項應用程式 OpsIQ\OAuth 已分取 GoogleApp. set google_oauth_client_id/_secret 一并使用 Calendar, Analytics, Business Profile + Gmail 所有工作 (每通通訊器"(可選取的)"字段是被覆寫的)。 此外同用 One direct URI, <site>/connectors.php?oauth=callback (沒有接通器的彈出),因為Google出自"不"API 在應用程式中加入重定向 URI; OpsIQ 从已簽署的連接器取回 OAuth state 單一登入 URI 有一次和每一個 Google 連接器( 已出局 + 未來) 在沒有再建立控制台的情况下被授權。 return SharedGoogleApp::resolve(...)有被取出地道: redirect_uri 从您取出 oauthParams(); 从不用硬碼去重定向出一分路口。 微軟接通器也用同樣的通訊方式通訊到% :OpsIQ\OAuth 共享微軟App (\ t)microsoft_oauth_*).

匯入按鍵是能動性相關的

匯入 (歷史倒灌)和 匯入客戶 鍵只顯示能實行它們并被反射到的連接器, 因此沒有要宣告的旗子。 覆蓋 backfill()backfillChunk() 以取得匯入按鍵; 覆寫 listCustomers() (回回 {email, first_name,...} 有頁) 以取取匯入的客戶。 繼承了 AbstractConnector 沒有取出按鈕而保持隱藏, 因此 UI 從來沒有提供接通器不能被取出 。

穿行公交的AI

CRM代理商提出并訂下交易信號通訊會議 (\)OpsIQ相會提案人 (CRM)→Calenda Bridge),并自動地發行了新的帳戶, “AI運行 CRM 圈子”,

有客人聊天取票( C)fetchTicket())

二等, 不有核心變更

有訪客提到客戶聊天的出站號碼 ("T-000123?"), OpsIQ 它分出兩層分 有等分1 讀取所分享的 OpsIQ 有售票所,有接通器 inbound_ticket 有相關通訊碼的接通器能用到出站口 有等分2 有活的倒下取而代之的是從未被照出過的老票:核心叫作"OPTIONAL" fetchTicket() 在執行它的每個已啟用接線器上。是 duck-typed (被發現于: method_exists()就想去取出相當多的活 contextProviders()/audienceCatalog()因此所簽署的 ConnectorInterface 有相關接通者也不需要取用(用電子郵件/聊天來源自生自出地製作票),

⚠️
Ownership is mandatory and yours to enforce. fetchTicket() 在地區被取出被證實的訪客身份 $ctx (client_id + client_email。用同樣的被驗證的身份去查取相關名單并查取同樣相關的相關相關通訊。 null 有錯誤或錯誤地被取回了相關相關資料。 null 有"找不到"的分類 有"沒找到"的風格
連接器.php,取取 Ticket () 相接合同 (參考:接通器/)whmcs 和接通器/工作台)
<?php
// connector.php — OPTIONAL universal client-chat ticket resolver (Tier 2).
// Only add it if your platform keeps its OWN ticket store that may hold tickets
// not yet mirrored into OpsIQ. Return the normalised array below, or null.
//
// $ref      = ['mode' => 'id'|'tid', 'value' => string]  (from extract_ticket_ref)
// $ctx      = ['client_id' => int, 'client_email' => string]  (VERIFIED visitor)
// $settings = your connector settings
public function fetchTicket(array $ref, array $ctx, array $settings): ?array
{
    try {
        $email = trim((string)($ctx['client_email'] ?? ''));
        $cid   = (int)($ctx['client_id'] ?? 0);
        if ($cid <= 0 && $email === '') return null;            // no verified identity → refuse

        // 1) Resolve THIS visitor on your platform (by verified email/id).
        // 2) List ONLY their tickets and match $ref against the ticket number/id.
        // 3) Re-confirm ownership on the detail record before returning.
        //    On any miss/mismatch/error → return null (never leak).

        return [
            'tid'        => 'T-000123',     // the customer-facing reference
            'id'         => 123,            // your internal id
            'status'     => 'open',
            'subject'    => '…',
            'department' => 'Billing',     // '' if your platform has none
            'priority'   => 'high',
            'opened_at'  => '2026-06-29 10:00:00',
            'last_reply' => '2026-06-29 12:00:00',
            'message'    => 'opening message text',
            'replies'    => [               // oldest → newest; opening message may be first
                ['who' => 'You',   'date' => '…', 'message' => '…'],
                ['who' => 'Staff', 'date' => '…', 'message' => '…'],
            ],
        ];
    } catch (\Throwable $e) {
        error_log('[yourslug][fetchTicket] ' . $e->getMessage());
        return null;                                             // graceful degrade
    }
}

有出自"相克"一行取自"同"相相克相克而相克之相克.

發現

CapabilityRegistry::providers($domain,$type) 列出已安裝/已啟用/已就绪的提供商 (以檔案系統為主; DB 只為被啟用旗號而有) 。

選擇

CapabilityRegistry::active($domain,$type) 返回已載入的連接器和設定的已載出的第一個已就緒提供商。 Bridges 稱取此名,而不用硬編碼 satters 。

通知到安置

在功能需要尚未連接的能體相時, UI 有一擊接通/ 插入便捷, 就不會有死控了 。

完整指導

有相 connectors/PLATFORM_CONNECTORS.md (CRM+站所智能)和 connectors/CRM_CONNECTORS.md 在包裹中。

連接器

有自動服務取景和退款( 为客戶聊天而建接線)

有簽名的客戶可以問客戶聊天AI關於他們的OWN帳號 ("我的平衡","我的訂單", "Did support answer my ticket"等), 如果經營能讓它被啟動, 就要求退款。 它由您連接器的通訊提供通訊:不是 OpsIQ 核心變更, 沒有站台硬編碼。 AI稱您所取的外觀為本地工具( 它無法發明其中一項), 身份被鎖定在被驗證的客戶的伺服器邊上, 而結果被自動剪接到 AI 上 。

有客人要找相機了

在你身上 actions.json有同樣的相關相關功能: "scope":"client", "requires_confirmation":false, "is_destructive":false使用 "scope":"both" 在行政人工智能中您所要的同樣的搜尋也相當可被取用。 admin, client, bothsystem (system 二也接不到AI --API有其它被直接拒絕: 套件驗證失敗而動作不安裝。 沒有 writing 範圍- 为寫入助手提供: admin 已建立動作

(强制性)身份规则

从標準集取出您的身份參數 。 已鎖入已驗證的數值 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從不看到或選擇身份。 有非標準名失敗被關閉( 拒絕了, 也從不漏出) 。

有什麼事要管活了

有被他所描述出身份外出之事:取出相當相當小的(取出同樣相當多的相當分) (取出"相當有"相相當短相相相接相接而相接"等相接之相接的相接地相接.order_id/ticket_id 在任何平台上都是跨接頭人出道的。您要保留它們 。 "scope":"admin".

結果塑造 (有回應的按鍵)

Lookup results are structurally trimmed before they reach the AI: secret-shaped keys are dropped, long strings and lists are capped, blank fields are pruned, and a flat map wider than the key cap keeps its 第一個有回覆的按鍵(一) 有錢( 有錢可花; 有錢可以花;有錢可用; 有花可花); 有錢能花;credit, balance, amount, total, due, paid(),身份 (email, *name, phone, company), 狀態 (status, active, expir*, renew*(收)日期、地圖/出品地/地區/服務/訂閱/訂單/收據/发票/平面票田、通貨、計數和 stats/summary/totals, before any remaining seats go to other keys smallest-value-first. Practical guidance: name your fields with that standard vocabulary and return the fields that answer the customer's question rather than a raw 100-key platform dump; a field named outside the vocabulary competes for the leftover seats and can be trimmed from very wide payloads.

退款 -- -- 您的連接器提供

有兩起生產出行,無政策可言: (一)1有付款被驗證可被取出身份和交易參考(您) API 有需要并有滤波器等). whmcs_get_transactions; (2(一) 退款已執行的動作( 二)scope:"admin", requires_confirmation:true, is_destructive:true, never customer-exposed), e.g. whmcs_refund_order在設定中, 商業選取兩把金鑰→客戶端聊天;OpsIQ重新驗證支付伺服器一面, 使用企業的政策框( 有上限、 有年齡的視窗、 有月限等) , 在盒子內出問題, 有其它事要放回審查票。

沒有編碼器

Connector 建構器的動作編輯器有同樣的控制: 为已簽署的客戶設定 “ 有誰能用到 ” , 留下兩個字去寫收件盒并使用標準的身份參數名稱 。

參考實作

“自用自用”一文 connectors/whmcs/actions.json, woocommerce/actions.json, oscommerce/actions.json; 全合同于 connectors/README.md §8.1–8.2 和 ConnectorInterface::registerActions().

連接器

由相關人員提供相關資訊,

Hotels, couriers and many commerce platforms serve customers who hold a reference but no login: a guest with a booking confirmation, a recipient with a tracking number. The guest_lookup capability (Connector Contract, mode: generated) lets YOUR connector serve those visitors in the client chat AI — no OpsIQ core changes, no platform hardcoding. Your connector declares WHAT proves entitlement and WHICH fields are visible; OpsIQ enforces the switches, the throttle and the uniform deny.

二. 信任模式

參考 + 證明, 永遠不作身份

The visitor supplies the record reference (matched by the regex you declare) plus the proof you pick — normally the email on the record. Your fetch action retrieves the record SERVER-SIDE by reference; OpsIQ's generated provider compares the proof against the FETCHED record. The visitor's input is never trusted, and no verified identity is created: the match entitles the visitor to that one record's allowlisted fields, nothing else.

( 無取數正文)

找不到和校正相匹配能提供同樣的回覆。 AI被明确指使永遠不能確認是否有參考, 也絕不想出記錄的細節。 試想是每次對話都受费率限制的 +IP在接通你的接通器被取出之前 就被取自核心了

有雙次選入, 有兩次預設出局

在事業能讓出兩位接通之前, 沒有事可做: 在設定中全工作區的控制→二. 安全→在客戶端聊天中找找相關人員 (被授權并常被密碼所確認出, 就連可選擇的步調已關閉), guest_lookup_enabled 設定取用。 安裝或開啟接線器從不開啟相機表面 。

The dedicated guest surface

在所產生的提供方登記器上 guest 上下文表面- 在结构上相隔 admincustomer. Existing context providers are never consulted for anonymous visitors, and the guest provider is never consulted for signed-in ones. The ctx it receives carries the chat message, the thread id and the visitor's asserted (unverified) pre-chat email as a proof candidate — no identity fields.

在建築人中宣佈

1
Define the fetch action

在 Action 步入中, 加入只讀取的動作以取回 ONE 紀錄 (例如: C. GET /bookings/{booking_number})并用別名地圖取出它的回應字段:狀態,到達,出發,室型相接,客戶通訊.

2
勾選"客人相望" (出自: 有名的"取景")

在能動相關的階段上被啟用 guest_lookup. A dedicated panel appears: pick the fetch action, name the reference parameter, give the reference pattern (a regex body such as \bBK-[0-9]{4,10}\b在收據上取出相關證據-收錄的郵件(被建議)或無信件(只參考一項,只供狀態的快遞追蹤用)。

3
允許列出可見字段

Tick exactly the fields a guest may see. Everything else is DROPPED — never redacted. The Builder refuses PII-shaped fields (email, phone, address, payment…) in the allowlist, and the release-gate conformance suite re-checks the same rule before publish, so a hand-edited spec cannot sneak one in. Note that install-time validation covers the manifest and the signature only, so run the conformance suite yourself before you ship. The proof field itself can never be shown.

4
出自并啟用

建構器出發 GuestLookupProvider.php — the canonical hardened implementation, identical for every generated package — and adds the guest_lookup_enabled 切換到您連接器的設定。 商業用兩個接頭和聊天AI相接相關, 在訪客問起您所收錄的類型后會開始提供搜尋 。

第 二 章 合同 事 项

只狀態字段

Think "what would a courier print on the public tracking page": status, dates, room or service category, counts. Names, contact details, street addresses, payment data and free-text notes have no place in an anonymous chat — the Builder and conformance both refuse them.

有相關的相關文件被取自"出自"

產生的提供商以只從所列出的欄位接回和提供其它事項的通訊指令來結束輸出。 在授權列表中沒有的詳細內容是"聊天中沒有"-由設計而成 。

Follow-ups keep working

提供商在同一回話中重新取自訪客最近留言的參考資料, 因此"出站是什麼時候" 。 在不重寫參考內容的情况下可以使用。 在聊天線上可以回憶相匹配的參賽資料和證明電子郵件作 CANDIDATES等, 因此跟蹤資料不是再查詢了。 它們只是候選人: 在放出一塊字段前, 每一次回轉都會重新接通記錄伺服器一邊并重新比對取出證據 。

手寫的套件

有一套集市可以自取其利 GuestLookupProvider.php implementing ContextProviderInterfacesurfaces(): ['guest']. Follow the generated template's contract exactly — fetch by reference, proof-match server-side, uniform deny, allowlist-only output — and declare guest_lookup in capabilities. Conformance verifies the guest surface and scans the allowlist for PII.

💡
Guest lookups are read-only context for the chat AI. They never execute actions, never create identities, and never unlock the customer self-service action path above — that path still requires a platform-verified signed-in customer.
連接器

(促進-觀眾)

由LIVE用戶端和您平台的收費狀態所發表的相關活動: “有未付收費單 ” “ 有訂單待收 ” 、 “ 訂單已取消 ”。 有連接器( 預置了、 有市場, 有您自己建的) 有兩個小方法相接。 有否? 有 ? OpsIQ 核心變更, 沒有平台硬編碼: 您的連接器以相關分頁自下而上地出現于工作室中, 有相關相關的相關站被相接相接。

宣傳取景者
以有针对性地取用有被證實的身份被傳給了接通的觀眾 有被關閉的留言 有被指使的事實以有针对性地取用工作區域已登入已驗證身份(一) 由男性和男性共同管理;您的連接器出 出 出unpaid_invoices = 2規則未收的发票(_I): 1跑步表演Fails closed: unknown client or any error → the campaign stays hidden.1TWO METHODS觀眾 Catalog + 旗花相關2LIVE STATE未付款、待付和3FAIL-SAFE就從不向錯人示範了
有位相關人回答登入者活生生地收費; 有位工作室以他們為目標,

如何運作

1
有話直說

在您的連接器課上實用取景者Catalog ()。 它會傳回標籤和您平台能接通的金鑰清單。 每一個金鑰都以您平台名下被降入工作室 。

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 & Billing」 , 列出您的平台; 管理者會像 “ 未付費的入站口通訊通訊相通 QQ等建立規則 : 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() 因此平台和市場列出它能被取用 (發現也出自方法出處, 但宣稱它是乾淨的通訊 。) 已預置入站 connectors/whmcs 連接器是完整的參考實作.

金鑰命名

小寫蛇克2-60 Chars,相匹配于 ^ [a-z0- 9_]+ $. stype: number, text, bul. 有收聽者 Flags ()回放的未宣稱的金鑰仍然可以用到規定中, 但是要宣布您所支持的一切, 因此管理者可以看到它 。

身份被驗證

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.

有失關接 :

在任何錯誤上 (A)API 有時會被取回相關的相關資料, 有時也將被取出相關資訊。 有時他會被放出相去相去不遠的相去所取出同樣的相接相去之地; 有時被取入相去取取取入的相取相取取相去而取取出之相取自相取而取出者相取去相取可取相求相取的相通相取之相通性相取出取相通取相相通而取相接取相分相通的相相取能取取而去相通之相相相接而取而相通可取取同相通同相取 OpsIQ 在規定相對者中也實行了這一條.

性能

有相關相關的相關單位被取用。 匿名訪客需要您打出零通電話。 只能用您已公佈的相機去取取相關連的相接相關通訊相關資源 。1-2 API 有呼叫; OpsIQ 有回想起被取出的要求了

有自動操作程式提供 :

管理者會把您的金鑰和 =,!=, >, ##, <, *, 有, 有被設定, 有空的, 您只提供值 。

个性化符號

在競選相關資料中, {unpaid_invoices}, {client_status} 外加內建相 {first_name} 和 {client_email} 在渲染出之前, 數值被分解出 。

沒有碼的市場連接器

自動事實

有宣出相通( C)JSON-只)市場連接器得到FREE的促進-觀眾:如果你的連接者宣布了客戶/使用者,发票,訂單或訂閱資源, OpsIQ 从您已存在的搜尋動作中產生客戶_ 狀態, 有未付的_ 发票、 數量_ 到期、 未决_ 命令、 活性_ 訂閱和訂閱_ 相關狀態 。 完全沒有程式碼 。

自訂目錄 (設定 ).json)

新增觀眾相關物件_{"標籤":"我的平台","鑰匙": [{'克:"開放", "標籤取出": "開放推車", “類型": “數目"}}},以控制工作室倒下所出現到底哪些事實(和標籤).

正在測試您的提供商

1
開啟連接器

Connectors > your connectingers > Entable.接觸到任何選項的目標分頁。 您的站台必須出自"通訊( Client)" (Continent & Billing (Connecters) ) 下 。

2
建立規矩

相接: 您的站台 : 有按鍵 : 1并設定 “只使用 Logged- in 客戶端 ”。 儲存并公開 。

3
檢查雙向

在您平台上登入相當規則( 有流行需要顯示) 的客戶和不接通( 有彈出需要隱藏) 。 有登入的訪客從來就不會符合登入的规则 。

从您自有的密碼( Custom s触发器) 中發出一項選舉

有搞錯?

在內建的啟動(延后、卷轴、出局入局、闲置、點擊、頁面取景、聊天/票房活性等)外, 您可以從您站台上任何地方或連接器前端發出一項選舉, 在成功取出后, 有推車被廢棄了, 有時您所變更的路由等。

有出自"活"一行

設定競選啟動器以 自訂 有事件名稱( 如 ) checkout_failed),再從您的頁面上取用全局通訊钩:

在您所接通的站台上相接相接的 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、出版等) 在應用求助中心下生活 啟動( E)→宣傳工作室有相關連器/ 或 spoke_ connectioners/ 中自動被發現。 沒有任何可以登入的通訊錄取。 傳送兩種方法, 由工作室來做其他的通話 。
連接器

(合同) 2.2)

survey capability lets any platform supply verified customer identity adapters, audience facts, safe variables and recipient candidates to Survey Studio. It is independent from promo_audience 有相關相關的相關人員也無法提供相關地點、回應、分析或電子郵件等相關資訊。

💡
執行狀態。 寫入完成并可以使用到今天: Connector Contracting 2.2, SurveyConnectorInterface,生成了专用的建構面板 SurveyProvider.php, 包裝中繼資料并隔离相容性。 通訊尚未接通: SurveyConnectorRegistry 有相關相關的相關通訊相關資訊相通相通, 有相通的相通通訊口被接通并被實作和測試, 但目前沒有相通訊所通訊的通訊通訊站被通訊到相通口。 因此提供商的健康並未被浮出管理UI中而沒有已公布的接通相接相通接相關套件被宣布能通訊了 。 有簽名的通報通訊網關接站的發出、 有针对性地和可變相通性相通、 CRM 實用化及第一個已通訊提供商的相接通通相相接分相通等相通。 即時即將建立相接合此合同; 相接后再通相關接相接接相連接相相通取用相通 。

提供人的责任

觀眾目錄和事實

有時會被打出相關的克倫斯克克克蘭克蘭格克蘭德克蘭活字所取出相當多的相關數據被取出。 通常的相當實驗有:命令- 計算、 最後- 定序- 狀態、 已取消_ 定單- 數據、 客戶_ 建立- at、 活字- 訂單- Counts、 過去- 應用地 -- -- 計分和開放地 -- ticket- counts等 。

有變數的目錄和值

有類型、敏感度和上下文相關的通訊相關變數相關相關單位相關, 有相關分類相關功能相關。 相關可查相關資料需要回覆并輸出- Context 逃出 。

收件者呼叫

有選擇地列出CRM外延的候選人, 有相關外接的ID、 邊界頁面、 有定點指標和相關相關的中繼資料。 在任何寄出前, 調查會冻结所選取的取用者 。

身份

在簽名、到期、目的、接通器和工作區等檢查后才接受身份。 瀏覽器提供電子郵件、ID、標籤或收費等事實從來不具有权威性。

跑道健康

測試連接器目錄被設計為: 在不暴露設定、路由、生身份或例外訊息而下傳相容、被封鎖和不可用提供商, 也永遠不能被取用被封閉的提供商。 在管理UI中, 已封鎖的提供方尚未被取出地表: 今天被封存提供商已是惰性了 。

有錯的規則

未宣稱的金鑰、 錯誤的類型、 過大數值、 被題不匹配相通相接器超時和未知身份被拒絕了。 有需要被取用實驗相關的目標規則不相符合。 有收件者的頁面被封蓋并被審查。 敏感值從未出現在公開預覽或紀錄中 。

建構器放出出門口

合同 2.2 有相關功能的登記入錄、相接器相接相接口相接地圖相接面板相接; SurveyProvider.php,能力版本、 README/ 开发者參考和相容性設定。 通商、 求助台、 SaaS 橋接和地區 PHP 相接檔都包含它; 標準 API 連接器選擇入選。 靜態門拒絕了 Survey 提供商, 它叫作通訊站、 取名位或功能 。

💡
从 Pulation 中取出的副本只收入: 建築者可以一次翻譯相容的 Pulposion 映射, 保存完整的 Survey 有屬性的相簿和記錄出處。 刪除或更改 Pulspion 繪射必須不改變 Surview 的行為 。
連接器

(合同 2.2)

reply_feedback 能力映射出一站台自有的回音收視率 OpsIQ 有位明星被取用 在內部有員工回覆 WHMCS 有同樣的相關資訊相接相關相關地區相接取回 OpsIQ 有同樣的芯片、代理信用、回應頁面分數和作業計算等同分數的 Team & Performance 線程 OpsIQ 有入門票 有入通口 有出通口口 有入入通取口 有去通口有入通相接口

就寫出一通路由

有兩道入道和一道真理 OpsIQ 有地取出地取自地取入地取回地取取出站台取出取出相接相接的通路,而核心取出出相關相接地取用相接取取取回相接接相取取去相取相取之相取出. ReplyFeedback::recordMirrored()有同一列, 有同同一分的員工規則、 一等相接的最新贏取語法、工作區章和客戶之聲等索引入門寫入用戶。 連接器自始至終都不會回應行 。

格式化 (有四份文件,再重新簽署)

1
connector_contract.json

新增相關功能. reply_ feedback 項目:版本 1.0,回應FedbackConnector Interface,方法回應 FedbankCatalog并拉回回取Feddack, 意指入行_ ticket.

2
settings.json

在通訊器被發現的清單中加入回應_ feedback。 這是所讀取的通訊符 。

3
spec.json

宣告回應_ feedback. modes (poll and/或 webhook) 和平台的分數表。 這是相符合的門所讀取的 。

4
跑步課

實行相關接點, 在能取回 () 中回覆清單后再重新簽署套件 。

提供人的责任

星表

宣佈模式, 平台自定的分數( 核心常通化到地上) 1-5有同樣的反應相關指標 有同分類相關的目錄 json.

拉出翻譯

取回回信( ReplyFeed back) 的教訓事件: 平台出票id、 平台回覆id、 有分等相關反應/ 通訊、 有提交時間和相關相關事由_ id。 它會讀取并翻譯, 它從不寫作 。

第 三 章 高 度

事件_id相當平穩地被回放到國家ATE上, 因此重放的事件是無可取取取的, 有變更的評分覆寫( 有最晚的勝出, 有同入門相關) 。

Classor 紀律

有相接而成的分界; 有一面不取出光標就可結束跑道。 有歷史的倒灌排出一扇相接相接的相接窗, 一邊是一邊是再接再通的相關相接站口 。

探险安全

在沒有設定下, 傳回一整页以取出相符合的跑取探測器取出空參數 。

解析失敗

Core用鏡頭標出已發出票面的相關回覆(<slug>:<ticket>:reply:<reply>。一項無法解決的事件被丟下,從來就不會被猜想;回馈只附在員工回覆上;而代理功勞總是出自回覆已存在的作者。分數寫入永遠也不會改變作者身份。正因如此,才需要能力去取回回回覆。 inbound_ticketticket_mirror.

有工作的例子: WHMCS

WHMCS 在收視率上儲存取自相關的相關用戶區 tblticketreplies.rating。同名 WHMCS 有相接器的通訊器宣布民調模式1-5平面,船用a ticket_reply_ratings 在它的橋上檔案中接取命令, 將每行翻譯成一項以 ID相匹配的事件 whmcs:<ticket>:reply:<reply> 標出其票面鏡已印出相關印花。 在連接器被提升后, 將橋面檔案再复制到 WHMCS 伺服器 因此此新命令已存在 。

💡
有相接器、事件外形、正規和相符合性檢查清單的完全發展者合同: doc/contracts/TICKET_REPLY_FEEDBACK_CAPABILITY.md 在 OpsIQ 接受:在站台內取回回信,等一小時投票后再取回同一份回信 OpsIQ 顯示相關芯片、回復頁面列出相關相關的相關事項。
連接器

(收費) 2.4)

ticket_merge capability makes a ticket merge in OpsIQ a merge on every connected ticket platform. The kept platform ticket receives the merged tickets' messages, starting with each merged ticket's opening message, instead of the merged platform ticket only being closed.

Why it exists

合并入 OpsIQ 在合約前取出所有被收買的入場券并取出被收購的入场券。 2.4 有接通器被接通了 ticket.deleted for each merged ticket. WHMCS closed that ticket and the kept WHMCS ticket never received what the customer first wrote: the subject showed [MERGED] and the content was missing.

有核心能送出什么?

有相接( 一并接通) 。

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.

(每張合并票)

Still fires, now with merged_into {ticket_id, ticket_number, external_ref}. Core does not deliver it to a connector that declares ticket_merge; other consumers can tell a merge from a delete.

出站的網上呼號

ticket.merged is a deliverable event. A SaaS webhook endpoint subscribed to ticket.deleted also receives ticket.merged, so an integration built before 2.4 hears the merge.

你的接通器所做的事

宣告

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.

有未合并的報告

返回 [ok, 模式, 被合并、 有註記、 有未被合并和有錯 。 每份被合并的相片都無法被合并到未被被合并中去, Core 應用您正常的刪除處理( 有已相關, 有已刪除) 。 mirror_deletes)到正則的。回傳模式只有在平台沒有被合并而沒有私人音符時才不被支持。傳輸或加密失敗是OK=有原因的假象;它被收錄入"診斷"中了 。

有好處能打倒你

有同樣的鏡頭設定能把您其他的票面鏡頭相接而成

在您平台上開始的合并

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

二人入住后合并出站(ticket = 保留出站票;ticktids = 有合并入站票) WHMCS; 在文字中加入 Ticket Note。接力的出票機接通 OpsIQ 二. 工作人员合并后的副本 WHMCS.

Zendesk

后 /api/v2/tickets/{id}/merge.json 有私家通訊(每通通訊最多可有5張入場券)相接, Zendesk 就收起相關入場券而不用再移出相關評論。

OpsIQ SaaS 橋

POST /v1/tickets/{id}/merge with source_ids, which moves the portal replies and attachments; an internal reply carries the transcript for tickets that were never on the portal. A /manage merge merges the OpsIQ copies.

連接器建構器

ticket_merge is derived, never ticked: a generated package declares it when it links the platform ticket it creates (a ticket.created subscriber with link ticket on), handles ticket.deleted, or declares ticket_mirror. On the Tickets step, under 合併, pick the platform's merge action (map merge.target_remote_id, and merge.source_remote_ids or merge.source_remote_id) and a private note action (map note.remote_id and note.body). The generated mergeTickets() uses both. With neither, the Builder warns that a merged ticket's messages will not reach the platform.

💡
全合同: doc/contracts/CONNECTOR_CONTRACT.md, section Ticket merges. Acceptance: merge two tickets in OpsIQ that both exist on the platform, then open the kept ticket on the platform. The merged ticket's first message is there.
連接器

接通器集市

有相關相關的相關接器被公開出自相關地區。

市場
接通器集市有相關相關分類相關接相關卡可搜尋的格子, 安裝按鈕和取相率相關 。接通器集市工作區域搜尋連接器...有理有取地排程安裝★ 4.8HubSpotCMM (CRM)安裝★ 4.6相片電子郵件安裝★ 4.7QuickBooks核算安裝★ 4.5特維利歐( Twilio)短消息安裝★ 4.9逗號道克安裝★ 4.41DISCOVER接通相通器2(倒地)一分3PUBLISH簽署并提交您的 (S)
有相關相關接通器被瀏覽, 有一擊安裝; 有的簽署并公佈您自己已預設的相關連接通接通和市場相關等級相關的相接相關分級相接通相接可搜尋 。

尋找并安裝接通器

1
瀏覽

取入連接器 > 通訊所。 搜尋取名、 分類或平台 。

2
复核

檢查描述、相關動作和收視率等相關相關分數。

3
安裝

點擊安裝。 連接器套件下載并安裝到市場_ connectioners/ 上 。

4
配置

在連接器中開啟, 輸入 API 有相關證件并做測試.

出出相通器

1
构建和測試

使用連接器建構器。 請檢查所有的動作是否工作 。

2
套件

生成剖面相 。json 有出息了 有出事了 有起事了 json 有知識 有知覺 有相識 有相识 有相思之分 有相通之分 json,并使用 PHP 文件。

3
簽名

Run php tools/sign_connector.php <slug> to sign ONE package (it also accepts a path). It does not boot OpsIQ, so give it the key: either --key=<secret> or the OPSIQ_CONNECTOR_SIGNING_KEY environment variable, otherwise it stops with "No signing key available". tools/resign_all_connectors.php re-signs EVERY package on the install and reads the key from settings by itself, but it can also mint a NEW install-wide signing key, so reach for it only when that is what you want.

4
提交

在市場上傳出呈文供审查。

二相接相關

連接器/ -- 到底在跑什麼

The runtime discovery root. Everything here is live: the connectors that ship with OpsIQ, anything installed from the marketplace, and anything the Connector Builder publishes on this install.

市場_ 連接器/ -- 有相關套件被寫入的地區

在一黨市場套件上所出版的 SURCE 。 它不是一個發現根: 在被打包、簽署、入種和安裝之前, 這裡是活的; 在這個地點上, 有副本被放入接通器/ 中 。

💡
Look in both places. A package you authored under marketplace_connectors/ is not the copy that runs — installing copies it into connectors/, and only that copy is discovered at runtime. Stripe, BigCommerce, Magento 2, PrestaShop, OpenCart, Amazon SES, Postmark and Resend are all marketplace packages: install one before expecting to find it in Connectors.
發展者

API 有相接相接的相接器

该 API 而 Webhook 构建器讓您建立自訂 API 有收視器和收聽器入內 OpsIQ 不寫入生 PHP 。

API 建構器
API 有相接相接的相接器有建構者選擇了一個能被接通到可配置的動作的觸發相關類型( 輸入網路、 排程、 事件、 手動) 。API 網頁快取建立器( W)工作區域突 越有入站的網頁附表 (克郎)OpsIQ 事件手動動作地圖接觸到的字段→建立票/ 通知/ 呼叫 API儲存端點1三. 提 交由相關人士自動出發;2NO RAW PHP在UI所建3動作地圖字段,再跑取
在沒有生取 PHP 的地點下建立端點: 取出一個觸發器( 已輸入網址、 排程、 事件或手動), 然后把字段映射到一動作中 。

觸發器

事件

有出事了就跑去 OpsIQ,或當外接系統放出符合您網頁的相配事件時 URL。輸入事件名稱, 如已建立票等。

排程

有一項內置相隔事件被取作事件名稱: cron. minutes. cron; hourly 或 cron。 Daily. 有動作和觸發屏幕有按鈕可以取用, 因此您不必回想它們 。

語言

在管理員用平話向 AI 求取時跑出。 加入相匹配的語言, 例如找取客戶 。

有入站的網頁

有外接系統向您傳送 HTTP POST OpsIQ 網頁 URL 有活活活生生地名 有活花活活地被取出相接觸

有時候只跑出一圈: 有條件

事件觸發器可以帶有條件,因此它只在輸入的資料匹配時才會運行。 如果沒有條件的話,每次事件被触发時就會執行。

外勤

輸入事件資料的路徑。 对于嵌入值使用點, 如客戶. email等 。

符合全部或任何

就去選出每條規則相配還是相配相通相通

文字測試

equals, does not equal, contains, does not contain, starts with, is one of, is not one of. Matching ignores capitals.

數字測試

以文字寫入的數字相對仍正確地被取出 。

出所取取的測試

有, 有缺失, 有空, 有不是空 。

就找接通的工程師去取急票

假想:
有一項規則:优先等同緊急需要。
所取之道:

有急事需要入場出票 就別再有了 有需要去取取取了

💡
如果把規則留作空白, 每起相對事件都接觸到扳機, 這和之前有條件同樣。

動作

傳出網頁快取

送出 HTTP POST 到外置 URL 有自訂有效载荷.

建立票

有指定部門、主題和訊息相關的支援票已建立 。

發出電子郵件

有自訂樣本的郵件傳出 。

更新紀錄

有更新的客戶票或CRM記錄

執行連接器動作

从已啟用接線器中執行已登入的動作, 有連接器的權限和確認規則 。

快跑 OpsIQ 一般 API 動作

搜尋取名為 " 一般" (General) 的完整名稱 API Catalog. 字段、 範圍、 權限、 確認、 二元能和干跑相支援出自活動作相接相接的相接合同; 工作流程會被執行到被儲存的工作區和通訊器上下文中 。

傳送提供者- 本地 API 要求

使用連接器原生( C)API 已讀取或已確認 API 在提供方端點沒有被控制起動作時寫入動作。 憑證仍然保留在連接器內, 而只接受相對提供方路徑 。

Actions & Trigers 建構器, /api/v1.php, OpenAPI 和 Postman 使用同樣的動作相關檔案, 因此可選取的動作無法從跑取的相關文件中漂移出 。
發展者

触发廚房

就绪取出相關相關通訊相關的相關用法

如何運作
触发廚房取出一出即時出票并通知:Slack.uptime.down有相關相關的相關資訊如果出道filter建立緊急的入票通知 Slack #ops (已通知)
触发廚房

自動建立監控的票

假想:
有伺服器下水后, 監控系統會傳出 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

每周文摘電子郵件

假想:
每周一早上九點去給管理层的郵件
所取之道:

Trigger: Schedule (Monday 09:00) Action: Send email with last week's stats pulled from the REST API

有高級出賣入場券

假想:
如果一票沒有回覆 24 有時 就被派去接領隊了
所取之道:

Trigger: Schedule (every hour) Condition: ticket.status = "Open" AND ticket.last_reply_age > 86400 Action: Assign to team-lead, add internal note

發展者

第一個動作正在建立中

有道走通地自零起就產生了簡單接通器相接的動作.

二. 建立起步
建立一項動作動作定義表單:取名搜尋命令,取出要求到 /orders/{id} 有打入的 id 參數, 有傳輸 200 有考驗了 有考試了 有想找找找想找想想找取取取的相關相關事由的人去取取回相關同樣相關的相通相通的相接相通通相相通同相通新動作工作區域新動作姓名lookup_order要求GET/orders/{id}参数id- single (正弦)200 已找到命令1DEFINE姓名、方法、终点2PARAMS有打入的輸入3科技有活 200 結果
从零開始建立一項動作。 命名它, 設定方法和端點, 宣告已打入的正方形并做活取測試 200.

有兩種動作

在您開始前, 請決定您需要的 。 兩相被設定入同一個螢幕中 。

呼叫外接器 API

動作會向您的平台傳出 HTTP 要求。 在 OpsIQ 有需要伸出手去做一些事 在你身邊。

執行連接器動作

動作執行已安裝的連接器所提供。 在工作已可用而您想被啟動時選擇它。 您從清單中取出連接符動作, 因此沒有線接可接 。

第 二 選項 是 如何再用您連接器已能做的所有事而再不建出任何一項: 讀取一通票線, 找取客戶, 匯入聯絡人等。 从下放取連接符動作后可以完成 。
1
有計劃了

有示例: “ 找取出出出產 ” 。 按出產名、回價、 股票和描述來找取 。

2
在動作中定義 。json

新增動作定義:

動作。json — 真正的表單外形
{
  "actions": [
    {
      "action_id": "lookup_product",
      "label": "Look up a product",
      "category": "Catalogue",
      "description": "Find a product by name and return price, stock and description.",
      "scope": "admin",
      "requires_confirmation": false,
      "is_destructive": false,
      "delivery_type": "http",
      "http_method": "GET",
      "http_url": "/api/products/search",
      "parameters": [
        { "name": "name", "type": "string", "required": true, "in": "query",
          "description": "Product name to search for" }
      ],
      "returns": [
        { "alias": "id",          "path": "data.id",             "type": "string" },
        { "alias": "name",        "path": "data.name",           "type": "string" },
        { "alias": "price",       "path": "data.price",          "type": "number" },
        { "alias": "stock",       "path": "data.stock_quantity", "type": "number" }
      ]
    }
  ]
}
⚠️
有三件事做成一項行動 就完全沒能被記錄下來了 action_id 有需要并必須是 2 至 100 小寫字母、數字和下划線的字元被直接拒絕了。 清單是用"動作"列表取出物件,而不是用動作名稱取出地圖。 而回應映射是用 DOTTED 路由 (data.id) 取出"回歸" , 不是 JSONPath (. data. id) -- 有否 "response_mapping“、 “方法”、“端點” 或 “params" 鍵入到通訊錄的任何地方 。
3
有干跑的測試

在 Connector 建構器的回覆步入中, 按 Dry 跑取。 它會以您的相關資料包相對地執行完整符合的檢查清單; 在您提供憑證后, 它會做一個真正的接通測試。 它不使用樣本數據 。

4
檢查 AI 使用

有需要就可被取出相關資料去取取取。

⚠️
在動作中加入一項動作 。json不建立 AJAX 路由, 因此沒有可再生的路由。 Connector 動作被同步到OpsIQ在接通器被啟動或被儲存時: 重新保存接通符并顯示新的動作. survey/gen_route_registry.php 覆盖了管理 AJAX 發送而與接通程式的動作無相關 。
發展者

入境事件端點

有被簽署的入站端點接受 JSON 有同樣的相關相關活性能提供時間、分數和工作流程。

產品螢幕
有入站端點有出入境口 有自已的出入境源 URL 有出自"地平線"和"地相通"等出自于"地分通".有入站端點工作區域出自:5ACCEPTED12.4kREJECTED18LIVE WORKSPACE VIEW收費平台訂閱事件有健康產品應用程式簽名和使用事件有健康事件代碼provider_event_id地都普簽名X-OpsIQ-Inbound-SignatureHMAC1CREATE SOURCEURL 有秘密的2MAP PAYLOAD電子郵件、事件和代碼3(活活地)HMAC再吃
有出入境口 有自已的出入境源 URL 有出自"地平線"和"地相通"等出自于"地分通".

每一個送出系統建立一個來源 。OpsIQ 生成 a URL 有秘密相接相接 有秘密可接 JSON 有 Content-Type: application/json 在生體上用 HMAC-SHA256 簽名:

X-OpsIQ-Inbound-Signature: sha256=<hex hmac>

地圖 JSON 聯絡人電子郵件、 事件名稱和可選取的事件 ID 的路由。 事件 ID 是首選的去除鍵值。 被接受的活性會被接入聯絡時間線并會影響到領導分數、 區段、 使用周期規則和工作流程等 。

在解析商業資料前拒絕無效的簽名。 在被控制的視窗中更新兩邊以旋轉一個秘密; 不要登入此秘密 。

發展者

出站的網上游標操作

外出網絡管理會建立簽署的訂閱、測試終點并監控同步送出及重試健康。

產品螢幕
出站的網上呼號有出道的網頁列出HTTPS的端點、事件訂閱、快遞健康及一擊簽署的測試等。出站的網上呼號工作區域ENDPOINTS7SUCCESS99.2%取回4LIVE WORKSPACE VIEWCRM 鏡頭有接通了 就去接通取回了有健康相支援巴士有票 有聊了 有出有出 有出 有入有出有取 有出相出 有去相出相去相去同去相通 有出自"相去"相出所出相入相去想相去而相去可去相相去分出相相出有健康資料仓*正在重試中提供試驗有號樣本有效载荷就緒1SUBSCRIBE(HTTPS ) URL 二. 和事件2AUTHENTICATEHMAC 簽名3OBSERVE接通了鐵道和回路
有出道的網頁列出HTTPS的端點、事件訂閱、快遞健康及一擊簽署的測試等。

全管理員會建立 HTTPS 端點, 選擇特定事件或通配符, 安全地儲存此秘密并發出測試 。OpsIQ 用 HMAC-SHA256 簽署生有效载荷:

X-OpsIQ-Signature: sha256=<hex hmac>

在去序列化或演動前檢查簽章。 送出是同步的, 在相關之後自動重試 1第 一 分5分 30 分2相關時間和相關 12 小時使用最近交付的鐵道去檢查狀態、回應碼和試想數量等

您的接收器必須是一元相關的, 因為任何同步系統都能夠重放。 在被接受后回應 2xx 。

發展者

網路鉤子

Webhooks 已放出外接系統通知 OpsIQ 當有事情發生的時候,OpsIQ 在內出事(外出)時通知外接系統。

網路鉤子
出站的網上呼號出局的網上呼克屏幕: 有名的端點、 已訂閱的事件、 最近送出狀態點等相關表格, 有 Send- test 按鈕 。出站的網上呼號工作區域端點+ 保存端點名稱二. 事件二、工 作Slack有售出通知https://hooks.slack.com/…crm有出息了 有出行了 有入行了測試CRM 鏡頭https://api.acme.com/hook有接觸 * 有票 有出息了測試扎皮爾https://hooks.zapier.com/…chat.started測試1ENDPOINTS有名字 有出事了 URL2SIGNEDHMAC +自動重覆3SEND TEST檢查出貨
有出站的外出網路屏幕:每一個端點都出事了, 最近有出站出站相關健康, 有一擊出站接送試驗、簽署再試等。

出站的網上呼號

訂閱

跳到設定值 > Webhooks. 新增一個收尾點 URL 并選擇要接收的事件。

事件

訂閱特定事件或 ["*"] 有您所要安裝的完整清單如下: webhooks.events.list 返回為JSON.

重試

以回放相接的指数重試失敗的送出。 after second 15 有相接的失敗, 末端已自動失效 。

簽署( C)

有簽名出貨了 X-OpsIQ-Signature carries v2=<hex>,而所簽署的字串是 version.timestamp.delivery_id.body — not the body alone. Always verify, and always rebuild the string exactly. See the examples below.

SSRF 保護

OpsIQ 不會被傳送至私人/ 內部 IPs (127.x, 10.x, 172.16.x, 192.168.x, 169.254.169.254).

Async 提供

Webhooks 由工作排队提供,而不會被阻擋 OpsIQ 操作。

平穩事件代碼

有相關事件相接相接而成。

有出事就到事了

X-OpsIQ-Event

例如事件名 ticket.created.

X-OpsIQ-Delivery

The delivery id. It stays the same across retries — use it to ignore a duplicate.

X-OpsIQ-Timestamp

在簽名時取出一秒鐘 就拒絕出事了 有五分多的活兒就回不來了

X-OpsIQ-Signature

簽名為: v2=<hex>分拆到相 =:左邊是版本,而右邊是您所比較的值.

X-OpsIQ-Signature-Version

正在使用的方案 v2从頭部取出而不是用硬編碼 它被加入到 V3 就繼續用你的密碼去做

⚠️
有簽名的字串是: version.timestamp.delivery_id.body就只有活生生的活體才有被查證出故障的最常有原因了 有的被拒絕了 而有的被打斷了

正在檢查快取

PHP ——驗證一OpsIQ網頁
<?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]);
節點.js * 驗證一OpsIQ網頁
const crypto = require("crypto");

// express.raw gives you the exact bytes OpsIQ signed. express.json() does not.
app.post("/opsiq-webhook", express.raw({ type: "application/json" }), (req, res) => {
  const raw      = req.body;                                  // Buffer
  const sig      = req.headers["x-opsiq-signature"]  || "";   // "v2=<hex>"
  const ts       = req.headers["x-opsiq-timestamp"]  || "";
  const delivery = req.headers["x-opsiq-delivery"]   || "";
  const secret   = process.env.OPSIQ_WEBHOOK_SECRET;

  // 1. Reject stale deliveries (replay protection).
  if (!ts || Math.abs(Date.now() / 1000 - Number(ts)) > 300) {
    return res.status(401).json({ error: "Stale delivery" });
  }

  // 2. Split "v2=<hex>" into its version and its value.
  const [version, received] = sig.split("=", 2);

  // 3. Rebuild what OpsIQ signed: version.timestamp.delivery_id.body
  const canonical = Buffer.concat([
    Buffer.from(`${version}.${ts}.${delivery}.`),
    raw,
  ]);
  const expected = crypto.createHmac("sha256", secret).update(canonical).digest("hex");

  // 4. Constant-time compare. Lengths must match first or timingSafeEqual throws.
  const a = Buffer.from(expected), b = Buffer.from(received || "");
  if (a.length !== b.length || !crypto.timingSafeEqual(a, b)) {
    return res.status(401).json({ error: "Invalid signature" });
  }

  // 5. Accept, and make the work idempotent on the delivery id.
  const event = JSON.parse(raw.toString("utf8"));
  res.json({ received: true });
});

安裝能傳送出的每一起事件

它由正在跑的建築所產生 因此它總是相當于您所玩的版本

52 events can be delivered to a webhook endpoint on this install. Subscribe with ["*"] for all of them, or name the ones you want. The General API action webhooks.events.list 返回同樣的清單JSON因此你的密碼就用不著再用硬碼了.

二. 分析 (1)

analytics.anomaly

Fired by PHASE_ANOMALY_ALERTS when a daily KPI (sessions, pageviews, conversions, revenue) deviates from its same-weekday 4-week baseline beyond the configured threshold. Payload: day (required), title, site_key, anomalies.

有商相通地. (2)

commerce.order.created

Fired the moment a chat-confirmed order lands on the merchant platform (connector or custom-actions integration) - before payment. Subscribe to sync carts, reserve stock, or notify fulfilment systems. Payload: reference (required), connector, amount_minor, currency, customer_email, thread_id, occurred_at.

commerce.payment.confirmed

Fired exactly once per order when the gateway actively verifies the payment (amount and currency exact). This is the settlement signal - it rides the same claim that prevents duplicate receipts, so it can never double-fire. Payload: reference (required), connector, occurred_at.

接觸者 (6)

contact.conversion

Fired by OpsIQ.

contact.erased

Fired by OpsIQ.

contact.lifecycle_changed

Fired by OpsIQ.

contact.status_changed

Fired by OpsIQ.

contact.tag_added

Fired by OpsIQ.

opsiq.contact.upsert

Fired by OpsIQ.

conversation (5)

conversation.assigned

Fired when a conversation is assigned to an agent or unassigned. Payload: thread_id (required), site_key, assigned_admin_id, by_admin_id, occurred_at.

conversation.created

Fired when a new Client Chat conversation (thread) is opened. Payload: thread_id (required), site_key, channel, client_email, client_name, visitor_id, created_at.

conversation.message.created

Fired when a visible message is written to a conversation by the visitor, an agent, the AI or the system. Internal notes do not fire. Payload: thread_id (required), message_id (required), site_key, sender_type, admin_id, message, has_attachment, created_at.

conversation.rated

Fired when the visitor rates a conversation (1-5 stars). Payload: thread_id (required), site_key, stars, comment, trigger, admin_id, occurred_at.

conversation.resolved

Fired when an agent resolves a conversation and hands it back to the AI. Payload: thread_id (required), site_key, by_admin_id, occurred_at.

收起 (6)

crm.company.created

Fired when a CRM company/account is created. Payload: company_id (required), name.

crm.deal.created

Fired when a CRM deal/opportunity is created (by an order, the capture agent, or a human). Payload: deal_id (required), title, amount, currency, scope.

crm.deal.lost

Fired when a deal is moved to a Lost stage (closed-lost). Payload: deal_id (required), stage, amount.

crm.deal.stage_changed

Fired when a deal moves to a different pipeline stage. Payload: deal_id (required), stage, amount.

crm.deal.won

Fired when a deal is moved to a Won stage (closed-won). Payload: deal_id (required), stage, amount.

crm.task.created

Fired when a CRM task is created (incl. AI-suggested next-step / renewal tasks). Payload: task_id (required), title.

電子郵件 (2)

email.bounced

Fired by OpsIQ.

email.replied

Fired by OpsIQ.

feedback (13)

feedback.analysis.completed

Fired when a Voice-of-Customer analysis run completes. Payload: analysis_run_id (required), workspace_key, sample_count, model_version.

feedback.detractor.detected

Fired when a newly indexed response meets its metric-specific detractor rule. Payload: feedback_item_id (required), workspace_key, source_kind, metric_kind, classification.

feedback.follow_up.completed

Fired when a Feedback follow-up is completed. Payload: feedback_item_id (required), workspace_key, actor_admin_id, outcome_code.

feedback.item.assigned

Fired when Feedback ownership changes. Payload: feedback_item_id (required), workspace_key, assignee_admin_id, team_id, actor_admin_id.

feedback.item.indexed

Fired when a source record is added to or refreshed in the canonical Feedback index. Payload: feedback_item_id (required), source_kind, source_id, workspace_key, metric_kind, classification.

feedback.item.redacted

Fired when source deletion or redaction removes Feedback content from the index. Payload: feedback_item_id (required), workspace_key, source_kind.

feedback.item.status_changed

Fired when the Feedback workflow state changes. Payload: feedback_item_id (required), workspace_key, state, actor_admin_id.

feedback.item.tagged

Fired when a tag is added to or removed from Feedback. Payload: feedback_item_id (required), workspace_key, tag, operation.

feedback.item.updated

Fired when a canonical Feedback item changes. Payload: feedback_item_id (required), workspace_key, change.

feedback.source.failed

Fired when a Feedback source replay or incremental index operation fails. Payload: workspace_key, source_kind (required), error_code, checkpoint.

feedback.source.lagging

Fired when a Feedback source checkpoint is behind its expected freshness window. Payload: workspace_key, source_kind (required), lag_seconds, last_success_at.

feedback.theme.detected

Fired when a canonical topic or theme signal is attached to Feedback. Payload: feedback_item_id (required), workspace_key, theme_key, confidence.

feedback.urgent.detected

Fired when an urgent Feedback signal is detected. Payload: feedback_item_id (required), workspace_key, source_kind, signal_key.

invoice (3)

invoice.created

Fired when an invoice is generated. Payload: invoice_id (required), customer_id, customer_email, amount, currency, due_date, items.

invoice.overdue

Fired when an invoice passes its due date unpaid. Payload: invoice_id (required), customer_id, customer_email, amount, currency, days_overdue.

invoice.paid

Fired when an invoice is paid in full. Payload: invoice_id (required), customer_id, customer_email, amount, currency, paid_at.

order (1)

order.created

Fired when a new order is placed. Payload: order_id (required), customer_id, customer_email, amount, currency, items, status, source.

付款 (3)

payment.completed

Fired when a payment succeeds. Payload: order_id (required), payment_id, provider_ref, customer_id, customer_email, amount, amount_minor, currency, gateway, invoice_id, items, paid_at.

payment.failed

Fired when a payment attempt fails. Payload: order_id, customer_id, customer_email, amount, currency, gateway, reason.

payment.refunded

Fired when a refund is issued. Payload: order_id, refund_id, customer_id, customer_email, amount, currency, reason.

安全 (1)

security.alert

Fired by PHASE_SECURITY_ALERTS when a security rule trips: failed-login wave, new automatic IP blocks, or a tamper-evidence (audit/consent hash chain) verification failure. Payload: rule (required), title, site_key, count, blocks, errors.

subscription (3)

subscription.cancelled

Fired when a subscription is cancelled. Payload: subscription_id (required), plan_name, customer_id, customer_email, cancel_reason, cancelled_at, ends_at.

subscription.created

Fired when a subscription is started. Payload: subscription_id (required), plan_id, plan_name, customer_id, customer_email, amount, currency, interval, trial_ends_at, next_billing_at.

subscription.renewed

Fired when a subscription renews successfully. Payload: subscription_id (required), plan_name, customer_id, customer_email, amount, currency, next_billing_at.

入票 (5)

ticket.closed

Fired when a ticket is closed or resolved. Payload: ticket_id (required), resolution, closed_by_type, closed_by_id.

ticket.created

Fired when a new support ticket is opened. Payload: ticket_id (required), ticket_number, subject, department_id, department_name, customer_id, customer_email, priority, message, author_type, author_id, author_name.

ticket.merged

Fired when one or more tickets are merged into another ticket. Payload: ticket_id (required), ticket_number, subject, external_ref, native_table, site_key, sources, merged_by, merged_at.

ticket.renumbered

Fired when a connector mirror adopts the remote platform's ticket number for an OpsIQ ticket. Payload: ticket_id (required), old_number (required), ticket_number (required), connector, external_ref.

ticket.replied

Fired when a reply is posted to a ticket. Payload: ticket_id (required), reply_id, author_type, author_id, author_name, message.

user (1)

user.registered

Fired when a new user/customer account is created. Payload: user_id (required), email, firstname, lastname, company, country, source.

我該怎么去地上做網上作測試?+

使用 ngrok 來曝光您本地伺服器。 將網頁端點設定到您的 ngrovk URL.

如果我的收視點被暫時下地了呢?+

OpsIQ 以相數回放重試。 如果您的端點在重試視窗內恢復了, 就不會失去任何事件 。

發展者

API 金鑰

API 金鑰驗證要求到 OpsIQ 倒置 API。每一個金鑰有範圍權限 。

API 金鑰
API 金鑰该 API 金鑰螢幕: 有存取等級和範圍芯片的出發面板, 此外有已存在被遮蓋的按鍵清單 有取回按鈕 。API 金鑰工作區域出出一金鑰存取就只讀取有限制範圍contacts.readtickets.readevents.write出自地點你的鑰匙Zapier 整合opq_••••4f2a取消( E)有手機相接相接程式opq_••••91c7取消( E)分析匯出opq_••••2db0取消( E)1SCOPED只讀或受限2PER-ACTION選擇精确的範圍3REVOCABLE有時就旋轉
有活活活 API 金鑰螢幕: 取取精确的範圍以發出有範圍、 有讀取功能或受限的金鑰, 并隨時取出任何金鑰 。

正在建立 API 按鍵

1
跳入設定值 > API 金鑰

通航到 API 密钥管理。

2
點擊建立金鑰

有名有名地取出相去.

3
選擇範圍

就只提供需要的金鑰。 範圍相接相接取出相對相接的相接區域, 因此可以提供相接同樣的相通相接性 。

有可使用的范围

就取出最窄的一組去做活活 admin satisfies every scope below, so use it only when you genuinely need broad access.

已讀入/ 已寫入 Crm. read / crm: write

二. 接觸、公司、交易、活性、分行、外延、轉換、生命周期和CRM有被打倒了.

有票 有被讀取出票 有寫出出票去的相當多

列出并讀取入場券和信件;回覆、更新、開啟并跑取批量排行串操作。

有話可說. read/ chairs. write

讀取活話和信件歷史; 傳出信件、 指派及變更狀態 。

kb. read / kb: write (已讀取)

有知入入入.

聊天. read/ challe. write (已讀取)

有儲存回覆樣本 。

connectors.read

See which connectors are installed, what they can do, and test their credentials.

automations.read

有你的行動 有被啟發的動機 有被打倒的歷史 有被放倒了的活口 有被取出去取出地點的活地

departments.read

有可通路的分局.

notifications.read

有指定接線人的通知 。

analytics.read

第 二 部 分 CSV 出品和已安排的報告定義。

site_intelligence.read

有被監控的站點和他們的"SEO"報告.

files.read

有簽署的附件下載連結 。

status.write

狀態頁面相關相關分類和事件.

寫入

AI作文相助:收稿,取出,翻譯,再寫,作曲,分析.

管理

有數以千計的相關人員被取出相關地區: 刪除接觸者、改變隱私設定、讀取接觸記錄等。

💡
用您金鑰呼叫 meta. 動作以確認它能執行到您安裝上哪些動作。 這總比從清單中工作更可靠 。

存取等級

全部

鍵可以叫出它所允许的一部份

就只讀取

有最安全的選擇去上報、出發和任何不該被改變的資料。

有限制

您列出金鑰可能要取出的确切動作 。 其他的都被拒絕了, 就連被允許的範圍內也不行 。

4
复制金鑰

有一次出道了 有"opq_"起步了 有安全地儲存了它

🚫
从不相分 API 在公用碼中按鍵, 客戶端 JavaScript,或版本控制。使用環境變數。
發展者

連接您的網站

该 OpsIQ 元件是一 JavaScript 在您網站上加入一部份, 用于追蹤、 AI聊天、 票款創作和客戶身份認證等。

如何運作
連接您的網站在左邊有一行腳本標籤 在右邊 有一頁有 OpsIQ 在角落出事了.<!-- paste before </body> --><script src="https://cdn.opsiq.io/w.js" data-site="ws_8a2f" async></script>
連接您的網站

基本安裝

B. 基本部件片段
<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

有可選的 有可選擇的 有可以相通的 有"聊天" (default) 有可相通取自"一桌相通" 有可同取自 "一桌同出" 有相通相通接相通

data-position

有可選的 有"下-右" (默认) 有"出自下-左" 有可選擇的相關事由"出取自"

data-color

有可選用的地方 有一款相關顏色的六分碼

data-greeting

有可選的 初回問候口信

data-language

有可選用地:"en","es", "fr", “de", (tt), “ar"等.

data-identity-token

有可選用。 伺服器產生了簽署的身份代碼 。

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 元件規則
script-src 'self' https://your-opsiq-domain.com;
connect-src 'self' https://your-opsiq-domain.com;
frame-src https://your-opsiq-domain.com;
有需要我做主題嗎?+

有 在下 15 KB gziped, 在頁面內容后加載 。

我能自訂外表嗎?+

主色相使用數據顏色。 Contact support for CSS 覆寫選取項目 。

發展者

元件安裝食譜

有相關平台的安裝指導 。

如何運作
元件安裝食譜平台安裝牌用於 WordPress, Shopify 和 Google Tag Manager 有相接相接的相接器。WP 有:WordPress安裝外掛程式后, 輸入取出您所存的地點鑰匙商店Shopify貼入片段取出相關相關資訊 /body.全球資訊傳輸模式標籤管理員自訂 HTML 標籤,出自所有頁面。
安裝食譜

WordPress

假想:
新增到 a 的所有頁面 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

假想:
在您所增加的( C) Shopify 商店。
所取之道:

Online Store > Themes > Edit Code > Layout > theme.liquid. Paste before </body>. Save.

反應 /下一個. js

假想:
加入回放或下一個. 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

假想:
在您所增加的( C) WHMCS 客戶端區域 。
所取之道:

設定 > 一般設定 > 其他的全局腳下內容。 貼上片段。 或是編輯您的樣本腳下. tpl 。

Google Tag Manager

假想:
有通通GTM相接.
所取之道:

建立自訂 HTML 標籤、 貼上片段。 出自: All Pages. Publishment.

發展者

在您的后端中管理元件 (一項相關合同, 任何平台)

Embed the OpsIQ admin assistant — admin chat, ticket inbox and AI Writing — inside YOUR OWN platform's admin panel, so your team never leaves their tools. Like visitor identity and portal SSO, this is ONE generic contract implemented in ~15 lines of your platform's server code — the same pattern Zendesk, Intercom and Discourse use for SSO. There is no per-platform plugin to wait for: any stack that can compute an HMAC can do this today.

步入1有被嵌入的行

遠端站點→您的網站→代碼,复制加載行并加入到您的管理面板的頁面上 (腳上包含、佈局樣本或只包含自訂-JS相框:

一行入地
<script async src="https://YOUR-OPSIQ/opsiq/embed/admin_widget.php?site_key=SITE_KEY&identity_token=TOKEN_FROM_STEP_2"></script>

步入2-去告訴她OpsIQ有被登入的 (伺服器簽署)

有您所應用程式才知道簽署的是哪個管理員, 這不是一個缺陷, 而是安全模型。 您的伺服器會自會中產生出一個短命的簽署符號, 它和同一個網站被簽署的網頁秘密一樣:

PHP · sign the admin identity from your session
<?php
$secret  = "opsiq_whsec_your_site_secret";   // Remote Sites → Codes
$payload = json_encode([
    "site_key"      => "SITE_KEY",
    "iat"           => time(),
    "exp"           => time() + 6 * 3600,
    "authenticated" => true,          // REQUIRED, top level — see note below
    "platform"      => "your-platform",
    "admin"    => [
        "id"            => (string)$admin->id,      // from YOUR session
        "name"          => $admin->name,
        "username"      => $admin->username,
        "email"         => $admin->email,
        "role"          => $admin->role,
        "authenticated" => true,
    ],
]);
$payload64 = rtrim(strtr(base64_encode($payload), "+/", "-_"), "=");
$identityToken = $payload64 . "." . hash_hmac("sha256", $payload64, $secret);
// Put $identityToken into the embed line (identity_token=…), or expose it as
// window.OpsIQAdminIdentityToken before the loader script.
有自動接通的單位

每個登入您平台的主管都相當相配:OpsIQ每個管理員接通的出入口能對取出一個通訊號的用戶名+電子郵件OpsIQ代理 (Team page; 在平台電子郵件相異時使用代理伺服器的"相對電子信件"列表)并使用代理的工作區域、 部和收件箱權限。 新員工 = 在OpsIQ; 沒有嵌入式變更 。

有活干相伴

平台所送出的角色串都顯示于OpsIQ有同樣的權限由於被授權而得到;OpsIQ有經紀人,從不出自所謂的角色.

就看我們的登入曲奇吧?

瀏覽器從不把你的管理克許寄出到另一個來源—— 沒有出賣者能"只"地檢出"你的登入跨域。 每一個正宗的產品都以同樣的方式解決: 您的伺服器可以作保, 有簽署; 這是整個合同 。

在您自己的站點上沒有共享模式

Off the OpsIQ host there is no unsigned or shared-login mode: the loader stays hidden until a signed admin token arrives. The token=… value in the Codes loader is a widget key that only identifies the site; it can never sign anyone in.

authenticated 旗子- 在 TOP 等級上放入

This flag is your server's assertion that a human is really logged in, and OpsIQ refuses any token without it. Put "authenticated" => true beside site_key/iat/exp, NOT only inside the admin 物件。目前OpsIQ但更舊的放出只讀取最上等-而失敗是騙取:相談清單、歷史和未讀取的所有認可都很好,而每一次聊天都回覆 “需要登入地點 ”, 它看起來像會話錯誤而不是。 如果看到分開的確切相關, 請先檢查此旗 。

有孔卫生

在伺服器上簽署, 在瀏覽器上都不要簽署JavaScript(分到小時;OpsIQ拒絕已过期和未來日期的代碼, 而簽章會將代碼綁入您站點的金鑰中 。

參考實作

The WHMCS module does this automatically from the WHMCS admin session; the Botble Hotel connector's bridge file does it from the Laravel session (op=admin_identity). Both are just this contract in their platform's dialect — copy whichever reads closest to your stack.

零頁接線( 有連接器宣佈的探測器)

就當你出事了OpsIQ連接器將您的身份端點儲存于其上 admin_identity_probe_url 設定中, PLAIN 加載器行是您需要的所有管理頁面: 元件從接通器中發現探測器, 用您站址的金鑰+部件代碼取用它, 並自動驗證每個管理員。 该頁面仍能用一個通訊器覆寫 。 data-identity-endpoint 屬性或 window.OpsIQAdminIdentityEndpoint.

💡
有簽名秘密被你取出 在相距地點中, 您的站點、 代碼和選擇 3在您手冊上簽署, 每一個例子已包含這個站點的自有秘密, 因此密碼可以被貼上: 沒有可以複製或設定的程式。 本頁面上的例子顯示( C) opsiq_whsec_YOUR_SITE_SECRET 就取而代之地找取出相當多的樣子 OPSIQ_SITE_SECRET (or your framework's own setting, named in its notes) on the server first and uses that when it is set, so you can move the secret out of the file whenever you want, for example to rotate it without editing code. Either way the file runs on your server only: never paste it into a web page or browser JavaScript, and never commit it to a public repository, because anyone holding the secret can sign in as any of your customers or staff. WHMCS and Botble need none of this: the WHMCS hook arrives with the secret filled in, and the Botble connector panel fills it into the bridge.

完整代碼, 按平台排列

有一例只印出已簽署的員工的"行政聊天"標籤,并加入已簽章;并回覆了元件的刷新 (A. C. C取:?opsiq_identity_refresh=1&role=admin有同 {"success":true,"identity_token":"…"} 或 401。遠端站點、您站地、 代碼、 選擇 3在您手冊上簽出同樣的密碼 有您所填入的地點鑰匙和秘密

⚠️
管理符是 二相分元: base64url (活口), at, 然后是六相 HMAC它不是 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,自訂應用程式) 而您的端點是一項獨立的檔案,

在拖曳前被捆住要求

您的服務提供商可能會解決 request 在被取回的活生生的活體中 第一件事就是被取入的活体被取出 Kernel::handle() -- 倒鏡取出: $app->instance('request', Request::capture()) 在前作 $kernel->bootstrap(), or you get "目標分類[要 并不存在".

會議- Cookie 前缀是HMAC有按鍵了

Modern Laravel prefixes cookie values with an HMAC computed WITH THE APP KEY (CookieValuePrefix(-平地 sha1(name."v2") can never match it. Strip with CookieValuePrefix::validate($name, $decrypted, $keys), with a structural fallback (40 hex chars + | at position 40). Tell: a session id longer than 40 chars (81 = prefix still attached) and a session that loads with only _token 在它。

登入所住地

公開印章是: login_<guard>_<sha1(guard class)> - 对于預設的網頁監控: 'login_web_' . sha1(Illuminate\Auth\SessionGuard::class)。掃描任意 login_* 有數字鍵能回落到自訂警衛上

就跟橋上一樣去除錯誤

船 a debug=1 模式取出失敗的 STEP 和例外的名稱- 有盲目接觸使活部署無法被預測。 Botble 橋 (取自 v1)0.7在內核/bind/bootstrap/decrypt/session/auth/db上是參考:步標。

Laravel = 完整身份端點 (副本, 設定兩個常數; 已完成)
<?php
/* identity endpoint · LARAVEL (Botble, Bagisto, any Laravel admin)
 * Drop this in your PUBLIC web root, e.g. /opsiq-identity.php
 * Answers: {"success":true,"authenticated":true,"admin":{...},"identity_token":"..."} */
define("OPSIQ_SITE_KEY", "SITE_KEY");
define("OPSIQ_SITE_SECRET", "opsiq_whsec_your_site_secret");   // Remote Sites → Codes

header("Content-Type: application/json");
$step = "boot";
try {
    require __DIR__ . "/../vendor/autoload.php";
    $app = require_once __DIR__ . "/../bootstrap/app.php";

    $step = "bind";
    // ORDER MATTERS: bind the request BEFORE bootstrapping, or providers that
    // resolve "request" during boot throw "Target class [request] does not exist".
    $request = Illuminate\Http\Request::capture();
    $app->instance("request", $request);

    $step = "bootstrap";
    $kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
    $kernel->bootstrap();

    $step = "session";
    $app["session"]->driver()->setId($request->cookie(config("session.cookie")));
    $app["session"]->driver()->start();

    $step = "auth";
    $user = auth()->guard("web")->user();   // use YOUR admin guard name
    if (!$user) {
        echo json_encode(["success" => false, "authenticated" => false, "error" => "no admin session"]);
        exit;
    }

    $step = "sign";
    $admin = [
        "id"            => (string)$user->id,
        "name"          => (string)($user->name ?? $user->username),
        "username"      => (string)($user->username ?? $user->email),
        "email"         => (string)$user->email,
        "role"          => (string)optional($user->roles->first())->name,
        "authenticated" => true,
    ];
    $payload = json_encode([
        "site_key"      => OPSIQ_SITE_KEY,
        "iat"           => time(),
        "exp"           => time() + 6 * 3600,
        "authenticated" => true,          // TOP LEVEL — required
        "platform"      => "laravel",
        "admin"         => $admin,
    ], JSON_UNESCAPED_SLASHES);
    $p64   = rtrim(strtr(base64_encode($payload), "+/", "-_"), "=");
    $token = $p64 . "." . hash_hmac("sha256", $p64, OPSIQ_SITE_SECRET);

    echo json_encode(["success" => true, "authenticated" => true,
                      "admin" => $admin, "identity_token" => $token]);
} catch (\Throwable $e) {
    // debug=1 names the failing STEP — never ship a blind catch-all
    $err = ($_GET["debug"] ?? "") === "1"
        ? get_class($e) . " at [" . $step . "]: " . $e->getMessage()
        : "identity unavailable";
    echo json_encode(["success" => false, "authenticated" => false, "error" => $err]);
}

在其它堆疊上同一個端點

有同樣的簽署區塊。 在伺服器上簽署, 從不入JavaScript.

WordPress · WHMCS^ symfony $平原 PHP-取而代之,保留簽名符號
<?php
/* The ONE helper every platform shares. Keep it verbatim. */
function opsiq_identity_token(array $admin, string $siteKey, string $secret, string $platform): string {
    $payload = json_encode([
        "site_key"      => $siteKey,
        "iat"           => time(),
        "exp"           => time() + 6 * 3600,
        "authenticated" => true,          // TOP LEVEL — OpsIQ refuses the token without it
        "platform"      => $platform,
        "admin"         => $admin + ["authenticated" => true],
    ], JSON_UNESCAPED_SLASHES);
    $p64 = rtrim(strtr(base64_encode($payload), "+/", "-_"), "=");
    return $p64 . "." . hash_hmac("sha256", $p64, $secret);
}

/* ── WORDPRESS ─────────────────────────────────────────────────────────── */
require_once ABSPATH . "wp-load.php";
if (!current_user_can("manage_options")) { /* not an admin → refuse */ }
$u = wp_get_current_user();
$admin = ["id" => (string)$u->ID, "name" => $u->display_name,
          "username" => $u->user_login, "email" => $u->user_email,
          "role" => implode(",", $u->roles)];

/* ── WHMCS (inside an addon/hook, admin area) ──────────────────────────── */
$aid = (int)($_SESSION["adminid"] ?? 0);
if ($aid <= 0) { /* not an admin → refuse */ }
$row = Capsule::table("tbladmins")->where("id", $aid)->first();
$admin = ["id" => (string)$row->id, "name" => trim($row->firstname . " " . $row->lastname),
          "username" => $row->username, "email" => $row->email, "role" => "administrator"];

/* ── SYMFONY ───────────────────────────────────────────────────────────── */
$u = $security->getUser();                    // Symfony\Bundle\SecurityBundle\Security
if (!$u) { /* not an admin → refuse */ }
$admin = ["id" => (string)$u->getId(), "name" => $u->getName(),
          "username" => $u->getUserIdentifier(), "email" => $u->getEmail(),
          "role" => implode(",", $u->getRoles())];

/* ── PLAIN PHP / your own app ──────────────────────────────────────────── */
session_start();
if (empty($_SESSION["admin_id"])) { /* not an admin → refuse */ }
$admin = ["id" => (string)$_SESSION["admin_id"], "name" => $_SESSION["admin_name"] ?? "",
          "username" => $_SESSION["admin_username"] ?? "", "email" => $_SESSION["admin_email"] ?? "",
          "role" => $_SESSION["admin_role"] ?? ""];

/* ── then, on EVERY stack ──────────────────────────────────────────────── */
$token = opsiq_identity_token($admin, "SITE_KEY", "opsiq_whsec_your_site_secret", "wordpress");
echo json_encode(["success" => true, "authenticated" => true,
                  "admin" => $admin, "identity_token" => $token]);

有時它不起作用 就按此顺序作一诊断

有相機就沒出自相機了 "需要簽名的署名身份證"

您的端點回回應了否 identity_token。開啟末端點URL在登入的管理瀏覽器中直接使用 &debug=1 在 Laravel 有相關的或相關取自克羅克文前置項目。

有歷史和相談相關 但每一次聊天都說出 “需要登入地點 ”

有相關分類 有相當多的分類被取出 authenticated 旗下- 元件自取端點接受符號, 在聊天流后被共享的驗證者拒絕了。 添加( C) "authenticated" => true beside exp.

"不提供入住"OpsIQ" (HTTP)401)

The token verified, but its username + email match no OpsIQ agent. Add the agent in OpsIQ → Team, or add the platform email to that agent's match-emails list when it differs from their OpsIQ email.

有事都做得到403s从瀏覽器中取出, 但能用卷曲相通

CORS 預飛已拒絕您所要的一個信頭。 您的端點必須回應 OPTIONS 并回應所要的來源, 或是只取自自訂的頭目相接- 部件只需要克勞克。

昨天出事了,今天出事取胜了

查看 exp: 指紋被設計為短命。 元件自動重檢測, 因此通常指結點已停止看到會話- 應用鍵旋轉、 會議干線變更或 cookie- domain 變更等 。

💡
管理元件會隱藏到身份解析, 而每個聊天/收件箱/ Data 呼叫被強制用於相對的伺服器端OpsIQ代理, 不管頁面所說出什麼。 符號可以解鎖 UI; 權限總是取自于OpsIQ.
發展者

訪客身份

有身份可以把匿名訪客接通到已知的相關人員中去 有身份可查后 OpsIQ 連接瀏覽歷史、聊天和客戶描述檔的票。

如何運作
訪客身份一流:用戶登入您網站后,您會發出已簽署的身份代碼,并 OpsIQ 將相關會議、聊天和入場券统一成一檔。使用者登入在您網站上有簽名符號identity_token (HMAC)一分頁sessions+ 聊天+出票
訪客身份

Two levels of identity, and when each is enough

等級1-- 有未簽署的提示

You tell the widget who the visitor is with a plain JavaScript object. It fills the email and customer id on the visitor log, so your dashboard shows signed-in traffic and sessions join up. It is a HINT: anyone can edit it in their browser, so OpsIQ never releases account data on the strength of it.

等級2有簽名的身份證件

您的伺服器用網站上的秘密簽署了一個短命的符號.OpsIQ檢查簽名并只將他當作被證實的客戶。 這是在客戶聊天和接通器搜尋中解鎖帳號回覆的關卡。 在陌生人所不能看到的東西上用取用它 。

⚠️
Level 1 is a display convenience. Level 2 is authentication. If a question can only be answered for the real account holder, you need Level 2.
💡
You do not have to write Level 2 by hand: Remote Sites → your site → Codes → C. Signed-in customers generates the signing code and the refresh handler for PHP, WordPress, Laravel, Node.js, Python, Django, .NET, Rails, Java and Go. The WHMCS hook and the Botble connector bridge already sign customers. Identity says who the customer is; their orders or bookings reach the chat through a connector (with a bridge file only when the platform has no API).

等級1-- 未簽署的提示

在元件文稿前設定物件, 在您的應用程式知道簽名后再呼叫 () 。 有兩個表單被讀取; 有相符合的用戶可以使用 。

JavaScript* 所支持的兩份表格
<!-- Form A: set the global before the loader -->
<script>
  window.OpsIQClient = {
    id:    "cust_1001",
    email: "[email protected]",
    name:  "Jane Smith",
    plan:  "pro"
  };
</script>
<script async src="https://YOUR-OPSIQ/widget.php?site_key=YOUR_SITE_KEY"></script>

<!-- Form B: identify later, e.g. after a client-side login -->
<script>
  window.opsiq.identify({
    id:    "cust_1001",
    email: "[email protected]",
    name:  "Jane Smith",
    plan:  "pro"
  });
</script>
⚠️
Only these forms are read: the window.OpsIQClient global, window.opsiqConfig.user, and window.opsiq.identify(). There is no OpsIQ.push(['identify', ...]) queue and no OpsIQClientSignature global — if you find either in an old note, it does nothing.

等級 2 — 由伺服器簽署的身份代碼

Exactly the same token contract as the admin widget, with a customer 有被取而代之的是: admin 一, 在您伺服器上簽署并傳送到元件上。 有兩項細節可以決定它是否被驗證, 而兩者都很容易出錯:

该HMAC有BASE64URL字串,不是JSON

簽名 $payload64有出息 $payload在 JSON 上簽署生產出一副外觀正確并被拒絕的符號相當不匹配 。

有基端64url, 未加入

翻譯 +/-_ 就把相片取出去 = 平地基64能活到今天 有地基 64.活到現在 有地由地基被收買了OpsIQ校正和參考接通器出局了.

在 TOP 等級被驗證

在外 site_key, iatexp有活人被登入并被取出OpsIQ有活兒就拒絕了取出

有需要的客戶. id

有收信人只收信被作簽名而默地放入了。 總要發出代碼 。

縮短解

Minutes to hours. The token is a session assertion, not a credential to store.

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>';
🚫
在伺服器上只簽署。 在瀏覽器中刻出一個代碼JavaScript就意味著把網站秘密傳給每個訪客 就讓任何人能冒充任何客戶了

The same contract, three surfaces

在您網站上聊天的客戶

customer subject, passed as identity_token to widget.php. Covered above. Optional: with snippet A and a connector the chat already verifies customers itself (a booking or order number with proof, or an emailed code before an order). Remote Sites, Codes, C generates the code for automatic recognition of customers already logged in on your site.

在后端內作管理聊天

有被管理人接通到opsiq/embed/admin_widget.php. 有同樣的簽名符號, 有同一個主題金鑰。 在您的后端有「 Admin 元件」 。

支援入門深層連接

A stricter variant: the same claims plus jti and single_use:true, and a 120-second life, because the token travels in a URL and must be spendable once. Do not hand-roll it. Settings, Support Portal has a ready snippet for your language, and the platform mints it for you when your account area runs on this server.

如果有客人能把餅干弄出手呢?+

在被重新辨認出之前 就變成了匿名人了OpsIQ有提示或指使物一到就把新的匿名記錄同客戶描述相連接.

有我的信號能查下訪客的記錄 但不能查賬?+

就叫"平相"1等級( C)2分拆。 有未簽署的提示可以填入訪客日志而沒有其他任何信息。 帳號回應需要被驗證的簽章 。

發展者

入站:每個平台的代碼

有名客戶已直接簽入您的應用程式, 就直接進入您的支援口, 在沒有第二個口令下簽署。 此頁解釋了交接的操作方式、 每個憑證中的相關申請、 設定和每個平台的完整路由等。 Sets, Support Portal 在您自己的通訊口地址和工作空間金鑰上印出同樣的密碼 。

如何運作

1
在您的應用程式中被用戶點擊相支援

The link points at a small route on YOUR server, for example /support-portal. Never at a link that already contains a token: a token in a page leaks through page source, browser history and the Referer header.

2
有路由檢查被簽署入名

它從您自己的會議中讀取了客戶。 有未簽署的訪客被先送入您的登入, 后再回通路口 。

3
有一次路由簽出一項指標

A standard HS256 JWT signed with this workspace's signing secret, which only your server holds. It expires after 120 seconds and can be used once.

4
路由被轉到通訊口

To the portal page the customer came from when the portal asked for one (opsiq_portal_return, accepted only inside your portal address), otherwise the portal home. The response carries Referrer-Policy: no-referrer and Cache-Control: no-store.

5
有相關的通訊口能被檢查并簽署入內

檢查簽名、 工作空間金鑰、 到期及一次性代碼。 有郵件可以找到或建立客戶, 而他們的已取用的要求也相配了 。

有名可起的相

site_key

您的工作位鍵。 为另一個工作位所制作的簽署符號被拒絕了, 即使它被簽署得正確 。

iat/ exp

就已出發并已到期,以秒為一。 120 二: 它只得活到一轉向。

已驗證: 是真的

你的應用程式上寫了 它真的把這人簽了入了 要求了 在最上層

jti + single_use: 真

有隨機代碼和一回旗子。 無法再用同樣的連接符 。

平台

A free label for where the customer came from (php, wordpress, whmcs…). Shown in the customer's profile.

有客人. 有客人出名了 有郵件了

二人需要。 id是您應用程式的客戶代碼; 電子郵件是通訊口如何找到客戶并符合他們的要求的 。

客戶. name/ external_id

可選擇的顯示名稱和代碼 OpsIQ 在你的站台上放入商店.

設定

1
复制路由

設定、 支援 Portal 、 从您的應用程式接通了 。 請選擇您應用相關的程式所執行的功能; 清單下方的密碼有您所填入的出入口位址和工作空間金鑰, 有該平台的已編入的備份 。

2
有秘密就已出自密碼了

The copied route contains this workspace's signing secret, so it works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET (or your framework's setting) on the server instead: that value is used first. Never put the route in a page, JavaScript, a mobile app or a public repository: anyone holding the secret can sign in as any customer.

3
將您的支援按鍵連接到路由

如 https://your-app.com/support-portal.

4
在按鈕中做出入口的簽名用您的應用程式

口站台 簽名頁面 使用我網站的登入頁面 您的登出頁面 URL: 在同一條路由中設定它。 通路口已新增 opsiq_portal_return 就由自己去接通了 就把客戶帶回了那一頁 就簽了名了

5
有可選: 在任何地方都簽名出道

設定、 支援口號, 在任何地方簽署: 您的應用程式已簽署 URL因此出入口也出自你的應用程式

6
測試

在同樣的設定頁面上產生簽署的測試連接以單獨檢查出入口一邊, 然后在簽入您的應用程式后開啟您的路由 。

WHMCS 不需要代碼: WHMCS 遠端站台已將客戶端簽署入出入口并帶回所登入的頁面。
💡
有簽名秘密被你取出 在設定、 支援 Portal 和 从您的應用程式接通的收件中, 有每個例已包含此站點自有的秘密, 因此密碼可以被貼上: 沒有可以複製或配置的。 有這個頁面顯示的例 opsiq_whsec_YOUR_SITE_SECRET 就取而代之地找取出相當多的樣子 OPSIQ_SITE_SECRET (or your framework's own setting, named in its notes) on the server first and uses that when it is set, so you can move the secret out of the file whenever you want, for example to rotate it without editing code. Either way the file runs on your server only: never paste it into a web page or browser JavaScript, and never commit it to a public repository, because anyone holding the secret can sign in as any of your customers or staff. WHMCS and Botble need none of this: the WHMCS hook arrives with the secret filled in, and the Botble connector panel fills it into the bridge.

有通通路, 有通站台相通

OpsIQ server (self-hosted)

1

For a self-hosted OpsIQ: the route runs on your own OpsIQ server, so there is no secret to copy. OpsIQ reads this workspace's signing secret itself.

2

Save it as a page on that server, e.g. support-portal.php, and point your "Support" link at it.

3

Replace the body of $currentUser so it returns your signed-in customer (id, email, name), or null for a guest, and /login with your login page.

OpsIQ server (self-hosted)
/* OpsIQ server (self-hosted) — save as e.g. support-portal.php on your OpsIQ
 * server and link your "Support" button to it. OpsIQ reads the workspace's
 * signing secret itself, so there is nothing secret to copy. */

if (!function_exists('opsiq_portal_signed_url_for_site')) {
    require_once '/path/to/opsiq/opsiq/opsiq.portal_identity.php';
}

// 1. WHO IS SIGNED IN — replace the body. Return null for a guest.
$currentUser = static function (): ?array {
    $u = $_SESSION['user'] ?? null;
    return is_array($u) && !empty($u['id']) && !empty($u['email']) ? $u : null;
};
$user = $currentUser();
if (!$user) {
    header('Location: /login?return=' . urlencode($_SERVER['REQUEST_URI'] ?? '/'), true, 302);
    exit;
}

// 2. WHERE TO LAND — the portal page they came from, only if it is on the portal.
$portal = 'https://YOUR-OPSIQ/portal/your-workspace';
$back   = preg_replace('/#.*$/', '', (string)($_GET['opsiq_portal_return'] ?? ''));
$target = ($back === $portal || strpos($back, $portal . '/') === 0 || strpos($back, $portal . '?') === 0)
    ? $back : $portal;

// 3. MINT a one-time link (120 s) for this workspace.
$url = opsiq_portal_signed_url_for_site($target, 'YOUR_SITE_KEY', [
    'id'    => $user['id'],        // REQUIRED
    'email' => $user['email'],     // REQUIRED
    'name'  => $user['name'] ?? '',
], 120);
if (!$url) {
    http_response_code(503);       // fail closed: never send a customer to a guessed address
    exit('Support portal is not configured yet.');
}

header('Referrer-Policy: no-referrer');   // the token is in the URL
header('Cache-Control: no-store');
header('Location: ' . $url, true, 302);
exit;

PHP (no dependencies)

1

Save the snippet as a page in your app, e.g. support-portal.php.

2

This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in the environment (hosting panel, .env or SetEnv) on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

3

Replace the body of $currentUser with your app's signed-in customer, and /login with your login page.

PHP (no dependencies)
/* support-portal.php — a redirect route in your own app.
 * Mint at CLICK time: a token baked into an href leaks through page source,
 * browser history and the Referer header. */

// 1. WHO IS SIGNED IN — replace the body with your app's own session. Return null for a guest.
$currentUser = static function (): ?array {
    $u = $_SESSION['user'] ?? null;            // e.g. ['id' => 7, 'email' => '…', 'name' => '…']
    return is_array($u) && !empty($u['id']) && !empty($u['email']) ? $u : null;
};
$user = $currentUser();
if (!$user) {                                  // a guest: sign in first, then come back here
    header('Location: /login?return=' . urlencode($_SERVER['REQUEST_URI'] ?? '/'), true, 302);
    exit;
}

// 2. THE SECRET — server-side only. Fail closed without it.
$secret = (string) (getenv('OPSIQ_SITE_SECRET') ?: 'opsiq_whsec_YOUR_SITE_SECRET');   // this site's secret; the environment wins when set
if ($secret === '') { http_response_code(503); exit('Support portal is not configured.'); }

// 3. WHERE TO LAND — the portal page they came from, only if it is on the portal.
$portal = 'https://YOUR-OPSIQ/portal/your-workspace';
$back   = preg_replace('/#.*$/', '', (string)($_GET['opsiq_portal_return'] ?? ''));
$target = ($back === $portal || strpos($back, $portal . '/') === 0 || strpos($back, $portal . '?') === 0)
    ? $back : $portal;

// 4. MINT the token (standard HS256 JWT).
$b64 = static function ($v) {
    return rtrim(strtr(base64_encode(json_encode($v, JSON_UNESCAPED_SLASHES)), '+/', '-_'), '=');
};
$now = time();
$signing = $b64(['alg' => 'HS256', 'typ' => 'JWT']) . '.' . $b64([
    'site_key'      => 'YOUR_SITE_KEY',
    'iat'           => $now,
    'exp'           => $now + 120,                // URL-borne tokens live ~2 minutes
    'authenticated' => true,
    'jti'           => bin2hex(random_bytes(16)),
    'single_use'    => true,                      // one-time link; replay is refused
    'platform'      => 'php',
    'customer'      => [
        'id'          => $user['id'],             // REQUIRED
        'email'       => $user['email'],          // REQUIRED
        'name'        => $user['name'] ?? '',
        'external_id' => (string) $user['id'],
    ],
]);
$token = $signing . '.' . rtrim(strtr(base64_encode(hash_hmac('sha256', $signing, $secret, true)), '+/', '-_'), '=');

// 5. GO. The default is https://YOUR-OPSIQ/portal/your-workspace?site_key=YOUR_SITE_KEY&identity_token=…
$url = $target . (strpos($target, '?') === false ? '?' : '&')
     . 'site_key=' . rawurlencode('YOUR_SITE_KEY') . '&identity_token=' . rawurlencode($token);
header('Referrer-Policy: no-referrer');       // the token is in the URL
header('Cache-Control: no-store');
header('Location: ' . $url, true, 302);
exit;

Laravel

1

Run: composer require firebase/php-jwt

2

This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET=… in .env with 'opsiq' => ['site_secret' => env('OPSIQ_SITE_SECRET')] in config/services.php on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

3

Paste the route into routes/web.php. The auth middleware sends guests to your login and back.

Laravel
/* routes/web.php — composer require firebase/php-jwt
 * Link customers to  route('support.portal') */

Route::get('/support-portal', function (\Illuminate\Http\Request $request) {
    $user   = $request->user();                                   // guaranteed by ->middleware('auth')
    $secret = (string) (config('services.opsiq.site_secret') ?: 'opsiq_whsec_YOUR_SITE_SECRET');   // this site's secret; config wins when set
    abort_if($secret === '', 503, 'Support portal is not configured.');   // fail closed

    // Where to land: the portal page they came from, only if it is on the portal.
    $portal = 'https://YOUR-OPSIQ/portal/your-workspace';
    $back   = preg_replace('/#.*$/', '', (string) $request->query('opsiq_portal_return', ''));
    $target = ($back === $portal || str_starts_with($back, $portal . '/') || str_starts_with($back, $portal . '?'))
        ? $back : $portal;

    $now   = time();
    $token = \Firebase\JWT\JWT::encode([
        'site_key'      => 'YOUR_SITE_KEY',
        'iat'           => $now,
        'exp'           => $now + 120,
        'authenticated' => true,
        'jti'           => bin2hex(random_bytes(16)),
        'single_use'    => true,
        'platform'      => 'laravel',
        'customer'      => [
            'id'          => $user->id,          // REQUIRED
            'email'       => $user->email,       // REQUIRED
            'name'        => $user->name,
            'external_id' => (string) $user->id,
        ],
    ], $secret, 'HS256');

    // Default target: https://YOUR-OPSIQ/portal/your-workspace?site_key=YOUR_SITE_KEY&identity_token=…
    $url = $target . (str_contains($target, '?') ? '&' : '?')
         . 'site_key=' . rawurlencode('YOUR_SITE_KEY') . '&identity_token=' . rawurlencode($token);

    return redirect()->away($url)
        ->header('Referrer-Policy', 'no-referrer')
        ->header('Cache-Control', 'no-store');
})->middleware('auth')->name('support.portal');

WordPress

1

This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, add define('OPSIQ_SITE_SECRET', '…'); to wp-config.php, above "That's all, stop editing", instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

Paste the snippet into your theme's functions.php, or a small plugin (Code Snippets works).

3

Create an empty page with the slug support-portal and link your "Support" menu item to it. Guests are sent to wp-login and back.

WordPress
/* functions.php, or a small plugin. Create an empty page with the slug
 * "support-portal" and link customers to it. */

add_action('template_redirect', function () {
    if (!is_page('support-portal')) return;
    if (!is_user_logged_in()) { auth_redirect(); }                 // login, then back here

    $secret = defined('OPSIQ_SITE_SECRET') ? OPSIQ_SITE_SECRET : 'opsiq_whsec_YOUR_SITE_SECRET';   // this site's secret; wp-config.php wins when set
    if ($secret === '') wp_die('Support portal is not configured.', '', ['response' => 503]);   // fail closed

    // Where to land: the portal page they came from, only if it is on the portal.
    $portal = 'https://YOUR-OPSIQ/portal/your-workspace';
    $back   = preg_replace('/#.*$/', '', isset($_GET['opsiq_portal_return']) ? wp_unslash((string) $_GET['opsiq_portal_return']) : '');
    $target = ($back === $portal || strpos($back, $portal . '/') === 0 || strpos($back, $portal . '?') === 0)
        ? $back : $portal;

    $user = wp_get_current_user();
    $b64  = static function ($v) {
        return rtrim(strtr(base64_encode(wp_json_encode($v)), '+/', '-_'), '=');
    };
    $now     = time();
    $signing = $b64(['alg' => 'HS256', 'typ' => 'JWT']) . '.' . $b64([
        'site_key'      => 'YOUR_SITE_KEY',
        'iat'           => $now,
        'exp'           => $now + 120,
        'authenticated' => true,
        'jti'           => bin2hex(random_bytes(16)),
        'single_use'    => true,
        'platform'      => 'wordpress',
        'customer'      => [
            'id'          => $user->ID,              // REQUIRED
            'email'       => $user->user_email,      // REQUIRED
            'name'        => $user->display_name,
            'external_id' => (string) $user->ID,
        ],
    ]);
    $token = $signing . '.' . rtrim(strtr(base64_encode(hash_hmac('sha256', $signing, $secret, true)), '+/', '-_'), '=');

    // Default target: https://YOUR-OPSIQ/portal/your-workspace?site_key=YOUR_SITE_KEY&identity_token=…
    $url = $target . (strpos($target, '?') === false ? '?' : '&')
         . 'site_key=' . rawurlencode('YOUR_SITE_KEY') . '&identity_token=' . rawurlencode($token);
    nocache_headers();
    header('Cache-Control: no-store');
    header('Referrer-Policy: no-referrer');
    wp_redirect($url, 302);                                       // wp_redirect, not wp_safe_redirect: the portal is another host
    exit;
});

WHMCS

Already using the OpsIQ WHMCS hook from Sites (includes/hooks/opsiq_tracker.php)? It already signs your customers into the portal and brings them back to the page they were on, so you do not need this snippet. Just set Portal Studio → Sign-in page → Your login page URL to your WHMCS client area login. Use the code below only if you are not installing that hook.
1

Save part 1 as opsiq_support.php in your WHMCS root (next to clientarea.php).

2

This site's signing secret is already filled in, so the code works as pasted. To keep it out of the hook, set $opsiq_site_secret = '…'; in configuration.php instead: that value is used first. Keep this file on the server and never commit it to a public repository.

3

Save part 2 as includes/hooks/opsiq_support_link.php to add Support to the client-area menu.

WHMCS
/* Two files you own — no OpsIQ module, nothing to keep updated.
 *
 * 1) Save this part as  opsiq_support.php  in your WHMCS root. */

require __DIR__ . '/init.php';

$ca = new WHMCS\ClientArea();
$ca->initPage();
$ca->requireLogin();                                         // login, then back here

$secret = '';
if (is_file(__DIR__ . '/configuration.php')) {
    include __DIR__ . '/configuration.php';                  // defines $opsiq_site_secret
    $secret = isset($opsiq_site_secret) ? (string) $opsiq_site_secret : 'opsiq_whsec_YOUR_SITE_SECRET';   // this site's secret; configuration.php wins when set
}
if ($secret === '') { http_response_code(503); exit('Support portal is not configured.'); }   // fail closed

// Where to land: the portal page they came from, only if it is on the portal.
$portal = 'https://YOUR-OPSIQ/portal/your-workspace';
$back   = preg_replace('/#.*$/', '', (string)($_GET['opsiq_portal_return'] ?? ''));
$target = ($back === $portal || strpos($back, $portal . '/') === 0 || strpos($back, $portal . '?') === 0)
    ? $back : $portal;

$uid    = (int) $ca->getUserID();
$client = localAPI('GetClientsDetails', ['clientid' => $uid]);

$b64 = static function ($v) {
    return rtrim(strtr(base64_encode(json_encode($v, JSON_UNESCAPED_SLASHES)), '+/', '-_'), '=');
};
$now     = time();
$signing = $b64(['alg' => 'HS256', 'typ' => 'JWT']) . '.' . $b64([
    'site_key'      => 'YOUR_SITE_KEY',
    'iat'           => $now,
    'exp'           => $now + 120,
    'authenticated' => true,
    'jti'           => bin2hex(random_bytes(16)),
    'single_use'    => true,
    'platform'      => 'whmcs',
    'customer'      => [
        'id'          => $uid,                       // REQUIRED
        'email'       => $client['email'] ?? '',     // REQUIRED
        'name'        => trim(($client['firstname'] ?? '') . ' ' . ($client['lastname'] ?? '')),
        'external_id' => (string) $uid,
    ],
]);
$token = $signing . '.' . rtrim(strtr(base64_encode(hash_hmac('sha256', $signing, $secret, true)), '+/', '-_'), '=');

// Default target: https://YOUR-OPSIQ/portal/your-workspace?site_key=YOUR_SITE_KEY&identity_token=…
$url = $target . (strpos($target, '?') === false ? '?' : '&')
     . 'site_key=' . rawurlencode('YOUR_SITE_KEY') . '&identity_token=' . rawurlencode($token);
header('Referrer-Policy: no-referrer');
header('Cache-Control: no-store');
header('Location: ' . $url, true, 302);
exit;

/* 2) And this part as  includes/hooks/opsiq_support_link.php  to put a
 *    Support entry in the client-area navbar:
 *
 *    add_hook('ClientAreaPrimaryNavbar', 1, function ($navbar) {
 *        $navbar->addChild('opsiqSupport', [
 *            'label' => 'Support',
 *            'uri'   => 'opsiq_support.php',
 *            'order' => 60,
 *        ]);
 *    });
 */

Node.js / Express

1

Run: npm i jsonwebtoken

2

This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in the environment (.env with dotenv, or your host's settings) on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

3

Paste the route after your session / passport setup. Change /login if your login page lives elsewhere.

Node.js / Express
// npm i jsonwebtoken
const jwt = require("jsonwebtoken");
const crypto = require("crypto");

const PORTAL = "https://YOUR-OPSIQ/portal/your-workspace";
const onPortal = (u) => u === PORTAL || u.startsWith(PORTAL + "/") || u.startsWith(PORTAL + "?");

app.get("/support-portal", (req, res) => {
  const user = req.user;                                  // set by your session / passport
  if (!user) return res.redirect("/login?next=" + encodeURIComponent(req.originalUrl));

  const secret = process.env.OPSIQ_SITE_SECRET || "opsiq_whsec_YOUR_SITE_SECRET";   // this site's secret; the environment wins when set
  if (!secret) return res.status(503).send("Support portal is not configured.");   // fail closed

  // Where to land: the portal page they came from, only if it is on the portal.
  const back = String(req.query.opsiq_portal_return || "").replace(/#.*$/, "");
  const target = onPortal(back) ? back : PORTAL;

  const token = jwt.sign({
    site_key: "YOUR_SITE_KEY",
    authenticated: true,
    jti: crypto.randomBytes(16).toString("hex"),
    single_use: true,                                     // one-time link
    platform: "node",
    customer: {
      id: user.id,                                        // REQUIRED
      email: user.email,                                  // REQUIRED
      name: user.name,
      external_id: String(user.id),
    },
  }, secret, { algorithm: "HS256", expiresIn: 120 });     // sets iat + exp

  // Default target: https://YOUR-OPSIQ/portal/your-workspace?site_key=YOUR_SITE_KEY&identity_token=…
  const url = target + (target.includes("?") ? "&" : "?")
    + "site_key=" + encodeURIComponent("YOUR_SITE_KEY") + "&identity_token=" + encodeURIComponent(token);
  res.set("Referrer-Policy", "no-referrer").set("Cache-Control", "no-store").redirect(302, url);
});

Node.js (no dependencies)

1

No packages needed. This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in the environment on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

Replace currentUser() with your app's signed-in customer, then call supportPortal(req, res) for GET /support-portal in your server.

Node.js (no dependencies)
// No packages needed — Node's own crypto is enough.
const crypto = require("crypto");

const PORTAL = "https://YOUR-OPSIQ/portal/your-workspace";
const b64 = (obj) => Buffer.from(JSON.stringify(obj)).toString("base64url");

// 1. WHO IS SIGNED IN — replace with your app's session lookup. Return null for a guest.
function currentUser(req) {
  return req.user || null;                                // { id, email, name }
}

// GET /support-portal
function supportPortal(req, res) {
  const here = new URL(req.url, "http://local");
  const user = currentUser(req);
  if (!user) {                                            // a guest: sign in first, then come back
    res.writeHead(302, { Location: "/login?next=" + encodeURIComponent(req.url) });
    return res.end();
  }
  const secret = process.env.OPSIQ_SITE_SECRET || "opsiq_whsec_YOUR_SITE_SECRET";   // this site's secret; the environment wins when set
  if (!secret) { res.writeHead(503); return res.end("Support portal is not configured."); }

  // Where to land: the portal page they came from, only if it is on the portal.
  const back = (here.searchParams.get("opsiq_portal_return") || "").replace(/#.*$/, "");
  const target = (back === PORTAL || back.startsWith(PORTAL + "/") || back.startsWith(PORTAL + "?")) ? back : PORTAL;

  const now = Math.floor(Date.now() / 1000);
  const signing = b64({ alg: "HS256", typ: "JWT" }) + "." + b64({
    site_key: "YOUR_SITE_KEY",
    iat: now,
    exp: now + 120,
    authenticated: true,
    jti: crypto.randomBytes(16).toString("hex"),
    single_use: true,
    platform: "node",
    customer: { id: user.id, email: user.email, name: user.name, external_id: String(user.id) },
  });
  const token = signing + "." + crypto.createHmac("sha256", secret).update(signing).digest("base64url");

  // Default target: https://YOUR-OPSIQ/portal/your-workspace?site_key=YOUR_SITE_KEY&identity_token=…
  const url = target + (target.includes("?") ? "&" : "?")
    + "site_key=" + encodeURIComponent("YOUR_SITE_KEY") + "&identity_token=" + encodeURIComponent(token);
  res.writeHead(302, { Location: url, "Referrer-Policy": "no-referrer", "Cache-Control": "no-store" });
  res.end();
}

Python (Flask / FastAPI)

1

Run: pip install pyjwt (the Flask example also uses flask-login).

2

This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in the environment on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

3

Paste into the module that creates your app. @login_required sends guests to your login view and back.

Python (Flask / FastAPI)
# pip install pyjwt flask-login
import os, secrets, time, urllib.parse
import jwt
from flask import request, redirect, abort
from flask_login import login_required, current_user

PORTAL = "https://YOUR-OPSIQ/portal/your-workspace"

def portal_link(user, back=""):
    secret = os.environ.get("OPSIQ_SITE_SECRET") or "opsiq_whsec_YOUR_SITE_SECRET"   # this site's secret; the environment wins when set
    if not secret:
        abort(503, "Support portal is not configured.")     # fail closed
    back = back.split("#", 1)[0]
    target = back if (back == PORTAL or back.startswith(PORTAL + "/") or back.startswith(PORTAL + "?")) else PORTAL
    now = int(time.time())
    token = jwt.encode({
        "site_key": "YOUR_SITE_KEY",
        "iat": now,
        "exp": now + 120,                                   # URL-borne: ~2 minutes
        "authenticated": True,
        "jti": secrets.token_hex(16),
        "single_use": True,                                 # one-time link
        "platform": "python",
        "customer": {
            "id": user.id,                                  # REQUIRED
            "email": user.email,                            # REQUIRED
            "name": getattr(user, "name", ""),
            "external_id": str(user.id),
        },
    }, secret, algorithm="HS256")
    # Default target: https://YOUR-OPSIQ/portal/your-workspace?site_key=YOUR_SITE_KEY&identity_token=…
    return (target + ("&" if "?" in target else "?")
            + "site_key=" + urllib.parse.quote("YOUR_SITE_KEY", safe="")
            + "&identity_token=" + urllib.parse.quote(token, safe=""))

@app.route("/support-portal")
@login_required
def support_portal():
    resp = redirect(portal_link(current_user, request.args.get("opsiq_portal_return", "")), code=302)
    resp.headers["Referrer-Policy"] = "no-referrer"
    resp.headers["Cache-Control"] = "no-store"
    return resp

Django

1

Run: pip install pyjwt

2

This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in settings.py (for example os.environ["OPSIQ_SITE_SECRET"]) on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

3

Paste the view into views.py and add path("support-portal/", views.support_portal) to urls.py. @login_required sends guests to LOGIN_URL and back.

Django
# pip install pyjwt   —   urls.py: path("support-portal/", views.support_portal)
import secrets, time, urllib.parse
import jwt
from django.conf import settings
from django.contrib.auth.decorators import login_required
from django.http import HttpResponse, HttpResponseRedirect

PORTAL = "https://YOUR-OPSIQ/portal/your-workspace"

@login_required
def support_portal(request):
    secret = getattr(settings, "OPSIQ_SITE_SECRET", "") or "opsiq_whsec_YOUR_SITE_SECRET"   # this site's secret; settings win when set
    if not secret:                                       # fail closed
        return HttpResponse("Support portal is not configured.", status=503)

    # Where to land: the portal page they came from, only if it is on the portal.
    back = request.GET.get("opsiq_portal_return", "").split("#", 1)[0]
    target = back if (back == PORTAL or back.startswith(PORTAL + "/") or back.startswith(PORTAL + "?")) else PORTAL

    now = int(time.time())
    token = jwt.encode({
        "site_key": "YOUR_SITE_KEY",
        "iat": now,
        "exp": now + 120,
        "authenticated": True,
        "jti": secrets.token_hex(16),
        "single_use": True,
        "platform": "django",
        "customer": {
            "id": request.user.pk,                        # REQUIRED
            "email": request.user.email,                  # REQUIRED
            "name": request.user.get_full_name(),
            "external_id": str(request.user.pk),
        },
    }, secret, algorithm="HS256")

    # Default target: https://YOUR-OPSIQ/portal/your-workspace?site_key=YOUR_SITE_KEY&identity_token=…
    url = (target + ("&" if "?" in target else "?")
           + "site_key=" + urllib.parse.quote("YOUR_SITE_KEY", safe="")
           + "&identity_token=" + urllib.parse.quote(token, safe=""))
    resp = HttpResponseRedirect(url)
    resp["Referrer-Policy"] = "no-referrer"
    resp["Cache-Control"] = "no-store"
    return resp

.NET / C#

1

Run: dotnet add package System.IdentityModel.Tokens.Jwt

2

This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OpsIQ:SiteSecret (user-secrets, the OpsIQ__SiteSecret environment variable or Key Vault) on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

3

Paste into Program.cs after app.UseAuthentication(). RequireAuthorization() sends guests to your login and back.

.NET / C#
// dotnet add package System.IdentityModel.Tokens.Jwt   —   Program.cs
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using System.Text;
using Microsoft.IdentityModel.Tokens;

const string Portal = "https://YOUR-OPSIQ/portal/your-workspace";

app.MapGet("/support-portal", (HttpContext ctx, IConfiguration cfg) =>
{
    var secret = cfg["OpsIQ:SiteSecret"];
    if (string.IsNullOrEmpty(secret)) secret = "opsiq_whsec_YOUR_SITE_SECRET";   // this site's secret; configuration wins when set
    if (string.IsNullOrEmpty(secret))                     // fail closed
        return Results.StatusCode(503);

    var id    = ctx.User.FindFirstValue(ClaimTypes.NameIdentifier) ?? "";   // REQUIRED
    var email = ctx.User.FindFirstValue(ClaimTypes.Email) ?? "";            // REQUIRED
    var name  = ctx.User.Identity?.Name ?? "";

    // Where to land: the portal page they came from, only if it is on the portal.
    var back = (ctx.Request.Query["opsiq_portal_return"].ToString()).Split('#')[0];
    var target = (back == Portal || back.StartsWith(Portal + "/") || back.StartsWith(Portal + "?")) ? back : Portal;

    var key   = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secret));
    var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
    var now   = DateTimeOffset.UtcNow;
    var payload = new JwtPayload
    {
        { "site_key",      "YOUR_SITE_KEY" },
        { "iat",           now.ToUnixTimeSeconds() },
        { "exp",           now.AddSeconds(120).ToUnixTimeSeconds() },
        { "authenticated", true },
        { "jti",           Guid.NewGuid().ToString("N") },
        { "single_use",    true },
        { "platform",      "dotnet" },
        { "customer", new Dictionary<string, object>
            { { "id", id }, { "email", email }, { "name", name }, { "external_id", id } } },
    };
    var token = new JwtSecurityTokenHandler().WriteToken(new JwtSecurityToken(new JwtHeader(creds), payload));

    // Default target: https://YOUR-OPSIQ/portal/your-workspace?site_key=YOUR_SITE_KEY&identity_token=…
    var url = target + (target.Contains('?') ? "&" : "?")
        + "site_key=" + Uri.EscapeDataString("YOUR_SITE_KEY") + "&identity_token=" + Uri.EscapeDataString(token);
    ctx.Response.Headers["Referrer-Policy"] = "no-referrer";
    ctx.Response.Headers["Cache-Control"] = "no-store";
    return Results.Redirect(url);
}).RequireAuthorization();

Ruby on Rails

1

Add gem "jwt" to the Gemfile and run bundle install.

2

This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in the environment (or Rails credentials) on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

3

Save as app/controllers/support_controller.rb and add get "/support-portal", to: "support#portal" to routes.rb. Devise's authenticate_user! sends guests to login and back.

Ruby on Rails
# Gemfile: gem "jwt"   —   routes.rb: get "/support-portal", to: "support#portal"
require "jwt"
require "securerandom"
require "cgi"

class SupportController < ApplicationController
  before_action :authenticate_user!                      # login, then back here

  PORTAL = "https://YOUR-OPSIQ/portal/your-workspace"

  def portal
    secret = ENV["OPSIQ_SITE_SECRET"].presence || "opsiq_whsec_YOUR_SITE_SECRET"   # this site's secret; the environment wins when set
    return head :service_unavailable if secret.blank?    # fail closed

    # Where to land: the portal page they came from, only if it is on the portal.
    back = params[:opsiq_portal_return].to_s.split("#").first.to_s
    target = (back == PORTAL || back.start_with?(PORTAL + "/", PORTAL + "?")) ? back : PORTAL

    now = Time.now.to_i
    token = JWT.encode({
      site_key:      "YOUR_SITE_KEY",
      iat:           now,
      exp:           now + 120,
      authenticated: true,
      jti:           SecureRandom.hex(16),
      single_use:    true,
      platform:      "rails",
      customer: {
        id:          current_user.id,                    # REQUIRED
        email:       current_user.email,                 # REQUIRED
        name:        current_user.try(:name).to_s,
        external_id: current_user.id.to_s
      }
    }, secret, "HS256")

    # Default target: https://YOUR-OPSIQ/portal/your-workspace?site_key=YOUR_SITE_KEY&identity_token=…
    url = target + (target.include?("?") ? "&" : "?") +
          "site_key=#{CGI.escape("YOUR_SITE_KEY")}&identity_token=#{CGI.escape(token)}"
    response.headers["Referrer-Policy"] = "no-referrer"
    response.headers["Cache-Control"] = "no-store"
    redirect_to url, allow_other_host: true
  end
end

Java (Spring Boot)

1

Add io.jsonwebtoken:jjwt-api, jjwt-impl and jjwt-jackson (0.12+).

2

This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set opsiq.site.secret in application.properties (for example from OPSIQ_SITE_SECRET) on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

3

Replace currentUser() with your user lookup. With Spring Security the route must be authenticated so guests go to login and back.

Java (Spring Boot)
// io.jsonwebtoken:jjwt-api / jjwt-impl / jjwt-jackson (0.12+)
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.security.Keys;
import jakarta.servlet.http.HttpServletResponse;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.security.Principal;
import java.time.Instant;
import java.util.*;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.server.ResponseStatusException;
import org.springframework.web.servlet.view.RedirectView;

@Controller
public class SupportPortalController {
    private static final String PORTAL = "https://YOUR-OPSIQ/portal/your-workspace";

    @Value("${opsiq.site.secret:opsiq_whsec_YOUR_SITE_SECRET}")   // this site's secret; opsiq.site.secret wins when set
    private String secret;

    /** WHO IS SIGNED IN — replace with your own lookup: id, email, name. */
    private Map<String, Object> currentUser(Principal principal) {
        return Map.of("id", principal.getName(), "email", principal.getName(), "name", principal.getName());
    }

    @GetMapping("/support-portal")
    public RedirectView supportPortal(Principal principal, HttpServletResponse response,
                                      @RequestParam(name = "opsiq_portal_return", defaultValue = "") String back) {
        if (principal == null) return new RedirectView("/login");               // login, then back here
        if (secret.isEmpty()) throw new ResponseStatusException(HttpStatus.SERVICE_UNAVAILABLE);   // fail closed

        // Where to land: the portal page they came from, only if it is on the portal.
        back = back.split("#", 2)[0];
        String target = (back.equals(PORTAL) || back.startsWith(PORTAL + "/") || back.startsWith(PORTAL + "?")) ? back : PORTAL;

        Map<String, Object> user = currentUser(principal);
        Map<String, Object> customer = Map.of(
            "id",          user.get("id"),                 // REQUIRED
            "email",       user.get("email"),              // REQUIRED
            "name",        user.get("name"),
            "external_id", String.valueOf(user.get("id")));

        Instant now = Instant.now();
        String token = Jwts.builder()
            .claim("site_key", "YOUR_SITE_KEY")
            .claim("authenticated", true)
            .claim("single_use", true)                     // one-time link
            .claim("platform", "java")
            .claim("customer", customer)
            .id(UUID.randomUUID().toString())              // jti
            .issuedAt(Date.from(now))
            .expiration(Date.from(now.plusSeconds(120)))
            .signWith(Keys.hmacShaKeyFor(secret.getBytes(StandardCharsets.UTF_8)), Jwts.SIG.HS256)
            .compact();

        // Default target: https://YOUR-OPSIQ/portal/your-workspace?site_key=YOUR_SITE_KEY&identity_token=…
        String url = target + (target.contains("?") ? "&" : "?")
            + "site_key=" + URLEncoder.encode("YOUR_SITE_KEY", StandardCharsets.UTF_8)
            + "&identity_token=" + URLEncoder.encode(token, StandardCharsets.UTF_8);
        response.setHeader("Referrer-Policy", "no-referrer");
        response.setHeader("Cache-Control", "no-store");
        return new RedirectView(url);
    }
}

Go

1

Run: go get github.com/golang-jwt/jwt/v5

2

This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in the environment on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

3

Replace currentUser() with your session lookup and register http.HandleFunc("/support-portal", supportPortal).

Go
// go get github.com/golang-jwt/jwt/v5
package main

import (
    "crypto/rand"
    "encoding/hex"
    "fmt"
    "net/http"
    "net/url"
    "os"
    "strings"
    "time"

    "github.com/golang-jwt/jwt/v5"
)

const portal = "https://YOUR-OPSIQ/portal/your-workspace"

type User struct{ ID, Email, Name string }

// WHO IS SIGNED IN — replace with your session lookup. Return nil for a guest.
func currentUser(r *http.Request) *User { return nil }

func supportPortal(w http.ResponseWriter, r *http.Request) {
    user := currentUser(r)
    if user == nil { // login, then back here
        http.Redirect(w, r, "/login?next="+url.QueryEscape(r.URL.RequestURI()), http.StatusFound)
        return
    }
    secret := os.Getenv("OPSIQ_SITE_SECRET")
    if secret == "" {
        secret = "opsiq_whsec_YOUR_SITE_SECRET" // this site's secret; the environment wins when set
    }
    if secret == "" { // fail closed
        http.Error(w, "Support portal is not configured.", http.StatusServiceUnavailable)
        return
    }

    // Where to land: the portal page they came from, only if it is on the portal.
    back := strings.SplitN(r.URL.Query().Get("opsiq_portal_return"), "#", 2)[0]
    target := portal
    if back == portal || strings.HasPrefix(back, portal+"/") || strings.HasPrefix(back, portal+"?") {
        target = back
    }

    jti := make([]byte, 16)
    rand.Read(jti)
    now := time.Now().Unix()
    token, err := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{
        "site_key":      "YOUR_SITE_KEY",
        "iat":           now,
        "exp":           now + 120,
        "authenticated": true,
        "jti":           hex.EncodeToString(jti),
        "single_use":    true,
        "platform":      "go",
        "customer": map[string]any{
            "id":          user.ID,    // REQUIRED
            "email":       user.Email, // REQUIRED
            "name":        user.Name,
            "external_id": fmt.Sprint(user.ID),
        },
    }).SignedString([]byte(secret))
    if err != nil {
        http.Error(w, "sign failed", http.StatusInternalServerError)
        return
    }

    // Default target: https://YOUR-OPSIQ/portal/your-workspace?site_key=YOUR_SITE_KEY&identity_token=…
    sep := "?"
    if strings.Contains(target, "?") {
        sep = "&"
    }
    w.Header().Set("Referrer-Policy", "no-referrer")
    w.Header().Set("Cache-Control", "no-store")
    http.Redirect(w, r, target+sep+"site_key="+url.QueryEscape("YOUR_SITE_KEY")+"&identity_token="+url.QueryEscape(token), http.StatusFound)
}

有出事了就去取出相當多的相片

有出入口了 但是被簽了名

密钥或工作區金鑰不匹配此工作區, 符號比 120 秒 (檢查伺服器時鐘) , 或是同樣的連接被開啟了兩次。 產生已簽署的測試連接: 如果能用到, 就把您指標的相關申請和示例相對 。

它總是被接入出入口的家

返回地址不在您的出入口地址內, 因此被故意忽略了。 將它和出入口相比較 URL 在設定中顯示 。

有客人會出錯而沒有登入

取代 /login 在路由中用您真正的登入頁面,并確保您的登入返回了被提供地址。

有客人才有用

有客人收取了郵件或客戶收取的id 就沒了 兩者都得接通了

發展者

客戶端聊天: 認出登入的客戶端

選擇性。 大部分站點都不需要這個: 有平話片段和接通器, 聊天會自己去驗證客戶, 有訂收或訂收的號碼外加查取的證據并發出郵件代碼后再取出。 如果您想讓已登入您站點的客戶自動被認出并有他們全名的帳號相關, 就加入此項目 。 WHMCS C已用您所填入的站點金鑰印出同樣的代碼 。

如何運作

1
您的頁面印出聊天標籤

就當是簽名的客戶取用相關元件 URL 載入( R)identity_token在您伺服器上簽署; 就客人而言, 它就是平庸的標籤。 在頁面上沒有什麼秘密: 只有一個已到期的符號 。

2
有聊天能驗證出相關事跡

簽名、 工作位鍵和到期等。 在每一個聊天相關的相關要求上, 就都知道客戶了, 您的連接器可以回覆自己所訂單、 訂收或收據等事 。

3
在一小時出事前聊天會很快活地回想起

它叫出相關的一頁?opsiq_identity_refresh=1& role=客戶。 您的代碼回應了 { “ 成功 : true" ,identity_token"" """"等客人被簽入了"或"去取回" 401 有{"成功":假","login_required在不是被取出的時候, 因此需要更新的處理器先跑再打印出相關資料 。 @ info: status

它和出入口的符號有何相去?

有生之年

一小時( expt = iat +) 3600(取而代之) 120 秒, 因為它會接觸到每個聊天要求而不會被重定向 。

No jti or single_use

在刷新取回之前, 每封信都使用同樣的同樣字 。

就跟其他事一樣了

site_key, iat, exp, 认证: 有需要的代碼和電子郵件的真實、平台和客戶。同樣的秘密相通, 有同樣的簽名相通 。

💡
Identity says WHO the customer is. Their orders, bookings or invoices reach the chat through a connector: one that calls your platform's API, or, when your platform has no API, a connector plus its bridge file (the connector builder makes one).
💡
有簽名秘密被你取出 在遠端站點中, 您的站點、 代碼和 C 有相關的示例已包含此站點的自有秘密, 因此密碼可以被貼上: 沒有可以複製或設定的程式。 有相當於此頁面所顯示的示例 。 opsiq_whsec_YOUR_SITE_SECRET 就取而代之地找取出相當多的樣子 OPSIQ_SITE_SECRET (or your framework's own setting, named in its notes) on the server first and uses that when it is set, so you can move the secret out of the file whenever you want, for example to rotate it without editing code. Either way the file runs on your server only: never paste it into a web page or browser JavaScript, and never commit it to a public repository, because anyone holding the secret can sign in as any of your customers or staff. WHMCS and Botble need none of this: the WHMCS hook arrives with the secret filled in, and the Botble connector panel fills it into the bridge.

完整代碼, 按平台排列

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 (伺服器上缺少了秘密, 因此密碼已關閉) , 或者指使符的工作空間金鑰或秘密不符 。

一小時后被叫出名去取相當多的客人

有更新處理器被取出: 它必須在任何輸出前跑出, 在聊天所出現的每一頁上 。

就這樣一來就再出兩下了

从您的樣本取出普通聊天標籤: 此密碼會自動打印聊天 。

發展者

插件和 SDK

OpsIQ 提供 SDK 普通平台的套件和外掛程式。

如何運作
插件和 SDK四套: PHP SDK,節點.js SDK, WordPress 外掛程式和 WHMCS 模組相接相接,并有安裝指令相接.PHP前一頁 SDK作曲需要 opsiq/sdkJS: 共同提交節點.js SDKnpm I @ 相去相去已远地相去所取出.opsiq/sdkWP 有:WordPress 外掛程式一擊安裝接通( C)出自"克克林斯克"WHMCS 模块有收費和收票的加法
插件( S)
前一頁 SDK

作曲家套件: 身份符號產生, 有動作 API 有相關相關的說明, 有相通的簽章 。

JavaScript SDK

瀏覽器- side: 追蹤, 身份,自訂事件, 聊天控制 。

WordPress 外掛程式

元件注入,取自WP用戶會話中的身份; WooCommerce 同步相接.

WHMCS 模块

有相關功能:元件接通 票接通 有相當的身份 有相通的人工智能

Shopify 佈景主題延伸名

有自動客戶身份相接相接的相接器

前一頁 SDK 快起步了

前一頁 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 內部執行器、事件通訊器和網上hook操作等 OpsIQ。使發展者可以整合到一端而不用建立套件接通器。

⚠️
實作狀態: 目前只顯示活的目錄 platform.get.survey.configplatform.save.survey.config. The 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.*.

二. 外联和对策

surveys.invitations.*, surveys.campaigns.*, surveys.recipients.*, surveys.responses.*有出品相接 有去除相接相接同相接

Webhooks 、 匯入和回馈

surveys.webhooks.*, surveys.imports.*, feedback.items.*, feedback.analytics.*, feedback.sources.*feedback.analysis.*.

通訊錄相通

1
在 General 中建立并公開 API

使用已打入的測試。 * 有工作位標定鍵的動作。 寫入可宣告權限、 有風險、 有確認相關性、 有一等分量和干燥行為 。

2
收受您的相關事件

將已簽署的事件發出到入住的網上游標上, 例如取消訂單或完成登入步數。 重放保護可以複製事件代碼 。

3
在動作和触发中映射它

選擇一項 OpsIQ 一般 API 有相關的相關相關事由相關地點被取出相關通訊相關資訊,

4
訂閱調查事件

將已記錄的相關業務安全調查。 * 有簽名、 過錯、再試取、 登入和被授權回放等功能的生命周期子集傳到您的端點上 。

Canonical 事件目標

共享的目錄将包含調查/部署公布狀態、觀眾和啟動決定、邀請、出發/部分回應/完整/被忽略、回應排行、競選狀態和交付失敗等。 在調查分析中要多放點焦點、卷轴和問題時刻, 除非有明确文件可以被取出。

連接符是可選取的。 它新增了可再用平台的發現、 已驗證的身份、 事實、 變數和收件者數目 。API 加上 Actions & Triggers/webhooks 就仍然是不需要被包接器的發展者的完整集成路由了 。
發展者

淨 值 API

该 OpsIQ 倒置 API 讓您在程式上存取所有平台功能。

如何運作
淨 值 API有一個終端站顯示 POST到 OpsIQ API 有相關鍵,上市了出門票和頁面 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 }
淨 值 API

要求格式

將金鑰傳出為 Authorization: Bearer opq_...X-OpsIQ-Key: opq_...有相關的相關相關通訊錄。您可以使用一款認證信頭,而不能使用兩相通訊所取相關同分相關回傳的相通相通通訊源 。

API 要求格式
POST https://your-opsiq-domain.com/api/v1.php
Authorization: Bearer opq_your_api_key
# Alternative header: X-OpsIQ-Key: opq_your_api_key
Content-Type: application/json

{
  "action": "endpoint.name",
  "site_key": "site_abc123"
}

共同行動

该 API 有以動作為主: send an action 在正文中取出名稱。每名已登入的通訊員 JSON 操作有平穩的命名動作。 POST {"action":"meta.actions"} (不需要金鑰) 有權證的每站清單、 要求合同、 風險中繼資料和範圍等。 已被折損 。 platform.routes.* 有更古老的融合相接而起。

crm.contacts.list

列出 CRM 聯絡人 (scope crm. read). Params: q, 狀態, source, tag, 領導分數, 有限制 。

crm.contacts.upsert

解析或建立聯絡人 (class crm. write). Params: 郵件外加字段, 標籤和便條 。

crm.deals.list

列出 CRM 交易 (scope crm. read). Params: status, stage_id, company_id; 擁有者_admin_id、 project_id等限制 。

crm.activities.record

記錄聯絡人( scope crm. write) 的生命周期/ 營業活性。 Params: email或 contact_id, 事件、 值和通貨等 。

crm.conversions.record

收錄轉換 (scope crm. write). Params: contact_id或email, transferation_type, value, po通訊.

crm.events.list

透過 CRM 事件流 (cope crm. read) 。 Params: 限取 。

tickets.list

名單票 (scope protection. read). Params: sage, per_page, s排序, 排序, 有狀態, 优先级, 部位相關分別, 被指派去取用到站台( admin_ id), 客戶端相關郵件( email), 有搜尋等功能 。

tickets.get

有一張票和相關訊息 (scope people. read). Params: 出票站名或相關通訊位數, 有入票站的出票口有出票地區等。 參賽者有出站地區的出站口:

tickets.reply

Post a reply to a ticket (scope tickets.write). Params: ticket_id or ticket_number, body, author_type, author_name, internal.

tickets.update

更新入站票 (scope protection. write). Params:出站票_id或出站券_數,狀態,优先取用,取用主题,部位_id,被指派_admin_id.

tickets.open

開啟相關票 (scope protection. write). Params: Cuspector_email, Cuseper_name, 主题, 身體, 優先權等.

tickets.bulk

執行一整批的排隊操作 (scope propert. write). Params: operation, ids.

conversations.list

列出活話對話( scope chark. read). Params: page, per_page, status, 被指派_admin_id, 客戶端_ email, 搜尋等 。

conversations.get

有一次對話和它所發出的消息 (scope disals. read). Params: conversation_id或 sheel_key, 包括了_ messages.

conversations.messages

有頁面的信件歷史 (scope division. read). Params: conversation_id, page, per_page, including_internal. (已建立).

conversations.send

將訊息傳入對話( scope discription. write). Params: 相對的位址、訊息、發出人_型態、內部等 。

conversations.update

指定、再狀態或重命名對話 (scope chaffers. write) 。 Params: conversation_id, status, admin_id; 被指定為主题 。

連接器. list /. get / 52. test

看看哪些接通器被安裝了, 每個接通能做些什麼, 以及它的憑證是否有效 (scope connectioners. read) 。

automations.actions.list

您的動作建構器會執行的動作 (scope自動化. read) 。

automations.triggers.list

有甚麼能起火? 有甚麼相關條件?

automations.runs.list

正在調试集成( scope acroductions. read) 的執行歷史。 Params: status, action_ key.

departments.list

有票可去取取取 (class specople. read).

notifications.list

有一通接通( specal notion. read) 的通訊。 Params: admin_id (需要), unread_ only.

analytics.export

第 二 章 CSV (scope analytics.read). Params: 區域, preset, from, to. Call analialyticers. sections for list for value.

站點_智慧. sites. list /. reports. list

有被監控站所和所見的 SEO (scope site_intelligence. read).

商業. 產品. list /. get

您的儲存目錄已分頁 (scope commerce. read) 。 過程: 活性、 類別、 搜尋等 。 .get 返回一產出其變更。

商業. orders. list /. get

儲存命令 (scope commercience. read). 。 過載: 狀態、 支付_ 方法、 頻道、 客戶端_ 郵件等。 取取出一通 order_id 或 它的 ORD- 參考, 有行項目。 有活的网關取出手柄從未被回覆 。

commerce.refunds.list

退款要求和其狀態 (scope commercial. read).

commerce.quotes.create

为一客戶出價( scope commercial. write) 。 source store 有接通器相接。 建立一無所有: 有命令, 有付款。 請參考通商區分 。

有票了.csat列表 /. get / 2. 度量衡

Customer-satisfaction responses as data (scope tickets.read). Filter by rating, ticket, agent or period; .metrics 返回同樣的圖示標示符所顯示的數字。

conversations.ratings.list

有評論、出分和代理都得分(cope discour.

knowledge.articles.list

在您相關的說明中心文章中被頁面所顯示 (scope kb. read) 。

knowledge.articles.get

有一篇文章由 id (scope kb. read) 提供。 Params: article_id.

webhooks.events.list

每起事件可以訂取一網接站的收尾點, 有它的有效載荷。 在您買入前可以使用每個計劃相對建設 。

files.get

有短命簽署的下載連結可以取用附件 (scope 檔. read). Params: reference, ttl.

security.check

有否被取出?IP 或電子郵件在此被封鎖或起疑( scope security. read) 。IP 有防火牆 有票垃圾郵件封鎖列表 有被快取的安全AI判決 ip 有電子郵件了

security.report

有被監控的被監視的系統被作過被監禁的記錄 (scope security. write) 有被安全AI立即分類的被收錄到安全事件中去, 有高風險判決的管事被通知了。 Params: ip 有電子郵件 有好心 有道理 有來源

安全. 封鎖清單. add /. list

管理垃圾信 規定出票管線 (scope safety. write / safeer.read) 。 和入票頁" Block senders" 相接的同樣的商店 。 Params: skind (email, acone, profile; )ip),值相,取由相接而成;相接相接后已失效.

💡
seta. actions 總是有權力的。 它會以您安裝上需要的範圍回傳您所可以使用的每個動作, 因此您就用不著去猜想或硬碼取出此清單了 。

傳呼、滤取和排序

每個清單動作都使用同樣的參數,所以你一學取一次.

每頁頁

从一開始的頁數1分頁大小。默认值 50 最大值 200 如果您更喜歡,也接受限制和相抵。

排序/ 相排序

以 asc 或 desc (default des克) 排序的字段。 每個動作接受一組固定的等分字段; 有其它事被忽略了而沒有錯誤 。

filters

將過滤器當作物件去發出, 或是以上等參數去取取取過滤取器。 未知的過滤相被忽略了 。

有什麼事回想到底?

項目、頁面、每頁、數目、總和多。要要求的頁面要等已多出為假相才有。

已頁面、 有過分的、 有排序的清單要求
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 文字,可以重新填入。

錯誤回應
{
  "success": false,
  "code": "missing_scope",
  "error": "API key missing required scope. Needed one of: tickets.read, admin",
  "request_id": "req_8f2c1a9d4b7e"
}
缺少_ api_ key / 無效_ ape_ ky

沒有送出金鑰, 或是金鑰出錯或已过期 。 HTTP 401.

missing_scope

金鑰是有效的, 但缺乏此動作需要的範圍 。 HTTP 403.

已限制 :

金鑰是只讀取的, 或者此動作不在它的權限清單中 。 HTTP 403.

unknown_action

沒有此動作。 呼叫目前的清單的 meta. action 。 HTTP 400.

缺少_参数/ 无效_参数

有需要的參數已不存在, 或者一個值被不接受 。 HTTP 400.

not_found

紀錄不存在, 或是不是在工作區所見出此金鑰。 HTTP 404.

plan_feature_locked

您的計劃不包括此動作所屬的特性。 實體取出這個名稱 : feature, the plan_name 二. 生效和 upgrade_url重試也無用; 計劃需要改變。 HTTP402.

license_required

安裝的駕照沒有被啟動, 因此要等恢復再做操作 。 HTTP402.

selling_paused

有商業特有性: 有商店已關閉, 因此不能被取出或訂下 。 HTTP400.

rate_limited

此金鑰的時鐘限制已用完。 HTTP 429.

server_error

有東西在我們一邊失敗了。 如果需要報告的話, 要求_ id 表示試圖中 。 HTTP 500.

安全重試

如果有寫出時機, 就無法分辨它是否已落地 。 發出 idempotency_key 有同樣的回覆出原結果而沒有做兩次活

有更強能寫入的字
{
  "action": "tickets.reply",
  "ticket_id": 4192,
  "body": "Thanks, that is now fixed.",
  "idempotency_key": "your-unique-id-for-this-attempt"
}
有多久能活?

有把金鑰被記住 24 第 二 部 分 API 關鍵。

有回所取出之事

有再放出一回相接相接的回應 有再取出一去相接同分相接之相接

失敗可重試

就只會有成功的寫作被記起。 如果呼叫失敗了, 就用同一個按鍵再傳回它去再跑一次, 這是你想要的 。

讀取

有讀取忽略了鍵值 有重複讀取是無害的

在不變更任何東西下做測試

添加 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."
}
在您正在建構時使用干跑。 這是最快速的確認金鑰有正確的範圍而您的有效載荷被正確地所塑造出, 而不需要建立您需要清理的測試資料 。

利率限制

每一個金鑰限制

每克可配置的活時限值 API 金鑰( 預設值 ) 1000 在設定下設定每一個金鑰 。API 有鑰匙 有鑰匙

有超時

HTTP 429 使用代碼 rate_limited,加上 Retry-After 頭文件告訴你要等待多少秒。 在下一個時鐘小時的開始重置限制。

有你所站的位置

每回回應都帶有 X- rateLimit- Limit, X- RateLimet- 保留和 X- RaterLim 52. 重置 (Unix timestpt) 。 在您跑出前要注意剩余并慢取而后行 。

有出息了 429 从 401

A 429 就想再等一等了 A 401 表示金鑰本身是錯的或已过期, 因此重試在您修復金鑰前不會有幫助 。

有前作的野蠻人作戰

有一次再作一次失敗的試驗IP有活性的金鑰從來不會被打出去取出

最佳做法

在被打倒后再退后 有名的再去取回相片 429 就快去再試了

版本和稳定性

目前版本

v1. 每回回應都包含有 X --OpsIQ-API-活出和X相接相接.OpsIQ-API- 就這樣能確認出你在跟什麼說話了.

你們怎麼被警告呢?

如果有版本被退役了, 回應會得到標準的去除和日落信頭及元。 有動作會被去除并被取出去。 請檢查您所監控的相關資料, 您絕不會感到驚訝 。

有甚麼是不會改變的?

有動作名稱、 參數和錯誤代碼。 有新的動作和可選項可能會被加入去, 因此忽略您不認取的字段而忽略了它們。

有完整的整合相接 就快了結了

就這一圈:找活干,讀取活干相接相接,并確認你所做的事.

有全票工作流程出炉了 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, conversion. get, conference. send and combourse. update相對同樣的模式、參數和回應形態。

更多工作的例子

Each of these is a complete, runnable piece of a real integration rather than a fragment.

在每張相關記錄上以 三種語言翻出一頁

在下一頁被取出前, 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"])
有節點. 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 – 在每張開放票中翻出一頁
<?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"]));

Handle every failure the API can return

分行: 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 因此你算出自己能分別出出商人所要收取的相當多的錢。

有安全出品的網上接取器

Verify, de-duplicate, answer quickly, then do the work. Deliveries retry, so the same event can arrive more than once.

PHP · a production-shaped webhook receiver
<?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"
}
有權限出問題再怎么分辨出去

A403表示地鐵太窄了-用正範重新發行并有效。402就表示ACCOUNT并沒有功能-沒有按鍵能解鎖它,而計劃也必須被改變.

不重試 (A)402

它不是瞬間取出 它被取出地表取出 upgrade_url 有錢人可以再去取回 而不是再去想取回

有管事能分出去取道

Scopes express what the key issuer delegated; the plan expresses what the account bought. An admin-scoped key still gets a 402 for a feature the plan lacks.

在出事前先去查一查

feature 在下方和下方的動作目錄上公布每個動作需要 meta.action在出品中可以去取出相關資料取出同樣的相關信息。

找到鑰匙所處地點最快的方法是 meta.me. It reports the plan in force, every feature it carries, and every action this key cannot call with the reason for each.

元我 -- -- 這把鑰匙能做些什麼?
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"
    }
  }
}
Call meta.me first when an integration behaves differently between two installs. It answers "why can this key not do that" in one request, without anyone opening the admin.

有出价

commerce.quotes.create 因此在客戶還在做決定的時候可以安全地打通電話。

引出一項
POST /api/v1.php
Authorization: Bearer opq_your_api_key

# Your own Store
{"action":"commerce.quotes.create","source":"store","item_id":"12","quantity":2}

# A connected merchant platform, priced for a known customer
{"action":"commerce.quotes.create","source":"whmcs","item_id":"47",
 "fields":{"domain":"example.ng"},
 "customer":{"connector_customer_id":"1042"}}
The merchant total wins

就連接站台而言, 總和出自商家而從不被再計算出。 量不總是乘以單一價格-一間旅館取出一間房間相接三夜之多- 因此要顯示出您得到的總和,

有拒絕告訴你到底想出什麼了

如果商人需要更需要客人 就得到相當多的錢了 quote_refused 有: missing 列表中指定要收取的字段,并列出商家要顯示的用法。

有秩序不是API有呼叫

A quote is indicative. Confirmation happens where the customer is — the signed card in chat, or the merchant's own checkout — never through this API. The response says so in ordering.

有被暫停的出賣相關事由

如果商店被關了 就引用答案 selling_paused 就不是出價取出沒人能買到的東西了

其他的收尾點

就想一出出名就去取出相關的相當多的相關事 /api/v1.php有例外 有相關原因 有相當相關的

/api/v1/openapi.php · /api/v1/postman.php · /api/docs/

The machine contract and the human reference. No key needed, so you can explore before you have one.

/api/ai_stream.php

有伺服器提供的事件可以提供活的聊天回覆。JSON有活了.

/api/writing.php

有更相當的 AI- writing 結點。 它所做的一切也都可用以 writing.* 在 /api/v1.php, 上作一動作,而新工作就應該去到那裡去。

/api/inbox_copilot.php

有收票箱被收入了您自己的管家中 就重新寫作和分類了

/api/v1/si/…

站點智取相當小的倒置 API — 在出發后想被取出并讀取結果的CI通訊管。

/api/connectors.php?slug=&token=

在相連的平台 POST 中, 它會自取網址給您。 在您啟用接通器后, 符號會被刻製出 。

/api/integrations/*.php

它使用自有的關鍵型態,由相關地點所出發出:APIWebhook 建立器( W) 。

💡
這些都遵守了同樣的計劃規則和動作相關。 您的計劃中沒有包含答案的特徵402有同樣一模一樣的相貌

有所需要範圍的一舉一動

此清單由執行中的目錄產生, 因此它總是符合您所使用版本 。 meta.actions 返回同樣的資訊 JSON.

2415 named actions: 852 reads, 1563 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: 582; explicit: 157; route_inferred: 1558; source_inferred: 118.

administration (25)

administration.2fa.disable

Write. Scope: administration.write, admin. Contract: route_inferred. Admin 2fa Disable

administration.2fa.enable

Write. Scope: administration.write, admin. Contract: route_inferred. Admin 2fa Enable

administration.2fa.recovery.regenerate

Write. Scope: administration.write, admin. Contract: route_inferred. Admin 2fa Recovery Regenerate

administration.2fa.setup

Read. Scope: administration.read, admin. Contract: route_inferred. Admin 2fa Setup

administration.2fa.status

Read. Scope: administration.read, admin. Contract: declared_dynamic. Admin 2fa Status

administration.ai.train.from.reply

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Ai Train From Reply

administration.brain.cancel

Write. Scope: administration.write, admin. Contract: declared_dynamic. Admin Brain Cancel

administration.brain.view

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Brain View

administration.chat.access.check

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Chat Access Check

administration.chat.create.ticket.on.behalf

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Chat Create Ticket On Behalf

administration.chat.draft.ticket.from.thread

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Chat Draft Ticket From Thread

administration.conv.delete

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Conv Delete

administration.conv.get

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Conv Get

administration.conv.list

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Conv List

administration.conv.new

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Conv New

administration.conv.save

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Conv Save

administration.notification.prefs.get

Read. Scope: administration.read, admin. Contract: declared_dynamic. Admin Notification Prefs Get

administration.notification.prefs.save

Write. Scope: administration.write, admin. Contract: declared_dynamic. Admin Notification Prefs Save

administration.notifications.list

Read. Scope: administration.read, admin. Contract: route_inferred. Admin Notifications List

administration.notifications.mark.all.read

Write. Scope: administration.write, admin. Contract: declared_dynamic. Admin Notifications Mark All Read

administration.notifications.mark.read

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Notifications Mark Read

administration.notifications.pulse

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Notifications Pulse

administration.online.list

Read. Scope: administration.read, admin. Contract: declared_dynamic. Admin Online List

administration.presence.ping

Write. Scope: administration.write, admin. Contract: declared_dynamic. Admin Presence Ping

administration.realtime.token

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Realtime Token

二. 分析 (43)

analytics.add.widget

Write. Scope: analytics.write, admin. Contract: route_inferred. Dashboard Add Widget

analytics.analytics.connectors.catalog

Read. Scope: analytics.read, admin. Contract: declared_dynamic. Analytics Connectors Catalog

analytics.analytics.data

Read. Scope: analytics.read, admin. Contract: route_inferred. Analytics Data

analytics.analytics.export

Read. Scope: analytics.read, admin. Contract: route_inferred. Analytics Export

analytics.analytics.export.csv

Read. Scope: analytics.read, admin. Contract: route_inferred. Analytics Export Csv

analytics.analytics.import

Write. Scope: analytics.write, admin. Contract: route_inferred. Analytics Import

analytics.analytics.report

Write. Scope: analytics.write, admin. Contract: route_inferred. Analytics Report

analytics.analytics.segments.delete

Write. Scope: analytics.write, admin. Contract: route_inferred. Analytics Segments Delete

analytics.analytics.segments.list

Read. Scope: analytics.read, admin. Contract: declared_dynamic. Analytics Segments List

analytics.analytics.segments.save

Write. Scope: analytics.write, admin. Contract: route_inferred. Analytics Segments Save

analytics.analytics.status

Read. Scope: analytics.read, admin. Contract: declared_dynamic. Analytics Status

analytics.clear.all

Write. Scope: analytics.write, admin. Contract: declared_dynamic. Replay Clear All

analytics.compute

Read. Scope: analytics.read, admin. Contract: route_inferred. Funnels Compute

analytics.create

Write. Scope: analytics.write, admin. Contract: route_inferred. Ab Test Create

analytics.create.route.dashboard.create

Write. Scope: analytics.write, admin. Contract: route_inferred. Dashboard Create

analytics.create.route.report.create

Write. Scope: analytics.write, admin. Contract: route_inferred. Report Create

analytics.delete

Write. Scope: analytics.write, admin. Contract: route_inferred. Ab Test Delete

analytics.delete.route.dashboard.delete

Write. Scope: analytics.write, admin. Contract: route_inferred. Dashboard Delete

analytics.delete.route.funnels.delete

Write. Scope: analytics.write, admin. Contract: route_inferred. Funnels Delete

analytics.delete.route.report.delete

Write. Scope: analytics.write, admin. Contract: route_inferred. Report Delete

analytics.events

Read. Scope: analytics.read, admin. Contract: route_inferred. Replay Events

analytics.export

Read. Scope: analytics.read, admin. Contract: source_inferred. Analytics Export

analytics.get

Read. Scope: analytics.read, admin. Contract: route_inferred. Dashboard Get

analytics.layout.save

Write. Scope: analytics.write, admin. Contract: route_inferred. Dashboard Layout Save

analytics.list

Read. Scope: analytics.read, admin. Contract: declared_dynamic. Ab Test List

analytics.list.route.dashboard.list

Read. Scope: analytics.read, admin. Contract: declared_dynamic. Dashboard List

analytics.list.route.funnels.list

Read. Scope: analytics.read, admin. Contract: declared_dynamic. Funnels List

analytics.list.route.report.list

Read. Scope: analytics.read, admin. Contract: declared_dynamic. Report List

analytics.remove.widget

Write. Scope: analytics.write, admin. Contract: route_inferred. Dashboard Remove Widget

analytics.rename

Write. Scope: analytics.write, admin. Contract: route_inferred. Dashboard Rename

analytics.results

Read. Scope: analytics.read, admin. Contract: route_inferred. Ab Test Results

analytics.save

Write. Scope: analytics.write, admin. Contract: route_inferred. Funnels Save

analytics.save.widgets

Write. Scope: analytics.write, admin. Contract: route_inferred. Dashboard Save Widgets

analytics.scheduled.list

Read. Scope: analytics.read, admin. Contract: explicit. List scheduled analytics reports for an operator Required fields: admin_id.

analytics.sections.list

Read. Scope: analytics.read, admin. Contract: explicit. List analytics report sections and date presets

analytics.send.now

Write. Scope: analytics.write, admin. Contract: route_inferred. Report Send Now

analytics.sessions

Read. Scope: analytics.read, admin. Contract: route_inferred. Replay Sessions

analytics.step.visitors

Read. Scope: analytics.read, admin. Contract: route_inferred. Funnels Step Visitors

analytics.timeline

Read. Scope: analytics.read, admin. Contract: route_inferred. Replay Timeline

analytics.toggle.shared

Write. Scope: analytics.write, admin. Contract: route_inferred. Dashboard Toggle Shared

analytics.update

Write. Scope: analytics.write, admin. Contract: route_inferred. Ab Test Update

analytics.update.route.report.update

Write. Scope: analytics.write, admin. Contract: route_inferred. Report Update

analytics.widget.data

Read. Scope: analytics.read, admin. Contract: route_inferred. Dashboard Widget Data

automations (6)

automations.actions.list

Read. Scope: automations.read, admin. Contract: explicit. List integration actions

automations.delete

Write. Scope: automations.write, admin. Contract: route_inferred. Workflow Delete

automations.list

Read. Scope: automations.read, admin. Contract: route_inferred. Workflow List

automations.runs.list

Read. Scope: automations.read, admin. Contract: explicit. List automation execution history

automations.save

Write. Scope: automations.write, admin. Contract: route_inferred. Workflow Save

automations.triggers.list

Read. Scope: automations.read, admin. Contract: explicit. List integration triggers

聊天 (40)

chat.call.start

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Call Start

chat.cobrowse.send

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Cobrowse Send

chat.feedback

Read. Scope: chat.read, admin. Contract: route_inferred. Chat Feedback

chat.feedback.digest

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Feedback Digest

chat.form.delete

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Form Delete

chat.form.get

Read. Scope: chat.read, admin. Contract: route_inferred. Chat Form Get

chat.form.list

Read. Scope: chat.read, admin. Contract: declared_dynamic. Chat Form List

chat.form.save

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Form Save

chat.form.set.default

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Form Set Default

chat.meeting.decide

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Meeting Decide

chat.meeting.outcome.set

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Meeting Outcome Set

chat.meeting.type.delete

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Meeting Type Delete

chat.meeting.type.save

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Meeting Type Save

chat.meeting.types.list

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Meeting Types List

chat.meetings.list

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Meetings List

chat.online.admins

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Online Admins

chat.permissions.list

Write. Scope: admin. Contract: route_inferred. Chat Permissions List

chat.permissions.revoke

Write. Scope: admin. Contract: route_inferred. Chat Permissions Revoke

chat.permissions.save

Write. Scope: admin. Contract: route_inferred. Chat Permissions Save

chat.permissions.upload.avatar

Write. Scope: admin. Contract: route_inferred. Chat Permissions Upload Avatar

chat.reaction.toggle

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Reaction Toggle

chat.saved_replies.add

Write. Scope: chat.write, admin. Contract: source_inferred. Chat Saved Replies Add Retry-safe with idempotency_key.

chat.saved_replies.list

Read. Scope: chat.read, admin. Contract: explicit. List workspace and personal saved replies

chat.saved_replies.save

Write. Scope: chat.write, admin. Contract: source_inferred. Chat Saved Replies Save Retry-safe with idempotency_key.

chat.set.persona

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Set Persona

chat.snooze.clear

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Snooze Clear

chat.snooze.set

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Snooze Set

chat.transfer.thread

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Transfer Thread

chat.transfer.unread

Write. Scope: chat.write, admin. Contract: declared_dynamic. Chat Transfer Unread

chat.typing.preview

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Typing Preview

chat.whisper.ai.summary

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Whisper Ai Summary

chat.whisper.controls

Write. Scope: chat.write, admin. Contract: declared_dynamic. Chat Whisper Controls

chat.whisper.delete.room

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Whisper Delete Room

chat.whisper.list

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Whisper List

chat.whisper.mentions

Write. Scope: chat.write, admin. Contract: declared_dynamic. Chat Whisper Mentions

chat.whisper.rooms

Write. Scope: chat.write, admin. Contract: declared_dynamic. Chat Whisper Rooms

chat.whisper.save.controls

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Whisper Save Controls

chat.whisper.send

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Whisper Send

chat.whisper.targets

Write. Scope: chat.write, admin. Contract: declared_dynamic. Chat Whisper Targets

chat.whisper.unread

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Whisper Unread

有商相通地. (11)

commerce.analytics.snapshot

Read. Scope: commerce.read, analytics.read, admin. Contract: explicit. Read privacy-safe storefront analytics

commerce.orders.get

Read. Scope: commerce.read, admin. Contract: explicit. Get one Store order with its line items

commerce.orders.list

Read. Scope: commerce.read, admin. Contract: explicit. List Store orders in the bound workspace

commerce.pages.list

Read. Scope: commerce.read, admin. Contract: explicit. List storefront pages and promotional modals

commerce.products.get

Read. Scope: commerce.read, admin. Contract: explicit. Get one Store product with its variants Required fields: product_id.

commerce.products.list

Read. Scope: commerce.read, admin. Contract: explicit. List Store products in the bound workspace

commerce.quotes.create

Write. Scope: commerce.write, admin. Contract: explicit. Quote an item for a customer (creates nothing) Required fields: source, item_id. Retry-safe with idempotency_key.

commerce.readiness.get

Read. Scope: commerce.read, admin. Contract: explicit. Check whether the storefront can launch

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: explicit. Generate a connector package Required fields: spec. Retry-safe with idempotency_key.

connector_builder.get

Read. Scope: connector_builder.read, admin. Contract: explicit. Load a Builder specification Required fields: slug.

connector_builder.import.curl

Write. Scope: connector_builder.write, admin. Contract: explicit. Import cURL into Connector Builder Retry-safe with idempotency_key.

connector_builder.import.openapi

Write. Scope: connector_builder.write, admin. Contract: explicit. Import OpenAPI into Connector Builder Retry-safe with idempotency_key.

connector_builder.import.postman

Write. Scope: connector_builder.write, admin. Contract: explicit. Import Postman into Connector Builder Retry-safe with idempotency_key.

connector_builder.list

Read. Scope: connector_builder.read, admin. Contract: explicit. 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: explicit. Run Builder conformance tests Required fields: slug. Retry-safe with idempotency_key.

connector_builder.update

Write. Scope: connector_builder.write, admin. Contract: explicit. Update a generated connector Required fields: slug, spec. Retry-safe with idempotency_key.

connector_builder.validate

Read. Scope: connector_builder.read, admin. Contract: explicit. 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: explicit. Start connector backfill Required fields: slug. Retry-safe with idempotency_key.

connectors.backfill.route.connectors.backfill

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Backfill

connectors.backfill.status

Read. Scope: connectors.read, admin. Contract: explicit. 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: explicit. Synchronize connector customers Required fields: slug. Retry-safe with idempotency_key.

connectors.disable

Write. Scope: connectors.write, admin. Contract: explicit. Disable a connector Required fields: slug. Retry-safe with idempotency_key.

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: explicit. Enable a connector Required fields: slug. Retry-safe with idempotency_key.

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: explicit. Read connector settings Required fields: slug.

connectors.settings.save

Write. Scope: connectors.write, admin. Contract: explicit. Save connector settings Required fields: slug, settings. Retry-safe with idempotency_key.

connectors.shared.oauth.delete

Write. Scope: connectors.write, admin. Contract: route_inferred. Connector Shared Oauth Delete

connectors.sync.customers

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Sync Customers

connectors.test

Read. Scope: connectors.read, admin. Contract: source_inferred. Connectors Test

connectors.test.route.connectors.test

Read. Scope: connectors.read, admin. Contract: route_inferred. Connectors Test

connectors.uninstall

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Uninstall

connectors.workflow.recipes

Read. Scope: connectors.read, admin. Contract: route_inferred. Connectors Workflow Recipes

conversations (38)

conversations.ai.draft

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Ai Draft

conversations.ai.rewrite

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Ai Rewrite

conversations.archive

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Archive

conversations.assign

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Assign

conversations.assignees

Write. Scope: conversations.write, admin. Contract: declared_dynamic. Admin Client Chat Assignees

conversations.bulk

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Bulk

conversations.clear

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Clear

conversations.clear.all

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Clear All

conversations.customer.tickets

Write. Scope: conversations.write, admin. Contract: declared_dynamic. Admin Client Chat Customer Tickets

conversations.decline

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Decline

conversations.delete

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Delete

conversations.delete.last

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Delete Last

conversations.edit.last

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Edit Last

conversations.export

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Export

conversations.forget.visitor

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Forget Visitor

conversations.get

Read. Scope: conversations.read, admin. Contract: source_inferred. Conversations Get

conversations.history

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat History

conversations.list

Read. Scope: conversations.read, admin. Contract: source_inferred. Conversations List

conversations.messages

Read. Scope: conversations.read, admin. Contract: source_inferred. Conversations Messages

conversations.ratings.list

Read. Scope: conversations.read, admin. Contract: explicit. List rated Client Chat conversations

conversations.resolve

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Resolve

conversations.saved.replies

Write. Scope: conversations.write, admin. Contract: declared_dynamic. Admin Client Chat Saved Replies

conversations.saved.reply.add

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Saved Reply Add

conversations.saved.reply.ai.generate

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Saved Reply Ai Generate

conversations.saved.reply.delete

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Saved Reply Delete

conversations.saved.reply.save

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Saved Reply Save

conversations.send

Write. Scope: conversations.write, admin. Contract: source_inferred. Conversations Send Retry-safe with idempotency_key.

conversations.send.route.admin.client.chat.send

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Send

conversations.tags.set

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Tags Set

conversations.thread

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Thread

conversations.threads

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Threads

conversations.toggle

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Toggle

conversations.toggle.attachments

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Toggle Attachments

conversations.toggle.call.button

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Toggle Call Button

conversations.typing

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Typing

conversations.unarchive

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Unarchive

conversations.update

Write. Scope: conversations.write, admin. Contract: explicit. Update a conversation status, assignment or subject Retry-safe with idempotency_key.

conversations.upload

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Upload

收起 (260)

crm.ab.results

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Ab Results

crm.access.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Access Set

crm.access_log.list

Read. Scope: admin. Contract: source_inferred. Crm Access Log List

crm.account.health

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Account Health

crm.account.health.board

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Account Health Board

crm.account.health.refresh

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Account Health Refresh

crm.account.plan.get

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Account Plan Get

crm.account.plan.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Account Plan Save

crm.account.plans.due

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Account Plans Due

crm.account.timeline

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Account Timeline

crm.activities.list

Read. Scope: crm.read. Contract: explicit. List CRM contact activities

crm.activities.record

Write. Scope: crm.write. Contract: explicit. Record a CRM contact activity Required fields: contact_id, activity_type. Retry-safe with idempotency_key.

crm.activity.feed

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Activity Feed

crm.agent.toggle

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Agent Toggle

crm.ai.policy.get

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Ai Policy Get

crm.ai.policy.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Ai Policy Save

crm.ai.policy.simulate

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Ai Policy Simulate

crm.ai.trace

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Ai Trace

crm.approval.decide

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Approval Decide

crm.approval.delegate.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Approval Delegate Set

crm.approval.list

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Approval List

crm.approval.policy.get

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Approval Policy Get

crm.approval.policy.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Approval Policy Save

crm.approval.settings

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Approval Settings

crm.approve.apply

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Approve Apply

crm.approve.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Approve List

crm.approve.reject

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Approve Reject

crm.approve.update

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Approve Update

crm.ask

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Ask

crm.assign.owner

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Assign Owner

crm.assignment.get

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Assignment Get

crm.assignment.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Assignment Save

crm.attachment.delete

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Attachment Delete

crm.attachment.list

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Attachment List

crm.attachment.upload

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Attachment Upload

crm.autobook.meeting

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Autobook Meeting

crm.autodeal.mode

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Autodeal Mode

crm.book.meeting

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Book Meeting

crm.booking.link.save

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Booking Link Save

crm.booking.links.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Booking Links List

crm.build.apply

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Build Apply

crm.build.get

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Build Get

crm.build.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Build List

crm.build.plan

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Build Plan

crm.build.rollback

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Build Rollback

crm.bulk

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Bulk

crm.bundle.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Bundle Set

crm.calendar.status

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Calendar Status

crm.capture.status

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Capture Status

crm.comm.policy.get

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Comm Policy Get

crm.comm.policy.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Comm Policy Save

crm.command.snapshot

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Command Snapshot

crm.companies.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Companies List

crm.company.hierarchy

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Company Hierarchy

crm.company.save

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Company Save

crm.company.set.parent

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Company Set Parent

crm.company.suggest.related

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Company Suggest Related

crm.connectors.catalog

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Connectors Catalog

crm.consent_log.list

Read. Scope: crm.read. Contract: source_inferred. Crm Consent Log List

crm.contact.churn

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Contact Churn

crm.contact.draft.email

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Contact Draft Email

crm.contact.enrich

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Contact Enrich

crm.contact.propose.email

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Contact Propose Email

crm.contacts.detail

Read. Scope: crm.read. Contract: source_inferred. Crm Contacts Detail

crm.contacts.erase

Write. Scope: admin. Contract: source_inferred. Crm Contacts Erase Retry-safe with idempotency_key.

crm.contacts.export

Read. Scope: crm.read. Contract: source_inferred. Crm Contacts Export

crm.contacts.import.list

Read. Scope: crm.read. Contract: source_inferred. Crm Contacts Import List

crm.contacts.import.run

Write. Scope: crm.write. Contract: source_inferred. Crm Contacts Import Run Retry-safe with idempotency_key.

crm.contacts.list

Read. Scope: crm.read. Contract: source_inferred. Crm Contacts List

crm.contacts.next_action

Read. Scope: crm.read. Contract: source_inferred. Crm Contacts Next Action

crm.contacts.open_chat

Write. Scope: crm.write. Contract: source_inferred. Crm Contacts Open Chat Retry-safe with idempotency_key.

crm.contacts.open_ticket

Write. Scope: crm.write. Contract: source_inferred. Crm Contacts Open Ticket Retry-safe with idempotency_key.

crm.contacts.resync

Write. Scope: crm.write. Contract: source_inferred. Crm Contacts Resync Retry-safe with idempotency_key.

crm.contacts.save

Write. Scope: crm.write. Contract: source_inferred. Crm Contacts Save Retry-safe with idempotency_key.

crm.contacts.send_email

Write. Scope: crm.write. Contract: source_inferred. Crm Contacts Send Email Retry-safe with idempotency_key.

crm.contacts.upsert

Write. Scope: crm.write. Contract: explicit. Crm Contacts Upsert Required fields: email. Retry-safe with idempotency_key.

crm.contract.amend

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Contract Amend

crm.contract.price.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Contract Price Set

crm.contract.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Contract Save

crm.contract.usage

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Contract Usage

crm.contracts.list

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Contracts List

crm.conversation.intel

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Conversation Intel

crm.conversions.goals.delete

Write. Scope: crm.write. Contract: source_inferred. Crm Conversions Goals Delete Retry-safe with idempotency_key.

crm.conversions.goals.list

Read. Scope: crm.read. Contract: source_inferred. Crm Conversions Goals List

crm.conversions.goals.save

Write. Scope: crm.write. Contract: source_inferred. Crm Conversions Goals Save Retry-safe with idempotency_key.

crm.conversions.list

Read. Scope: crm.read. Contract: source_inferred. Crm Conversions List

crm.conversions.record

Write. Scope: crm.write. Contract: source_inferred. Crm Conversions Record Retry-safe with idempotency_key.

crm.create.video.meeting

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Create Video Meeting

crm.customer.auto.sync

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Customer Auto Sync

crm.customer.auto.sync.status

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Customer Auto Sync Status

crm.customer.emails

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Customer Emails

crm.customer.payments

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Customer Payments

crm.data.steward.bulk.propose

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Data Steward Bulk Propose

crm.data.steward.inbox

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Data Steward Inbox

crm.data.steward.propose

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Data Steward Propose

crm.deal.advance

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Deal Advance

crm.deal.coach

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Deal Coach

crm.deal.coach.action

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Deal Coach Action

crm.deal.get

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Deal Get

crm.deal.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Deal Save

crm.deal.splits.get

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Deal Splits Get

crm.deal.splits.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Deal Splits Set

crm.deals.advance

Write. Scope: crm.write. Contract: explicit. Advance a CRM deal to another stage Required fields: deal_id, stage_id. Retry-safe with idempotency_key.

crm.deals.create

Write. Scope: crm.write. Contract: explicit. Create a CRM deal Required fields: title. Retry-safe with idempotency_key.

crm.deals.detail

Read. Scope: crm.read. Contract: explicit. Get one CRM deal Required fields: deal_id.

crm.deals.list

Read. Scope: crm.read. Contract: explicit. List CRM deals

crm.deals.list.route.crm.deals.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Deals List

crm.deals.update

Write. Scope: crm.write. Contract: explicit. Update a CRM deal Required fields: deal_id. Retry-safe with idempotency_key.

crm.detail

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Detail

crm.draft.outreach

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Draft Outreach

crm.enrich.account

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Enrich Account

crm.erase

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Erase

crm.events.catalog

Read. Scope: crm.read. Contract: explicit. List subscribable CRM domain events

crm.events.list

Read. Scope: crm.read. Contract: explicit. List durable CRM domain events

crm.export

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Export

crm.export.all

Read. Scope: crm.read, admin. Contract: route_inferred. Contact Export All

crm.field.add

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Field Add

crm.field.policy.get

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Field Policy Get

crm.field.policy.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Field Policy Save

crm.field.remove

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Field Remove

crm.fields.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Fields List

crm.forecast.board

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Forecast Board

crm.forecast.snapshot

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Forecast Snapshot

crm.form.save

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Form Save

crm.forms.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Forms List

crm.health.repair.catalog

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Health Repair Catalog

crm.health.smoke

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Health Smoke

crm.health.snapshot

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Health Snapshot

crm.home.persona.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Home Persona Set

crm.identity.rules.get

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Identity Rules Get

crm.identity.rules.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Identity Rules Save

crm.import.list

Read. Scope: crm.read, admin. Contract: route_inferred. Contact Import List

crm.import.run

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Import Run

crm.inbound.activity

Read. Scope: crm.read. Contract: source_inferred. Crm Inbound Activity

crm.inbound.endpoints.delete

Write. Scope: crm.write. Contract: source_inferred. Crm Inbound Endpoints Delete Retry-safe with idempotency_key.

crm.inbound.endpoints.list

Read. Scope: crm.read. Contract: source_inferred. Crm Inbound Endpoints List

crm.inbound.endpoints.save

Write. Scope: crm.write. Contract: source_inferred. Crm Inbound Endpoints Save Retry-safe with idempotency_key.

crm.inbound.endpoints.test

Write. Scope: crm.write. Contract: source_inferred. Crm Inbound Endpoints Test Retry-safe with idempotency_key.

crm.leaderboard

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Leaderboard

crm.lifecycle.evaluate

Write. Scope: crm.write. Contract: source_inferred. Crm Lifecycle Evaluate Retry-safe with idempotency_key.

crm.lifecycle.rules.delete

Write. Scope: crm.write. Contract: source_inferred. Crm Lifecycle Rules Delete Retry-safe with idempotency_key.

crm.lifecycle.rules.list

Read. Scope: crm.read. Contract: source_inferred. Crm Lifecycle Rules List

crm.lifecycle.rules.save

Write. Scope: crm.write. Contract: source_inferred. Crm Lifecycle Rules Save Retry-safe with idempotency_key.

crm.list

Read. Scope: crm.read, admin. Contract: route_inferred. Contacts List

crm.mailbox.status

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Mailbox Status

crm.meeting.book

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Meeting Book

crm.meeting.cancel

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Meeting Cancel

crm.meeting.list

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Meeting List

crm.meeting.reschedule.accept

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Meeting Reschedule Accept

crm.meeting.reschedule.reject

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Meeting Reschedule Reject

crm.merge

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Merge

crm.message.send

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Message Send

crm.messaging.provider.delete

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Messaging Provider Delete

crm.messaging.provider.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Messaging Provider Save

crm.messaging.provider.test

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Messaging Provider Test

crm.messaging.status

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Messaging Status

crm.next.action

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Next Action

crm.object.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Object Save

crm.objects.list

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Objects List

crm.offline.pull

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Offline Pull

crm.offline.push

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Offline Push

crm.open.chat

Read. Scope: crm.read, admin. Contract: route_inferred. Contact Open Chat

crm.open.ticket

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Open Ticket

crm.outreach.campaigns.delete

Write. Scope: crm.write. Contract: source_inferred. Crm Outreach Campaigns Delete Retry-safe with idempotency_key.

crm.outreach.campaigns.list

Read. Scope: crm.read. Contract: source_inferred. Crm Outreach Campaigns List

crm.outreach.campaigns.save

Write. Scope: crm.write. Contract: source_inferred. Crm Outreach Campaigns Save Retry-safe with idempotency_key.

crm.outreach.campaigns.send

Write. Scope: crm.write. Contract: source_inferred. Crm Outreach Campaigns Send Retry-safe with idempotency_key.

crm.outreach.send

Write. Scope: crm.write. Contract: source_inferred. Crm Outreach Send Retry-safe with idempotency_key.

crm.outreach.templates.delete

Write. Scope: crm.write. Contract: source_inferred. Crm Outreach Templates Delete Retry-safe with idempotency_key.

crm.outreach.templates.list

Read. Scope: crm.read. Contract: source_inferred. Crm Outreach Templates List

crm.outreach.templates.preview

Read. Scope: crm.read. Contract: source_inferred. Crm Outreach Templates Preview

crm.outreach.templates.save

Write. Scope: crm.write. Contract: source_inferred. Crm Outreach Templates Save Retry-safe with idempotency_key.

crm.payments.status

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Payments Status

crm.pipeline.data

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Pipeline Data

crm.price.resolve

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Price Resolve

crm.pricebook.entry.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Pricebook Entry Set

crm.pricebook.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Pricebook Save

crm.pricebooks.list

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Pricebooks List

crm.privacy_settings.get

Read. Scope: crm.read. Contract: source_inferred. Crm Privacy Settings Get

crm.privacy_settings.save

Write. Scope: admin. Contract: source_inferred. Crm Privacy Settings Save Retry-safe with idempotency_key.

crm.product.archive

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Product Archive

crm.product.revenue

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Product Revenue

crm.product.save

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Product Save

crm.products.list

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Products List

crm.propose.meeting

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Propose Meeting

crm.propose.outreach

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Propose Outreach

crm.prospecting.dashboard

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Prospecting Dashboard

crm.prospecting.icp.save

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Prospecting Icp Save

crm.prospecting.import

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Prospecting Import

crm.prospecting.research

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Prospecting Research

crm.prospecting.score

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Prospecting Score

crm.prospecting.sequence

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Prospecting Sequence

crm.qualification.checklist.get

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Qualification Checklist Get

crm.qualification.checklist.save

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Qualification Checklist Save

crm.quota.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Quota Save

crm.quote.get

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Quote Get

crm.quote.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Quote Save

crm.quotes.list

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Quotes List

crm.record.delete

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Record Delete

crm.record.fields.get

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Record Fields Get

crm.record.fields.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Record Fields Save

crm.record.get

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Record Get

crm.record.history

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Record History

crm.record.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Record Save

crm.record.share.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Record Share Set

crm.record.share.unset

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Record Share Unset

crm.record.shares

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Record Shares

crm.records.list

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Records List

crm.restore.email.consent

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Restore Email Consent

crm.resync.from.platform

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Resync From Platform

crm.retention.catalog

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Retention Catalog

crm.revert

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Revert

crm.runtime.policy.get

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Runtime Policy Get

crm.runtime.policy.remote.wipe

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Runtime Policy Remote Wipe

crm.runtime.policy.save

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Runtime Policy Save

crm.save

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Save

crm.scoring.rule.ai

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Scoring Rule Ai

crm.scoring.rule.delete

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Scoring Rule Delete

crm.scoring.rule.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Scoring Rule List

crm.scoring.rule.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Scoring Rule Save

crm.segments.delete

Write. Scope: crm.write. Contract: source_inferred. Crm Segments Delete Retry-safe with idempotency_key.

crm.segments.list

Read. Scope: crm.read. Contract: source_inferred. Crm Segments List

crm.segments.members

Read. Scope: crm.read. Contract: source_inferred. Crm Segments Members

crm.segments.preview

Read. Scope: crm.read. Contract: source_inferred. Crm Segments Preview

crm.segments.save

Write. Scope: crm.write. Contract: source_inferred. Crm Segments Save Retry-safe with idempotency_key.

crm.segments.suggestions.accept

Write. Scope: crm.write. Contract: source_inferred. Crm Segments Suggestions Accept Retry-safe with idempotency_key.

crm.segments.suggestions.dismiss

Write. Scope: crm.write. Contract: source_inferred. Crm Segments Suggestions Dismiss Retry-safe with idempotency_key.

crm.segments.suggestions.list

Read. Scope: crm.read. Contract: source_inferred. Crm Segments Suggestions List

crm.semantic.search

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Semantic Search

crm.send.email

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Send Email

crm.send.email.route.crm.send.email

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Send Email

crm.send.for.signature

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Send For Signature

crm.send.payment.link

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Send Payment Link

crm.sequence.action

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Sequence Action

crm.sequence.runs

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Sequence Runs

crm.setup.status

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Setup Status

crm.sharing.rules.get

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Sharing Rules Get

crm.sharing.rules.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Sharing Rules Save

crm.subject.registry

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Subject Registry

crm.subscriptions.list

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Subscriptions List

crm.subscriptions.rollup

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Subscriptions Rollup

crm.subscriptions.sync

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Subscriptions Sync

crm.task.create

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Task Create

crm.tasks.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Tasks List

crm.team.parent.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Team Parent Set

crm.team.rules.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Team Rules Set

crm.team.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Team Save

crm.teams.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Teams List

crm.territory.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Territory Set

crm.video.status

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Video Status

crm.views.delete

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Views Delete

crm.views.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Views List

crm.views.save

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Views Save

crm.webhooks.delete

Write. Scope: crm.write. Contract: source_inferred. Crm Webhooks Delete Retry-safe with idempotency_key.

crm.webhooks.list

Read. Scope: crm.read. Contract: explicit. List CRM outbound webhook endpoints and recent deliveries

crm.webhooks.save

Write. Scope: crm.write. Contract: source_inferred. Crm Webhooks Save Retry-safe with idempotency_key.

crm.webhooks.test

Write. Scope: crm.write. Contract: source_inferred. Crm Webhooks Test Retry-safe with idempotency_key.

crm.workflows.delete

Write. Scope: crm.write. Contract: source_inferred. Crm Workflows Delete Retry-safe with idempotency_key.

crm.workflows.list

Read. Scope: crm.read. Contract: source_inferred. Crm Workflows List

crm.workflows.save

Write. Scope: crm.write. Contract: source_inferred. Crm Workflows Save Retry-safe with idempotency_key.

有客人 (44)

customers.analyze

Write. Scope: customers.write, journey.write, admin. Contract: explicit. Analyze a customer journey with AI Required fields: client_id. Retry-safe with idempotency_key.

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: explicit. Get a customer profile Required fields: client_id.

customers.journey

Read. Scope: customers.read, journey.read, admin. Contract: explicit. Get a complete customer journey Required fields: client_id.

customers.list

Read. Scope: customers.read, crm.read, admin. Contract: explicit. List known customers

customers.outreach.prepare

Write. Scope: customers.write, crm.write, admin. Contract: explicit. Prepare CRM outreach for a customer Required fields: client_id. Retry-safe with idempotency_key.

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

hr (48)

hr.agent.incident.close

Write. Scope: hr.write, admin. Contract: explicit. Close an agent incident — the same act that lifts the suspension it caused Required fields: incident_uuid, resolution. Retry-safe with idempotency_key.

hr.agent.step

Write. Scope: hr.write, admin. Contract: explicit. Run one agent step: gate verdict, execution and outcome reported separately Required fields: run_uuid, agent_key, tool_key, jurisdiction, purpose. Retry-safe with idempotency_key.

hr.agent.step.status

Read. Scope: hr.read, admin. Contract: explicit. 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: explicit. A human takes an agent run; no further agent steps are accepted Required fields: run_uuid. Retry-safe with idempotency_key.

hr.agent.tool.grant

Write. Scope: hr.write, admin. Contract: explicit. 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. Retry-safe with idempotency_key.

hr.agent.tools

Read. Scope: hr.read, admin. Contract: explicit. List the registered typed tools an agent may use, and open agent incidents

hr.ai.corrections

Write. Scope: hr.write, admin. Contract: explicit. Bundle recent reviewer corrections into a dataset; it is pending privacy review and trains nothing Retry-safe with idempotency_key.

hr.ai.quality.overview

Read. Scope: hr.read, admin. Contract: explicit. The AI quality board: sampled defect rate, override pressure per workflow, coaching reception

hr.booking.slots_reconcile

Write. Scope: hr.write, admin. Contract: explicit. Release booking slots whose claim never became a booked meeting Retry-safe with idempotency_key.

hr.connectors.certify

Write. Scope: hr.write, admin. Contract: explicit. 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. Retry-safe with idempotency_key.

hr.connectors.health

Read. Scope: hr.read, admin. Contract: explicit. 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: explicit. 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. Retry-safe with idempotency_key.

hr.decisions.explanation

Read. Scope: hr.read, admin. Contract: explicit. 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: explicit. Provision seatless employee access and send the invitation Required fields: person_uuid. Retry-safe with idempotency_key.

hr.employee.restore

Write. Scope: hr.write, admin. Contract: explicit. Lift an employee access suspension (written reason required) and provision again Required fields: person_uuid, reason. Retry-safe with idempotency_key.

hr.experience.metrics

Read. Scope: hr.read, admin. Contract: explicit. Measured persona experience metrics (self-service rate, decision cycle, coaching usefulness, quality) from live journeys

hr.global.readiness

Read. Scope: hr.read, admin. Contract: explicit. The whole launch picture: 15-gate leadership score, release readiness checks and jurisdiction coverage

hr.identity.facets

Read. Scope: hr.read, admin. Contract: explicit. List a person's identity facets and open conflicts Required fields: person_uuid.

hr.identity.link

Write. Scope: hr.write, admin. Contract: explicit. Link an identity facet to a person Required fields: person_uuid, facet_type, facet_key. Retry-safe with idempotency_key.

hr.interview.room.connect

Write. Scope: hr.write, admin. Contract: explicit. Connect the AI to interview media; refuses unless media really reaches the worker Required fields: media_uuid. Retry-safe with idempotency_key.

hr.interview.room.consent

Write. Scope: hr.write, admin. Contract: explicit. Record or withdraw consent for ONE interview purpose (recording, biometric_liveness, transcription) Required fields: media_uuid, purpose, state. Retry-safe with idempotency_key.

hr.interview.room.pause

Write. Scope: hr.write, admin. Contract: explicit. Pause a live interview Required fields: media_uuid. Retry-safe with idempotency_key.

hr.interview.room.provision

Write. Scope: hr.write, admin. Contract: explicit. Provision an interview room (a place to meet — NOT AI participation) Required fields: session_uuid, transport, accommodation_route. Retry-safe with idempotency_key.

hr.interview.room.state

Read. Scope: hr.read, admin. Contract: explicit. 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: explicit. A human takes the interview; the AI cannot speak in it again Required fields: media_uuid, reason. Retry-safe with idempotency_key.

hr.jurisdiction.capabilities

Read. Scope: hr.read, admin. Contract: explicit. 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: explicit. 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. Retry-safe with idempotency_key.

hr.jurisdiction.coverage

Read. Scope: hr.read, admin. Contract: explicit. Computed coverage for every market: released pack, named counsel owner, cited sources, passing tests

hr.jurisdiction.explain

Read. Scope: hr.read, admin. Contract: explicit. 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: explicit. Put a drafted policy pack into effect; refused without a named counsel owner and a cited law Required fields: release_uuid. Retry-safe with idempotency_key.

hr.learning.overview

Read. Scope: hr.read, admin. Contract: explicit. Read courses, paths and enrolments

hr.leave.overview

Read. Scope: hr.read, admin. Contract: explicit. Read leave types and requests

hr.lifecycle.lanes

Read. Scope: hr.read, admin. Contract: explicit. 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: explicit. Read HR connector accounts, conflicts and deliveries

hr.org.tree

Read. Scope: hr.read, admin. Contract: explicit. Read the organisation tree

hr.people.create

Write. Scope: hr.write, admin. Contract: explicit. Create an HR person Required fields: display_name, primary_email, worker_type. Retry-safe with idempotency_key.

hr.people.get

Read. Scope: hr.read, admin. Contract: explicit. Get one HR person Required fields: person_uuid.

hr.people.list

Read. Scope: hr.read, admin. Contract: explicit. List HR people

hr.people.update

Write. Scope: hr.write, admin. Contract: explicit. Update an HR person Required fields: person_uuid, display_name, primary_email. Retry-safe with idempotency_key.

hr.postings.list

Read. Scope: hr.read, admin. Contract: explicit. List job postings

hr.readiness.read

Read. Scope: hr.read, admin. Contract: explicit. Run the HR release readiness report

hr.release.verify

Write. Scope: hr.write, admin. Contract: explicit. Run the four HR release gates (schema, manifest, probe, readiness) Retry-safe with idempotency_key.

hr.requisitions.create

Write. Scope: hr.write, admin. Contract: explicit. Create a requisition Required fields: title, openings, justification. Retry-safe with idempotency_key.

hr.requisitions.list

Read. Scope: hr.read, admin. Contract: explicit. List requisitions

hr.thread.delete

Write. Scope: hr.write, admin. Contract: explicit. Delete a workforce conversation; refused while it is under legal hold Required fields: thread_uuid, reason. Retry-safe with idempotency_key.

hr.thread.legal_hold

Write. Scope: hr.write, admin. Contract: explicit. Place or lift a legal hold on a workforce conversation Required fields: thread_uuid, on, reason. Retry-safe with idempotency_key.

hr.thread.retention

Write. Scope: hr.write, admin. Contract: explicit. Set a conversation's retention class (standard|extended|permanent) Required fields: thread_uuid, retention_class. Retry-safe with idempotency_key.

hr.threads.retention_sweep

Write. Scope: hr.write, admin. Contract: explicit. Run the conversation retention sweep; legal holds are never swept Retry-safe with idempotency_key.

intent (6)

intent.clear

Write. Scope: intent.write, admin. Contract: declared_dynamic. Intent Clear

intent.funnel

Read. Scope: intent.read, analytics.read, admin. Contract: explicit. 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: explicit. Read intent summaries

intent.summary.route.intent.summary

Read. Scope: intent.read, admin. Contract: route_inferred. Intent Summary

kb : (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

Read. Scope: kb.read, 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: explicit. Delete a lead Required fields: lead_id. Retry-safe with idempotency_key.

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: explicit. List leads

leads.stats

Read. Scope: leads.read, analytics.read, admin. Contract: explicit. 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: explicit. Update a lead Required fields: lead_id, status. Retry-safe with idempotency_key.

元a (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

平台 (921)

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.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.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.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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Benchmarks Contribute Now

platform.hr.benchmarks.opt.in

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Benchmarks Opt In

platform.hr.benchmarks.opt.out

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Document Deletion Request

platform.hr.document.hold

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Gig Decide

platform.hr.gig.post

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Interview Schedule

platform.hr.interview.transcript.correct

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Meeting Propose

platform.hr.meeting.reschedule

Read. Scope: platform.read, 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

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Meetings Reconcile

platform.hr.mentor.propose

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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. Hr Person Create

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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Req Transition

platform.hr.review.cycle.open

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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.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: explicit. Analyze sales with AI Retry-safe with idempotency_key.

sales.chart

Write. Scope: sales.write, admin. Contract: route_inferred. Sales Chart

sales.compare

Read. Scope: sales.read, analytics.read, admin. Contract: explicit. 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: explicit. 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: explicit. 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: explicit. Get a session journey Required fields: session_id.

sessions.list

Read. Scope: sessions.read, analytics.read, admin. Contract: explicit. 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: explicit. List Site Intelligence alerts

site_intelligence.alerts.resolve

Write. Scope: site_intelligence.write, admin. Contract: explicit. Resolve a Site Intelligence alert Required fields: alert_id. Retry-safe with idempotency_key.

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: explicit. 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: explicit. 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: explicit. List Site Intelligence crawls

site_intelligence.crawls.status

Read. Scope: site_intelligence.read, admin. Contract: explicit. Get crawl status

site_intelligence.dashboard

Read. Scope: site_intelligence.read, admin. Contract: explicit. 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: explicit. 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: explicit. 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: explicit. 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: explicit. Start a Site Intelligence analysis Retry-safe with idempotency_key.

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: explicit. Block a visitor Required fields: visitor_id. Retry-safe with idempotency_key.

visitors.list

Read. Scope: visitors.read, analytics.read, admin. Contract: explicit. List visitors

visitors.table

Read. Scope: visitors.read, admin. Contract: route_inferred. Visitors Table

網頁 (1)

webhooks.events.list

Read. Scope: webhooks.read, crm.read, admin. Contract: explicit. List outbound webhook events and their payloads

寫入 (6)

writing.analyze

Write. Scope: writing. Contract: source_inferred. Writing Analyze Retry-safe with idempotency_key.

writing.compose

Write. Scope: writing. Contract: source_inferred. Writing Compose Retry-safe with idempotency_key.

writing.reply

Write. Scope: writing. Contract: source_inferred. Writing Reply Retry-safe with idempotency_key.

writing.rewrite

Write. Scope: writing. Contract: source_inferred. Writing Rewrite Retry-safe with idempotency_key.

writing.summarize

Write. Scope: writing. Contract: source_inferred. Writing Summarize Retry-safe with idempotency_key.

writing.translate

Write. Scope: writing. Contract: source_inferred. Writing Translate Retry-safe with idempotency_key.

有OpenAPI和Postman嗎?+

有。所產生的 OpenAPI 3.0 文件已於 /api/v1/openapi.php, 已產生的 Postman 收藏位於 /api/v1/postman.php, 而可被人讀取的開發者多克正在 /api/docs/.

有多個工作地段我怎么去?+

在所要的正文中傳出 site_ key以選擇工作區。 为一工作區所發出之金鑰會被固定在它上; 有管理上下文的金鑰可以選擇所允許看到的任何工作區, 而被拒絕的則不是 。

有哪個動作可以只讀取金鑰?+

有被標記為已讀的動作。 在金鑰上設定權限模式以只讀取_ and every write is read_ only_ key 被拒絕了, 因此報告整合即使出錯也無法改變任何事 。

為什麼我找不到能看得到的?+

金鑰被放入到工作區。 在其他工作區所錄取的紀錄回歸到未找到而非權限錯誤, 因此 API 就從來不確認出有東西在別處存在.

發展者

二. 安全 API

有一份相接相接和相接的安保合同:取用 OpsIQ 它所知道的一分一分 IP 或是發件人,并回報你自己的系統所看到的虐待.

OpsIQ 已自衛: IP 防火牆能阻擋攻擊者, 有票管能过滤垃圾信, 有安全AI能分類罪犯并提出區塊規則。 security API 有收費平台、客戶端出入口或自訂應用程式可以先檢查訪客再信任他并報告所觀察到的相關事務, 因此整台安裝都從每個地表上學取相關相關信息 。

有能有能有可作

在信任前檢查

安全性。用防火牆狀態檢查答案,任何相匹配的垃圾信規則和快取的 AI 定案 IP 一通通通相接相接同想相接.

就把你所看到的去報告了

有安全AI將所觀察被分類為安全事件嗎? IP 有再接再励地接起相關事件相接相接, OpsIQ 就直接去取相了.

分享垃圾信規則

有安全性. 封鎖名單. 有安全性的. 被封鎖了. 相關名單 就讀取和寫出同樣的垃圾信條出自入站出站出放入一通系統的收發件人被封閉到任何地方了.

有接通器出名被指被虐待
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.write

有需要安全通報 有需要就去取取取通報

有活可活了

有被封鎖的寄出人仍會被放入垃圾邮件相關地圖中,

有地道能自保了

伺服器自有的 IP 地址永遠也無法被封鎖、封鎖或被報告 API 因此被誤組的集成不能取下站台.

💡
在整合下薄荷一金鑰,再取出API 金鑰并只提供它需要的安全範圍 。 每個動作的完整請求合同以元. actions和 OpenAPI 文件收錄 。
有我已存在的接通器自動使用嗎?+

出站同步已自動: 當您阻擋到一 IP 在相接的平台上被取自相接器安全同步。API 有被接入的一半。用有安全範圍的金鑰指向這四起動作的接通器或自訂代碼 。

有垃圾邮件出道地點?+

有一間店 有票被封鎖出發人控制 有垃圾信AI和這個 API 有同樣的封鎖名單相對 所以有同一個地方可以找取

發展者

事件 API

將您伺服器或網站自訂的事件傳送至 OpsIQ 以做分析、實驗、CRM 觸發和網頁ook 條件等。

如何運作
事件 API音軌 () 呼叫傳送自訂的已訂訂事件入內 OpsIQ 它能提供轉換目標、分區和觸發器。OpsIQ.track ("demo_booked"), {值: 0有"正"想出"正事"});2. 轉換目標分片触发和網上呼擊( Webhooks)瀏覽器 (M)OpsIQ. track)或伺服器端 POST /v1/events
事件 API

瀏覽器邊緣事件

瀏覽器事件追蹤
window.OpsIQ = window.OpsIQ || [];
window.OpsIQ.push(["track", "button_clicked", {
  button: "signup",
  page: "/pricing",
  variant: "green"
}]);

伺服器端事件

伺服器侧面, 有記錄活性及轉換相關接者相對於動作 API 使用 crm.activities.record 二. 生命周期/商业活动和 crm.conversions.record 沒有任何人能夠 events.send 動作;入站的 CRM 事件接收者活在 /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"
}

(一) 取名

點標注

"命令"不是"命令完成"

有時

"按鈕"不是"按鈕."

有分明地分明

"定价","計劃被選取"不是"用戶-行動".

發展者

二. 相關相關數據如何相通 OpsIQ

了解相關相關資料相關資訊能幫助您去除相關整合并优化性能.

如何運作
二. 相關相關資料的流出从元件和信號相通到相通相通 OpsIQ CRM (CDP, 身份圖、 AI大腦相接相接地圖、分析相接取地圖等) API.元件信號( B)OpsIQ 核心CDP 身份圖AI 腦子分析 · CRM有出站了淨 值 API
相通相通

入境相接相接

1
元件信标

该 JavaScript 元件傳送頁面檢視、點擊和聊天訊息到 /beacon.php.

2
事件摄取

有 site_ key 、 事件類型、 客戶相關相關內容的 opsiq_ events 中儲存的事件 。

3
階段相會

會議建立者群組分頁到会議的檢視( 通過 cron) 。

4
身份解析度

有匿名記錄后 就被連入到客戶檔案上

5
接通器同步

Connectors 从外接平台取出資料并儲存到接線器快取中.

6
AI 上下文

AI相接上下文取自:訪客歷史、客戶相關描述、接通器資料、KB等,

出界相接相接

1
二. 事发起火

有內出事起火(ticket. created, talk. message, order. complete.).

2
工作排入

在同樣的工作排行中被放入了事件 。

3
Webhook 發出

發出器簽名并發出到所有已訂閱的端點上.

4
就失敗重試

以相乘回放重試了失敗的出貨

設定值

設定參考

設定是工作區的控制中心。 下方的都被放入您所在的工作區, 因此一個帳號可以跑出多個有不同身份、聊天行為和保留規則的品牌 。

尋找一處設定

有相關的六百個單一控制符, 分佈於十一分頁下取出四個選單。 您不需要瀏覽取取取 。

搜尋設定 (Ctrl + K)

在設定頁面上的任何一處按下 Ctrl + K, 或是 Cmd +K。 用平話打入并按 Enter 就直接跳到控制上。 搜尋能容忍小打字并理解相關單詞, 因此排程器會找到 Cron 和 隱私能找到追蹤控制符。 它只顯示您可以開啟的設定值 。

工作地和計劃

有通緝和許可證

AI和客户支助

管理助理,客戶聊天, OpsIQ 寫入與相助相關的口徑( C) 。

相接相接同相接

有跟蹤和隱私 有權有權有能 有安全 有權 有權出動 有權取用 有權回應 有權自已出動了

系統

Cron setup (只自辦)和危險區(Danger Zone).

正在保存

每分頁自取其用自取的儲存按鈕所保存。 Client Chart and OpsIQ 在螢幕上寫入他們的被關接的字段。 在切換分頁前要儲存; 變更不是被傳出到相關區去 。

深相連接

正在使用的分頁被寫入頁面地址, 因此可以將分頁用書签出或寄給同僚 。

(一) 商業身份

在每份回覆、報告和每日簡報上,

商業名稱

在 AI 報告中被使用, 有每日簡介和取用相關用戶的用法。 符合您網站的頁面 。

商業

有相關的相關資訊相關相關事務, 有相當相關地點相關同時也相關:

系統語言

The language shown to anyone who has not chosen their own. Each agent can override it in their profile.

使用瀏覽器語言

在訪客自有語言中顯示登入頁面。 一旦有人選取了那裡的語言, 就贏取了他們的選擇而這也永遠不會被取代 。

系統時區

整個系統所經營的區域有:日期、報告、排程和背景。您用您的操作時區,而用不是您的客戶 。

(一) 地平道和地平線;

GeoIP2 資料庫路徑

第一個載入的自動偵測器通路已通到 GeoLite2- City. mmdb. cPanel 在相關相關資料夾中加入 GeoLite2-ASN. mmdb 。

地源模式

GeoLite2 only, GeoLite2 with a Cloudflare fallback, or Cloudflare only. Cloudflare modes require the site to be proxied through Cloudflare, with visitor location headers enabled for city and region detail.

會議逾時 (s)

在訪客會議被視為結束前不活動 。14400 有四小時了

活地刷新相關站( s)

Live Feed 有多快的更新。 預設值 30 二分.

活性阈值 (分)

有訪客在上一頁載入后需要活多久 。2分分鐘后出發。 這是活的取料放行站, 而不是會話長度 。

保留( 天)

刪除已相關紀錄:分析、聊天、入場券、回報、交易、AI遥測、集成紀錄和CRM活性等。0設定、所寫內容和同意收據都永遠不會被取出 。

有聊天被刪除后

選擇被刪除的對話保留多多在記錄上: 有完整記錄, 有沒有對話的記錄, 或是只收分。 刪除總是能隱藏收件箱和訪客歷史上所說的聊天事。 排程中保留并忘記訪客也總是被完全抹去。 不管出名, 有名的訪客會被完全地去除相關內容 。

有轨电车流量

有被收起去取走的被子被收起來了 有被子和被子都收起了

已啟用回應調查

顯示全站回馈元件到訪客。 分別於客戶端聊天相關的聊天相通相通, 支援相通同樣相通 。

概述:AI地物

每一個人工智能表面都用主接頭接通了, 每個工作區都缺省并保存了 。

入場券

就一分一分地分出出出一分的票子,

AI 三相相相旋轉摘要

在工具提示中顯示代理商在票單上徘徊一行的分類標籤和摘要。需要 AI 三进取 。

收件箱副駕駛 (composer)

在票面回應框下再加入 AI 草稿回應、 Warmer、 Shorter、更正義和相關按鈕。 沒有代理, 就不會有出信的 。

就問 --OpsIQ 副駕駛

有頁面能被看到 有副駕駛員被放入每張行政頁面上 有收費人、收費單或入票單

上午简报

副駕駛提供候選票、逾期回覆和候取聊天等相關訊息。

有錢 有名有名 有后援 有名 有名無名 有相 有名出行 有名取名 有作相 有相接相接 有相通相接有相接同相接可相接能相接可以相接

OpsIQ B. 基 金

管理員所收的錢都被轉換成此通貨幣以顯示。 Connectors system their source money; set that per connected.

自動同步 FX 率

每六小時由一通免费的公用訊息刷新一次而無 API 您可以加入手動取代 feed 的收費率。 在自動同步關閉后, 沒有手動收費相關收費分數的通貨被留作不轉換 。

開啟通商和取出帳目功能

通通通了通訊卡和活情報取自相關相關的相關資料; 有通訊信號被取出后,

商業名詞

教導 OpsIQ 你的用詞:你是否會更新,更新的字眼,你賣什麼,買家被稱為甚麼。

品牌和日志

二上傳, 一是光背景 (admin sidebar) 和一是暗色 (sign- in page) 。 PNG、 JPG、 WebP 或 SVG 上傳至 3 MB.

站台情報干員出發后可以自動出發了 SSH 目標

自動啟用 SEO 代理器已連接到 SSH。私人、回回回和所保留的地址被預設地阻擋为反 SSRF 的相關措施。只可被自傳的安裝接觸到本地伺服器上使用 。

OpsIQ 備份/回復

出出每一個設定和 OpsIQ-自有表格外加已上傳的檔案。还原取代 OpsIQ 它從不接觸客戶、发票、入票、服務、域名、訂單或交易等。

⚠️
在使用危險區的相關事前先取備份。 備份會活在一般區, 而刪除動作會活活在危險區, 因此可以很容易地去取刪除按鍵而不需要先匯出 。
設定值

設定: 安全

保護入住的管事人、你的員工帳戶和相關資料 OpsIQ 有收取。 支援口的客戶簽收被分類地設定了 。

有簽入的保護

谷歌reCAPTCHA

在管理員的簽名上停止出牌并提供憑證入錄。 選擇 v3( 隱形、 有分) 或 v2( checkbox), 設定 v3 分數阈值并提供站點和密钥。 這些同樣的金鑰被支援的出入口請求表所再用 。

失敗 -- -- Login自動鎖出

在視窗內封鎖多起故障后, 有幾個小時可以儲存地址。 您可以自訂已鎖定的頁面訊息并顯示小的等屏分取分取功能 。

登入硬化

有最小的密碼政策、拒絕在已知被破壞地區所發現的口令、每個帳號被關出以抵擋憑證入檔、對每位行政官都必須有兩個因素、密碼再入時才有危險相接,

單一簽名 (OIDC)

有需要出發人需要入住 URL, 客戶端代碼和客戶端秘密。自動提供域名, 每行一通, 在先簽入時自動建立用戶 。

單一簽名( C)SAML 2.0)

有口才的提供商 SAML. OpsIQ 提供ACS回覆 URL 和 SP 實體 ID; 您提供 IDP 實体 ID, 登入 URL,可選取的簽出 URL 有出自:和X.509 簽署憑證。 Email and name 屬性字段只需要用於非標準的屬性名稱 。

SCIM 配置

目錄所驱动的建立、更新和關閉 OpsIQ 帳戶。OpsIQ 提供 SCIM 基底 URL 有標記的符號可以被取出取出而不用折斷其他符號 。

2. 相威胁、阻截和收受

出站 Egress 允許清單

限制外部主機此工作區連接器可能呼叫的 。 Confanion to the SSH 在將軍中指向目標控制.

相對相對和自動鎖取相對的相對威脅

有客人被威脅得分出分后 就被封鎖了0禁用它。 在選取數字前, 在安全概觀頁面上看上一周 。

封鎖頁面信件

有被封鎖的訪客所看到的訊息, 如純正文字或您自訂的相關相關訊息等 HTML 有區塊相屏.

有真人訪客提供的核心網頁要數

Measures LCP, INP and CLS from real sessions.

有被打斷并重試安全事件快遞

自訂事件排入瀏覽器并分批提供回覆, 以減少不良的通訊接通所損失 。

有簽名的追蹤燈塔

真正的元件嵌入了一個旋轉的加密符號, 因此可以拒絕被偽造的追蹤資料。 默认地取出; 允許變更嵌入的驗證方式, 因此先做測試 。

安全警示

預設關閉。 不管怎樣, 偵測和封鎖都行。 這張卡片能控制您是否被告訴, 以及AI能提供多多相助 。

開啟安全警報

有出名了

失敗的登入波阈值

有幾起被收錄到的失敗事件被算作一波值得警示的出道

IP 有名有名的相思相想

在公眾虐待資訊中新增相關人士的威脅分數。

站台表

有時起起起出出出起出起起取出起入出起取回起出取出出取取出取回取出去取出回取取取回回取回出取入取出 TLS 已到期檢查, 在憑證失效前提醒 。

AI安全分析師和AI事件簡介

有相關攻擊被分入一項可讀取的事件, 而不只是一串事件;

相關自動導覽

就當是自作自受地把從一起事件中所學到的東西變成了被提出或被應用的规则,

每日安保文摘和每周姿勢相關事務

有一份每日回想, 有一份周刊的硬化檢查單, 有顯示被保護和被開啟的相關相關事項。

自動到期的已暫停的建議

有條條例是您自作自受而未有地被收起取出出自"活"出自于"活活"

DOM 分頁重放

開啟 DOM 片段回放

記錄回放的訪客會議。 在回放相簿上從未載入, 因此不關閉也無所謂。 記錄被取出取樣并被自動掩飾出, 在"分析"下被監視到會話回放頁面上 。

Sample rate, max capture, retention

有多長時間可以做一回錄音, 有多多天能收錄相關相關影片;

⚠️
會話重放收錄了使用您網站的真實人。 取取樣率和保留率要保持低到仍然能回覆您所問的地步, 在您的私密通知中公開它 。
設定值

設定: 追蹤與隱私

什么? OpsIQ 有能收起的 有能活活多久的相關記錄 有能能活多久? 有能有能活多活的相去相去多活

不适用情形

已排除 IPs 和 CIDR 範圍

有被追蹤到的地址, 有一行一行, 有确切的地址或 CIDR 範圍。 最能讓自己團隊出門去分析最清潔的方法, 因為它能把住址上的人都收起而不只是簽名的管事人員。

已排除 URL 路由

有星號的通配符。 例如: /admin/* 就把后台都放出客房記錄了

資料保留政策

有數天后被分系統自動清理了 有相關的資料保留設定和危險區域的清理

AI相關紀錄

信心遥測能有短的查詢和回應預覽。 預設( C) 90 有相關訊息, 在收縮隱私時先取短一點 。

AI 使用事件

有名有名地指名道姓地取出相去相去取取取相去去取回相去分取相取相出相取取入相取而取取出同取相通相取 90 有相關通訊錄相關相關的相關資訊。

動作審查追蹤

被篡改的動作和出自安全記錄 365 有好幾天了 就保持這一長一短 這是你的證據去向

诊断

有系統健康記錄 有預設 30 有好几天了

有未回答的問題

AAI 無法回答的問題群組。 預設( C) 90 在被AI所錯過的問題上做活活活

監視犬和出品

异常的警告

每日相對昨天相對相對最近的基准值, 當一公尺的移動超过你的阈值時會有警覺。 預設值 35 有百分之一被預設了

倉庫導出

有您自有的 BI 堆疊的相關會議、訪客、頁面檢視相關表格被以您所選擇的格式被保留了多天。 默认情况下已關閉 。

設定值

設定: 管理助理AI

有活取取用客戶、通訊單、票、伺服器和克龍紀錄等。您所工作的活取助理同客戶聊天下的人有不同相關的助手相通相通。

開啟 OpsIQ AI 元件

在每個管理頁面上顯示助理按鈕。 關閉后可以隱藏到每個人名下 。

佈局和行為

角位置, 有面板寬度 (% 1)320 至 600 px),最大高度 (400 至 900 px),角半徑 (0至 24 有被冰霜所打出一塊玻璃被打得模糊了 有相當多的花花相接相接地被取出 有相通地被打出相通相通取出相去相通的相通道相通

顯示快取芯片

一擊取出首字母下方的捷徑按鍵。 对于多數人來說,走得最快了 。

顯示型號資訊

有顯示哪個模型能回應并需要多長時間; 有用而有調整成本, 有噪音可以做日常用取。

人均接通出入口

只顯示已簽署的管理員的助手, 其用戶名和電子郵件都符合 。OpsIQ 被指派到此工作區的代理。 擁有者總是能通過。 在啟用前先用檢查我的存取按鈕, 或是您可以把自己的團隊鎖出 。

AI 人

在面板開啟時顯示名稱、 頭條標籤和自訂的歡迎信件 。

有智慧的快活芯片

編輯每個捷徑的標籤和下方的快取, 加入您自己, 或是被重置到預設中。 標籤是所見所見, 即是 AI 所收取的 。

顏色和外形

芯片外形 (平面, 四角,平方) , 有花牌顏色相接相接, 有相接的相接取出相接( 有相通相接口相接接相通等相接可相接 ) 。

相對回憶體

在瀏覽器會議中助理回憶出每個人的歷史相關事由,取出至 120 信件,被儲存入您自己的數據庫中。清除以從新開始 。

設定值

設定: 客戶端聊天

您的客戶所使用聊天元件和設定中最大的區域。 有六個子塔布, 有主開關并被 Save 被固定在分頁上方 。

在子分頁中工作以依次安裝: 身份與副本相接相接、外觀相接取相接接相通相接地接相關相接, 有支援相接之流相接可接相連相接的相接性相接能接可等相接同相接者相接而行相接也相接有相接可以相接了相接自相接 。

身份和复制

有品牌身份

元件名、 標籤行、 AI 名、 有系統和被打亂的通訊名所使用名稱, 有代理名的出現方式等。 Agent Name source 在真名、 自訂名或團隊名取決相關 。

在聊天中打招呼

有兩句相關的問候, 一首是想找回所有訪客和被證實的訪客。

出水茶

在聊天前可以被取出浮出的信息, 有自有名稱、 字体大小和顏色等。 AI能寫出取笑者, 有可產生多少、 有多少人可以顯示以及相隔多處等控制功能 。

提示和取出

完整文稿: 需要姓名和郵件、 證件、 要求人員、 沒有代理、 票已建立或被取消等。 有相撞面板上有 二打相關的單行相關 。

狀態和空間通知

有三條可被取用的信息:代理關閉聊天, 訪客已安靜地走入了, 代理也回應到AI。

作曲家和建議

有三個好建議比一頁文章更能引出入場券。

啟動器、相像和神通

有相關相關的相關圖示相關地點: 有相機相關出入口相關通訊相關,

外觀

主題和玻璃

取景模式, 有外加顏色預置相關、 模糊的強度和不透明相關相關, 此外有動畫相關的切換相關功能、 分隔行、 隱藏狀態列、 隐藏信件盒卡并隱藏關閉按鈕等。 从預置起; 它一開始會設定相關數以十幾種相關之地相關所取相關顏色相關 。

主要顏色

啟動器、 頭目、 有幫助面板、 有連結、 有按鈕、 有系統通知和作曲等, 有相關相關的起端顏色。 有預設的玻璃選項會忽略這些相關功能并保持通訊性收尾 。

有相片、泡泡和花片

有相關相關的相關資料被取出。 有相當於相關地區相關資訊相關, 有相通地區、相關外接相關站等相關事由相關人所提供相關同樣相關; 有相接相通相關能相通取取取相通的相通性相通可相通。

布局和元件

面板寬度和高地, 角半徑, 字型大小、 屏幕位置、 發射器外形、 泡形相接相接方式以及相接者是否顯示等。 在手機上測試相接的寬度 。

二. 作 事

AI自動回應

接通了AI回應的接通接通器 就叫出出一通通通訊等人

有活人相接 有活活活地去取回相接相接同相接的相接作相接

訪客安靜時的輕鬆追蹤,以及可選擇的短暫第二則消息,如同一個人會發送一條訊息。 調整每次沉默最大追蹤、第一個延遲、後續乘數、出席窗口和最大序列窗口。 可以限制在工作時間內,並且在簡單感謝之後被抑制。

打字機回覆和回覆速度

是否按字母排列回應,以及助手的回應速度,以默認或您自己的最小和最大延遲(毫秒)為準。 小延遲比即時答案更人性化。

有線可譯

有許多人會用自己所說的語言去讀取相關的相關內容;

在代理空間后再接回AI

在AI接回相談前 有幾分鐘的特工不動了

自動開啟聊天

在元件自動開啟前有秒數 。0在手機上被入侵; 在0除非被考驗出相去相去多遠

更聰明的答案

有預想能預想出一通接通的答案, 有深度想取, 有代理接通接觸的可選擇的單一模式, 有向訪客展示推理、 容忍錯誤打字、 有長長的對話、 只限助理去你所經營的生意、 有訪客通貨價、 有連結的出現等。 只有相關事才可能被大家所接受 。

成本节约

跳出相關資訊去尋找問候和感謝等問候, 在回覆中以最久的代號為上限。 Trims 成本不變取答案在真正的問題上的质量 。

語言

有相關相關的相關功能相關,

客戶帳號回覆

有名的客戶自有帳號提供回覆, 有可選擇地以活取取取, 有需要時才可以選擇加載。 在所有情况下只讀; 有需要需要時載入可显著地降低成本 。

退款

有助退款要求的助理收集了細節并交接到人上, 它自己也永遠不會完成退款.

相對和元件

有時也想取回相關相關的相關訊息, 有時想找相關人員取用電子郵件取用相關口信,

元件特徵

Emoji 取取器 有可選的貼子模式的附件、 AI 影像理解相、 內線圖示、 麥克風、 對話按鈕、 訪客聲音、 附件預覽相接相接口接相關相接、 有聲呼叫相接和會議相接等相接方式。 AI相接可讓訪客貼上錯誤截取相接取相關的相關回應相關通訊相接之道相接而得到相接接相通相接的相接同相接者相接互接相連相接地相接通相關同相關接相干相接能相接所接相相接被接相隔相接有相接自相接可以相接 相接去相接

管理信箱、通知和歡迎出道

有訪客歡迎出聲出聲 此外有你的特務出聲:收件箱出聲、桌面通知、低聲出声、或被私密出聲叫出聲等,

相支援流

人手取出

如何指定人的要求, 代理商需要回應的秒數, 是否拒絕回覆至 AI, 以及 AI 在超時到期后是否再起。 在起跑前配置此功能或只等一等就想取用人類的訪客 。

工作時數

在這些時間外, 人工智能不會提供人類。OpsIQ 有作文.

有人工智能出道后回覆

第一個回覆是: 在被排隊的人被接通后回覆, 有多久才再接?

下行表單

顯示聯絡人表單而不用聊天 。

查取入站和出站通知

AI出道后, 有一位訪客引用了一通出道的票號, 就得到它真正的狀態, 而AI可能去到哪些地區。 有內建面板可以顯示出每個地區的真正收受者, 有通知人解決的方式也一樣, 在客戶做事前可以看到地區有警示出自誰所想出的方法。

在聊天元件中的相關說明中心

由訪客瀏覽已出發的文章而不用離開聊天。 您選擇了入站點、 下方的列標籤和圖示, 以及是否提供通訊到完整說明中心的連結。 在預設下取出 。

相對分數

有位代理關閉聊天、接觸結束或被您所設定的不活动期后相接了星等。 選擇一兩個出動點, 而不是全部出動取出 。

聊天后調查

有您所問的問題、延遲、時間規定和每次訪問的上限等, 有訪客可以發出郵件或下載筆錄。 有一回被回答; 有三回被拒絕 。

聊天后電子郵件調查

有時也用訪客所談到的語言做回回應調查, 有時可控制延遲、取由、入門、問問等, 有按鈕標籤和感謝行等。

回覆回覆

有上下拇指指接通了相關的AI回應 提供出品地盤

相對檔

日後自動收放自動檔案, 在沉默后分分鐘自動取出; 在相關地點下刪除已存档的對話。 第三名被保留了, 有同一般和追蹤相關的同名文件 。

知識培訓

助理到底知道什么 在客戶聊天中沒有其他事能比起他去想了

网站 知识培训

Crawls 您的站台可以讓助手從中回應。 有多达十個起站點, 有頁面限制, 有連接深度和被排除的資料夾 。URL 在完全爬行前可以被測試 。 排除取出、 帳號和管取路由 。

嵌入

该 API 有使頁面被取入可搜尋的字節而不是關鍵字相配的金鑰和模型。

AI 有知組織者

一擊后AI就讀取了每個FAQ并爬行了頁面再分類.

檔案QS, 有驗證的回覆

有相關狀態、重量和分類的回覆對被視同為最优先來源。可搜尋,可匯入自 。JSON 有相關資訊相關相關的相關事由相關人員所提供。

高级

性能和限制

投票相隔、 信件速率限制和視窗、 最大附件大小、 每個視窗的附加試圖等, 並允許檔案延伸。 延伸列表是安全控制; 保持緊固 。

即時提供

有時會有相關訊息和狀態, 有時也會被投票取而代之;

按下通知

有相關裝置的利息, 有 Pusher Beams 或 OneSignal 为代理伺服器提供裝置警報 。

Web 推取 (VAPID)

瀏覽器用您自己產生的金鑰按下而沒有第三方提供商。 它在此生成, 而不是在危險區中出產 。

有聲相通相通、相通同相通

TURN 憑證用於限制性網路接通所接通的呼叫 Cloudflare 有特維利奧的證件 有自已的TURN URL,使用者名和身份證。

收件匣工作流程

代理工作區設定而非訪客設定:分分鐘后先回覆 SLA, 儲存了排隊檢視、鍵盤捷徑和指令調色板、內接相對搜尋以及檢查員所收取的客戶入場券等。

訊息頻道

WhatsApp, SMS, Facebook Messenger, Instagram, Telegram, X direct messages and LINE, each with its own AI auto-reply switch, plus a policy switch for AI actions on channels, a reply debounce and the WhatsApp re-engagement template. Every channel lands in the same inbox as web chat.

在您編輯分頁更新后最下方使用 Live Widget 預覽。 使用它而不要重新載入您的網站以檢查變更 。
設定值

設定: 樣本

每封電子郵件OpsIQ發出, 有一項設計可以把它們都放入圖框中。 編輯任何信件的用法并寫出您自有的樣本以作任何相干OpsIQ已發出。

有一項相關設計 有多條相關訊息

全局電子郵件樣本 is the wrapper: your logo, the header, the card, the typography and the footer, with an empty middle. Every message OpsIQ sends is inserted into that middle. Edit the wrapper once and every email changes together — the ticket replies, the Store receipts, the password reset, the booking reminders, the PeopleOS letters, and anything you write yourself.

有辦法把電子郵件取出去OpsIQ它被用到每封信件所留下的一分點上, 因此后加入的信件不能錯過它 。

編輯信件

1
開啟設定值, 然后是樣本

有的訊息被分類:票和出入口、商店、入住和帳戶安全、訂收、對話和通知、報告、PeopleOS信件等。

2
按您要的一首編輯

有位富于文字的編輯HTML檢視您可以切換到活生生地, 並在收件人收取時預覽已完成的電子郵件- 您的包裝已包含 。

3
使用可變的芯片

在編輯器上方的芯片是變更的事實: 有票號、 有訂單、 有定單取名、 有預訂時間等。 點擊一塊以放入指標所處地點 。

4
保存

Only that message is written. Leave a field empty and it keeps its built-in wording; the pill on the row tells you which state it is in.

💡
在發出電子郵件后取出您所不使用變數, 它所坐的行也取出。 因此, 有無電話號碼的訂閱會從不接通"通訊" 。

寫出您自己的樣本

用此來取訊息OpsIQ它得到所有內置訊息的通訊-編輯器、預覽、計劃規則和您的全球設計-而您自有的系統也傳出它。API.

1
按下添加模板

The button sits at the top of the Templates page and again beside "Your own templates".

2
Name it

它會被您所打入的字段所顯示的、 在您所輸入的相關資料中被取出。 如 x_ Customal_ delivetation_ booked等, 它在之後無法變更, 因為有東西已由它傳出 。

3
就說出它的目的和被送去的時候

有兩行是您和您同僚所讀取的 在每年的樣本頁面上,它們相當值三十秒之多.

4
列出所變更的部分

有逗號相隔, 例如: 名稱、 什麼時候、 追蹤到_ link。 每個都變成了一個{{variable}}您可以放入主題或信件中, 您的系統會在發出時填入它 。

5
寫出主題和信件

平話句是好- 行折換成段落。 只寫入 MESSAGE; 標籤、 页眉和页腳出自全局樣本 。

6
Create it, then open it

它被收錄在"您自有的樣本"下 有完整的編輯器和活取預覽相關, 和每封內建信件同樣.

⚠️
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.

正在自動傳送樣本

Two calls on the product API. The caller supplies the recipient and the variables — never the wording and never the design, so an integration can neither send unbranded mail through your workspace nor quietly change what you say to your customers.

列出您所要使用模板和變數
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有電子郵件 就按你傳入的樣子把它們放回原位去

有樣本和你的計劃

有訊息您沒有服務用於

Stays listed with a "See plans" link and no editor — so you can see what OpsIQ would send, and what unlocks it.

有您自己的樣本

在您建立時選擇服務的樣本, 或是把它留在每個計劃上。 有工作區沒有此服務可看到它已列出, 但無法編輯或發出 。

簽入、安全、通知和電子郵件測試

從來不計劃好。 無法修正密碼的用法會被重置到您自己的管理員所收取的, 就不是一類的鎖克了 。

第 二 章

就我一個消息能改變一下嗎?+

No, and deliberately. The design is the wrapper and it is shared, which is what keeps every email recognisably yours. What is per-message is the wording, the facts panel and any buttons you add inside the message.

如果我再按下重置,我的用法會怎樣?+

就只重置到全局樣本上, 它用內建的設計取代了編輯器中的東西。 在您按下 Save 之前, 任何東西都不會被寫入, 因此您可以關閉相關對話框以改變您的想法 。

有一次我把一副樣本弄錯了+

Removing takes two clicks for exactly that reason — the first arms it and tells you what will stop working. If it is already gone, create it again with the same name and the same reference comes back; only the wording has to be retyped.

有接通器能帶出自有的樣本嗎?+

有 一包船 a mail_templates.json 在它自己的目錄中, 它的訊息會以同樣的編輯器、 預覽、 包裝和計劃出門等" Developer s模板" 下出現。 您的用詞編輯屬於您的工作區并活過套件更新 。

設定值

設定: OpsIQ 正在寫入

有自動回覆、本地出票系統、升級、公用時間、路由及客戶郵件等。

自動重複( A)

顯示 OpsIQ 正在寫入按鈕

在管理中新增您代理員的寫入助手按鈕 。

開啟自動重複的入票

在延后后再排出新票并回覆。 從關閉起, 并重讀一週的草稿。 退款、 取消和存取變更都應該通到人口 。

自動重複相關部門

有自動重複的部門可以回答 有沒有列出的都由人來處理 就只有安全預設了

(分)回覆延后

有多久能等自動回覆被傳出 就當作是機器人接通了 就等了幾分鐘再接通取回了

有出自"最有出息"的相關資料 有出於"最出名"的收據

有單一部的上限, 如 Billing等1二. 支助3有被搞混了的線可以回轉出去.

回覆相關時間、狀態和身份

有最相當的寫入符號, 有回覆后和升級后出票狀態, 有哪一個管理者會被指稱自動回覆。 有清楚的帳號可以讓員工去告訴人工智能出回回信 。

原生出票业务

有原生入站機

有入站入站出站出出站入出站取出出入站起站出. OpsIQ,以安裝而不用外接求助台。

在本地入票中輸入入郵件

有電子郵件被收成入票了. OpsIQ 提供端點 URL, auth 代碼、 脚本路由和 PHP 二进制。 任何可以寄出到此端點的都可以建立入場券, 因此要保密 。

多回合回覆和延后及放出

有時也無法回覆相關訊息, 有時有時也想等一聲靜音接通后再回覆。

二. 公共支助门户

有可選擇的歡迎行可以起立并追蹤入場券的客戶相關頁面。 它的地址和外觀被設定入了支援口卡 。

出票號碼格式

在產生的票號中出自多個隨機字母.

有自己語言的電子郵件客戶

有出票人使用相關語言。 教員用電子郵件從不變更語言:通知、部門通知、簡報和預期報告都用您系統的語言提供。

致謝和回應

在新票上固定回報, 在開出入票時再加確認訊息; 在回報被留回和關閉出票后再有活取預覽。 此外, 在取景地后也有全球電子郵件樣本包和連結 。

AI垃圾信筛选

由不明的寄件人來螢幕入場券, 並可以自行選擇移取疑似垃圾郵件。 在您觀察其判斷前先自動移出 。

自動關閉空出入場券

在多個安靜的日子后關閉一通票。 在收尾訊息中告訴客戶要怎麼重新啟動 。

(SLA 行事曆)

第一個回復和解析分時器的時區、開放和收工時間、工作日及假日等。 在客戶端聊天下, 工作時數是分別的。

自動接通新入場券

有特務技巧和相對的敏感度以技能取向。

有好處想取出相當多的票子

有相當相當能調整的相對敏感度 有相關相關的出票相關地點 有相近地點有相關取出相關出票

結束后满意度調查

在收尾后一天以電子郵件傳出一份調查。 結果會出現在 CSAT 頁面上 。

有電子郵件通知部門

有新入站票到站后就通通電取到出站口,收信口是出站地口的入站口不是出站地址

AI能讀到什麼?

AI 客戶端資料存取

有主開關外加個人只讀權限, 包括客戶端描述摘要、 发票、 交易、 信用平衡、 產品及服務、 域名、 有連接的伺服器和高階帳號概述等。 从描述摘要起先, 在回覆需要時加入分類相關功能 。

升学和知识

開啟 AI 票的升級

在接通前把一票移到更適合的部門去。 您可以選擇被允許的部隊, 檢查延后, 並可以自己寫出升級通知指示。 打開內部升級便條, 讓出一票能分辨出為什麼會被取出 。

相關相關的相關設定

答覆是否使用客戶口語,是否取自已爬行的連結和 FAQ; AI 是否讀取影像和 PDF 附件、 知識回覆模式, 是否已匯入 JSON 有知識被使用, 有知源連接可能已出現。 使用已爬行的連接和 FAQs 就應該被接通了, 有可猜取的 AI 也行了 。

在回應后自動停止回復

有時有員工回信了 就不會接通了 有時就由人工智能去談取你的經紀人

有出票和電子郵件說明

有可載入的活起例子; 有特定地描述AI所不能做的事情。

匯入 JSON 知 識

上傳或貼上 a JSON 寫入助理的知識檔案 。

按鍵工作室

有完全的外觀相關按鈕:顯示相關風格、相關大小、標籤、圖示相關外觀、相對相關相關等相關顏色、相接相關角度、邊框相關地區相關、相近相關之地相接地區同相關;相關取景相關的相關環相接取景地相關 CSS 框中包含控件所不包含的。

設定值

設定: 相關口

有 人 起 出 票 就 追蹤 、 有 有 有 相關 的 事 題 、 就 有 有 在 有 有相關相關 有 有同 有相通相通 有同相通 相通取用相通分接相通的相通地 。 它 有相接相接地 站 有相相通外觀設計 在 有相連相通口站所 有相可通相接 相接 有相 相連地 有相交相通之相通 二相通 三相通有相通

出自"相關通訊" (Portal Studio)或"嵌入式票房" (Enbed Ticket Portal):我需要哪一?

有兩種相當相當多的產品被人們所分化出一團 有能解決不同問題 有能跑能跑就很正常了

支援口站:您要送客戶去的地方

工作室設計 a 完整支援站台 OpsIQ 有您的主機( D)它有自有的網址或自有域名,并有自動服務的經驗:用搜尋、請求表、票房歷史、客戶登入和助手等相助文章。您可以選擇樣本,取出主題、通訊、通識、腳步、布蘭德、出票、助理、出出票等。CSS 在桌面、平板电脑和通訊器大小等處先預覽后再出出。

Use it when 有名有名地可以指向每個客戶 而您更想不自己在網站上建立或保持相關支援區域

有入內入內出票口:入內取票口

有入地了 就取出您自己網站一頁的入票經驗。用戶開啟、追蹤并回覆支援要求而從未離開您的頁面, 而您自己的頭、通訊和設計也保持原樣。 在元件建構器中設定佈局、外觀和存取規則, 預覽結果后再把嵌入的片段复制到您的頁口中 。

Use it when 您已擁有有自己設計的网站或應用程式, 您想在其中得到支持而不要把客戶交給不同的地址。

短版本

工作室正在建起 有地點可以接通相關人員有入住地帶出出票去取出出出入站票去去去取取出入出入住去去回回回去去 有你客人去的地方去取回去。多家商業都以文章和搜尋的方式把票元嵌入到帳戶區去取內文, 而把主機端口保持为完整的自用地點。 這些是相關的開關 。

地址和存取

存取模式

有的是通向任何人,有的是被限制入住的客戶。通訊門會得到更多入站入站出站口和垃圾信。

佈局選擇

出自相關的相關地區: 有同一個英雄或同用兩個, 有同樣的通訊和同名單位, 有相關通訊區域標籤等。

出入口地址

有用到的住址取出名和相接地點 OpsIQ 顯示所產生的出入口和相對的說明中心位址。您已傳送了分解的連結后再變更它 。

有您自己的地盤

在您所擁有的地區上提供入口, 如相關支援. Yourdomain. com 。

有內嵌入的入站口

在您所描述的接地部件上切換, 在您選擇地圖、外觀和存取規則的地方開啟嵌入式建築器, 預覽結果并複製出您的頁面。 這不是 Portal Studio:由 Study 設計主機入口, 它能把入站票放入您自己的站口中。 兩者可以一并被取出 。

有客人要怎么收入去取入去?

這些是您的客戶簽名選項。 工作人员簽名被設定在設定和保安下 。

簽入方法

在簽名頁面上出現了哪些選項。 Connector 和 mail sign- in 工作自動被取出 。

有入住的社交

需要提供客戶身份和秘密的客戶帳號提供商 有由您提供轉接地址 OpsIQ 就去跟提供商通話了

(OIDC) 單一簽名

有發出人提供身份證的客戶入住 URL,用戶端代碼、秘密和可選取的電子郵件域名清單。

有客人 SAML 2.0

该 SAML 等同地取出. OpsIQ 提供ACS回覆 URL和 SP 實體 ID; 您提供 IDP 實体 ID、 登入和出牌 URLs,X.509 憑證與可選取的屬性名稱。 轉出 SAML 在簽名法中出名,否則就不會出名了

有你應用程式的接通收件

A signed deep link so a customer already signed in to your application lands in the portal without signing in again. OpsIQ supplies the signing secret, portal URL and workspace key, a complete route for your language (PHP, Laravel, WordPress, WHMCS, Node.js, Flask, Django, .NET, Rails, Java, Go, and on self-hosted installs the OpsIQ server itself), step-by-step setup notes, and a generator for a signed test link. Use the generator before writing any code.

有道可通了

您的客戶點擊了指向路由的支援連結。 路由會找到被簽署到您的應用程式( 有位客人被送到您登入和回覆) , 从您的伺服器上讀取秘密, 在兩分鐘后簽出一項已到期的一次性信使, 并用無回報和無儲存信使頭重定向到通訊口, 因此信使不被缓存或漏出 。

出入口自有的簽名用按鈕

在 Portal Studio 中, 在簽名頁面上開啟用我的網站登入并設定您的登入頁面 URL 在同樣的路由中。 入口已添加 opsiq_portal_return (被收看的頁面; 路由只當它被收到您入口地址中并帶回了客戶入住后才被取出).

WHMCS

有活要寫: WHMCS 從遠端站點取出被勾通已把客戶端簽署入出入口并處理回復地址。 set your login page URL 至您所 WHMCS 客戶端區域登入 。

有地方都簽了

在您所應用程式中也簽署了客戶名 。

收受和保护

要求表單字段

所要表單所收集的有結構字段。 每一個外接字段都會輸入提交, 因此只要問您需要分類什麼 。

垃圾邮件和虐待

有蜜罐和收費限制可以保護公開表單。 此外您可以用 Google reCAPTCHA 或者用 CAPTCHA 来封鎖可支配的電子郵件位址, 加入您被封鎖的地區并加入 CAPTDCHa 。Cloudflare Turnstile. reCAPTCHA 重用已設定的設定, 安全; Turnsttile 金鑰被輸入到這裡 。

口口分析

有一篇只讀取的概述,

設定值

設定: 權限、 許可權、 曲折與危險區域

有系統群組 有能決定由誰去取出設定分頁的團隊接觸控制器 有相關的相關控制器

群組存取和權限

人均權限

有權可使用, 有權可以使用聊天收件箱的通訊, 有能被編輯的區段和相關部門。 有全管理員角色的任何人都有權可做。 有權能決定人所看到的分頁, 因此可以提供最窄的相關相關接方式以讓他們能工作 。

許可證

顯示您目前的執照、 它所赋予您所擁有的權限和狀態 。

克倫設定

就自辦安裝了 OpsIQ 隱藏您所執行的排程和分頁。 有一行 Crontab 執行每個排程:自動回復出票、 升級路由、 汇率刷新、 信箱投票和接通器同步等。

1
复制行

分頁用已選擇的正確 PHP 二進制顯示您伺服器所取取的克倫塔布行 。

2
在相片上加入相片( Crontab)

在 Crontab- e 就用於執行 PHP并貼上單行的用戶。 在 cPanel 取而代之的是 Cron Jobs 工具。

3
檢查

就一分鐘后心跳平板就亮了 就用跑去做活活活取活活

心跳面板顯示了自動重複排行和電子郵件及連接器的最後一跑、相關時間和被處理的內容。 它警告了上次跑出手動網上按鈕而未有真正的伺服器克龍, 有心跳已停止等時所發生的情況 。

危險區域

刪除所有追蹤資料

擦去所有東西 OpsIQ 已收集或產生。 您勾選要包含和輸入的確認詞句。 設定和站點設定、被封鎖的位址、您所寫出的一切( 知識基礎、 FAQs、 翻譯、 出入口設計、 動作定義等) 和同意收據都被保留了 。

清除已老相去相去

有同樣的掃描被限制到相去相去不遠了 30, 60, 90 或 180 就自動回轉取出一般和"追蹤"中的保留值而取而代之并讓已預定的工作去完成它。

🚫
在使用危險區中的任何東西前, 从設定中匯出備份。 這些動作無法被取消 。
設定值

有你一行人相管相管

有請團隊成員并出任指揮所的分管人

團隊
團隊和部門( S)有相關人員、角色徽章(Owner、Full Admin、Agent等)和相關部門相關的表格。團隊和部門( S)工作區域團隊和部門( S)+ 儲存管理用戶聯繫人作用二. 部 分有同[email protected]阿達·克活斯 (Ada Owusu)有主全部KM 相關[email protected]克霍·門薩克完全管理全部RT 有相關相關的相關通訊[email protected]麗塔·特特有名有收費SB (相接相接)[email protected]有名支助1TEAM邀請管理管理( M)2ROLES有名者 :3SCOPED各部门的接通
有相關人員、角色和能接觸到的部門 有特務 有被監視 有被收看的地盤 有被取走的地點 有被打入地道的地道 有被放入地區的地區 有被出走地道取走地取走去地道去取走取回地道地道

角色

有主

有權通通通地區 有駕照 有收費 有危險地區 一出一出

完全管理

有權出行,有權管事

有名

有被分到的分出地區 有入場券 有聊天 有分析 有出行道 有出出行口

二. 邀请小组成员

1
前往隊伍

在邊邊站接通了隊伍

2
點擊邀請

輸入隊員的電子郵件相關相關

3
設定角色

有權取出地主、全管所或代理商

4
指定部门

有特務需要接通的分局

5
傳送邀請

有一封有相關設置的電子郵件被收取了.

設定值

二. 团队业绩

您的支援團隊是怎樣進行的。 存取是經許可而無作用: 取景權可以開啟頁面, 管理權可以解鎖目標; 有QA和同事認可讀取; 有獎金- 財務權限就是增加回報分頁。 有團隊領導可以被授以任何一項而不必成為完整的通訊人 。

二. 团队业绩
二. 团队业绩有相關的分數條、CSAT和一行的出價平衡等分。二. 团队业绩工作區域二. 团队业绩助理沙雷CSAT : 科取有平衡RT 有相關相關的相關通訊麗塔·特特4.8$42付款SB (相接相接)(出自"相克通")4.5$28付款KM 相關克霍·門薩克4.2$15付款有同阿達·克活斯 (Ada Owusu)4.9$51付款1SCORED二. 复合性能2CSAT & LOAD分數+音量3REWARDS薪酬代理结余
The real team-performance screen: each agent scored on volume and CSAT, with a reward balance you can pay out per row.

頁面的排列方式

Team Performance is five tabs. Each answers a different question, and they are ordered by how urgently they usually need you.

01 指揮中心

有活的排隊狀態 有客戶的結果 有你所想的目標 有用去的能力 有需要作決定的情況 有證據調整出每隊人員的指數

02 有同隊相通了

有領袖出道、認取(最有進取和分數相當高)、追求和被選入的控制等。

03 质量

有分數卡 有收據 有評估 有機會修正了審查人協議 有評論人出事 有證據爭議 有問題 有相關事由有相關的

04 酬勞

收費數值、出價要求和受管期分類: 授權有資助的上限,

05 歷史

How the workspace has moved over time: trend metrics with a chart, and a 28-day coverage heatmap showing when the team was actually working. Each card hides itself until there is enough history to draw it.

未分數不是零

A teammate without enough handled volume — or whose dimensions carrying evidence add up to less than half the configured weight — is shown as Unscored. Their score, rank and band are empty and their breakdown is hidden. This is deliberate: rendering an absent measurement as a zero puts someone at the bottom of a ranking for having a quiet week. Evidence thresholds are configurable per workspace in Targets & scoring.

二個證據阈值能做出不同的工作并值得分開去。 最低被處理的決定了是否被打入一分。 最小被打分并不影响得分: 它能決定取出和獎賞資格。 因此, 隊友可以被打出全分并被打上分數, 也仍然被不合格, 因為只有太少的客戶被打中分分數 。

💡
Every figure is scoped to the workspace you are viewing and the time range you pick. A teammate working in two separate workspaces has an independent record in each. Two exceptions worth knowing: a site GROUP is one workspace, so its member domains are measured together; and the All-sites view deliberately measures everything at once.

二. 效绩索引

A composite of five dimensions, each measured against a target you set rather than against colleagues, then pulled towards the middle when the evidence behind it is thin. Note the direction: the adjustment moves the figure towards 70, so a thin excellent score is pulled down and a thin poor score is pulled up. A bad first week on four conversations is not a settled verdict either. As evidence accumulates the adjusted figure converges on the raw one.

质量

有被查證回報的客戶滿意了 有QA分卡的可以取出相補的結果 有被收受管束的

有回應性

第一個回應出自P50和P90百分位相對于你的目標

分辨率

有解析分出時間 有一通通解析率

SLA

Attainment against the SLA you configured, plus at-risk and breached counts.

管理

Reopen and transfer rates — the work that comes back.

💡
Weights are configurable and relative; they do not have to total 100. Missing evidence can only lower the index, never raise it — the full configured weight stays in the denominator.

二. 能力和生产活活地

Occupancy, productive time, solved per productive hour and online share of the window. Utilisation is deliberately not reported: it needs scheduled hours as a denominator, OpsIQ has no roster or shift source, and a substituted denominator would be a guess wearing a percentage sign. It reads as unavailable with that reason attached.

⚠️
有的說花花相當多, 有的也用得去, 有的是錢 有的叫出一筆錢 有的是出一分錢 有沒有手柄的同隊相通 就沒了 有的寫出一毫錢

质量保证

有分分卡是標題審查員能取出真正的對話。 只有已出版的版本能接受評估, 而所發出的新版本從來不重寫已得分的。 有評論是一項對話的證據,不是對人作的判斷 。

复核人协议

Reported as a chance-corrected statistic (Cohen's and Fleiss' kappa), not a raw agreement percentage. Two reviewers who pass everything agree 100% of the time while carrying no information.

有相關的相關事由被審查人所打擊出

有的評論者在同樣的對話中分出比同僚更硬或更柔和的分數相對,

有爭議

A teammate can formally dispute evidence recorded about them. An open dispute blocks reward-period finalisation until it is resolved.

自審

有被拒絕了 有隊友不能自作主張

⚠️
AI-graded evaluations cannot influence pay until a calibration is published showing the model agrees with human reviewers closely enough, measured by kappa against a minimum sample. An open gate means the model agrees with people closely enough to count — it never means the model is correct.

認同

Ranking alone has documented failure modes: metric gaming, burnout, and public shaming of whoever is last. Three alternatives sit alongside it.

改进最多

就以同隊同學的相關記錄來衡量 也從不以同僚相對 有收縮了 所以小分母就買不到取勝利了

有出息了

Consecutive periods meeting a fixed, declared bar — average rating, handled volume, ratings count and negative-feedback rate, all absolute figures. Everyone can hold a streak simultaneously, so it creates no ranking, and a colleague having an exceptional month cannot break yours.

接地收起分出名次

默认地取出。 有隊友會看到自己所想的索引; 有同僚會否是工作區的決定。 有百分位的樂段可以被公佈而不用去取取絕對的位置 。

💡
有分別的分別是被收費取出或被取出,

查詢

A target the team works towards, measured against a fixed declared bar rather than against each other — so everyone can clear the same quest in the same period.

二. 范围和自律

Individual or team; one-off, repeatable, or seasonal with an explicit window.

二. 标准

有相關的討論被接觸了,收視率被收視了,活取出日,平均收視分,或負回應率被打擊出。 所有絕對的-沒有一個能以同僚所做的事為取向的衡量标准。

有质量的警衛

Required on any quest with a volume target. Hitting the number while quality falls below the floor withholds the quest rather than completing it, and it is shown as withheld, not unfinished.

重复限制

有最慢標準所推动的相接期上限 此外再有可選取的冷卻再有重複可計數出去.

二. 出征

有同樣的進步而沒有出自每隊人員的分類 所以一隊人手的取向不能成為領導板

教練会

有一位教練、一位同隊同學被教練接觸、有時間、有商定的談話分數相接并有之後所寫的簡介。真正的聊天、入場券和QA評論被以作證, 因此相談被根據到所發生的工作上而沒有被回想到的印象上去取出。

有話可說 有話可以說 有事可以說出相關事由

在會議前就同意了 所以隊友可不會出事了

有被綁起的證據

Chats, tickets and QA evaluations attached to the session. A pin stores a reference — a type and an id — not a copy, so it always points at the live record. OpsIQ does not verify the id before accepting it.

動作項目

Each with an owner and a due date. An item past its date is shown as overdue — a derived state, not a status somebody has to remember to set.

私人便條

教練自有的便條。被教練的隊友永遠也看不見它,不是做特務、經理、作主等。 在得到其他許可后再做檢查也無法被推翻。

有能看出一場會議的人

有經理出品的同隊同夥 就沒有其他人了 有同一個部門的其他同隊相通了

审计

有被收錄的相關內容 有被取出的人所取出

💡
Coaching is deliberately separate from scoring and from money. A session does not change anyone's index, does not gate a reward, and does not appear on the leaderboard.

4. 奖励和授奖

有錄相活性會被轉換成有您所設計的現金值的符號。 支付路徑會故意被慢化并被收錄到每一步 。

1
設定符號值

有多少相當多的活兒能值多少?

2
授权供资上限

在已關閉的行事曆期中, 有全管理員會指出它可能付出的最大代碼 。 儲存設定表不能被授權預算, 它也無法改變已授權的上限 。

3
檢視預覽

有收受者 有預備 有誰不合格 有證據的爭議就阻止了這一步了

4
完成

分配被永久地用它所支持的證據記錄。 任何分配都無法被取消再直接重做。 有一個發出符號需要先倒轉:OpsIQ 在每個錢包上寫出相抵的項目而永不刪除正本, 因此分數仍然會顯示出發生了什麼事和原因, 而放出時期也只有到此為止。 如果有任何人已經取出出多於所取取出數的現金, 以及出名和取出多少, 就拒絕了倒置 。

⚠️
有資格需要被證實的客戶回復。 AI分數可能能補充判斷而永不取而代之, 有名無分的隊友也不符合資格。 每名出資人被封鎖于 25% 因此一月能用去一筆相當高的預算,
💡
The account owner takes no part in awards or token rewards, with no switch: they authorise the funded ceiling and finalise every allocation, and there is nobody above them to approve what they would be paying themselves. Their work is measured, scored and ranked on the board exactly like anyone else.

其他人都參與其中, 有團隊領導人和同夥主相關。 要放出人去取出, 在 Team & Departments (Team and Description) 中開啟他們并關閉 " Doses" (收費) 的獎賞選項; 他們的工作還是被打入分數并被顯示; 從那起就不再是候選人了, 而任何已結束的都未被觸取到 。

⚠️
有能出錢的人也同樣能出出錢去 OpsIQ 有 一 個 人 有 一 二 三 三 三 二 三 二 二 三 四 三 三 四 四 三 二 四 三 四 二 三 五 三 三 一 三 三 六 三 三 十 三 三 五 二 三 一 二 二 四 四 四 二 四 二 二 二 一 三 四 一 三 二 一 二 四 一 二 一 四 三 一 四 四 一 四 二 一 一 三 一 一 二 五 三 四 分出 一 二 七 三 三一 三 三 八 三 三 分入 一 二 分 分 在 一 二 十 二 三 十 二 二 十 三 四 六 三 四 九 三 三 七 三 四 五 三 二 五 四 三 六 二 三 六 四 三 五 四 四 六 二 二 六 三 二 六 二 四 六 四 二 十 四 三 三 三

有誰能看得到又能做得到

檢視團隊的作業

The board, live state, capacity and quality overview for the workspace.

管理團隊作戰

Targets and scoring, exports, QA scorecards and evaluations, coaching, quests, and the reads that carry colleague-identifying data such as per-admin history and award history.

查看團隊獎勵財務

余额、現金相關值、索赔附注和付款相關因素同履约證據相分開,

有完全的通訊器

每一個金錢都變了:出酬、出酬或拒絕申請、授權預算、終結、取消或倒轉分配、定出現金相對率等。

Using it fairly

性能指數是管理證據,不是自動的用工決定。 在行動前先先開啟數據源回應,再权衡案件複雜度、排程、出行和通取需要。一週的困難并不像是一成不变的模式。

設定值

您的站台( 工作區 )

站台 (工作區) 讓您從一處管理多個站台 OpsIQ 有自有的追蹤器相接器和接通取用器相通

站点
您的站址站台螢幕: 工作區列表, 每個站台有其域名、 型態、接通器、 狀態徽章和一塊開放按鈕相接, 此外有新增站台相接相接 。您的站址工作區域您的站址+ 新增站台Sshop.acme.com二. 电子商务 Shopify 連接器有活性開啟Hhost.acme.com有主机 : WHMCS 連接器有活性開啟Bblog.acme.com內容 ^ 沒有連接器設定開啟1MULTI-SITE站台一2ISOLATED資料從不相混3PER-SITE有自有設定值和接通器( C)
真正的站點螢幕: 每個站點是自相隔離的工作區域( 有域名、 接線器和設定), 從一列表中新增并開啟了 。

建立站台

1
通到已連接的站台

通訊到已連接站點的通訊

2
新增站台

輸入名稱、域名和描述 。

3
复制站台金鑰

相關站點會得到相關的金鑰 (site_ xxx) 。

4
獨自配置

有相關相關的相關接器和設定等相關網站。

有多少站?+

有你的駕照計劃 就查下你的駕駛證

設定值

有出行證和計劃了

你的 OpsIQ 有相關地點相接相關功能相關相關通訊相關資訊相通,

許可證
授權中心该 OpsIQ 有相關資訊相關的通訊相當多;授權中心工作區域OpsIQ 授權中心有計劃商業版狀態有活性密钥OPSIQ-••••-••••-2F9CA. 助益$68 左強取遠端檢查1PLAN & STATUS有活取出相看相去相去.2KEYHMAC 在本地被清除3CREDITSAI 平衡限制( L)
有相關的資訊相關相關資訊, 有相當多的相關人員也相關同樣相關。
許可金鑰

在設定值 > 許可證中輸入。 已以 OpsIQ 授權伺服器 。

授權心跳/ 驗證

OpsIQ 通常會讀取已簽署的地用憑證快取, 有需要時會刷新驗證 。 在需要即時結果時使用強制遠端檢查; 診斷能辨識出 DNS 有 HTTPS 或伺服器時代的問題 。

有計劃

确定地物可用性和限制。

站點限制

有最大工作區相 。

A. 助益

如果用"管理AI",你的信用余额就在這裡了.

过期

在到期前更新以避免服務被中断 。

我的駕照到期后會出出什麼事?+

追蹤、入場券和CRM相接相接。 AI功能被暫停到更新相接; 資料被保存了 。

設定值

配置文件、口令和 二元件認證

每個管理員可以保持自己的身份,工作偏好,口令和兩因素認證.

產品螢幕
我的相簿描述檔頁面分出個人細節、語言/時區、相關相關同簽名、口令和兩因素認證等相關功能。我的相簿工作區域概 述完成TIMEZONE歐洲/ 雅典( Athens)二分之一分已開啟LIVE WORKSPACE VIEW姓名和電子郵件个人身份編輯語言和時區日期和相接相關編輯有相貌和簽名二. 答复和出勤編輯密碼和 二相帳戶保護有安全1UPDATE PROFILE身份和地區2SECURE LOGIN密碼和 二相3SAVE套用到此管理器
描述檔頁面分出個人細節、語言/時區、相關相關同簽名、口令和兩因素認證等相關功能。

設定檔設定屬于已簽署的通訊人而不會改變工作區的標籤。 使用一項獨有的口令并可以提供兩個參數的認證。 更改電子郵件或認證設定需要再作驗證或重新簽署入內 。

設定值

通知偏好

通知偏好控制 : 在產品中或以電子郵件傳到管理員的操作事件 。

產品螢幕
通知偏好有相關的相關相關資訊相關地點,通知偏好工作區域IN-APP郵件有選擇UNREAD4LIVE WORKSPACE VIEW已分配入票有應用程式和電子郵件有客人接了在应用中SLA風險有應用程式和電子郵件AI批准有應用程式和電子郵件1CHOOSE EVENTS有用的信號2CHOOSE CHANNEL在應用程式或電子郵件中3复核最近的通知
有相關的相關相關資訊相關地點,

有首選封面的票面授權、客戶回應、 SLA 警告、聊天接觸和 AI 批准等項事件。 在某地保留已啟用之急的操作信號; 關閉電子郵件不一定能關閉應用通知 。

設定值

二. 安全概述

安全概觀是第一個評估區塊、登入攻擊、威脅會議、安全趋势和事件完整性的螢幕。

產品螢幕
二. 安全概述A. 安全概述 14- 有時有時 有時 有出事人名單 有出行地 有出作作作相接相接可接 有出取作相通相接同相接二. 安全概述工作區域ACTIVE BLOCKS18FAILED LOGINS42HIGH THREAT3LIVE WORKSPACE VIEW自動封鎖7- 每日總和來源二. 趋势最近攻击者IP 二. 國家和理由复核二. 安保事件風險和動作成果有素大麻链完整性Tamper 相當明顯的事件串有效1READ HEADLINE目前接触2OPEN EVIDENCE二. 攻击者和事件3ACT( C)被封鎖、被查取、被匯出
A. 安全概述 14- 有時有時 有時 有出事人名單 有出行地 有出作作作相接相接可接 有出取作相通相接同相接

使用頭條名片分類,再開啟相關的稽核、失敗登入和被封鎖 IPs 或 JavaScript 紀錄等級工作的頁面出錯 。14 在使用永久封鎖前, 有高威脅的會議要被調查到訪客、要求和認證證據。

設定值

《不言自明的审计日志》

有誰做了什麼? 有誰反對? 有甚麼風險? 有否成功?

產品螢幕
二. 活 动 查 核有行動、演員、風險、目標和結果等相關可被搜尋的不言自明的行為。二. 活 动 查 核工作區域二. 事件18.2kHIGH RISK21INTEGRITY有效LIVE WORKSPACE VIEW已啟用連接器[email protected] · Shopify成功API 金鑰已吊銷[email protected] * 金鑰 19成功設定已變更[email protected] · AI:成功被拒絕的權限[email protected] * 出口有被封鎖的1FILTER相關事由:2信使二. 目标和成果3EXPORTCSV 或 JSON
有行動、演員、風險、目標和結果等相關可被搜尋的不言自明的行為。

由動作、風險和演員分選取; 匯出 CSV 或 JSON。散列可以被指導出錯誤或變更的审核行, 但是它不能取代被保護的備份和被限制的數據庫存取。 將審查匯出視為敏感, 因為它們可能會辨識出使用者、紀錄及安全動作 。

操作

诊断

有分系統檢查被轉作平地英語健康結果并接觸下一個動作.

產品螢幕
诊断診斷功能包含小部件、AI、票據、集成、站點智能、後台任務、CRM 自動化、授權和存儲的健康檢查。诊断工作區域健康13WARNING2有故障1LIVE WORKSPACE VIEW元件有取出取出相關相關的相關分點有健康二. 背景工作有心跳很晚警告電子郵件出局測試失敗失敗連接器收受的入卷和出事有健康1REFRESH執行目前的檢查2OPEN WARNING讀取證據3FIX AND RETEST确认已恢复
診斷功能包含小部件、AI、票據、集成、站點智能、後台任務、CRM 自動化、授權和存儲的健康檢查。

頁面檢查站點速度、分級/關鍵字/回通/地區相接相接資料、AI和動作网關、入站票、爬行人/收聽、集成/事由收取、背景活性、CRM自動、授權、部件相接和相關產品服務等。 它故意地報告了接線人可讀取的原因,而未揭露生來的秘密。

在改變后, 重新刷新并確認被影響的子系統回歸健康。 有綠色的分解頁面是需要的, 但并不足以啟出; 此外也完成发射前的檢查清單 。

設定值

二. 安全和出入

OpsIQ 包含多個安全層以保護您的管理、數據和 API 有入取.

如何運作
二. 安全和出入在已啟用控制相接相接的安全屏障: 二因子 OIDC SSO, SCIM 2.0(一) OAuth2 PKCE, CSRF/CSP; IP 有防火牆 有收費限制 有秘密地藏二因子 (TOTP)OIDC 單點登錄SCIM 2.0OAuth2 PCE (已取消)核心資源研究基金會 + 核能發電廠IP 防火牆利率限制秘密地窖
安保

安全性能

管理認證

有可選取的 2FA 的通訊/通訊字.

登入關閉

在被擊敗了太多次后被暫時鎖起 。

IP 屏蔽( C)

封鎖 IPs 或 CIDR 有被取用被追蹤站點之分

有威脅分數

有高威脅的訪客可以被自動封鎖了

HTTPS 執行

所有接通需要。 HTTP 轉接到 HTPS 。

HSTS 信頭

有嚴格的交通安全能防止下等攻擊

CSRF 保護

所有管理表格都包括CSRF的符號.

XSS 保護

CSP 頭目限制脚本執行 。

SSRF 保護

出站的網上游擊器被封鎖出自私自/ 內部 IP 有地址 有地址有地址 有地點 有地區 有地口 有地道 有地由地道通通通接通通

建議的設定

1
開啟 二相

有所有管理者帳戶相關的活

2
有強大的口令

最小值 12 有相通的字符 。

3
審查帳戶

移除前隊員的存取權 。

4
監控失敗登入

有可疑模式就去查一查

5
保持更新

就安全區域快速套用更新 。

設定值

角色和權限

有角色接觸控制能讓您控制出每隊員能做些什麼

角色權限( L)
角色和權限有相關角色: 有所有者有一切; 有全管者缺乏收費和危險地區; 有代理員只有放放放的入場券。角色權限( L)工作區域地板有活了危險有主完全管理有名scoped13 ROLES有名者 :2GRANULAR每頁相加3DEFAULT-DENY有被遺忘的路由被封鎖了
有一看角色的基礎:所有者得到一切, 完全管理一切, 除了收費和危險區域外,

預設角色

有主

有相關事務所 有相當多的地點 有相機 有相通相通的相通道道道通通通相接通相連相通

完全管理

除了駕照和危險地區外,其他事都行 有能打通隊伍的能耐

有名

接觸被指派的部門出票和聊天,取景分析。 沒有設定、團隊或安全存取等功能 。

我能出自訂的角色嗎?+

有三個內置角色再出任部門能控制地心

設定值

被封鎖 IPs

管理 IP 有位址被封鎖了 無法接通您有追蹤到的站點 。

被封鎖 IPs
被封鎖 IPs有被堵住的 --IPs 有一塊被封鎖了 就一塊地 IP/ CIDR 在被封鎖的地址表旁有每個項目、日期、理由和解封按鈕。被封鎖 IPs工作區域封鎖一( C) IP / CIDR 中斷203.0.113.0/24理由 (可選)封鎖被封鎖的地址203.0.113.9三月 12 * 暴虐的武力解封45.12.0.0/16三月 10 * 垃圾邮件解封102.89.6.2三月9虐待解封1區塊IP CIDR 範圍2LIST有原因地由誰出發( W)3UNBLOCK一分
有被封鎖活口的活口 IPs 螢幕: 阻擋單一 IP或 CIDR 範圍,并管理清單,每列表有日期、理由和一擊取出區塊。

有被堵住的活口

1
通到安全站 >被封鎖 IPs

2
新增一 IP CIDR 範圍

示例 203.0.113.42 或 203.0.113.0/24

3
添加理由

有文件可查:垃圾邮件、虐待、刮取等。

有否被封鎖會影響到合法使用者?+

如果相通相通 IP 或 VPN 有阻斷 IP 就用窄的地區去堵住所有被困住的人

設定值

登入失敗

您所有的登入試想都失敗了 OpsIQ 管取.

登入失敗
登入失敗失敗的紀錄螢幕: 帳號表/IPs 有失敗數量, 有上次試取的時間相接, 有一行的區塊按鈕相接 。登入失敗工作區域2. 登入試驗失敗(a) 账目/ IP有故障上回動作[email protected] · 41.62.10.47二分前封鎖[email protected] · 102.89.6.23一一八出事了封鎖未知 ? 45.12.9.712二六分前封鎖[email protected] · 88.21.4.921h 有相去相去之地了封鎖1WATCH2. 登入試驗失敗2COUNTS每一帳號/ IP3ACT( C)从一行中被阻擋
真正的登入已失敗的螢幕: 每一個帳號/IP 有倒數和最後一回試想 就把出發地從一行堵住

有哪一項能被顯示出

日期/時間

有一次想出事了 就去取回相當多的活口活口

電子郵件

有用到電子郵件地址 。

IP 地址

有出自此一出

國家

Geographic location.

理由

有錯口令 有鎖有錯 有錯就找不到了

警告

有許多相關的試驗同樣的電子郵件

密碼猜想,能確保2FA被啟用.

有許多試想 有不同的郵件

有自動攻擊 有源有源地被封鎖了 IP.

二. 异常國家

如果你們是本地人 就有可能被外國人攻擊了

設定值

AI 安全分析所

有一層被選入分析所接觸到的 安全頁面: 判決、事件簡報、每日文摘、每周一次的姿勢檢查、問安全部門等0它從來不跑入訪客所求的路由中去取取取

相關的內容由於相關相關地點被取出: 有相關事由由於被取而代之; 有相當相關的人被取用相關文件; 有同樣的相關人被取入地點; 有分別相關取出相關資料; 有不同地點相關出相接相關案件; 有通相關事件被取自相關信息; 有可相關情由相關者被取取出; 有能相關接相通相接者被接取出, 有相通地點取出同相關克相關的案件被取回相關。 有相接取相關分相關的地方被取去相關多相關 設定值→二. 安全有被拖欠的一分之一了

它所加之事

有分辨的芯片+ 解釋

被封鎖 IPs 而失敗的登入列顯示了一個有自信分數的良性/ 有可疑/ 有敵性的芯片 。 解釋一下是否開啟了推理、 所取的事實和一擊 Block/ Release 動作 。 Cached 24h 因此再看一回相 IP有自由了.

二. 事件简介

有一起相關事件相接相接而成 (login swave, URL 有一項被推薦的下一個出行地點。

每日文摘

有一次是每天一回:昨天和你的起點相對;有的是地區相接;有的是事出;有去有去;有得有去已;有出自地道;有失有去也無去已。

每周檢查相機

有相關的相關地點相對於真正的攻擊量 有嚴格的 努力和精确的修復 有相當的力度 有相對的相當相當強烈 有相通的相通性 有相接相通相通取相通同相通

有安全性

在安全概觀上被取自您所存的相關安全狀態的回覆。 深層伺服器問題被交給了管理工程師聊天而未猜到 。

政策提案+自動駕駛

分析員提出混凝土區塊規則作為批準/ 解職卡; 被批準的規則以活打取數來以零符號執行。 選取自動機只自動批准最安全規則 。

設定值

(安全-ai_已啟用)

主開關。 開啟判斷芯片、 解釋和問取安全等功能。 只是模棱两可 IPs 就到模型上再分出一通電話去取

事件簡介 (安全_ai_事件)

有相關事件相接相接并寫出相關新事由。 在已存在的時機安全克倫上跑取 。

(安全- ai_ Digest)

就一出一出"通訊" 就一分錢也用不著了

(安全- ai_ 定點) 每周檢查相關相關的相關區域

星期一要用硬化的清單來做通訊表 有完全的決定性

相關自動駕駛( serfession_ai_自動機)

讓分析員啟動最安全的建議而無人理會:可回轉的有時限區塊,單一 IPs 範圍以不超过: /24, 从不共享/ 有通/ 有相通相通, 有通相接相通 10 一小時 有被審查和被取出

💡
有被標記的每通電話 security_ai 在 AI Cifig 有自有的月花封口 → Cost Guardrail (default 300k series). 如果被擊出上限, 特性會被降級到定義讀取。 封鎖、關閉和警報從來不取決于此預算。 分析員永遠不能刪除資料、 變更設定、 觸取審查分類或永久禁止 。
操作

有線自動

OpsIQ 有一項出品排程器可以運行電子郵件投票、通訊自動、分析卷、保留、AI等列隊、CRM工作、報告和接通相關的工作。

產品螢幕
有線自動有一項產品能提供心跳; OpsIQ 就決定要做出哪些內部活兒了.有線自動伺服器有心了有分有分RUNNERcron/all.phpHEALTH設定值LIVE WORKSPACE VIEW相接相接的產品跑道opsiq/cron/all.php需要入站和電子郵件等級安排的短工有活性二. 分析和保留內部自動自動排程連接器訂閱者已宣布的克倫事件範圍1INSTALL ONE LINE就用每分每分一秒跑取出產品排程器2CHECK CRON SETUP确认 CLI 心跳3USE DIAGNOSTICS調查工作已晚或已失敗
有一項產品能提供心跳; OpsIQ 就決定要做出哪些內部活兒了.

需要的產品克龍入內

就同樣的伺服器和 PHP 環境相接相接的單行相通相通 OpsIQ:

OpsIQ 產品克通塔布項目
* * * * * php /path/to/opsiq/opsiq/cron/all.php >> /tmp/opsiq-cron.log 2>&1

取代 /path/to/opsiq 有安裝根。當主機需要時使用 PHP 通路( 如) /usr/bin/php8.4.

不要用上等相 /cron.php 有出品活了 在這個寄存器中, 跑取者屬於本手冊外的分別的非產品服務。OpsIQ 出品跑取器是 opsiq/cron/all.php.

统一排程器所驱动的

有入站和人工智能等排行

有自動复制、相關增級、批准等出行等。

入內電子郵件

有相關的收取方式被選取入選。 投票所設定的郵箱中有選取取入选的方法 。

二. 分析和会議

集合會議并更新已預定的總和。

CRM和接觸相關

執行已啟用的工作:分數、生命周期、工作流程、競選和排程報告等。

保留和保养

Performs due cleanup, archive, expiry and integrity work.

連接器

有接通器接通接通和投票的通訊單位被安裝出、被啟用并被設定接通了。

檢查克倫

  1. 開啟 設定 - Cron 設定 并確認出產品跑道已存在.
  2. 使用 Run now 有一次再去確認一下管事和投票心跳的更新
  3. 查看 诊断 有心跳后期、 PHP CLI 相關資料庫或檔案通路問題等。
  4. 檢查 /tmp/opsiq-cron.log 或手動跑取失敗后所選取的紀錄路徑。

保持接通器接觸器短取、 有等效和工作相距。 批量地同步并儲存一對光标/ 檢查點, 因此下一跑可以安全地繼續 。

🚫
有時出產就停了 就去取活活活地取活地去取花地取花花地去收活地再取活取活口去取相接活地回取活生生生地取出活口取活出取活分取活 OpsIQ 工作已停止或已遲到, 即使一般的管理頁面可能仍會被載入 。
操作

有主机部署出

有收件者 OpsIQ 在主機管理伺服器層相時使用同樣的產品螢幕和工作流程。 商業登記、計劃、收費和帳戶端口等程序都出自此手冊。

產品螢幕
有主機部署有主控操作變更, 由誰維持基礎; 它不改變客戶用法 OpsIQ.有主機部署工作區域PRODUCT UI有同樣的 OpsIQINFRASTRUCTURE有操作員所管理WORKSPACE DATA被隔离LIVE WORKSPACE VIEW應用程式執行時間前一頁、 網頁伺服器和資料庫已管理出品克隆排程由主機接線人檢查備份和更新提供商政策和證據复核OpsIQ 設定值站台、人工智能、團隊和接通器有你的一行人1OPERATE OPSIQ NORMALLY有同樣的產品通航2VERIFY SERVICE HEALTH使用诊断和狀態證據3KNOW RESPONSIBILITY分出產品設定和主機工作相關
有主控操作變更, 由誰維持基礎; 它不改變客戶用法 OpsIQ.

主機通常所管理

  • 網頁伺服器、 PHP 跑取時機、 數據庫服務等 TLS 有活活活地被收起去取出
  • 相接的產品克龍和 它的伺服器等級紀錄 。
  • 應用程式更新、 基礎監控及由主機協定的備份相關相關程序 。

搞出一出好相去相去多相去 OpsIQ 管理者仍可管理

  • 有相關網站和元件安裝、 AI設定、知識、信箱和客戶支援等工作流程。
  • 有各分局接通了 安全管制 API 鍵、接通器、自動和數據保留設定值。
  • 有相關的通訊和相關通訊等相關相關資料;

操作检查

不要想出被管理服務意味著所有產品相接相接是健康的。 在主機操作員面前確認最新的備份證據和保留政策并使用 。OpsIQ 變更后诊断 DNS、電子郵件、人工智能提供商、網站或連接器等。

上市、訂户、收費和客戶帳戶管理 OpsIQ 手冊。

操作

自收自支 OpsIQ

有自辦會所 OpsIQ 在您所控制的基礎上安裝。 您要負責跑取時間和數據庫 。TLS 有產品克隆 有備份 有更新 有監控 有相關的

產品螢幕
自收自支有自宿主能控制起碼基礎 也使你的團隊能對每起操作依赖負責自收自支伺服器PHP8.4+DATABASEMySQL 5.7+SCHEDULER有分有分LIVE WORKSPACE VIEW執行時機延伸curl, pdo_mysql, mbstring, json需要其他延伸xml, openssl, zip, intl, gd需要數據庫替代程式MariaDB 10.3+ 有 InnoDB 的 +已支持交通HTTPS和出站提供商存取檢查1PREPARE THE SERVER符合跑取時間要求2INSTALL AND CONFIGURE使用專用資料庫和 HTTPS3ADD PRODUCT CRON快跑 opsiq(克倫/全相通.php)
有自宿主能控制起碼基礎 也使你的團隊能對每起操作依赖負責

最低軟體合同

PHP

前一頁 8.4 有需要的延伸:卷曲、 pdo_mysql、 mbstring; json, xml 有出自"相克"和"相相克相克克".

數據庫

MySQL 5.7+或 MariaDB 10.3+取用 InnoDB. 建立專用資料庫和最不偏好應用程式用戶.

網頁伺服器

Apache 或 Nginx 为此設定了 OpsIQ 前置控制器、 靜态資產和需要重寫的相關資料 。

(HTTPS )

需要被管理會議所使用, 元件通訊, API 有按鍵、網上呼喊和提供商通訊等功能。

出入口

允許 DNS 而 HTTPS 有權接通相關的 AI、電子郵件、接通器和通訊錄取端點等。

文件存取

網路和 CLI 使用者必須能讀取應用程式檔案并只寫入已記錄的跑時/ 儲存地點 。

克倫

執行 OpsIQ 出品排程器每分每分 每分每秒都使用和Web相關的同樣的應用程式設定和數據庫存取.

安裝序列

  1. 上傳此放出至要取取的相關文件根并保留已提供目錄的結構 。
  2. 建立數據庫和應用程式用戶,再入入數據库 Canonical URL 有權用相通相通取出相通的相通性相通接相通
  3. 執行安裝器/ 設定流程并建立 第一個所有者帳號 。
  4. 啟用 HTTPS并驗證轉換、 餅干和公開元件/API 有去向了 有去由去由取出去去由回取回去取回回去由出自取回所取取回的去由入去取取取出取回取取去取出相去取去相去相取取相去去相
  5. 新增相通 OpsIQ 出品克通:
自管出品
* * * * * php /path/to/opsiq/opsiq/cron/all.php >> /tmp/opsiq-cron.log 2>&1
  1. 開啟設定 - Cron setup and Provications; 就排程器做一次跑取并解決每個失敗的相依性 。
  2. 在新增出品資料前先設定備份、 恢復測試、 紀錄保留及更新程序 。

安全地更新

  1. 在修改檔案前先讀取放出便條并檢查需要的 PHP/ 延伸 。
  2. 支援資料庫和應用程式/ 配置檔案, 然后證明可以以試驗地點恢复備份 。
  3. 在不刪除安裝特有設定或跑時數據的情况下部署新檔案 。
  4. 執行已提供移入/ 前飛相相關程序并驗證登入、元件追蹤、入場券、電子郵件、AI、連接器和克龍等。
  5. 有文件可回滚視窗后保留上一份放行和數據庫備份 。
🚫
主目錄上層 /cron.php 不是去取取取回取取出取取用取取入取取收取取的取取自取取而取取所取取之取取相. OpsIQ 出品自動相關 opsiq(克倫克克羅克克克) (克羅德克羅斯克克·克羅格克羅可克羅特克克所克羅去克羅地克羅取出克羅得克羅多
⚠️
不要刪除.schema_cache 。json 有相關的相關相關資訊被取出。
操作

出品指南

檢查清單和執行中的最佳做法 OpsIQ 在出品中。

出品指南
出品指南有相關清單:自訂域名和 SSL 有接通器和克倫相接器 有后援和收留 有團隊角色 有相關相接相接的接通相接接相通相通 有相接同相接啟用清單工作區域在你活出活出去之前自訂域 + SSL 已配置有你所想的AI相關相關已測試的連接器 -- cron 正在執行已安排備份 :被指派并被審查的團隊角色( C)1GO-LIVE发射前清單2(活活地)域 · SSL · 后援3CONFIDENT有綠色就去接船
有相關的清單 因此沒有錯失:域名 + SSL 有接通器和克隆相接 有備用和保留 有團隊角色 有相關的接通相接相接接相通相通接相連相接

在活出前

HTTPS 已設定

SSL 安裝了 HTTP 轉換, HSTS 已啟用 。

Cron 正在執行

有相關的分類頁面被檢查出相關地區

有人工智能被測試了

有話要說 就當是客人去打聽 檢查精確度和口氣

已安裝元件

在所有的網站頁面上。 用活取訊源檢查 。

已設定備份

每日自動數據庫和檔案備份 。

登入出錯誤

PHP 錯誤紀錄已啟用并被監控 。

有請出事的同學去接我

有正當角色的帳戶 有相關的名單 有相當多的名人 有相通的名言 有相去相去有相去 有相相通相通的地方 有相接相通出相通 有相同相通的人有相通有相相關相通接相接的相通性 有相好相通而相通可相通取相通

有所居住的知识库

至少5-10 第 二 章

Daily: Check dashboard, clear ticket queue, spot-check AI conversations.

有:回想AI入想,更新KB,檢查出隊作業,回想安全.

每月:回想分析相關相關的相關人員,

操作

发射前清單

在放出或第一次出產前先去取取出出出源碼并做實有的產品檢查。 有命令不是您所傳出過的證據 。

產品螢幕
放行檢查出放檢視顯示需要跑出門; 它不是用已取出的東西做前標籤 。放行檢查伺服器(跑出地)前一頁 8.4SOURCE GATES就地跑OUTCOME有据可查LIVE WORKSPACE VIEW第 二 章 需要的展出在套房前取出有門PHP 語法掃描所有專案 PHP 文件有門AI 評估和 PHP 單位有相依性就跑起有門靜態和瀏覽器檢查已設定時執行有門1RUN THE CHECKS抓取出自實有輸出2FIX EVERY REQUIRED FAILURE不以假設取而代之3TEST THE PRODUCT檢查真正的使用者行程
出放檢視顯示需要跑出門; 它不是用已取出的東西做前標籤 。

出自和放出出出自關口

从安裝根執行寄存器檢查并用放出相關記錄保存完整的輸出 。

第 一 等 前 飛 出 口
php tools/preflight.php
延伸放出門
php tools/release_gate.php

飛行前檢查 PHP 8.4 跑取時間和需要的延伸, 執行 PHP 語法掃瞄, 跑出 AI 評估船口和 PHp CUnit 套件, 在這些工具被安裝后執行 P HPStan/ Node 檢查。 延伸的關門也包括煙雾、 清潔- install/ schema 和 瀏覽器 在環境被設定后端到端檢查等 。

跳過的檢查不是通關。 在放出前要記錄它被取出的原因、 安裝所缺少的依賴或以正確的 CI/ stage 環境去執行 。

產品檢查

1. 認同和作用

簽署所要扮演的每個角色; 檢查被允許和被拒絕的頁面/動作 。

2元件與追蹤

在私人瀏覽器中載入一個真正的站點; 檢查信號流量、活取訊息、訪客和會議記錄等相關相關的相關資料 。

3聊天和人工智能

有相關的相關事由由由於相關相關,

4入場券

在所啟用的每一接取路由中建立、指定、回覆、相關相關再重啟相關 。

5二. 电子邮件

試取出入境快遞并每個已設定入境信箱或網路口 。

6. CRM有分析

建立受控接觸/交易/轉換并檢查儀表板、漏斗、分數和報告。

7相接器

執行連接測試, 有一項已讀取, 有 一項安全寫入/ 干跑取和網路克/ 保值路徑, 每項已啟用接通器相接 。

8. API 和網上呼喊

檢查相關範圍、相關限制、一等重複、簽名和相關接取等。

9克郎( Cron)

在 Cron Setup/ Diagnostics 中執行相關產品排程并確認需要的所有心跳 。

10 安全 。

檢查 2FA, CSRF/会話控制、 審查分錄、 關鍵取回和工作區隔等 。

11。備份并恢复

以相關相關的相關資料與設定相關。

12.可觀取性和回放性

確認紀錄/ 警報, 保存所求的ID并證明回滚程序 。

⚠️
有現有證據可以證明出出行和環境。
發展者

在第三方網站上推取

瀏覽器按下通知 (包括:OpsIQ 有位服務員由相關地區提供相關服務。OpsIQ 从您的元件載入 OpsIQ 已部署, 因此第三方站點無法登入 OpsIQ 直接由工人出手。 在站台的地盤上主機一個小檔案可以被推到站台去。 Campaign servation survived by both supported methods.

如何運作
網頁推取有OS相關推進通知被取出出出自出道口卡:由入道的VAPID和Pusher Beams所取出.有你店了你的推車正等... 10% 今天放假了就現在有內建( VAPID)有第三方主機一檔推放電子有錢就用你的帳戶去取有活人接活
網頁推取

有需要就去取取出相去相去所取取取回相去取回同分相去之相去地取取去相取相去而取取相取取自相去去相接相

瀏覽器只讓一頁登入自有的服務工作人員。 元件從您所載入的相對出自 OpsIQ 因此它不能在取用地上安裝推動工, 直到您在取取地地地上放入取用人員。 部件會悄悄地跳過推動( 沒有出錯, 沒有訂閱) 。 您有兩個選項;OpsIQ 推動運動會以相關方式出發。

由自辦的網路推進( VAPID, 沒有第三方)

1. 从您下載工人 OpsIQ 部署: https://YOUR-OPSIQ/opsiq/opsiq-push-sw.js

2. 有相關相關的相關事由上傳到您所 網頁根 因此可以被取出去 https://yoursite.com/opsiq-push-sw.js元件 自動檢視此路徑 在頁面上自有出自并登入了它, 不需要片段變更 (它使用很窄的範圍, 因此它從來不取代您已經經營的服務員) 。

可選取: 如果您必須以非標準的路徑主機, 就用元件指向它 在前 有相片段。同源相通才被接受:

有可選用 : * 在檔案不在網根上時才有可選取的 。
<script>window.OpsIQ=window.OpsIQ||{};window.OpsIQ.pushSwUrl="/custom/opsiq-push-sw.js";</script>

3. 在 OpsIQ,生成 VAPID 金鑰 (Settings → Client Chat AI → Advanced → Web Push)。此元件再向訪客要求通訊權限并訂閱它們 。

在一CDN/Cloudflare 后? /opsiq-push-sw.js 返回 HTTP 200 (如果是, 就清除快取)404 在上傳前; 有快取 404 有需要就去接通了.

B 由 Pusher Beams (管理下提供商)

1. 在 OpsIQ 設定相關相關資訊提供商所要的 推放電子 就入入取出你的取出之珠去; 實體代碼密钥.

2. 在地根上收放取取取出相關相關資訊的活人 /service-worker.js复制 https://YOUR-OPSIQ/opsiq/pusher-beams-service-worker.js,或將此行合并到您已存在的根工作人:

有生子出事了 有活兒出事去接他 https://yoursite.com/service-worker.js
importScripts("https://js.pusher.com/beams/service-worker.js");

3. 就這樣了 有自動裝入取出取出相機 SDK 并訂收每名訪客的一站利息 opsiq-site-<your-site-key>不需要接通其他接線了

二. 如何开展宣传活动

推動運動所發行的相關相關資料 有的都去取了. 有自辦的 VAPID 工作人員 有加密的網上推取, 有用 Pusher Beams 訂閱的訪客 有用相關相關的相關方式。 有用同樣的相接相關站點可以使用同樣相關同源相關互通相關接相接的相通相接方式。

有需要的 HTTPS 对于服務員和Web Push (本地主機被免去做測試) 。 管理聊天收件箱已使用同樣的 Beams 利息机制以取用操作員的提醒 。

操作

有麻煩了

有同樣的問題和如何去解決

一般

空白頁面+

檢查 PHP 錯誤紀錄。 原因: 有舊 PHp (需要) 8.4+),缺少延伸名, DB 連接失敗, 檔案權限錯誤 。

平板顯示了零+

檢查: 元件已安裝? Cron 正在執行? 日期範圍是否正確? IP 被排除了?

AI (出自:"相克")

AAI不回應+

檢查: 提供者已設定? API 有效的金鑰 (用取用測試連接) ? 預算已耗盡? 工作區 AI 配置是否正確?

有錯的答案+

檢查: 有相關相關資訊基? 即時清除? Connector speechups returning corps? 在 AI History 有相通相關的相關訊息 。

有慢相去相去+

取決于:提供商 API 速度、上下文大小( 大 KB = 更相當快的符號 ) 、 有網接需要。 請試用更快的模型 。

追蹤

元件已忽略+

檢查: 有頁面來源有腳本? 控制台有JS錯誤? CSP被封鎖了? 有Ad阻擋器?

未知的國家+

GeoIP 未被配置。 使用 Cloudflare (自動)或 MaxMind GeoLite2 資料庫。

有入場券

有郵件可建立入票+

檢查: 信箱已連接? Cron 正在跑出? App 密碼已變更? IMAP 設定值是否正確?

自動重複不工作+

檢查: 已啟用? 有部門被允許? 有AI被設定了? Cron 正在跑出? 有人類先回覆了?

連接器

連接失敗+

檢查: 憑證是否正確? 金鑰已过期? API 从伺服器取用? Base URL 有嗎?

有接通了, 但是沒有相關資料+

檢查: API 有關鍵指標嗎? 已啟用 Webhook 同步? Cron 正在執行?

性能

慢行頁面+

檢查:數據庫性能 (SHOW PROPLIST), PHP 內存( 增加到 1GB),可以放出漏洞,并缩短保留期.

操作

元件不登入

在部件不正確載入或 Live Feed 仍为空時使用此焦點檢查 。

部件不是登入,檢查站台金鑰; 在自動瀏覽器中載入頁面; 在瀏覽取器網路/控制面板上檢查被封鎖的信標或元件要求; 审查內容- 安全政策及廣告阻擋器; 確認站台正在被活取 OpsIQ 有相見的聊天相接相接氣泡本身并不足以證明分析相接信號被接受。

參考

名詞

二. 通篇使用的术语的定義 OpsIQ.

動作

有線人能用接通器或站台做出事来

有名

有被限制入住的隊員 有AI的特工

BYOK

Bring Your Own Key, you provide your own AI API key.

接通器

有外出平台相接的外掛程式Name OpsIQ.

CSAT : 科取

有客人滿意分數了 有客人想吃相 就去吃相了

就成

二. 收入CRM.

有通路和通路管制的入站票分類.

升級

有張票被移到不同的部門去 有的被從AI轉到人類去

GeoIP

有訪客地點被取出 IP 地址.

取出

有次把相關話傳到人類口中去

身份符號

有簽署的簽署符號, 指認出網站訪客相關相關功能 。

知识基础

有文章是用於回答問題的。

有铅

有客人出賣了

有分數

0-100 表示轉換可能性的數字。

生命周期相關相關站

有客人去的地方 有領導 有探險 有客戶 有危險 有被打擊出局 有被攻擊出局的有被打入了被打出局線 有被擊出作戰出局取走被打中了被放入地道

管理的 AI

第 二 部 分 OpsIQ 有計劃了.

管道

有視覺地出發了

中非区域局

有角色接觸控制器

階段

在超時視窗內接連一串頁面取景.

站台金鑰

有軌行網站相當相當獨特的認同符號.

SLA

有同時服務相關的相關條件 有同樣的回應時間

托肯

單位的 AI 文本。 大致4字符= 1有符相.

信任層

有安全系統能控制AI自動性.

網頁

HTTP回復事件通知 。

元件

JavaScript 在您的網站上嵌入了代碼 。

工作區域

有自己追蹤的站點 有AI 有接通器 有同樣的"站" 有同一個站點

參考

找多點人幫忙

如果此文件不回答您的問題:

(ADM) AI( 管理者)

點"要"OpsIQ 在管理器中。可存取此相關文件及您的平台資料 。

支助票

包含:您所試取的、發生了什麼、您所想得到的、以及任何錯誤訊息等。

電子郵件

有您執照金鑰和出處描述的電子郵件支援 。

有有效支援要求的提示

包含頁面

哪個管理頁面 (Y)URL 或姓名).

包含設定值

精确設定名稱和目前值 。

包含錯誤

有密碼的精确錯誤訊息 。

包含相關步

你所做的事相接而后行.

包含期望對已實作的相對

有出事了? 有出出事取而代之.

💡
您的要求越相具体, 回答得越快。 “ 它不起作用 ” 就需要調查了 。 “ 在 AI 配置上點出儲存會提供錯誤代碼 ” 502" 有直接的答案.