我是MTurk的新手,并且一直在尝试在此平台上实施我的网络应用程序以进行点选。我已经使用来自kaflurbaleen.blogspot的教程使用ExternalQuestion成功创建了一个HIT。但是,当我在沙盒中测试代码时,我意识到HIT没有按预期工作。我发现了两个问题如下。
我找不到' assignmentId'应该附加到URL。我检查了workersandbox并在接受任务之前找到了以下URL https://workersandbox.mturk.com/mturk/preview?groupId=3JCELWMC4P1FAXE0GMTAW1L96T93VS
据我了解,' assignmentId'应该在接受上面的链接后附加到URL。并且必须使用' externalSubmit'将此参数返回给Mturk服务器。方法。验收后我才发现以下参数 hitId&安培; prevHitSubmitted&安培; prevRequester&安培; requesterId&安培; prevReward&安培; hitAutoAppDelayInSeconds&安培;&的groupId放大器;签名
我也意识到应用程序在iframe中无法正常工作。每个(鼠标点击+移位)应创建一个红色球体,如原始网站https://s3.amazonaws.com/www.pickvertex3js.com/vertexpicking.html所示。
我试图谷歌寻求答案但收效甚微。我现在已经完成了这两个问题,这些问题阻碍了我的研究。任何帮助将非常感谢。使用BOTO3创建HIT的代码如下。
import boto.mturk.connection
# define the host environment
sandbox_host = 'mechanicalturk.sandbox.amazonaws.com'
real_host = 'mechanicalturk.amazonaws.com'
mturk = boto.mturk.connection.MTurkConnection(
host = sandbox_host,
debug = 1
)
# test the setup of boto by printing the version and account balance
print(boto.Version)
print(mturk.get_account_balance())
# link to my web app, which will be loaded by the iframe of Mturk
URL = "https://s3.amazonaws.com/www.pickvertex3js.com/vertexpicking.html"
# setting task description of the iframe
title = "A Special HIT for Picking!"
description = "Vertex picking!"
keywords = ["3D mesh", "vertices"]
frame_height = 500 # the height of the iframe holding the external hit
amount = .00
# creating the HIT (task)
questionform = boto.mturk.question.ExternalQuestion( URL, frame_height )
response = mturk.create_hit(
title = title,
description = description,
keywords = keywords,
question = questionform,
reward = boto.mturk.price.Price( amount = amount),
response_groups = ('Minimal', 'HITDetail'),
)
# trying to get some outputs
HIT = response[0]
assert response.status
print ('[create_hit( %s, $%s ): %s]' % ( URL, amount, HIT.HITId ) )
# The response included several fields that will be helpful later
print ('Your HIT has been created. You can see it at this link:')
print ('https://workersandbox.mturk.com/mturk/preview?groupId={}'.format(HIT.HITTypeId))
print ('Your HIT ID is: {}'.format(HIT.HITId))
答案 0 :(得分:0)
我也在AWS开发者论坛上发布了回复,但也在此处添加了回复。
这里有帖子:https://forums.aws.amazon.com/thread.jspa?threadID=259228&tstart=0
以下是SO的其他人的副本,以便从中受益:
我看了你的HIT,并认为我在这里提供了一些建议。首先,一些基线的事情,以防他们帮助:
1)正在将assignmentId正确添加到您的HIT中。您可以通过加载您共享的页面(https://workersandbox.mturk.com/mturk/preview?groupId=3JCELWMC4P1FAXE0GMTAW1L96T93VS),单击“查看源”,然后滚动到标记来确认这一点。你应该看到这样的东西:
<iframe height="500" scrolling="auto" frameborder="0" align="center" src="https://s3.amazonaws.com/www.pickvertex3js.com/vertexpicking.html?assignmentId=ASSIGNMENT_ID_NOT_AVAILABLE&hitId=33K3E8REWX0SAJQPACFE1K5LTDBX8G" name="ExternalQuestionIFrame"></iframe>
2)一旦你接受了HIT,你应该看到标签改变看起来像这样:
<iframe height="500" scrolling="auto" frameborder="0" align="center" src="https://s3.amazonaws.com/www.pickvertex3js.com/vertexpicking.html?assignmentId=38YMOXR4MW4S3P05XVRV37Q4QFGW6D&hitId=33K3E8REWX0SAJQPACFE1K5LTDBX8G&workerId=A39ECJ12CY7TE9&turkSubmitTo=https%3A%2F%2Fworkersandbox.mturk.com" name="ExternalQuestionIFrame"></iframe>
3)我查看了你的代码,我可以确认它在直接加载时能正常工作,但放在IFRAME中似乎不起作用。我更进一步试图找出onDocumentMouseDown()方法是否在IFRAME中显示时被调用(我在该函数中添加了一个alert())并且它是。我最好的猜测是,在没有深入研究的情况下,有一些关于The THREE库的内容与IFRAME视口并不友好。它也可能是这样的一条线:
var mouse3D = new THREE.Vector3( ( event.clientX / window.innerWidth ) * 2 - 1,
-( event.clientY / window.innerHeight ) * 2 + 1,
0.5 );
没有使用正确的窗口(即,不是使用IFRAME视口,而是使用整个浏览器窗口,导致奇怪/错误/错误的行为)。
简短版本是我认为你的问题与MTurk本身无关,而是与IFRAME有关。作为一种不太理想的解决方法,您还可以考虑将Worker直接链接到您的页面(而不是IFRAME),并将其链接回MTurk上的提交URL。它并不理想,但我认为它可行。
希望有所帮助。