Чем мы можем помочь?

Кратко опишите вопрос; мы ответим по электронной почте.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
На главную

Данные клиентов в чате: заказы, доставка, счета

Позвольте ИИ-ассистенту отвечать вошедшим клиентам об их собственных заказах: безопасная подписанная идентификация, точно выбранные поля, запрос данных из магазина или импорт.

С данными клиентов ИИ-ассистент отвечает на вопросы «Где моя посылка?», «Оплачен ли мой счёт?» или «Что было в последнем заказе?» — для вошедших клиентов и только об их собственных данных. Функция доступна на платных тарифах.

Как защищены данные

Условие: подтверждение личности

Ассистент использует данные клиентов только для посетителей, чью личность подтвердил ваш сервер. Настройте секрет в аккаунте в Проект → Подтверждение личности. Он остаётся на сервере и никогда не должен попадать в браузер или код встраивания.

Для каждого вошедшего клиента сервер вычисляет хеш со сроком действия (не более 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 продолжает работать без изменений.

Запрос, импорт или оба способа

В Проект → Данные клиентов выберите, откуда ассистент получает данные:

Какие данные может получать ассистент

Каждое поле включается отдельно. Значения по умолчанию покрывают обычные вопросы:

Отключённое поле никогда не доходит до ассистента: при запросе оно отбрасывается, при импорте вообще не сохраняется. Город и индекс намеренно доступны только при явном включении; улица и имя исключены всегда.

Что никогда не передаётся

Это нельзя включить. Если магазин отправит такие данные, они отбрасываются:

Ограничения

Не более 10 заказов в ответе, до 20 позиций на заказ, тексты не длиннее 200 символов, весь ответ не более 16 кБ. Неизвестные поля отбрасываются без ошибки.

Конечная точка запроса

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. быть доступной через https на порту 443 по публичному адресу, без перенаправлений;
  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

С API-ключом, у которого есть право kundendaten:schreiben:

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

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

project_id — номер вашего проекта; если в рабочем пространстве только один проект, его можно не указывать. PUT заменяет все заказы этого ID клиента (не более 50). DELETE /v1/kundendaten/4711?project_id=123 удаляет их. Импортированные данные хранятся у нас зашифрованными и удаляются через 90 дней после последнего импорта; поэтому постоянно передавайте изменения, например при каждой смене статуса.

Посетители без входа

Если человек без подтверждённой личности спрашивает о заказе, ассистент ничего не запрашивает. Вместо этого показывает уведомление из Проект → Данные клиентов: текст для каждого языка и необязательную ссылку входа. Другой вариант — передать вопрос команде.

Что сохраняется

Устранение неполадок

Подробнее в документации

Подробное описание: Конечная точка данных клиентов. Все главы собраны в документации.

Обновлено: