Avvio Veloce
Collega Bob al tuo sito web o al flusso di lavoro del front-office in pochi passaggi guidati.
Crea o seleziona un inquilino
Scegli il tenant che possiede il sito web, il widget e le credenziali API per questa integrazione.
Genera credenziali
Crea una chiave widget specifica per il tenant da Customer Portal → Widget Setup, oppure utilizza un JWT cliente per l'automazione lato server.
Installa il widget o chiama il API
Utilizza il widget del sito web per la chat front-end o il API per i flussi di lavoro lato server.
Test con browser proof
Verifica l'integrazione dal browser live, non solo una richiesta simulata.
<!-- Tenant-scoped bundle — replace YOUR_TENANT_UUID after onboarding -->
<script src="https://office16852.com/widget/YOUR_TENANT_UUID/widget.js" async></script>
Impostazione
Completa questi prerequisiti prima di chiamare i API protetti o di pubblicare il widget sui domini di produzione.
External integrations connect systems outside the platform to Bob. Day-to-day front-office work happens in the Portale clienti.
- Tenant created
- Business profile completed
- Website or channel configured
- API credentials generated
- Allowed origins configured
- Test conversation completed
| Ambiente | Scopo | Dove configurare |
|---|---|---|
| Produzione | Traffico clienti in tempo reale | Portale Clienti → Configurazione Widget |
| Staging / anteprima | Verifica pre-lancio | Origini consentiti + dominio di test |
| Automazione | Webhook server-side e APIs | JWT cliente dal login del portale |
Autenticazione
Le richieste protette API devono includere una credenziale a livello di tenant. Mantieni le chiavi private sul server e non esporle mai nel codice del browser.
Genera credenziali
richiestoSign in to the Customer Portal and create widget keys in Widget Setup, or obtain a customer JWT via POST /api/customer/auth/login per l'automazione.
Invia l'intestazione di autorizzazione
Server-to-server automation uses Authorization: Bearer <token> con corpi JSON.
curl https://office16852.com/api/customer-portal/widget-code \
-H "Authorization: Bearer YOUR_CUSTOMER_JWT" \
-H "Content-Type: application/json"
Gestisci gli errori di autenticazione
Restituisci errori strutturati al tuo layer di integrazione e riprova solo quando appropriato.
| Stato | Significato |
|---|---|
| 401 | Credenziali mancanti o non valide |
| 403 | Le credenziali sono valide ma mancano dei permessi. |
| 429 | Limite di frequenza superato |
/api/customer/auth/login
Accesso al portale clienti. Restituisce JWT per chiamate di integrazione autenticate.
/api/auth/login
Accesso operatore Mission Control (solo amministrazione della piattaforma).
Chat e Conversazioni
Bob espone tre percorsi di chat a seconda del contesto del chiamante: anonimo della stessa origine, widget cross-origin e Mission Control autenticato.
POST /api/chat. (2) Cross-origin embed → POST /api/widget/chat con X-Widget-Key. (3) Mission Control → POST /api/chat/message (richiede chat.manage; non per il recupero pubblico anonimo)./api/chat
Chat anonimo pubblico sul tuo dominio. Corpo: messaggio, session_id, business_id opzionale.
/api/widget/chat
Chat widget cross-origin. Intestazioni: X-Widget-Key, Content-Type. L'origine deve essere autorizzata.
/api/widget/chat/audio
Trascrizione vocale per input voce del widget. Stesse regole di chiave e origine come per la chat.
/api/chat/session
Crea una sessione quando sei connesso a Mission Control (RBAC + CSRF per i cookie).
/api/chat/message
L'interfaccia utente dell'amministratore autenticato invia (chat.manage). Restituisce 401 se chiamata in modo anonimo.
/api/chat/history/:session_id
Cronologia conversazioni (autenticata).
const response = await fetch('/api/chat', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
session_id: sessionId,
message: userMessage,
business_id: 'your-tenant-slug'
})
});
const data = await response.json();
Installazione del Widget
Installa il widget sul tuo sito quando desideri che Bob sia disponibile direttamente per i visitatori. Utilizza la configurazione specifica per il tenant dal Portale Clienti → Impostazione Widget.
After onboarding, your embed code is in the Customer Portal under Configurazione widget. The publishable widget key (pk_live_…) è configurato lì—non incorporato in HTML statico.
<!-- Tenant-scoped bundle from Customer Portal → Widget Setup -->
<script src="https://office16852.com/widget/YOUR_TENANT_UUID/widget.js" async></script>
| Articolo | Scopo | Esempio |
|---|---|---|
| UUID del locatario nel percorso dello script | Identifica il tuo pacchetto di widget | Dalla Configurazione del Widget |
| Chiave del widget pubblicabile | Autentica la chat cross-origin | pk_live_… (configurato nel portale, non in HTML) |
| Origini consentiti | Domini consentiti per chiamare il widget chat | https://your-site.com |
/api/customer-portal/widget-code
Restituisce il markup di incorporamento pronto per essere incollato. Richiede il JWT del cliente (config.read).
Webhook del Dashboard
Utilizza i webhook in uscita per ricevere aggiornamenti quando le conversazioni, i passaggi di consegna, i lead o gli eventi del flusso di lavoro cambiano nel tuo tenant.
| Evento | Descrizione |
|---|---|
| conversation.escalated | Richiesta di passaggio umano |
| conversation.takeover.started | L'agente ha preso il controllo live |
| conversation.takeover.released | Restituito a Bob |
| lead.created | Nuovo intake acquisito |
| appointment.booked | Conferma pianificazione |
| billing.payment_failed | Segnale rischio account |
| billing.payment_recovered | Pagamento ripristinato |
| webhook.test | Controllo della connettività dal portale |
| * | Tutti gli eventi sopra |
Crea un abbonamento
Utilizza un JWT dell'amministratore del Portale Clienti. Invia una richiesta POST a /api/webhooks/subscriptions con l'URL, gli eventi e la descrizione.
{
"url": "https://your-app.com/webhooks/bob",
"events": ["lead.created", "conversation.escalated"],
"description": "CRM intake"
}
Verifica le firme
Verifica le firme dei webhook lato server prima di fidarti del payload.
{
"event": "lead.created",
"tenantId": "tenant_...",
"conversationId": "conv_...",
"createdAt": "2026-06-19T12:00:00Z",
"data": {}
}
/api/webhooks/subscriptions
Elenca abbonamenti (i segreti non vengono mai restituiti).
/api/webhooks/subscriptions
Crea abbonamento. Il segreto di firma viene mostrato una sola volta nella risposta.
/api/webhooks/subscriptions/:id
Rimuovi un abbonamento.
/api/webhooks/subscriptions/:id/test
Metti in coda la consegna del webhook.test.
/api/webhooks/deliveries
Log consegne incluse righe dead-letter.
Automazione dei Persona
L'automazione dei persona controlla come Bob rappresenta la tua azienda, quando escalare e come gestire i confini.
persona.manage.Voce aziendale
Tono, stile di saluto e risposte allineate al marchio.
Comportamento di escalation
Quando Bob passa il lavoro agli esseri umani o crea compiti.
Confini tematici
Argomenti approvati e schemi di rifiuto sicuri.
Preferenze del flusso di lavoro
Routing dei dipartimenti e ganci di automazione.
/api/personas
Elenca le persone per l'inquilino autenticato.
/api/personas/:id
Ottieni una persona per id.
/api/personas
Crea una persona con nome, campi di tono, systemPrompt, ecc.
/api/personas/:id
Aggiorna una persona esistente.
Piani e Prezzi APIs
Gli endpoint del pricebook pubblicato alimentano le superfici di marketing e il checkout. I APIs della gestione della fatturazione non sono pubblici.
| Funzione | Starter | Pro | Plan Enterprise |
|---|---|---|---|
| Prezzo di listino (USD/mese) | $79 | $249 | $899 |
| Crediti AI inclusi / mese | 15,000 | 75,000 | 250,000 |
| Posti team | Fino a 3 | Fino a 10 | Illimitato |
| Integrazioni standard | 1 | 3 | 10 |
| Supporto | Prioritario | Dedicato |
/api/pricing/marketing-cards
Schede piano per marketing e checkout (pubblico, senza auth).
/api/pricing/snapshot
Snapshot pubblico sicuro del listino (senza campi costo provider).
Health & Status
Utilizza le informazioni sulla salute e sullo stato per verificare la disponibilità, monitorare le dipendenze a monte e risolvere i problemi di integrazione.
/api/health
Sonda salute leggera per monitor e load balancer.
/api/health/public
Payload di stato pubblico consumato dalla pagina di stato del sistema.
Esempi di integrazione
Punti di partenza pratici per modelli di integrazione comuni.
Widget di chat per il sito web
Aggiungi Bob a un sito di marketing o a un portale clienti.
Visualizza esempio →Conversazione lato server API
Chat anonimo con stessa origine dalla tua app.
Visualizza esempio →Ascoltatore Webhook
Verifica le firme e gestisci lead.created.
Visualizza esempio →flusso di passaggio CRM
Reagisci agli eventi di conversazione escalati.
Visualizza esempio →Flusso di acquisizione lead
Iscriviti a lead.created per l'assunzione.
Visualizza esempio →Escalazione del supporto
Monitora le escalationi e gli eventi di takeover.
Visualizza esempio →const response = await fetch('https://office16852.com/api/widget/chat', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Widget-Key': 'pk_live_...',
'Origin': 'https://your-customer-site.com'
},
body: JSON.stringify({ session_id: sessionId, message: userMessage })
});
Panoramica dell'Architettura
Office 168/52 è un front office governato basato su browser: Portale Clienti per gli operatori, Mission Control per l'amministrazione della piattaforma e superfici di integrazione pubbliche per il tuo stack.
Customer Portal and Mission Control APIs are session-backed UI routes—not published here. For a concise platform diagram, see panoramica architettura e centro prove.