介绍

集智提供请求者三种不同方式在发布任务时设定任务中的问题表单。内部问题表单让请求者用 JSON 的格式设定问题表单的内容。外部问题表单则让请求者将自己网站上的问题表单以 iframe 的形式呈现在我们的平台上。HTML问题表单让请求者可以用 html 字串的形式传入问题表单,由集智将 html 直接呈现在网站上。HTML问题表单可视为内部问题表单与外部问题表单的折衷,请求者无需使用 JSON 的格式定义任务问题,也不用自行架设网站来呈现问题表单。

内部问题表单

内部问题表单 (internalQuestionsForm) 由 JSON 的格式定义任务中的问题内容。

名称 描述 Type Default Required
questions 包含所有内部问题的阵列,有关内部问题的设定见下表。
必须至少包含一个问题
Array None Yes

内部问题的设定如下:

名称 描述 Type Default Required
id 此问题的专属识别号 String None Yes
title 呈现在问题前面的文字,以标题方式呈现 String None No
comment 呈现在问题后面的文字 String None No
isRequired 本问题是否为必填 Boolean False Yes
answerType 本问题的答案类型,为下列两种其中之一:
freeTextAnswer:文字答案
selectionAnswer:选择答案
String None Yes
freeTextAnswerSpec 任意文字答案设定 Object None No
selectionAnswerSpec 选择答案设定 Object None No


文字答案设定

文字答案 (freeTextAnswer) 让工作者在一个文字框里输入答案。下面的设定可以用来验证答案是否符合请求者的规定:

名称 描述 Type Default Required
defaultText 在文字框里的预设值 String None No
numberOfLines 文字框呈现的行数 Integer 1 No
isNumber 答案必为数字 Boolean False No
minValue 若答案必为数字,该数字的最小值
若 isNumber 为 False,则本设定无效
Integer None No
maxValue 若答案必为数字,该数字的最大值
若 isNumber 为 False,则本设定无效
Integer None No
minLength 答案的最小长度
最小值:0
Integer None No
maxLength 答案的最大长度
最小值:0
Integer None No


选择答案设定

选择答案 (selectionAnswer) 让工作者从多个选项中选择零个、一个或甚至多个选项。下面的设定能定义选项呈现的方式,以及选项的内容。

名称 描述 Type Default Required
minSelectionCount 最少的答案选择数量 Integer 1 No
maxSelectionCount 最多的答案选择数量 Integer 1 No
style 选项呈现的方式,为下列三种其中之一:
radiobutton:单选按钮,只有在maxSelectionCount为1时可选
checkbox 复选框,最多可选maxSelectionCount个选项
dropdown:下拉选项,只有在maxSelectionCount为1时可选
String None No
options 包含选项的阵列,有关选项的设定见下表。
必须至少包含一个选项
Array None Yes


选项设定

名称 描述 Type Default Required
id 此选项的专属识别号 String None Yes
text 选项的内文 String None Yes


示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
internalQuestionsForm: {
questions: [
{
id: 'introduction',
title: '请简单描述你自己',
comment: '请告诉我们你活泼可爱的一面',
isRequired: true,
answerType: 'freeTextAnswer',
freeTextAnswerSpec: {
defaultText: '很高兴认识你',
numberOfLines: 10,
isNumber: false
}
},
{
id: 'sex',
title: '你的性别',
isRequired: true,
answerType: 'selectionAnswer',
selectionAnswerSpec: {
minSelectionCount: 1,
maxSelectionCount: 1,
style: 'radiobutton',
optionSpecs: [
{
id: 'male',
text: '男'
},
{
id: 'female',
text: '女'
}
]
}
}
]
}

外部问题表单

使用外部问题表单 (externalQuestionsForm) 发布的任务让请求者可以将问题放在自己的网站上,再由我们的网站以 iframe 的方式呈现在工作者的浏览器。外部问题表单的设定如下:

名称 描述 Type Default Required
url 外部问题表单所在的 url
String None Yes
frameHeight 呈现外部问题表单的 iframe 高度 Integer 500 No


外部问题表单的 url 与参数

为了让请求者可以辨别答案来源的工作者及指定工作,系统在载入 iframe 的 url 时,会在请求者所提供的 url 后面加入数个参数: taskId, jobId, contributorId, submitTo 。这些参数将以query的方式传入:?之后为附上的参数, = 前面为参数的名称、后面为参数的值,参数之间用&隔开。

例如,本来的 url 为:

https://awesometask.crowdsdom.com/fantasticsurvey

在 iframe 中实际载入的 url 为:

https://awesometask.crowdsdom.com/fantasticsurvey?taskId=507f1f77bcf86cd799439011
&jobId=507f191e810c19729de860ea
&contributorId=5637fdda9629f2180030ddf2
&submitTo=https://api.crowdsdom.com/v1/tasks/507f1f77bcf86cd799439011/externalSubmit

预览模式

在预览模式中,taskId的值为preview,请求者可用此资讯判断是否为预览。预览时,外部问题的表单应该不能提交。

提交外部问题表单

外部问题表单必须提交结果至 https://api.crowdsdom.com/v1/tasks/:taskId/externalSubmit, 也就是 url 参数中的 submitTo 来完成指定工作,这样我们的系统才有办法判断该答案所对应的指定工作。


示例

1
2
3
4
externalQuestionsForm: {
url: 'https://awesometask.crowdsdom.com/fantasticsurvey',
frameHeight: 400
}

HTML问题表单

在 HTML 问题表单 (htmlQuestionsForm) 中,请求者可以自行用 HTML 的语法定义任务的内容,由集智的网站呈现。HTML问题表单的设定如下:

名称 描述 Type Default Required
content 任务的内容 (HTML),详细规范见下段描述 String None Yes


HTML 任务内容规范

  1. 在 content 中的 HTML 必须要有 idcrowdsdom_form 的表单 (form),当工作者点击完成任务时,我们的系统会提交这个表单,并把结果储存起来。若 HTML 没有 idcrowdsdom_form 的表单,系统将不会发布该任务。

  2. 请不要在表单中设定 action,也不要定义自己提交表单的按钮。系统不会让工作者在 HTML 中提交表单,只会造成工作者的混淆。

  3. 另外,在 HTML 中不用包含 body head html 等标签,所有 script 标签的内容也都会被忽略。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
htmlQuestionsForm: {
content: '<h1>这是一个自我介绍的任务</h1>
<form name="rowdsdom_form" id="crowdsdom_form">
<h1>请简单描述你自己</h1>
<p><textarea name="introduction" cols="80" rows="3"></textarea>很高兴认识你</p>
<p>请告诉我们你活泼可爱的一面</p>
<h1>你的性别</h1>
<input type="radio" name="sex" value="male" checked>男
<br>
<input type="radio" name="sex" value="female">女
<br>
</form>'
}