从沙盒切换到生产环境时,AWS Turk NotifyWorker 方法不适用于 .NET 开发工具包

本文关键字:不适用 方法 NotifyWorker 适用于 NET 工具包 开发工具 开发 Turk AWS 生产环境 | 更新日期: 2023-09-27 18:34:20

我在 .NET C# 中创建了一个小应用程序,它允许我使用工作人员的工人 ID 向他们发送电子邮件。我向我自己的个人工作人员 ID 发送了一封电子邮件,当我的服务终端节点设置为 https://mechanicalturk.sandbox.amazonaws.com 时,它工作正常?Service=AWSMechanicalTurkRequester in the App.config file.

但是,当我将服务终结点切换到 https://mechanicalturk.amazonaws.com 时?Service=AWSMechanicalTurkRequester 电子邮件永远不会到达。

NotifyWorker 方法似乎在 SDK 中也没有任何响应方法,就像它在 XML 响应形式的正常 URI 请求中那样,因此调试起来非常令人生气。

有没有人知道为什么当我切换服务终结点时,消息永远不会到达?

(请求编辑)以下是运行 main 函数的代码:

public class WorkerArgs
    {
        public string FileName { get; set; }
        public bool Mass { get; set; }
        public string WorkerID { get; set; }
        public string Message { get; set; }
        public string Subject { get; set; }
        public WorkerArgs(string fileName, bool mass, string message, string subject)
        {
            this.FileName = fileName;
            this.Mass = mass;
            this.Message = message;
            this.Subject = subject;
        }
        public WorkerArgs(bool mass, string workerId, string message, string subject)
        {
            this.Mass = mass;
            this.WorkerID = workerId;
            this.Message = message;
            this.Subject = subject;
        }
    }
private void bwRun_DoWork(object sender, DoWorkEventArgs e)
    {
        WorkerArgs args = (WorkerArgs)e.Argument;
        if (args.Mass)
        {
            List<string> workers = CSVProcessor.GetUniqueWorkers(args.FileName);
            for (int i = 0; i < workers.Count(); i += 100) {
                MessageSender.SendMessage(args.Subject, args.Message, workers.Skip(i).Take(100).ToList());
            }
        }
        else
        {
            MessageSender.SendMessage(args.Subject, args.Message,new List<string>(new string[] { args.WorkerID }));
        }
    }
class CSVProcessor
{
    public static List<string> GetUniqueWorkers(string fileName)
    {
        //WorkerCollection workers = new WorkerCollection();
        List<string> workers = new List<string>();
        using (TextFieldParser tfp = new TextFieldParser(fileName))
        {
            tfp.Delimiters = new string[] { "," };
            tfp.ReadFields();
            while (!tfp.EndOfData)
            {
                string[] values = tfp.ReadFields();
                if (!String.IsNullOrWhiteSpace(values[21])) { workers.Add(values[15]); } //{ workers.addUniqueWorker(values[15]); }
            }
        }
        return workers.Distinct().ToList();
    }
}
class MessageSender
{
    public static void SendMessage(string subject, string messageText, List<string> workerIDs) {
        SimpleClient client = new SimpleClient();
        client.NotifyWorkers(subject, messageText, workerIDs);
    }
}

从沙盒切换到生产环境时,AWS Turk NotifyWorker 方法不适用于 .NET 开发工具包

解决了问题。Amazon Turks 仅允许您通知已为您完成 HIT 的工作人员。由于我一直在向我发送消息的人尚未为我完成 HIT,并且唯一成功的人是我在沙盒中自己的工作人员 ID(这是我完成自己的一些 HIT 的地方),这就是缺少消息到达的原因。