Настройка проекта
Инструкция
- Используйте ссылку, например: /api/proxy/yadisk/image1.jpg .
- В настройках профиля заказчика перейдите в.
- Настройте интеграцию с внешними сервисами.
- Разместить инструкцию в самом задании так, чтобы она не сильно перегружала интерфейс.
- Сделать инструкцию в виде бокового окна, чтобы можно было быстро развернуть и скрыть.
- Разместить инструкцию под катом или добавить подсказки-вопросы к отдельным элементам интерфейса.
Для Толоки задачу нужно декомпозировать. Задание на 30 минут для одного человека со всеми фразами лучше разбить на отдельные фразы и предложить разным исполнителям. Шаблон для создания задания такого типа не потребует от пользователя установки отдельного диктофона.
Возьмите наше пошаговое описание создания задания по записи фраз на диктофон.
Во входных данных можно передать фразу, которую должен произнести исполнитель (включить навигацию), и скорость речи (normal speed). Эти данные вам и нужно будет записать в TSV-файл. О создании файла и его структуре можно прочитать в Руководстве.
В предпросмотре по умолчанию 4 задания на странице. Их количество для вашего проекта можно будет указать при загрузке файла с заданиями. Подробнее о предпросмотре.
Например, если вам нужно, чтобы один человек произнес одну и ту же фразу 10 раз, сделайте на странице 10 заданий. Стоимость указывается за целую страницу. Определить, сколько человек должно произнести ту или иную фразу, можно с помощью перекрытия в пуле. Кстати, не забудьте о фильтрах в пуле, чтобы отобрать только исполнителей, владеющих русским языком и выдать задание на мобильном: клиент = мобильная Толока.
Вы можете поручить проверку записанных фраз другим исполнителям, создав отдельный проект. Как это сделать кратко описано здесь.
Настройка интерфейса задания
- Посмотрите как это реализовано в шаблоне «Найти информацию в интернете».
- Для решения второй задачи вы можете добавить ещё одну валидацию по аналогии с этой:
if (solution.output_values.url && solution.output_values.check) {return {task_id: this.getTask().id,errors: {'url': {code: 'Вставьте ссылку или отметьте галочкой,что сайта нет'}}}}
- В режиме редактирования проекта нажмите «шестеренку».
- В открывшемся поле слева введите ссылки и нажмите Ввод.
- откройте настройки под «шестеренкой».
- удалите
$TOLOKA_ASSETS/js/toloka-handlebars-templates.js
. - Выделить произвольную область на картинке. Например, поставьте квадрат в правый верхний угол.
Добавьте информацию об этом в инструкцию для проверяющих.
- Предложить исполнителю пропустить задание и сообщить о нём в личном сообщении. Сообщения проверяются заказчиком и, если объекта действительно нет, задание будет удалено из пула (путем обнуления перекрытия).
- Добавить в интерфейс чекбокс «нет объекта» и настройте в JS проверку, что в задании либо выделен объект, либо поставлена галочка.
Для контроля добавьте в интерфейс задания информацию о значении этого чекбокса.
Добавьте к компоненту для вставки картинки параметры real-size=true
и screenshot=true
.
onKey: function(key) {
var el = this.getDOMElement().querySelector(".image-annotation-editor__shape-polygon");
if (key === 'D') {
el.click();
el.classList.add('image-annotation-editor__shape_active')
}
Воспользуйтесь этой библиотекой, если потребуются дальнейшие модификации редактора по выделению областей.
В режиме предпросмотра проверить загрузку файлов нельзя, но это можно сделать в песочнице, выполнив своё задание. Для этого нужно зарегистрироваться в сендбоксе в качестве исполнителя и добавить логин в доверенные на странице Пользователи. Подробнее можете прочитать в этой статье .
Если никто из исполнителей не смог отправить задание, скорее всего проблема в валидации в JS. Проверьте её ещё раз.
Перенесите проект в сендбокс и попробуйте выполнить задание самостоятельно в песочнице.
Чтобы проверить, как выглядит задание на экране мобильного телефона, можно переключиться в режим эмуляции в браузерах Chrome или Safari и отредактировать блок CSS.
Также вы можете воспользоваться мобильной версией сендбокса. Чтобы получить к ней доступ, напишите в службу поддержки.
{{field type="checkbox" name=(concat "result." @index ) label=(concat "checkbox –
" @index) size="L"}}
this.getTask().input_values['name'][2]solution.output_values['result'][2]
Если в интерфейсе, то следующим образом: 
Попробуйте отключать расширения браузера. Они могут блокировать загрузку iframe.
Чтобы передать label
во входных данных, укажите в нём имя входного поля.
Например, если у вас входное поле asd
с типом строка, то компонент может быть записан так: {{field type="checkbox" name="like" label=asd hotkey="q"}}
.
Если вы хотите передавать различные значения лейблов в разных заданиях или количество чекбоксов может меняться, то воспользуйтесь конкатенацией.
Текст под кат можно убрать с помощью стилей CSS как в самом задании, так и в инструкции. Пример кода можно посмотреть здесь.
{{field type="button-clicked" name="ads" label="Нажми меня" href=name_escape
action=true}}
Названия выходных полей должны отличаться: для каждого чекбокса своё имя. Подробнее об этом компоненте здесь.
Добавить валидацию ответа в зависимости от чекбокса возможно с помощью JavaScript. Пример доступен в шаблоне «Поиск данных в сети».
Посмотреть пример вы можете в комментариях к проекту. В примере есть формат выходных данных и библиотеки, которые нужно подключить.
Вероятно, проблема в блоке JS. Попробуйте удалить его содержимое, после чего проверьте кнопку Отправить в режиме предпросмотра.
Снять выбор нельзя. Только изменить на другую радиокнопку с ответом.
В этом случае нужно оставить поле необязательным в выходных данных и прописать валидацию в зависимости от ответа исполнителя. Вы можете посмотреть, как это решено в шаблоне «Категоризация текста с дополнительными опциями».
Добавьте sources="CAMERA"
в атрибуты к компоненту для загрузки картинки, чтобы запретить добавлять фото из галереи.
setSolution: function(solution) {
var secondScale = this.getDOMElement().querySelector('.second-scale');
if(secondScale) {
secondScale.style.display = solution.output_values.grammar === 'no' ? 'block' : 'none';
}
TolokaHandlebarsTask.prototype.setSolution.call(this, solution);
},
Вы можете сделать выделение и выпадающий список с выбором категории. Посмотрите, как это реализовано на этой странице (вкладка Выпадающий список).
Подробнее про расширение шаблона на JS вы можете прочитать здесь.
Чтобы разметка Vue не конфликтовала с синтаксисом Handlebars нужно отключить библиотеку toloka-handlebars-templates и наследоваться от классов Task/TaskSuite.
В шаблоне «Бок-о-бок» используется не HTML-тег, а компонент. Поэтому нужно подставить прокси в круглых скобках по образцу: {{img src=(proxy image)}}
.
.task
или .task-suite
. Например, черный:.task-suite {
background-color: #000000;
}
.task {
background-color: #000000;
}
Также вы можете присвоить класс области интерфейса, где находится изображение, и установить фон только для этой области.Можно сделать проверку формата ссылки с помощью регулярных выражений. Для этого в шаблоне задания добавьте валидацию ссылки на JavaScript c помощью regexp
.
Например: var regexp = /^(https://www.myurl.com/).{4,200}$/
.
input
с типом строка. Сделайте поле обязательным. Затем добавьте компонент Поле для ввода текста в интерфейс задания (в блок HTML) и укажите имя поля в атрибуте name
:{{field type="textarea" name="input" width="270px" rows=5}}
Добавить валидацию ответа в зависимости от чекбокса можно с помощью JavaScript. Пример доступен в шаблоне «Поиск данных в сети».
В качестве входного поля передайте массив строк. Например, как показано на скриншоте:
{{#each words}}
{{field type="radio" name="result" value=this label=this}}
{{/each}}
<input type=""range"" list=""rng"" class=""res"">
а в JS в onRender прописать следующее:
onRender: function() {
// DOM-элемент задания сформирован (доступен через #getDOMElement())
//Добавляем служебные переменные
var $root = $(this.getDOMElement());
var _this = this;
var solution = TolokaHandlebarsTask.prototype.getSolution.apply(this, arguments);
$root.on('change', '.res', function(){
var range_result = $(this).val()
_this.setSolutionOutputValue('result', range_result);
return solution;
})
}
Расширить окно HTML не получится. Чтобы раскрыть поля JS и CSS, кликните в любую область в пределах поля.
Заключите входное поле в двойные фигурные скобки {{text}}
.
Заключите входное поле в тройные фигурные скобки {{{input_field}}}
.
Подробнее об использовании компонента можно узнать в Руководстве заказчика.
Для решения задачи с динамическим количеством выходных полей воспользуйтесь рекомендациями с этой страницы.
Мы не задумывали, что в этом окошке будет вестить какая-то сложная разработка. Как правило, контент подготавливают в стороннем редакторе, который имеет подсветку, а в окошко копируют готовый вариант перед обновлением.
В аспекте доступности TolokaHandlebars для редактирования нет отличий между нашим окошком и редактором.
Чтобы текст из входного поля отображался с HTML-тегами, можно использовать <pre>
. Например:<pre>{{text}}</pre>
.
.task {
max-width: 800px;
}
pre {
white-space: pre-wrap;
}
Если после сохранения инструкции пропадают теги или атрибуты (например, checked="true"
), значит они не поддерживаются. Полный список допустимых в инструкции тегов можно найти в руководстве.
Входные и выходные данные
Пример шаблона задания по выделению групп изображений вы найдете по ссылке. Входные и выходные данные, а также фрагмент инструкции — в комментариях к проекту.
Для проверки формата ввода данных можно использовать тип выходного поля с указанием допустимых или минимальных/максимальных значений. Например, для ИНН создайте выходное поле с типом «строка» и укажите минимальную и максимальную длину (например, 10 и 12). Для более сложной проверки введённых данных в шаблоне, используйте RegExp.
Для ввода даты можно добавить в интерфейс задания календарь. Пример календаря вы найдете здесь.
Диапазон не будет являться фиксированным значением.
Когда скачиваете файл с результатами, поставьте галочки Время старта и Время отправки. В файле будут точные дата и время, когда исполнитель взял страницу заданий на выполнение и отправил ее в формате UTC.
Если вы передаёте тексты во входные данные, то достаточно загрузить в пул 2 разных задания: в одном из них в поле INPUT: <имя входного поля>
вы передадите текст № 1, в другом — текст № 2.
Если текст в самом шаблоне задания, в блоке HTML, то нужно клонировать проект. Чтобы исполнитель мог сделать только одно задание в вашем проекте, используйте правило Выполненные задания. Можно назначить навык или заблокировать исполнителя, после того, как он отправит один ответ.