どのようにお手伝いできますか?

ご用件を簡単にお知らせください。メールで返信します。

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
トップページへ

チャット内の顧客データ(注文、配送、請求書)

ログイン済みの顧客の注文に関する質問に、AIアシスタントが回答します。署名付きの本人情報で保護し、指定したフィールドだけをショップから取得、またはインポートします。

顧客データを使うと、AIアシスタントは「荷物はどこですか?」「請求書は支払い済みですか?」「前回の注文には何が入っていましたか?」などに回答できます。対象はログイン済みの顧客で、本人のデータだけです。有料プランで利用できます。

データの保護

前提:本人確認

アシスタントが顧客データを使うのは、運営側のサーバーで本人確認した訪問者だけです。アカウントのプロジェクト → 本人確認でシークレットを設定します。シークレットはサーバーに保持し、ブラウザーやスニペットに含めてはいけません。

ログイン済みの顧客ごとに、サーバーで有効期限(最大24時間先)付きのハッシュを計算し、ウィジェットに渡します。

$userId = (string) $customer->id;
$exp    = time() + 3600;
$hash   = hash_hmac('sha256', $userId . '.' . $exp, getenv('RC_IDENT_SECRET'));
echo "<script>ReactiveChat('identify', { userId: " . json_encode($userId)
   . ", userHash: " . json_encode($hash) . ", exp: " . $exp . " });</script>";
const crypto = require('crypto');
const exp  = Math.floor(Date.now() / 1000) + 3600;
const hash = crypto.createHmac('sha256', process.env.RC_IDENT_SECRET)
                   .update(String(user.id) + '.' + exp).digest('hex');
// in the template: ReactiveChat('identify', { userId: '<id>', userHash: '<hash>', exp: <exp> });

expのないハッシュでも、会話履歴などのために訪問者を確認できますが、顧客データには不十分です。シークレットを更新すると、古いものは24時間有効です。

メールアドレスも署名する(予約やメールアドレスを使う連携向け)。 ハッシュに添えたemailが確認済みとして扱われるのは、署名に含めた場合だけです。userHash = HMAC-SHA256(secret, userId + "." + exp + "." + email)で、アドレスはidentifyに渡すものと完全に同じにします。署名しなくても訪問者はログイン済みのままですが、アシスタントはそのアドレスで予約せず、連携先もそのアドレスを検索しません。既存のuserId + "." + exp形式は、そのまま動作します。

取得、インポート、または両方

プロジェクト → 顧客データで、アシスタントのデータ取得元を選びます。

アシスタントに渡せるデータ

各フィールドを個別に有効にします。既定の設定は、一般的な質問に対応します。

無効なフィールドは、アシスタントに一切届きません。取得時は破棄し、インポート時は保存しません。市区町村と郵便番号は、明示的に有効にした場合だけ使えます。通りの住所と名前は常に除外します。

決して渡さない情報

次の情報は有効にできません。ショップが送信しても破棄します。

上限

1応答最大10注文、1注文最大20商品、テキスト最大200文字、応答全体で最大16 kBです。不明なフィールドはエラーなしで破棄します。

取得用エンドポイント

reactive.chatはPOSTでエンドポイントを呼び出します。

POST https://shop.your-domain.com/rc-customer-data
Content-Type: application/json
X-RC-Zeit: 1791196400
X-RC-Signatur: <hex(HMAC_SHA256(endpoint secret, X-RC-Zeit + "." + body))>

{"user_id":"4711","anliegen":"bestellung","referenz":"2026-0815","sprache":"en","nonce":"..."}

エンドポイントは、次を満たす必要があります。

  1. 署名を定時間比較で検証し、X-RC-Zeitが5分を超えてずれているリクエストを拒否する。
  2. 指定したuser_idのデータだけを返す。
  3. 公開アドレスのポート443でhttps経由で到達でき、リダイレクトしない。
  4. 3秒以内に応答する。

応答:

{
  "bestellungen": [
    {
      "nummer": "2026-0815", "datum": "2026-09-28", "status": "shipped",
      "summe": "49.90", "waehrung": "EUR",
      "positionen": [ { "name": "Balance bike blue", "menge": 1 } ],
      "versand": { "dienst": "DHL", "sendungsnummer": "00340434...", "status": "out for delivery" },
      "rechnung": { "nummer": "R-2026-1201", "status": "paid", "faellig_am": "2026-10-12" }
    }
  ]
}

開発者向けドキュメントに、完全なPHPの例(kundendaten-referenz-endpunkt.php)があります。

接続をテストでは、reactive.chatがuser_idをrc-test、依頼の種類をtestとしてエンドポイントを呼び出し、結果を表示します。空の一覧か、サンプルの注文を返してください。

APIでインポートする

kundendaten:schreiben権限を持つAPIキーを使用します。

PUT https://reactive.chat/v1/kundendaten/4711?project_id=123
Authorization: Bearer <API key>
Content-Type: application/json

{"bestellungen":[ ... as above ... ]}

project_idはプロジェクトの番号です。ワークスペースにプロジェクトが1つしかなければ省略できます。PUTは、この顧客IDのすべての注文(最大50件)を置き換えます。DELETE /v1/kundendaten/4711?project_id=123で削除します。インポートしたデータは当社側で暗号化して保存し、最終インポートから90日後に削除します。そのため、状態の変更ごとなど、継続的に更新を送ってください。

ログインしていない訪問者

本人確認されていない人が注文について尋ねても、アシスタントは何も取得しません。代わりに、プロジェクト → 顧客データで設定した言語別の案内文と、任意のログインリンクを表示します。または、チームに引き継ぎます。

保存する内容

トラブルシューティング

ドキュメントの関連項目

詳しくは、顧客データエンドポイントをご覧ください。すべての章はドキュメントにあります。

最終更新: