К содержимому
Интеграции

API и события

Обновлено

JavaScript API

После загрузки скрипта доступен объект window.RequestsQuiz. Методы работы с состоянием вызывайте после инициализации нужной формы.

Метод Назначение
goToStep(formId, stepIndex) Переход к шагу по индексу; проверку заполнения текущего шага не запускает
getCurrentStep(formId) Индекс текущего шага; если квиз не найден, возвращает 0
getTotalSteps(formId) Количество шагов; если квиз не найден, возвращает 0

Индексы начинаются с нуля: индекс 1 означает второй шаг. Переход за пределы существующих шагов игнорируется. Эти методы не отправляют заявку; переход через интерфейс с проверкой выполняет кнопка «Далее».

События

Плагин отправляет события на document:

Событие Данные event.detail Когда возникает
requests:quiz:init formId, totalSteps После построения интерфейса и показа первого шага
requests:quiz:step formId, step, totalSteps, stepTitle При показе шага, включая первый показ во время инициализации

Чтобы получать события первого показа, зарегистрируйте слушатели до инициализации квиза.

Пример подключения обработчика и вызовов API:

document.addEventListener('requests:quiz:init', function (event) {
    if (String(event.detail.formId) !== '3') return;
    console.log('Всего шагов:', window.RequestsQuiz.getTotalSteps('3'));
    console.log('Текущий индекс:', window.RequestsQuiz.getCurrentStep('3'));
});

document.addEventListener('requests:quiz:step', function (event) {
    if (String(event.detail.formId) !== '3') return;
    console.log('Показан шаг:', event.detail.step + 1, event.detail.stepTitle);
});

// После инициализации: перейти на второй шаг без проверки текущего.
window.RequestsQuiz.goToStep('3', 1);

Внешний счётчик можно подключить своим обработчиком. Плагин сам не задаёт цели аналитики и не настраивает отправку событий во внешние сервисы. В его событиях передаются ID формы и сведения о шаге, включая заголовок; ответы посетителя в detail не включены.

PHP API

Для кода, выполняемого в окружении Webasyst с установленным и включённым плагином, доступен класс requestsQuizformsViewHelper.

Метод Результат
isQuiz($form_id) Проверка существования формы и режима quiz
getQuizConfig($form_id) Массив параметров квиза; для отсутствующей или обычной формы — пустой массив
renderQuiz($form_id, $options = []) HTML встроенного квиза
renderModal($form_id, $options = []) HTML квиза в окне
render($form_id, $options = []) Короткое имя renderQuiz()
modal($form_id, $options = []) Короткое имя renderModal()
wa('requests');
$form_id = 3;
if (requestsQuizformsViewHelper::isQuiz($form_id)) {
    $config = requestsQuizformsViewHelper::getQuizConfig($form_id);
}

Ключи конфигурации: showProgress, showStepNumbers, allowBack, validateOnStep, animation, buttonNext, buttonBack, buttonSubmit.

Статические renderQuiz() и renderModal() выбрасывают исключение Form is not a quiz, если форма отсутствует или её режим отличается от quiz. Их короткие имена ведут себя так же. Для шаблонов темы используйте хелпер плагина с проверкой version(): он выполняет полный вывод через приложение, а для неподходящего режима возвращает пустую строку.

Внешние подключения

У «Квиз-форм» нет собственных настроек API-ключей, webhook, CRM, cron или CLI-команд. MCP-инструменты в плагине не зарегистрированы. Передачу заявки выполняет приложение «Заявки»; внешние подключения следует настраивать средствами приложения и соответствующих плагинов.