FWIW, я разобрался, как использовать Zapier с MTurk.Если у вас платный план, вы можете использовать приложение AWS Lambda для запуска некоторого кода, который создаст HIT на MTurk.Для этого вам нужна учетная запись AWS, которая связана с вашей учетной записью MTurk.Как только вы это сделаете, вы можете создать функцию Lambda, которая содержит следующий код для создания HIT на MTurk:
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.Оттуда вы можете создать пользователя IAM для Zapier, который будет использоваться при вызове вашего Lambda, и связать его с вашей учетной записью Zapier.Теперь вы можете настроить свое Действие для вызова этой лямбда-функции с любыми параметрами, которые вы хотите передать в событии.
Если вы хотите получить результаты HIT обратно в ваш Zap, это будет сложнее, потому что Zapier нене подходят для асинхронной природы MTurk HIT.Я собрал сообщение в блоге о том, как это сделать ниже: https://www.daveschultzconsulting.com/2019/07/18/using-mturk-with-zapier/