Szybki start
Podłącz Bob do swojej strony internetowej lub workflow front-office w kilku prostych krokach.
Utwórz lub wybierz najemcę
Wybierz najemcę, który posiada stronę internetową, widget i API dane uwierzytelniające do tej integracji.
Generuj dane uwierzytelniające
Utwórz klucz widgetu z zakresem najemcy w Portalu Klienta → Ustawienia Widgetu lub użyj tokena JWT klienta do automatyzacji po stronie serwera.
Zainstaluj widget lub zadzwoń do API
Użyj widżetu na stronie do czatu front-end lub API do procesów roboczych po stronie serwera.
Test z przeglądarką proof
Zweryfikuj integrację z żywej przeglądarki, a nie tylko z fikcyjnego żądania.
<!-- Tenant-scoped bundle — replace YOUR_TENANT_UUID after onboarding -->
<script src="https://office16852.com/widget/YOUR_TENANT_UUID/widget.js" async></script>
Konfiguracja
Zrealizuj te wymagania wstępne przed wywołaniem chronionych API lub publikowaniem widgetu na domenach produkcyjnych.
External integrations connect systems outside the platform to Bob. Day-to-day front-office work happens in the Portal klienta.
- Tenant created
- Business profile completed
- Website or channel configured
- API credentials generated
- Allowed origins configured
- Test conversation completed
| Środowisko | Cel. | Gdzie skonfigurować |
|---|---|---|
| Produkcja | Ruch klientów na żywo | Portal Klienta → Ustawienia Widgetu |
| Etapowanie / podgląd | Weryfikacja przed uruchomieniem | Dozwolone źródła + domena testowa |
| Automatyzacja | Webhooki po stronie serwera i APIs | JWT klienta z logowania do portalu |
Uwierzytelnianie
Chronione API żądania muszą zawierać poświadczenie ograniczone do najemcy. Przechowuj klucze prywatne po stronie serwera i nigdy nie ujawniaj ich w kodzie przeglądarki.
Generuj dane uwierzytelniające
wymaganeSign in to the Customer Portal and create widget keys in Widget Setup, or obtain a customer JWT via POST /api/customer/auth/login do automatyzacji.
Wyślij nagłówek autoryzacji
Server-to-server automation uses Authorization: Bearer <token> z ciałami JSON.
curl https://office16852.com/api/customer-portal/widget-code \
-H "Authorization: Bearer YOUR_CUSTOMER_JWT" \
-H "Content-Type: application/json"
Obsługuj błędy uwierzytelniania
Zwracaj uporządkowane błędy do swojej warstwy integracji i ponawiaj próbę tylko wtedy, gdy jest to odpowiednie.
| Status | Znaczenie |
|---|---|
| 401 | Brak lub nieprawidłowe dane uwierzytelniające |
| 403 | Poświadczenie jest ważne, ale brakuje uprawnień. |
| 429 | Przekroczono limit oceny |
/api/customer/auth/login
Logowanie do Portalu Klienta. Zwraca JWT dla uwierzytelnionych wywołań integracyjnych.
/api/auth/login
Logowanie operatora Mission Control (tylko administracja platformy).
Czat i rozmowy
Bob ujawnia trzy ścieżki czatu w zależności od kontekstu rozmówcy: anonimowy z tej samej domeny, widget międzydomenowy oraz uwierzytelnione Mission Control.
POST /api/chat. (2) Cross-origin embed → POST /api/widget/chat con X-Widget-Key. (3) Mission Control → POST /api/chat/message (wymaga chat.manage; nie do anonimowego publicznego pobierania)./api/chat
Publiczny anonimowy czat na własnej domenie. Treść: wiadomość, session_id, opcjonalnie business_id.
/api/widget/chat
Czat widgetu z różnych źródeł. Nagłówki: X-Widget-Key, Content-Type. Pochodzenie musi być na liście dozwolonych.
/api/widget/chat/audio
Przetwarzanie mowy na tekst dla wejścia głosowego widgetu. Te same zasady klucza i pochodzenia co czat.
/api/chat/session
Utwórz sesję po zalogowaniu się do Mission Control (RBAC + CSRF dla ciasteczek).
/api/chat/message
Uwierzytelniony interfejs administracyjny wysyła (chat.manage). Zwraca 401, jeśli jest wywoływany anonimowo.
/api/chat/history/:session_id
Historia rozmów (uwierzytelniona).
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();
Instalacja Widgetu
Zainstaluj widget na swojej stronie, gdy chcesz, aby Bob był dostępny bezpośrednio dla odwiedzających. Użyj konfiguracji specyficznej dla najemcy z Portalu Klienta → Ustawienia widgetu.
After onboarding, your embed code is in the Customer Portal under Konfiguracja widżetu. The publishable widget key (pk_live_…) jest skonfigurowane tam—nie osadzone w statycznym HTML.
<!-- Tenant-scoped bundle from Customer Portal → Widget Setup -->
<script src="https://office16852.com/widget/YOUR_TENANT_UUID/widget.js" async></script>
| Przedmiot | Cel. | Przykład |
|---|---|---|
| UUID najemcy w ścieżce skryptu | Identyfikuje Twój zestaw widgetów | Z ustawienia widgetu |
| Klucz widgetu do publikacji | Uwierzytelnia czat między różnymi źródłami | pk_live_… (skonfigurowane w portalu, a nie w HTML) |
| Dozwolone źródła | Domeny dozwolone do wywoływania czatu widgetu | https://your-site.com |
/api/customer-portal/widget-code
Zwraca gotowy do wklejenia kod osadzenia. Wymaga JWT klienta (config.read).
Webhooki pulpitu
Użyj webhooków wychodzących, aby otrzymywać aktualizacje, gdy rozmowy, przekazania, leady lub zdarzenia w przepływie pracy zmieniają się w Twoim tenant.
| Zdarzenie | Opis |
|---|---|
| conversation.escalated | Żądanie przekazania do człowieka |
| conversation.takeover.started | Agent przejął kontrolę na żywo |
| conversation.takeover.released | Zwrócono do Boba |
| lead.created | Nowy intake przechwycony |
| appointment.booked | Potwierdzenie harmonogramu |
| billing.payment_failed | Sygnał ryzyka konta |
| billing.payment_recovered | Płatność przywrócona |
| webhook.test | Sprawdzenie łączności z portalu |
| * | Wszystkie powyższe zdarzenia |
Utwórz subskrypcję
Użyj JWT administratora Portalu Klienta. Wyślij metodą POST url, zdarzenia i opis do /api/webhooks/subscriptions.
{
"url": "https://your-app.com/webhooks/bob",
"events": ["lead.created", "conversation.escalated"],
"description": "CRM intake"
}
Weryfikuj podpisy
Weryfikuj podpisy webhooków po stronie serwera, zanim zaufasz ładunkowi.
{
"event": "lead.created",
"tenantId": "tenant_...",
"conversationId": "conv_...",
"createdAt": "2026-06-19T12:00:00Z",
"data": {}
}
/api/webhooks/subscriptions
Lista subskrypcji (sekrety nigdy nie są zwracane).
/api/webhooks/subscriptions
Utwórz subskrypcję. Sekret podpisu wyświetlany tylko raz w odpowiedzi.
/api/webhooks/subscriptions/:id
Usuń subskrypcję.
/api/webhooks/subscriptions/:id/test
Kolejkuj dostawę webhook.test.
/api/webhooks/deliveries
Dziennik dostaw z wierszami dead-letter.
Automatyzacja Persony
Automatyzacja person kontroluje, jak Bob reprezentuje Twoją firmę, kiedy eskalować i jak radzić sobie z granicami.
persona.manage.Głos biznesowy
Ton, styl powitania i odpowiedzi zgodne z marką.
Zachowanie eskalacji
Kiedy Bob przekazuje zadania ludziom lub tworzy zadania.
Granice tematyczne
Zatwierdzone tematy i bezpieczne wzorce odmowy.
Preferencje dotyczące przepływu pracy
Routing działów i automatyzacja.
/api/personas
Lista person dla uwierzytelnionego najemcy.
/api/personas/:id
Pobierz jedną personę po id.
/api/personas
Utwórz personę z imieniem, tonem, polami, systemPrompt itp.
/api/personas/:id
Zaktualizuj istniejącą personę.
Plany i Cenniki APIs
Opublikowane punkty końcowe cennika zasilają powierzchnie marketingowe i proces zakupu. Zarządzanie fakturowaniem API nie jest publiczne.
| Funkcja | Starter | Pro | Plan Enterprise |
|---|---|---|---|
| Cena katalogowa (USD/mies.) | $79 | $249 | $899 |
| Dołączone kredyty AI / mies. | 15,000 | 75,000 | 250,000 |
| Miejsca w zespole | Do 3 | Do 10 | Bez limitu |
| Standardowe integracje | 1 | 3 | 10 |
| Wsparcie | Priorytet | Dedykowany |
/api/pricing/marketing-cards
Karty planów dla marketingu i checkout (publiczne, bez auth).
/api/pricing/snapshot
Publiczny bezpieczny snapshot cennika (bez pól kosztu dostawcy).
Health & Status
Użyj informacji o zdrowiu i statusie, aby zweryfikować dostępność, monitorować zależności upstream i rozwiązywać problemy z integracją.
/api/health
Lekka sonda zdrowia dla monitorów i load balancerów.
/api/health/public
Publiczny ładunek statusu konsumowany przez stronę statusu systemu.
Przykłady integracji
Praktyczne punkty wyjścia dla powszechnych wzorców integracji.
Widget czatu na stronie internetowej
Dodaj Bob do strony marketingowej lub portalu klienta.
Zobacz przykład →Rozmowa po stronie serwera API
Czat anonimowy z tej samej domeny z Twojej aplikacji.
Zobacz przykład →Słuchacz webhooków
Weryfikuj podpisy i przetwarzaj lead.created.
Zobacz przykład →CRM przepływ przekazania
Reaguj na wydarzenia, które zostały eskalowane.
Zobacz przykład →Workflow pozyskiwania leadów
Subskrybuj lead.created dla przyjęcia.
Zobacz przykład →Eskalcja wsparcia
Monitoruj eskalacje i wydarzenia przejęcia.
Zobacz przykład →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 })
});
Przegląd architektury
Office 168/52 to oparte na przeglądarce zarządzane front office: Portal Klienta dla operatorów, Centrum Dowodzenia dla administracji platformy oraz publiczne powierzchnie integracyjne dla Twojego stosu.
Customer Portal and Mission Control APIs are session-backed UI routes—not published here. For a concise platform diagram, see przegląd architektury i centrum dowodów.