Документация Толоки

Входные и выходные данные

Обратите внимание

Документация на русском языке может быть устаревшей. Самые последние изменения доступны в документации на английском языке.

Примечание

Этот раздел о том, как редактировать спецификацию в редакторе HTML/JS/CSS. Вы также можете узнать, как редактировать спецификацию в Конструкторе шаблонов.

В Спецификации вы задаете параметры входных и выходных данных. Эти настройки будут действовать для всех заданий в проекте.

Добавьте в спецификацию поля для всех данных, которые используются в задании или нужны вам в результатах. При настройке интерфейса ссылайтесь на эти поля.

Не дублируйте входные данные в выходных — в результатах вы получите все данные, включая входные.

Как редактировать спецификацию

Примечание

Редактирование спецификации доступно только при включенной опции Настроить спецификацию вручную.

Вы можете изменить спецификацию в настройках проекта Толоки двумя способами: в обычном режиме или в режиме JSON. Режим JSON дает больше возможностей: вы можете делать скрытыми входные данные и использовать регулярные выражения для валидации выходных данных.

Чтобы добавить поле в обычном режиме, нажмите кнопку Добавить поле.

Чтобы редактировать существующее поле, наведите курсор на поле и нажмите кнопку .

Для переключения режима нажмите кнопку . Примеры полей:

Примеры полей:

Текст в разных форматах
  • Строка определенной длины

    "my_string": {
    "type": "string",
    "required": true,
    "min_length": 10,
    "max_length": 100
    }
    
  • Только русские буквы и цифры

    "my_ru_string": {
    "type": "string",
    "required": true,
    "min_length": 10,
    "max_length": 100,
    "pattern": "[а-яА-Я0-9]+"
    }
    
  • Только латинские буквы и цифры

    "my_en_string": {
    "type": "string",
    "required": true,
    "min_length": 10,
    "max_length": 100,
    "pattern": "[a-zA-Z0-9]+"
    }
    
  • Буквы и символы без цифр

    "my_number_string": {
    "type": "string",
    "required": true,
    "min_length": 10,
    "max_length": 100,
    "pattern": "[^0-9]+"
    }
    
  • Ссылка с определенного сайта

    "my_url": {
    "type": "string",
    "required": true,
    "pattern": "(?:http(?:s)?:\\/\\/)?(?:[a-zA-z-]+(\\.)+)*(?:yandex\\.ru){1}(\\/|\\/[a-zA-Z-\\._~:/\\?#\\[\\]@!\\$&'\\(\\)\\*\\+,;=]+)?"
    }
    
  • Номер телефона с символами +, - и пробелом

    "my_phone_string": {
    "type": "string",
    "required": true,
    "pattern": "\\+?[0-9\\s-]{4,}"
    }
    
  • Электронная почта с символами @, - и .

    "my_mail_string": {
    "type": "string",
    "required": true,
    "pattern": "[a-zA-Z]{1}[a-zA-Z0-9\\.\\-_]+@[a-zA-Z0-9\\.\\-_]+\\.[a-zA-Z]{2,}"
    }
    
  • Месяц

    "my_month_string": {
    "type": "string",
    "required": true,
    "allowed_values": ["январь", "февраль", "март", "апрель", "май", "июнь", "июль", "август", "сентябрь", "октябрь" "ноябрь", "декабрь"]
    }
    
Ссылка
"my_url": {
    "type": "url",
    "required": true
}
"my_boolean": {
    "type": "boolean",
    "required": true
}
Числа
  • Целое число из указанного диапазона:

    "my_integer": {
    "type": "integer",
    "required": true,
    "min_value": 1,
    "max_value": 100
    }
    
  • Целое число со списком допустимых значений:

    "my_integer": {
    "type": "integer",
    "required": true,
    "allowed_values": [10, 20, 30]
    }
    
  • Дробное число:

    "my_float": {
    "type": "float",
    "required": true,
    "min_value": 10.11,
    "max_value": 65.51
    }
    
  • Число с 0, 1 или 2 знаками после запятой.

    Для этого надо выбрать тип строка и проверять с помощью регулярного выражения. Обратите внимание, что разделитель дробной части — запятая:

    "my_mail_string": {
    "type": "string",
    "required": true,
    "pattern": "^([0-9]+)(,([0-9]){1,2})?$"
    }
    
Файл
"my_file": {
    "type": "file",
    "required": true
}
Массив файлов
"my_file_array": {
    "type": "array_file",
    "required": true,
    "max_size": 5
}
Географические координаты
"my_coordinates": {
    "type": "coordinates",
    "required": true
}
JSON
"my_json": {
    "type": "json",
    "required": true
}
Скрытое поле

Строка, к которой исполнитель не сможет получить доступ:

"my_string": {
    "type": "string",
    "hidden": true
}

Пояснения к настройке полей

Параметр

Параметр в JSON

Описание

Название

id

Идентификатор поля. Допустимы латинские буквы, цифры, дефис и нижнее подчеркивание.

Тип

type

Тип данных:

  • строка — string;
  • ссылка — url;
  • логический — boolean;
  • число — number;
  • дробное число — float;
  • файл — file;
  • географические координаты — coordinates;
  • объект JSON — json.

Для массивов в режиме JSON к типу добавляется префикс array_. Например: array_file.

Обязательное поле

required

Обязательность объекта при загрузке заданий для входных данных.

Обязательность ответа исполнителя для выходных данных.

По умолчанию поле необязательное — false.

Скрытое поле

hidden

Позволяет скрыть данные от исполнителя. Если этого не сделать, исполнители могут получить значение поля программно. Параметр можно настроить в режиме JSON.

Например, вы можете скрыть идентификатор assigment_id, который вам понадобится при выполнении отложенной приемки в отдельном проекте.

По умолчанию поле открытое — false.

Важно

Скрытые поля недоступны в интерфейсе задания, даже через JS или код шаблона в конструкторе.

Массив

array_<тип>

Массив объектов одного типа. Используется, например, для загрузки нескольких фотографий исполнителем.

В режиме JSON массив — это отдельный тип данных. Например: "type": "array_file".

Мин. элементов

min_size

Минимальное число элементов в массиве.

Макс. элементов

max_size

Максимальное число элементов в массиве.

Допустимые значения

allowed_values

Допустимые значения для строк, дробных и целых чисел, логического типа данных.

Мин. длина

min_length

Минимальная длина строки.

Макс. длина

max_length

Максимальная длина строки

Мин. значение

min_value

Минимальное значений для дробных и целых чисел.

Макс. значение

max_value

Максимальное значений для дробных и целых чисел.

Текущее положение

current_location

Сохранение текущих координат исполнителя (true/false). Только для типа данных coordinates. Используется в заданиях для мобильного приложения.

По умолчанию false.

Шаблон

pattern

Регулярное выражение, которому должна соответствовать строка. Параметр можно настроить в режиме JSON.

Рекомендации

  • Если вы редактируете обязательные поля, изменения применятся только к новым пулам заданий. Например, если вам пришлось исправить ошибку в проекте, клонируйте пул или создайте новый. Существующие пулы заданий будут работать в соответствии со старой версией проекта.

  • В выходных данных используйте проверку значений и не забывайте помечать поле обязательным, если исполнитель всегда должен заполнить его.

  • Скрытые поля нужны только заказчикам и недоступны в интерфейсе задания. Значения скрытых полей невозможно использовать ни в JS-коде, ни в конструкторе шаблонов.

    Например, вы передаете в задании служебные данные товара, которые не нужны исполнителям: артикул или номер партии. Или вы модерируете комментарии и вам нужны в результатах персональные данные авторов для последующей обработки данных, но исполнители не должны иметь к ним доступ.

    Чтобы создать скрытое поле, добавьте его в спецификацию самостоятельно, затем в режиме JSON добавьте к этому полю параметр "hidden": true. Эти действия надо выполнять в Толоке при настройке проекта. Скрытое поле сохранится при повторной генерации спецификации с помощью Конструктора шаблонов.

Что дальше

Решение проблем

Как вставлять вызов функции, работающий при клике на картинку в задании?

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

Как сделать маску на поле ввода: тип поля дата — дд.мм.гггг; ИНН — только цифры, количество 10 или 12?

Для проверки формата ввода данных можно использовать тип выходного поля с указанием допустимых или минимальных/максимальных значений. Например, для ИНН создайте выходное поле с типом «строка» и укажите минимальную и максимальную длину (например, 10 и 12). Для более сложной проверки введённых данных в шаблоне, используйте RegExp.

Для ввода даты можно добавить в интерфейс задания календарь. Пример календаря вы найдете здесь.

Нужно ли подгонять все изображения для задания под один размер, или они могут быть разные?

Размеры изображений могут быть разные.

Если в выходных данных проекта возможно любое число, от 1 до 999999, возможно ли указать диапазон?

Диапазон не будет являться фиксированным значением.

Как показывать исполнителям два разных варианта текста?

Если вы передаёте тексты во входные данные, то достаточно загрузить в пул 2 разных задания: в одном из них в поле INPUT: <имя входного поля> вы передадите текст № 1, в другом — текст № 2.

Если текст в самом шаблоне задания, в блоке HTML, то нужно клонировать проект. Чтобы исполнитель мог сделать только одно задание в вашем проекте, используйте правило Выполненные задания. Можно назначить навык или заблокировать исполнителя, после того, как он отправит один ответ.