我需要一个特定的HIT才能在每个星期五早上运行。有什么办法可以做到这一点,或者是否可以通过外部平台(IFTTT,zapier都不起作用)来解决此问题?在我看来,这是一个非常基本的功能。
答案 0 :(得分:1)
MTurk API中没有内置功能来完成HIT的计划启动。必须通过自定义编程来完成。
如果您正在寻找一站式解决方案,则可以使用标签5(设置点击数和付款)中找到的计划启动时间,通过TurkPrime进行计划
答案 1 :(得分:0)
FWIW,我弄清楚了如何在MTurk中使用Zapier。如果您采用付费计划,则可以利用AWS Lambda应用程序触发一些代码,这些代码将在MTurk上创建HIT。为此,您需要一个链接到您的MTurk账户的AWS账户。一旦有了,就可以创建一个Lambda函数,其中包含以下代码,用于在MTurk上创建HIT:
import json
import boto3
def lambda_handler(event, context):
print(event)
###################################
# Step 1: Create a client
###################################
endpoint = "https://mturk-requester.us-east-1.amazonaws.com"
mturk = boto3.client(
service_name='mturk',
region_name='us-east-1',
endpoint_url=endpoint)
###################################
# Step 2: Define the task
###################################
html = '''
<**********************************
My task HTML
***********************************>
'''.format(event['<my parameter>'])
question_xml = '''
<HTMLQuestion xmlns="http://mechanicalturk.amazonaws.com/AWSMechanicalTurkDataSchemas/2011-11-11/HTMLQuestion.xsd">
<HTMLContent><![CDATA[{}]]></HTMLContent>
<FrameHeight>0</FrameHeight>
</HTMLQuestion>'''.format(html)
task_attributes = {
'MaxAssignments': 3,
'LifetimeInSeconds': 60 * 60 * 5, # Stay active for 5 hours
'AssignmentDurationInSeconds': 60 * 10, # Workers have 10 minutes to respond
'Reward': '0.03',
'Title': '<Task title>',
'Keywords': '<keywords>',
'Description': '<Task description>'
}
###################################
# Step 3: Create the HIT
###################################
response = mturk.create_hit(
**task_attributes,
Question=question_xml
)
hit_type_id = response['HIT']['HITTypeId']
print('Created HIT {} in HITType {}'.format(response['HIT']['HITId'], hit_type_id))
请注意,您需要授予Lambda使用MTurk访问权限的角色。从那里,您可以为Zapier创建一个IAM用户,以便在调用Lambda时使用它并将其链接到您的Zapier帐户。现在,您可以设置Action以使用您想要在事件中传递的任何参数来调用Lambda函数。
如果您想将HIT的结果返回到您的Zap中,将会更加复杂,因为Zapier不太适合MTurk HIT的异步特性。我在下面整理了一篇有关如何执行此操作的博客文章: https://www.daveschultzconsulting.com/2019/07/18/using-mturk-with-zapier/