Javascript 在Meteor中通过亚马逊的SNS向电话号码发送短信

Javascript 在Meteor中通过亚马逊的SNS向电话号码发送短信,javascript,amazon-web-services,meteor,sms,amazon-sns,Javascript,Amazon Web Services,Meteor,Sms,Amazon Sns,我目前正在使用它与一些Amazon服务进行交互。我现在正在寻找发送短信到电话号码使用这个相同的SDK包装 我想弄清楚的是所涉及的API调用序列。这是SDK的最新版本,但我还没有找到全面的指南 我知道如何进行这些API调用,我发现您必须调用一些API才能使其正确。而且,我只想给手机发短信,不想发电子邮件 我已经通过AWS控制台进行了测试。我可以创建一个主题,并使用SMS协议订阅该主题。我可以通过这种方式向电话号码发送短信。但是API调用订阅我创建的现有主题的电话号码,然后发布到该主题,这有点令人困

我目前正在使用它与一些Amazon服务进行交互。我现在正在寻找发送短信到电话号码使用这个相同的SDK包装

我想弄清楚的是所涉及的API调用序列。这是SDK的最新版本,但我还没有找到全面的指南

我知道如何进行这些API调用,我发现您必须调用一些API才能使其正确。而且,我只想给手机发短信,不想发电子邮件

我已经通过AWS控制台进行了测试。我可以创建一个主题,并使用SMS协议订阅该主题。我可以通过这种方式向电话号码发送短信。但是API调用订阅我创建的现有主题的电话号码,然后发布到该主题,这有点令人困惑

有人通过SNS和SDK包装器发送消息吗?实现这一点的API调用是什么

据我通过API文档了解,在AWS SNS中手动创建主题后,我需要执行以下操作:

1订阅主题的电话号码必须具有主题的ARN:

sns.subscribe(params, function(err, data) {...});
1用户必须接受来自其手机的订阅

2发布短信:

sns.publish(params, function(err, data) {...});
3用户可以随时从手机上取消订阅

但这是真的吗

我已经有了设置键的代码,我需要这样做才能调用sub/pub API吗

AWS.config.update({
   accessKeyId: Meteor.settings.awsAccessKeyId,
   secretAccessKey: Meteor.settings.awsSecretKey
});
更新1:

我设置了以下代码

  broadcaseSms: function () {
    AWS.config.update({
       accessKeyId: Meteor.settings.awsAccessKeyId,
       secretAccessKey: Meteor.settings.awsSecretKey,
       region: "us-east-1"
    });

    var sns = new AWS.SNS();
    var params = {
      Message: 'test 5', /* required */
      MessageAttributes: {
        someKey: {
          DataType: String//, /* required */
          // BinaryValue: new Buffer('...') || 'STRING_VALUE',
          // StringValue: 'STRING_VALUE'
        },
        /* anotherKey: ... */
      },
      // MessageStructure: 'STRING_VALUE',
      // Subject: 'STRING_VALUE',
      // TargetArn: 'STRING_VALUE',
      TopicArn: 'arn:aws:sns:us-east-1:34523452345:test'
    };

    sns.publish(params, function(err, data) {
      if (err) console.log(err, err.stack); // an error occurred
      else     console.log(data);           // successful response
    });
  }
但有一个例外:

'InvalidParameterType:应为 params.MessageAttributes[\'someKey\']。数据类型为字符串\n

我得到的印象属性,“someKey”是错误的,应该是一个实际的键

更新2:

我让它像这样工作

    AWS.config.update({
       accessKeyId: Meteor.settings.awsAccessKeyId,
       secretAccessKey: Meteor.settings.awsSecretKey,
       region: "us-east-1"
    });

    var sns = new AWS.SNS({params: {TopicArn: 'arn:aws:sns:us-east-1:2353452345:test'}});

    sns.publish({Message: 'THE MESSAGE TO PUBLISH'}, function(err, data) {
      if (err) console.log(err, err.stack); // an error occurred
      else     console.log(data);           // successful response
    });
您需要使用节点的

meteor包装不支持SNS。 从文档中:

用于node.js的AWS SDK Meteor智能包和浏览器包, 提供SDK,通过 为AWS服务(包括Amazon S3)提供JavaScript对象, 亚马逊EC2、DynamoDB和亚马逊SWF


对于未来的观众,请看这个问题:解释MessageAttributes是什么。查看下面的代码片段以获取示例声明。正如OP在第一个代码段中所发布的,它位于params变量内部

消息属性:{ AWS.SNS.SMS.SenderID:{ 数据类型:String, 字符串值:MyID }, AWS.SNS.SMS.MaxPrice:{ 数据类型:数字, StringValue:0.01 }, AWS.SNS.SMS.SMSType:{ 数据类型:String, StringValue:事务性 }, },