連携
自分のシステムを接続する
AIが自社システムからサインインした顧客にチャットやウィジェットの音声通話で応答できるようにし、顧客データをOrderInChatに渡すことなく行います。
概要
チャネルと統合 → 自分のシステム (/ja/integrations/own-system) は、顧客アカウントを自分のシステム(例えば、物流ポータル)で管理し、そのデータをOrderInChatにコピーしたくないストア向けです。
- OrderInChatウィジェットをログインページに埋め込みます。
- 自社サーバーは、ログインユーザーのために短命のトークンを署名し、それをウィジェットに渡します。
- その顧客が自分のアカウントについて尋ねると(例えば「私の荷物はどこですか?」)、AIはそのユーザーのトークンを使って自社の読み取り専用MCPツールを呼び出します。これはテキストチャットとウィジェットから開始された音声通話の両方で行われます。
- OrderInChatは署名のみを確認します。決してアイデンティティを作成せず、自社のデータベースを読み取らず、ツールが返すものを保存することもありません。
有料プラン(Starter, Pro, Ultra)で利用可能です。有効なトークンを持たない訪問者は匿名です:AIはストアのナレッジベースから応答し、アカウントに関する質問のためにサインインするように求めます。
開発者のAIに作ってもらう
開発者のAIに渡す指示 で 指示をコピー をクリックし、開発者が使うAIアシスタント(Claude Code、Cursor、ChatGPTなど)にそのまま貼り付けます。英語で書かれており、作るもの(トークンのエンドポイント、署名付きMCPサーバー、ウィジェットのコード)をストアIDとアドレス入りで正確に説明します。最後にこのページに入力する値の一覧をAIに求めます。シークレットは一切含まれません。署名シークレットはこのページで作成し、ご自身でサーバーに設定してください。
1. ユーザーサインイントークン
自社サーバーは、ログインユーザーのためにJWTを署名します:
| クレーム | 必須 | 意味 |
|---|---|---|
sub | はい | 自社システム内のユーザーID |
exp | はい | 有効期限 — 最大で15分先 |
name, email | いいえ | 受信トレイや顧客カードでチームに表示される |
iss, aud | いいえ | 設定ページで入力した場合のみ確認されます |
OrderInChatがそれを検証する方法を選択してください:
- JWKS URL (ES256またはRS256) — 自社の公開鍵のHTTPSアドレス。
- 公開鍵 (ES256またはRS256) — PEM公開鍵を貼り付けます。
- 共有秘密 (HS256) — 最低32文字、暗号化された状態で保存。
トークンをテストするためにサンプルトークンを貼り付けて、ライブにする前に確認してください。無効または期限切れのトークンはチャットを失敗させることはなく、訪問者は単に匿名として扱われます。
2. 自社のMCPサーバー
自社MCPサーバーのアドレスを入力します(ストリーミングHTTP、tools/listおよびtools/call)。テストとライブはそれぞれ独自のアドレスと署名秘密を持ち、アクティブモードはAIが使用するものを選択します。
作成をクリックして署名秘密を取得します。それは一度だけ表示されます — 自社サーバーに保存してください。取り消しは即座にそれを削除します(そのモードでの呼び出しは新しいものを作成するまで停止します)。
OrderInChatが自社サーバーに送信するすべてのリクエストには以下が含まれます:
X-OIC-Timestamp— Unix秒X-OIC-Signature—v1=+ 署名秘密を使ったtimestamp.bodyの16進HMAC-SHA256X-OIC-User-Token— ユーザーのトークン、変更なし(自分で確認し、そのユーザーのデータのみを返します)X-OIC-Mode—testまたはlive
署名が一致しないリクエストや、タイムスタンプが5分以上古いリクエストは拒否してください。OrderInChatには固定IPアドレスがないため、IP許可リストの代わりに署名を使用してください。
3. ツール
ツールを発見をクリックして、自社サーバーがリストするツールを読み、その中でAIが使用できるものをオンにします。読み取り専用のツールのみを許可してください。後で表示されるツールは、オンにするまでオフのままです。
- テキストチャット:ツール呼び出しは最大8秒かかる場合があります。
- 音声通話:最大3秒;アシスタントは最初に短い「確認します」と言います。サーバーの応答が遅い場合、今すぐ確認できないと言います。
- ツールが返すものはデータとしてのみ扱われ、指示としては扱われず、チャット履歴に保存されることはありません。
4. ウィジェットを埋め込む
<script>
window.OrderInChatSettings = {
userToken: "",
getUserToken: async () => (await fetch("/your/oic-token")).text(),
};
</script>
<script src="https://app.orderinchat.com/widget/oic-widget.js" data-tenant-id="YOUR-STORE-ID"></script>
getUserTokenはトークンが期限切れになりそうなときに呼び出されます。スクリプトが読み込まれた後、OrderInChat.setUserToken(token)、OrderInChat.clearUserToken()(サインアウト時)およびOrderInChat.onTokenRefresh(fn)も使用できます。
有効なトークンと音声アシスタントがオンの状態で、ウィジェットヘッダーには電話ボタンが表示されます。通話はウィジェット内で実行され、AIクレジットから請求されます(ツール呼び出しは通話に含まれます)。ウェブ通話の音声は記録されません。
カスタマイズ はウィジェット設定を新しいタブで開きます。コードはページを読み込むたびに(data-tenant-id で)OrderInChatからウィジェットの見た目を取得するため、そこで保存した変更はコードを貼り直さなくてもすぐ反映されます。ストアフロント用に選んだウィジェットプロファイル(なければ有効なプロファイルか最初のもの)が使われ、新しいプロファイルは作成されません。
5. 接続をテスト
ツールの下にある接続をテストは、テスト用署名シークレットを使ってテスト用MCPアドレスに決まったチェックを実行します。AIは使わず、何も保存しません。確認する内容は次のとおりです。
- アドレスが公開httpsであること(localhostやプライベートネットワークのアドレスではない)
- 正しく署名された
tools/listが動作すること - 誤った署名のリクエストが拒否されること
- 正しい署名でも5分より古いタイムスタンプのリクエストが拒否されること
- オンにしたツールへのユーザートークンなしの
tools/callがエラーを返し、データを返さないこと - トークンをテストにサンプルトークンを貼り付けた場合、
tools/callが動作すること、およびその速度(2秒を超えると音声通話には遅すぎます。音声通話は3秒で待機を打ち切ります)
呼び出すのは検出してオンにしたツールだけで、引数は空です。サンプルトークンはそのテストにのみ使い、保存しません。失敗した項目にはそれぞれ修正方法が表示されます。開発者向けに結果をコピーで英語のレポートをコピーし、開発者やそのAIに貼り付けられます。失敗がなくなるまでテストを繰り返してください。
チームに表示される内容
- 受信トレイ → ウェブ: トークンからの顧客の名前とメール、または何も送信しなかった場合はユーザー #ID。各AIの返信には、どのツールを使用したかとそれが機能したかが表示されます — データは決して表示されません。
- 受信トレイ → 通話: ウィジェット通話はストアウェブサイトの下に表示され、実行中はライブに表示されます;トランスクリプトには各ツールのステップ(名前と結果のみ)が表示されます。
- 顧客: 各ユーザーID(ストアユーザーID)に対して顧客カードが作成または再利用されるため、同じ人のチャットと通話がリンクされます。