Gui*_*uig 12 sms amazon-web-services node.js amazon-sns aws-sdk
我正在通过节点SDK从AWS发送短信.短信很顺利,我正在尝试获取交付信息.显然它不是那么容易,需要设置SNS将日志发送到Cloudwatch并解析CloudWatch以获取查询MessageId的交付信息:https://stackoverflow.com/a/40327061/2054629
如果我通过SNS Web界面发送短信,日志我会看到cloudwatch中的日志,但是当我通过节点SDK发送它们时.在从节点发送之前,我无法获得有关如何设置内容的信息.
理想情况下,我希望实现以下目标:
const sendSMS = async (message, number) => {
// send the SMS
// wait to get delivery info
// resolve with delivery info, or reject if failed
}
Run Code Online (Sandbox Code Playgroud)
目前我有:
import AWS from 'aws-sdk';
AWS.config.update({
accessKeyId: accessKey,
secretAccessKey: secretKey,
region: 'us-east-1',
});
const sns = new AWS.SNS();
const sendSMS = async (message, number) => {
return await new Promise((resolve, reject) => {
sns.publish({
Message: message,
MessageStructure: 'string',
PhoneNumber: number,
}, (err, res) => {
if (err) { return reject(err); }
resolve(res);
});
});
}
Run Code Online (Sandbox Code Playgroud)
它只向AWS发送一个SMS请求并通过类似的方式解析
{
ResponseMetadata: { RequestId: '7e0999a3-xxxx-xxxx-xxxx-xxxxxxxxxxxx' },
MessageId: 'f7f21871-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
}
Run Code Online (Sandbox Code Playgroud)
我不确定是否必须设置SNS应用程序才能获取日志,我宁愿不要保持简单.
通过更改 import 语句(缺乏 ES5/6 支持),您的代码似乎可以在 Nodejs v6 上正常工作。启用 CloudWatch 日志记录后,每条 SMS(通过 Web 界面和此代码)都会在 CloudWatch 日志中创建日志流。我认为您应该重新安装AWS SDK或避免使用ES5/6以使SDK正常工作。
对于第二个问题,如果消息未送达,您会收到错误消息:
(err, res) => {
if (err) { return reject(err); }
resolve(res);
});
Run Code Online (Sandbox Code Playgroud)
如果消息发送成功,您会收到如下响应:
{ ResponseMetadata: { RequestId: 'e31feda6-669c-5b13-XXX-bc25b07877b5' },
MessageId: '53555115-6acb-5684-XXXX-0096bc2f6a22' }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
749 次 |
| 最近记录: |