开发者中心任务问题表单 (QuestionsForm)
介绍
集智提供请求者三种不同方式在发布任务时设定任务中的问题表单。内部问题表单让请求者用 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 | internalQuestionsForm: { |
外部问题表单
使用外部问题表单 (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 | externalQuestionsForm: { |
HTML问题表单
在 HTML 问题表单 (htmlQuestionsForm) 中,请求者可以自行用 HTML 的语法定义任务的内容,由集智的网站呈现。HTML问题表单的设定如下:
| 名称 | 描述 | Type | Default | Required |
|---|---|---|---|---|
| content | 任务的内容 (HTML),详细规范见下段描述 | String | None | Yes |
HTML 任务内容规范
在 content 中的 HTML 必须要有
id为crowdsdom_form的表单 (form),当工作者点击完成任务时,我们的系统会提交这个表单,并把结果储存起来。若 HTML 没有id为crowdsdom_form的表单,系统将不会发布该任务。请不要在表单中设定
action,也不要定义自己提交表单的按钮。系统不会让工作者在 HTML 中提交表单,只会造成工作者的混淆。另外,在 HTML 中不用包含
body head html等标签,所有script标签的内容也都会被忽略。
示例
1 | htmlQuestionsForm: { |