Javascript 在Meteor中通过亚马逊的SNS向电话号码发送短信
我目前正在使用它与一些Amazon服务进行交互。我现在正在寻找发送短信到电话号码使用这个相同的SDK包装 我想弄清楚的是所涉及的API调用序列。这是SDK的最新版本,但我还没有找到全面的指南 我知道如何进行这些API调用,我发现您必须调用一些API才能使其正确。而且,我只想给手机发短信,不想发电子邮件 我已经通过AWS控制台进行了测试。我可以创建一个主题,并使用SMS协议订阅该主题。我可以通过这种方式向电话号码发送短信。但是API调用订阅我创建的现有主题的电话号码,然后发布到该主题,这有点令人困惑 有人通过SNS和SDK包装器发送消息吗?实现这一点的API调用是什么 据我通过API文档了解,在AWS SNS中手动创建主题后,我需要执行以下操作: 1订阅主题的电话号码必须具有主题的ARN: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调用订阅我创建的现有主题的电话号码,然后发布到该主题,这有点令人困
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:事务性 }, },