Snelle Start
Krijg Bob verbonden met uw website of front-office workflow in een paar begeleide stappen.
Maak of selecteer een huurder
Kies de huurder die de website, widget en API inloggegevens voor deze integratie bezit.
Genereer inloggegevens
Maak een tenant-specifieke widget-sleutel aan vanuit Customer Portal → Widget Setup, of gebruik een klant-JWT voor server-side automatisering.
Installeer de widget of bel de API
Gebruik de website-widget voor front-end chat of de API voor server-side workflows.
Test met browserproof
Verifieer de integratie vanuit de live browser, niet alleen een mock-aanroep.
<!-- Tenant-scoped bundle — replace YOUR_TENANT_UUID after onboarding -->
<script src="https://office16852.com/widget/YOUR_TENANT_UUID/widget.js" async></script>
Instelling
Voltooi deze vereisten voordat je protected APIs aanroept of de widget op productiedomeinen publiceert.
External integrations connect systems outside the platform to Bob. Day-to-day front-office work happens in the Klantenportaal.
- Tenant created
- Business profile completed
- Website or channel configured
- API credentials generated
- Allowed origins configured
- Test conversation completed
| Milieu | Doel | Waar te configureren |
|---|---|---|
| Productie | Live klantverkeer | Klantportaal → Widget Instelling |
| Staging / preview | Pre-launch verificatie | Toegestane oorsprongen + testdomein |
| Automatisering | Server-side webhooks & APIs | Klant JWT van portal inloggen |
Authenticatie
Beschermde API verzoeken moeten een tenant-gebonden referentie bevatten. Houd privésleutels aan de serverzijde en stel ze nooit bloot in browsercode.
Genereer inloggegevens
vereistSign in to the Customer Portal and create widget keys in Widget Setup, or obtain a customer JWT via POST /api/customer/auth/login voor automatisering.
Stuur Autorisatie-header
Server-to-server automation uses Authorization: Bearer <token> met JSON-lichamen.
curl https://office16852.com/api/customer-portal/widget-code \
-H "Authorization: Bearer YOUR_CUSTOMER_JWT" \
-H "Content-Type: application/json"
Verwerk authenticatiefouten
Geef gestructureerde fouten terug aan uw integratielaag en probeer alleen opnieuw wanneer dat gepast is.
| Status | Betekenis |
|---|---|
| 401 | Ontbrekende of ongeldige inloggegevens |
| 403 | Inloggegevens zijn geldig, maar missen toestemming. |
| 429 | Rate-limiet overschreden |
/api/customer/auth/login
Klantenportaal inloggen. Retourneert JWT voor geauthenticeerde integratie-aanroepen.
/api/auth/login
Mission Control operator inloggen (alleen platformadministratie).
Chat & Gesprekken
Bob biedt drie chatpaden afhankelijk van de context van de beller: same-origin anoniem, cross-origin widget en geauthenticeerde Mission Control.
POST /api/chat. (2) Cross-origin embed → POST /api/widget/chat con X-Widget-Key. (3) Mission Control → POST /api/chat/message (vereist chat.manage; niet voor anonieme openbare ophalen)./api/chat
Publieke anonieme chat op je eigen domein. Lichaam: bericht, sessie_id, optionele business_id.
/api/widget/chat
Cross-origin widget chat. Headers: X-Widget-Key, Content-Type. De oorsprong moet op de toegestane lijst staan.
/api/widget/chat/audio
Spraak-naar-tekst voor widget spraakinvoer. Dezelfde sleutel- en oorsprongsregels als chat.
/api/chat/session
Maak een sessie aan wanneer ingelogd in Mission Control (RBAC + CSRF voor cookies).
/api/chat/message
Geauthenticeerde admin UI verzenden (chat.manage). Geeft 401 terug als het anoniem wordt aangeroepen.
/api/chat/history/:session_id
Gespreksgeschiedenis (geauthenticeerd).
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();
Widget Installatie
Installeer de widget op uw site wanneer u Bob direct beschikbaar wilt maken voor bezoekers. Gebruik tenant-specifieke configuratie vanuit het Klantenportaal → Widget Instellingen.
After onboarding, your embed code is in the Customer Portal under Widget-instellingen. The publishable widget key (pk_live_…) is daar geconfigureerd—niet ingebed in statische HTML.
<!-- Tenant-scoped bundle from Customer Portal → Widget Setup -->
<script src="https://office16852.com/widget/YOUR_TENANT_UUID/widget.js" async></script>
| Artikel | Doel | Voorbeeld |
|---|---|---|
| Huurder UUID in script pad | Identificeert uw widgetbundel | Van Widget Setup |
| Publiceerbare widget sleutel | Authenticeert cross-origin chat | pk_live_… (geconfigureerd in portal, niet in HTML) |
| Toegestane oorsprongen | Domeinen die zijn toegestaan om widget chat aan te roepen | https://your-site.com |
/api/customer-portal/widget-code
Geeft kant-en-klare in te voegen markup terug. Vereist klant JWT (config.read).
Dashboard Webhooks
Gebruik outbound webhooks om updates te ontvangen wanneer gesprekken, overdrachten, leads of workflow-evenementen veranderen in jouw tenant.
| Gebeurtenis | Beschrijving |
|---|---|
| conversation.escalated | Menselijke overdracht aangevraagd |
| conversation.takeover.started | Agent nam live controle over |
| conversation.takeover.released | Teruggegeven aan Bob |
| lead.created | Nieuwe intake vastgelegd |
| appointment.booked | Planningsbevestiging |
| billing.payment_failed | Accountrisicosignaal |
| billing.payment_recovered | Betaling hersteld |
| webhook.test | Connectiviteitscontrole vanuit het portaal |
| * | Alle bovenstaande gebeurtenissen |
Maak een abonnement aan
Gebruik een Customer Portal admin JWT. POST url, evenementen en beschrijving naar /api/webhooks/subscriptions.
{
"url": "https://your-app.com/webhooks/bob",
"events": ["lead.created", "conversation.escalated"],
"description": "CRM intake"
}
Handtekeningen verifiëren
Verifieer webhook-handtekeningen serverzijde voordat je de payload vertrouwt.
{
"event": "lead.created",
"tenantId": "tenant_...",
"conversationId": "conv_...",
"createdAt": "2026-06-19T12:00:00Z",
"data": {}
}
/api/webhooks/subscriptions
Abonnementen weergeven (geheimen worden nooit teruggegeven).
/api/webhooks/subscriptions
Maak abonnement aan. Handtekening geheim wordt eenmaal in de reactie weergegeven.
/api/webhooks/subscriptions/:id
Abonnement verwijderen.
/api/webhooks/subscriptions/:id/test
Queue webhook.test levering.
/api/webhooks/deliveries
Leveringslog inclusief dead-letter rijen.
Persona Automatisering
Persona-automatisering controleert hoe Bob uw bedrijf vertegenwoordigt, wanneer te escaleren en hoe om te gaan met grenzen.
persona.manage.Zakelijke stem
Toon, begroetingsstijl en merkgebonden reacties.
Escalatiegedrag
Wanneer Bob taken overhandigt aan mensen of taken aanmaakt.
Onderwerp grenzen
Goedgekeurde onderwerpen en veilige afwijspatronen.
Workflow voorkeuren
Afdelingsroutering en automatiseringshooks.
/api/personas
Lijst persona's voor de geauthenticeerde huurder.
/api/personas/:id
Eén persona op id ophalen.
/api/personas
Maak persona met naam, toonvelden, systeemPrompt, enz.
/api/personas/:id
Bestaande persona bijwerken.
Plannen & Prijzen APIs
Gepubliceerde prijsboek-eindpunten versterken marketingoppervlakken en de kassa. Factuurbeheer APIs zijn niet openbaar.
| Functie | Starter | Pro | Plan Enterprise |
|---|---|---|---|
| Catalogusprijs (USD/maand) | $79 | $249 | $899 |
| Inbegrepen AI-credits / maand | 15,000 | 75,000 | 250,000 |
| Teamplaatsen | Tot 3 | Tot 10 | Onbeperkt |
| Standaardintegraties | 1 | 3 | 10 |
| Support | Prioriteit | Dedicated |
/api/pricing/marketing-cards
Plankaarten voor marketing en checkout (publiek, geen auth).
/api/pricing/snapshot
Publiek-veilige pricebook-snapshot (geen provider-kostenvelden).
Health & Status
Gebruik gezondheids- en statusinformatie om beschikbaarheid te verifiëren, upstream afhankelijkheden te monitoren en integratieproblemen op te lossen.
/api/health
Lichte health-probe voor monitors en load balancers.
/api/health/public
Openbare statuspayload geconsumeerd door de Systeemstatuspagina.
Integratie Voorbeelden
Praktische startpunten voor veelvoorkomende integratiepatronen.
Website chat widget
Voeg Bob toe aan een marketingwebsite of klantenportaal.
Bekijk voorbeeld →Server-side conversatie API
Same-origin anonieme chat vanuit je app.
Bekijk voorbeeld →Webhook listener
Verifieer handtekeningen en verwerk lead.created.
Bekijk voorbeeld →CRM overdrachtstroom
Reageer op gesprekken met escalatie-incidenten.
Bekijk voorbeeld →Lead capture workflow
Abonneer je op lead.created voor intake.
Bekijk voorbeeld →Ondersteuning escalatie
Houd escalaties en overname-evenementen in de gaten.
Bekijk voorbeeld →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 })
});
Architectuur Overzicht
Office 168/52 is een browsergebaseerde beheerde frontoffice: Klantenportaal voor operators, Missiecentrum voor platformadministratie en openbare integratieoppervlakken voor jouw stack.
Customer Portal and Mission Control APIs are session-backed UI routes—not published here. For a concise platform diagram, see architectuuroverzicht en proofcentrum.