Проверка запуска и решение проблем

Проверяйте интеграцию в тестовом сценарии кампании и на устройстве покупателя. Для сообщений в Shopping Assistant API используйте trafficType: "test"; debug-режим проверяет отображение заглушки и не проверяет каталог или качество консультации.

Чеклист запуска

  • Выбрана подключённая секция; базовый запрос работает в «Превью».
  • Каталог содержит ожидаемые SKU и актуальные данные карточек.
  • Кампания и сценарий опубликованы; таргетинг совпадает с тестовым пользователем и страницей.
  • Контрольная группа обрабатывается без показа ассистента.
  • Пользователь получил uid; он передаётся как resourceId без общей заглушки для всех покупателей.
  • Для виджета 1.42 доступны SL.section, SL.pageContext и SL.API; при интеграции через GF объекты SL и GF совпадают.
  • threadId стабилен внутри разговора; новое сообщение продолжает предыдущий контекст, в том числе после оценки ответа в виджете 1.42.
  • Если включён гостевой режим, токен повторно используется в генерации, истории и оценках; регистрация не запускается на каждое сообщение.
  • При включённых resumeDialog и dialogHistory проверены перезагрузка, восстановление товаров и выбор другого диалога.
  • Ответ, товары, быстрые ответы и поддерживаемые кнопки отображаются на desktop и mobile.
  • Подборка сохраняет порядок SKU; товарный шаблон не добавляет посторонние товары или дубли.
  • Оценка связана с правильным assistantMessageId; сохранение подтверждено HTTP-ответом. В собственном интерфейсе ошибка отправки не остаётся успешной оценкой.
  • Каждый показ и custom event фиксируется один раз. Ошибка трекинга не блокирует чат.
  • При SPA-переходе контекст актуален, остаётся один экземпляр чата и один комплект обработчиков.
  • Проверены отсутствие товаров, сетевой сбой и повтор запроса.

Чат или кнопка не появились

  1. Проверьте статус кампании, сценария и публикацию.
  2. Проверьте тип страницы, URL, аудиторию и попадание в контрольную группу.
  3. В Network проверьте загрузку JS/CSS одной версии, а в консоли — наличие window.GF и ShoppingAssistant.
  4. При autoInsertTrigger: false убедитесь, что ваша кнопка существует и вызывает assistant.open().
  5. Проверьте контейнер attachTo и CSS, который может скрывать чат.

Если интерфейс появился, но запрос не отправляется, отдельно проверьте готовность GF.userData.uid, GF.section и контекста. Виджет 1.42 читает секцию и контекст через SL: ошибка обращения к SL.section или отсутствие custom events при рабочем GF.API — повод проверить совместимость объектов.

Ответ есть, товаров нет

Сначала посмотрите response.contents. Если нет непустого блока products, ответ мог быть уточнением, справочной консультацией или сообщением об отсутствии подходящих товаров.

Если товары пришли в JSON, но не отображаются:

  1. Проверьте обработчик shopping-assistant-recs или рендеринг собственного интерфейса.
  2. Проверьте ID товарного шаблона, существование контейнера и запрос рекомендаций.
  3. Сравните SKU ответа и фида, включая регистр. Проверьте регион и наличие.
  4. Убедитесь, что шаблон не заменяет отсутствующие позиции другими товарами.

Если товаров нет и в API, повторите запрос в «Превью» с тем же контекстом. Проверьте данные, правила отбора и подключение поиска. Debug-ответ не подтверждает работоспособность поиска.

Ассистент не учитывает страницу или пользователя

В запросе генерации проверьте resourceId, runtimeContext.tenant_id и runtimeContext.ctx. В Web-примере resourceId задаётся из GF.userData.uid, а виджет 1.42 читает секцию и контекст через SL.section и SL.pageContext.

  • Не используйте общий resourceId для разных покупателей.
  • Не меняйте threadId после каждого сообщения.
  • На SPA-переходе обновляйте контекст.
  • Для конкретного магазина передавайте согласованный storeId; региональный lng его не заменяет.

При 409 MESSAGE_ID_CONFLICT один ID сообщения использован для разных запросов. Для нового сообщения создайте новый ID, для повтора сохраняйте исходные данные.

Оценка не сохраняется

Ответ feedback Что проверить
400 Поля запроса и реакцию. GET поддерживает like и dislike; PUT также принимает null.
403 у PUT Условия доступа и допустимый IP для секции.
404 Совпадение пользователя, диалога и ID сохранённого ответа. Debug-ответ нельзя оценить.
500 Сохраните код и время ошибки, повторите позже.

Виджет 1.42 отправляет оценку через PUT и сохраняет текущий диалог. В гостевом режиме проверьте заголовок Authorization и совпадение сессии с той, в которой получен ответ. Заблокированные кнопки не подтверждают сохранение; повторный выбор или снятие оценки в готовом интерфейсе недоступны. Подробнее: поведение оценки в Web-виджете. В собственном интерфейсе готовые GET-ссылки вызывайте только при нажатии нужной кнопки. Контракт: Оценка ответа.

Не восстанавливается диалог на сайте

  1. Проверьте, что загружены JS и CSS 1.42, а resumeDialog: true передан при создании экземпляра. Настройка по умолчанию выключена.
  2. Сверьте origin, секцию и resourceId. Для автоматического продолжения нужны сохранённый текущий диалог и, в гостевом режиме, та же сессия. Запрет или очистка localStorage мешают восстановлению после перезагрузки.
  3. Проверьте resumeDialogTtlHours: по умолчанию разговор возобновляется в течение 24 часов после последнего сохранения.
  4. В Network найдите POST /shopping/history после открытия чата. 404 или INVALID_GUEST_TOKEN переводят виджет к новому разговору; при другом сбое он показывает ошибку загрузки и сохраняет выбранный ID.
  5. Если текст появился, а товары нет, проверьте, что обработчик shopping-assistant-recs установлен до open().

Для кнопки истории отдельно нужны dialogHistory: true и auth: { mode: 'guest' }. Список содержит только диалоги текущей гостевой сессии. Новая регистрация с тем же UID начинает пустую историю; старый токен не заменяется новым для доступа к прежним диалогам. Подробнее: продолжение и история.

Нет диалогов, оценок или тем в кабинете

  1. Проверьте секцию, период и тип трафика: «Превью» относится к тестовому.
  2. Debug-запросы не сохраняются и не появляются в истории.
  3. Отсутствие автоматической оценки не означает плохой ответ; отсутствие реакции не является дизлайком.
  4. Если нет тем, проверьте условия подключения классификации.

История диалогов и custom events — разные источники. Успешный ответ API не подтверждает отправку событий интерфейса. См. трекинг.

Что передать поддержке

Напишите в рабочий чат проекта Gravity Field: секцию, время и часовой пояс, тип страницы, канал, версию виджета, HTTP-статус и код ошибки, шаги воспроизведения. При необходимости приложите threadId и ID проблемного сообщения в закрытом рабочем канале.

Удалите из диагностических материалов API-ключи, токены публичных ссылок и персональные данные. Не публикуйте полную историю покупателя вместе с сообщением об ошибке.