クイックスタート
数ステップで Bob をあなたのウェブサイトやフロントオフィスのワークフローに接続しましょう。
テナントを作成または選択する
この統合のためにウェブサイト、ウィジェット、およびAPIの資格情報を所有するテナントを選択してください。
資格情報を生成する
Customer Portal → Widget Setupからテナントスコープのウィジェットキーを作成するか、サーバーサイドの自動化のためにカスタマージェイダブリューTを使用してください。
ウィジェットをインストールするか、APIに電話してください。
フロントエンドチャット用のウェブサイトウィジェットまたはAPIをサーバーサイドワークフローに使用してください。
ブラウザに対応したテスト
ライブブラウザから統合を確認してください。モックリクエストだけではありません。
<!-- Tenant-scoped bundle — replace YOUR_TENANT_UUID after onboarding -->
<script src="https://office16852.com/widget/YOUR_TENANT_UUID/widget.js" async></script>
セットアップ
保護された API を呼び出したり、プロダクションドメインにウィジェットを公開する前に、これらの前提条件を完了してください。
External integrations connect systems outside the platform to Bob. Day-to-day front-office work happens in the カスタマーポータル.
- Tenant created
- Business profile completed
- Website or channel configured
- API credentials generated
- Allowed origins configured
- Test conversation completed
| 環境 | 目的 | どこで設定するか |
|---|---|---|
| 生産 | ライブ顧客トラフィック | カスタマーポータル → ウィジェット設定 |
| ステージング / プレビュー | プレローンチ検証 | 許可されたオリジン + テストドメイン |
| 自動化 | サーバーサイドウェブフックとAPIs | ポータルログインからの顧客JWT |
認証
保護された API リクエストには、テナントスコープの資格情報が必要です。プライベートキーはサーバー側に保持し、ブラウザコードで決して公開しないでください。
資格情報を生成する
必要ですSign in to the Customer Portal and create widget keys in Widget Setup, or obtain a customer JWT via POST /api/customer/auth/login 自動化のために。
認証ヘッダーを送信してください。
Server-to-server automation uses Authorization: Bearer <token> JSONボディを使用して。
curl https://office16852.com/api/customer-portal/widget-code \
-H "Authorization: Bearer YOUR_CUSTOMER_JWT" \
-H "Content-Type: application/json"
認証エラーを処理する
統合レイヤーに構造化されたエラーを返し、適切な場合にのみ再試行してください。
| ステータス | 意味 |
|---|---|
| 401 | 資格情報が不足しているか無効です。 |
| 403 | 資格情報は有効ですが、権限が不足しています。 |
| 429 | レート制限を超えました |
/api/customer/auth/login
カスタマーポータルログイン。認証された統合呼び出しのためのJWTを返します。
/api/auth/login
ミッションコントロールオペレーターログイン(プラットフォーム管理者専用)。
チャット & 会話
Bob は、発信者のコンテキストに応じて、同一オリジンの匿名、クロスオリジンのウィジェット、および認証されたミッションコントロールの3つのチャットパスを提供します。
POST /api/chat. (2) Cross-origin embed → POST /api/widget/chat with X-Widget-Key. (3) Mission Control → POST /api/chat/message (要 chat.manage; 匿名の公共取得には使用できません)。/api/chat
自分のドメインでの公開匿名チャット。本文:メッセージ、セッションID、オプションのビジネスID。
/api/widget/chat
クロスオリジンウィジェットチャット。ヘッダー: X-Widget-Key, Content-Type。オリジンは許可リストに含まれている必要があります。
/api/widget/chat/audio
ウィジェット音声入力のための音声認識。チャットと同じキーおよびオリジンルール。
/api/chat/session
Mission Controlにログインした際にセッションを作成します(RBAC + CSRFによるクッキーの保護)。
/api/chat/message
認証された管理者UIが送信します (chat.manage)。匿名で呼び出すと401が返されます。
/api/chat/history/:session_id
会話履歴(認証済み)。
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();
ウィジェットのインストール
訪問者に直接Bobを利用可能にしたい場合は、サイトにウィジェットをインストールしてください。テナント固有の設定は、カスタマーポータル → ウィジェット設定から行えます。
After onboarding, your embed code is in the Customer Portal under ウィジェットの設定. The publishable widget key (pk_live_…) はそこに設定されています - 静的HTMLに埋め込まれていません。
<!-- Tenant-scoped bundle from Customer Portal → Widget Setup -->
<script src="https://office16852.com/widget/YOUR_TENANT_UUID/widget.js" async></script>
| アイテム | 目的 | 例 |
|---|---|---|
| スクリプトパス内のテナントUUID | あなたのウィジェットバンドルを特定します | ウィジェットのセットアップから |
| 公開可能なウィジェットキー | クロスオリジンチャットを認証します | pk_live_…(ポータルで設定、HTMLでは設定されていません) |
| 許可されたオリジン | ウィジェットチャットを呼び出すことが許可されているドメイン | https://your-site.com |
/api/customer-portal/widget-code
ペースト可能な埋め込みマークアップを返します。顧客のJWT(config.read)が必要です。
ダッシュボードウェブフック
アウトバウンドウェブフックを使用して、テナント内の会話、ハンドオフ、リード、またはワークフローイベントが変更されたときに更新を受け取ります。
| イベント | 説明 |
|---|---|
| conversation.escalated | 人間の引き継ぎが要求されました |
| conversation.takeover.started | エージェントがライブ制御を取得 |
| conversation.takeover.released | Bobに返却 |
| lead.created | 新規インテーク取得 |
| appointment.booked | スケジュール確認 |
| billing.payment_failed | アカウントリスクシグナル |
| billing.payment_recovered | 支払い復旧 |
| webhook.test | ポータルからの接続チェック |
| * | 上記すべてのイベント |
サブスクリプションを作成する
カスタマーポータル管理者JWTを使用します。POST URL、イベント、および説明を/api/webhooks/subscriptionsに送信します。
{
"url": "https://your-app.com/webhooks/bob",
"events": ["lead.created", "conversation.escalated"],
"description": "CRM intake"
}
署名を確認する
ペイロードを信頼する前に、サーバー側でウェブフック署名を検証してください。
{
"event": "lead.created",
"tenantId": "tenant_...",
"conversationId": "conv_...",
"createdAt": "2026-06-19T12:00:00Z",
"data": {}
}
/api/webhooks/subscriptions
サブスクリプション一覧(シークレットは返されません)。
/api/webhooks/subscriptions
サブスクリプションを作成します。署名シークレットはレスポンスに一度だけ表示されます。
/api/webhooks/subscriptions/:id
サブスクリプションを削除。
/api/webhooks/subscriptions/:id/test
Webhook.testの配信をキューに追加します。
/api/webhooks/deliveries
デッドレター行を含む配信ログ。
ペルソナオートメーション
ペルソナ自動化は、Bobがあなたのビジネスをどのように表現するか、いつエスカレーションするか、そして境界をどのように扱うかを制御します。
persona.manage.ビジネスボイス
トーン、挨拶スタイル、ブランドに沿った応答。
エスカレーション行動
Bobが人間に引き渡すとき、またはタスクを作成するとき。
トピックの境界
承認されたトピックと安全な拒否パターン。
ワークフロープリファレンス
部門ルーティングと自動化フック。
/api/personas
認証されたテナントのペルソナをリストアップします。
/api/personas/:id
IDでペルソナを1件取得。
/api/personas
名前: マーケティングマネージャー トーン: プロフェッショナル、親しみやすい システムプロンプト: 「私たちのB2B SaaSソリューションがどのようにビジネスを成長させるかを伝え、顧客のニーズに応えるコンテンツを作成してください。」
/api/personas/:id
既存ペルソナを更新。
プランと価格 APIs
公開された価格表エンドポイントは、マーケティングサーフェスとチェックアウトを強化します。請求管理APIは公開されていません。
| 機能 | Starter | Pro | エンタープライズ |
|---|---|---|---|
| 定価(USD/月) | $79 | $249 | $899 |
| 含まれる AI クレジット / 月 | 15,000 | 75,000 | 250,000 |
| チーム席 | 最大3 | 最大10 | 無制限 |
| 標準統合 | 1 | 3 | 10 |
| サポート | メール | 優先 | 専任 |
/api/pricing/marketing-cards
マーケティングとチェックアウト用プランカード(公開、認証なし)。
/api/pricing/snapshot
公開安全な価格表スナップショット(プロバイダーコストフィールドなし)。
Health & Status
健康とステータス情報を使用して、可用性を確認し、上流の依存関係を監視し、統合の問題をトラブルシューティングします。
/api/health
モニターとロードバランサー向け軽量ヘルスプローブ。
/api/health/public
システムステータスページによって消費される公開ステータスペイロード。
統合の例
一般的な統合パターンのための実用的な出発点。
ウェブサイトチャットウィジェット
マーケティングサイトまたは顧客ポータルに Bob を追加します。
例を見る →サーバーサイドの会話 API
あなたのアプリからの同一オリジンの匿名チャット。
例を見る →Webhookリスナー
署名を確認し、リードを作成します。
例を見る →CRM ハンドオフフロー
会話のエスカレーションイベントに反応します。
例を見る →リードキャプチャーワークフロー
lead.created にサブスクライブして、インテークを行います。
例を見る →サポートエスカレーション
エスカレーションとテイクオーバーイベントを監視します。
例を見る →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 })
});
アーキテクチャの概要
Office 168/52は、オペレーター向けのカスタマーポータル、プラットフォーム管理のためのミッションコントロール、そしてあなたのスタックのための公開インテグレーションサーフェスを備えたブラウザベースのガバナンスされたフロントオフィスです。
Customer Portal and Mission Control APIs are session-backed UI routes—not published here. For a concise platform diagram, see アーキテクチャ概要 と プルーフセンター.