Для организации опроса в интернете иногда используются различные онлайн-панели, из которых респонденты переходят в анкету. Обычно после завершения опроса необходимо вернуть респондента в панель, указав статус завершения интервью: успешное или респондент не прошёл по скринеру или квоте. Как же это реализовать в SURVEYSTUDIO?
Подготовка анкеты
В первую очередь нужно убедиться, что ваша анкета завершается с корректными результатами. Это можно сделать с помощью дампа ответов.
Разбираемся со ссылками
У представителя онлайн-панели необходимо получить ссылки, по которым требуется осуществлять переход при завершении интервью. Допустим, они такие:
- http://example
.com/?rid={ID_респондента}&status=1 - успешное интервью, - http://example
.com/?rid={ID_респондента}&status=2 - не прошёл по скринеру, - http://example
.com/?rid={ID_респондента}&status=3 - не прошёл по квоте.
Поскольку в эти ссылки нужно подставлять идентификатор респондента, его необходимо получать из панели. То есть панель добавляет в рабочую ссылку на анкету идентификатор респондента, мы его сохраняем у себя, а затем анкета возвращает его же обратно. Для этого в рабочую ссылку добавляется параметр extid, через который панель должна передавать свои ID:
https://do
.survey-studio.com/s/ef87c2da?extid={ID_респондента}
Чтобы не дать заполнить анкету по ссылке, в которой нет ID, в проекте нужно поставить флаг Запрещать запуск анкеты, если отсутствует уникальный идентификатор контакта.
Вместо флага в проекте можно добавить скрипт перед показом в первый вопрос анкеты.
if (isTesting() || isValidation()) return ok;
if (respondent.extId === undefined) {
return exit('Отсутствует идентификатор в параметре extid');
}
Некоторые панели работают без идентификаторов респондентов, поэтому в их ссылках нет ID. В таком случае менять рабочую ссылку и ограничивать доступ к анкете не требуется.
Прописываем редиректы
В скрипт «Обработка» необходимо добавить ссылки каждого статуса и перенаправить респондента по той, что соответствует результату интервью:
if (isTesting() || isValidation()) return ok;
let urls = {
// Полное
[InterviewResult.Completed]: 'http://example.com/?status=1&rid=' + respondent.extId,
// Скрининг
[InterviewResult.Screening]: 'http://example.com/?status=2&rid=' + respondent.extId,
// Квота
[InterviewResult.Overquoting]: 'http://example.com/?status=3&rid=' + respondent.extId,
// Брак
[InterviewResult.Defect]: 'http://example.com/?status=10&rid=' + respondent.extId,
}
let url = urls[interview.result];
if (url) {
return exitAndRedirect(url);
}
Порядок параметров в ссылке не имеет значения, поэтому для удобства написания скрипта их можно поменять местами. Если панель не передаёт свой ID, то подстановку идентификатора нужно убрать.
Теперь при любом исходе интервью респондент будет возвращён в панель с определённым статусом, если только во время опроса он не закроет браузер.
Если требуется - с панелью можно поделиться статистикой по набору квот. Для этого отправьте ссылку на публичную статистику проекта.
Несколько панелей
Иногда возникает необходимость подключить сразу несколько панелей для сбора данных. Респонденты должны возвращаться на ту панель, с которой пришли. Для этого:
1.
Панелям отправьте ссылки на проект с дополнительным параметром. По значению этого параметра можно будет определить с какой панели пришёл респондент.
- Для Панели #1 отправьте ссылку с добавлением в конце &p=1:
https://do
.survey-studio.com/s/ef87c2da?extid={ID_респондента}&p=1 - Для Панели #2 отправьте ссылку с добавлением в конце &p=2
https://do
.survey-studio.com/s/ef87c2da?extid={ID_респондента}&p=2
(может быть любое количество панелей)
2.
В начало анкеты добавьте вопрос с Единственным выбором, где варианты ответов с кодам 1, 2, ... (по количеству панелей). В этом вопросе будет сохраняться информация с какой панели пришёл респондент. В вопрос добавьте скрипт перед показом: Cохранение параметра из ссылки на опрос
Укажите в первой строке скрипта название параметра, определяющего панель (в примере это латинская p
).
3.
В скрипте Обработка настройте редиректы всех панелей
if (isTesting() || isValidation()) return ok;
let urls = {
1: { // редиректы для панели #1
// Полное
[InterviewResult.Completed]: 'http://panel_1.com/?status=1&rid=' + respondent.extId,
// Скрининг
[InterviewResult.Screening]: 'http://panel_1.com/?status=2&rid=' + respondent.extId,
// Квота
[InterviewResult.Overquoting]: 'http://panel_1.com/?status=3&rid=' + respondent.extId,
// Брак
[InterviewResult.Defect]: 'http://panel_1.com/?status=10&rid=' + respondent.extId,
},
2: { // редиректы для панели #2
// Полное
[InterviewResult.Completed]: 'http://panel_2.com/?status=1&rid=' + respondent.extId,
// Скрининг
[InterviewResult.Screening]: 'http://panel_2.com/?status=2&rid=' + respondent.extId,
// Квота
[InterviewResult.Overquoting]: 'http://panel_2.com/?status=3&rid=' + respondent.extId,
// Брак
[InterviewResult.Defect]: 'http://panel_2.com/?status=10&rid=' + respondent.extId,
},
// можно добавить и другие панели по аналогии
}
let panelId = Q777.getCheckedCode(); // замените 777 на номер вашего вопроса в начале анкеты где определяется панель
let panelUrls = urls[panelId];
if (panelUrls && (interview.result in panelUrls)) {
let url = urls[panelId][interview.result];
return exitAndRedirect(url);
}