2017-04-25 38 views
12

Tôi đang gửi sms từ AWS qua SDK nút. SMS đang diễn ra tốt đẹp và tôi đang cố gắng nhận thông tin giao hàng. Dường như nó không dễ dàng và người ta phải cài đặt SNS để gửi nhật ký tới Cloudwatch và phân tích CloudWatch để nhận thông tin giao hàng tra cứu MessageId: https://stackoverflow.com/a/40327061/2054629Nhận trạng thái gửi SMS AWS

Nếu tôi gửi sms qua giao diện web SNS, nhật ký, tôi thấy nhật ký trong đồng hồ điện toán đám mây , nhưng không phải khi tôi gửi chúng qua SDK nút. Tôi không thể nhận được thông tin về cách thiết lập mọi thứ trước khi gửi chúng từ nút.

Lý tưởng nhất, tôi muốn đạt được cái gì đó như:

const sendSMS = async (message, number) => { 
    // send the SMS 
    // wait to get delivery info 
    // resolve with delivery info, or reject if failed 
} 

Hiện nay tôi có:

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); 
    }); 
    }); 
} 

mà chỉ gửi yêu cầu SMS đến AWS và giải quyết với một cái gì đó giống như

{ 
    ResponseMetadata: { RequestId: '7e0999a3-xxxx-xxxx-xxxx-xxxxxxxxxxxx' }, 
    MessageId: 'f7f21871-xxxx-xxxx-xxxx-xxxxxxxxxxxx', 
} 

Tôi không chắc liệu có phải thiết lập một ứng dụng SNS để có thể nhận nhật ký hay không, và tôi không muốn để giữ mọi thứ đơn giản.

Trả lời

1

Mã của bạn có vẻ hoạt động tốt với nútjs v6 bằng cách thay đổi câu lệnh nhập (thiếu hỗ trợ ES5/6). Sau khi cho phép ghi nhật ký vào đồng hồ điện toán đám mây, mọi SMS (cả thông qua giao diện Web và mã này) đều tạo ra nhật ký hơi trong nhật ký CloudWatch. Tôi nghĩ bạn nên cài đặt lại SDK AWS hoặc tránh sử dụng ES5/6 để làm cho SDK hoạt động chính xác.

Đối với câu hỏi thứ hai, nếu thông điệp không được gửi, bạn sẽ nhận được một lỗi:

(err, res) => { 
     if (err) { return reject(err); } 
     resolve(res); 
    }); 

nếu thông điệp đã được gửi thành công, bạn sẽ có được một câu trả lời như:

{ ResponseMetadata: { RequestId: 'e31feda6-669c-5b13-XXX-bc25b07877b5' }, 
    MessageId: '53555115-6acb-5684-XXXX-0096bc2f6a22' } 
+0

Tôi không nghĩ ES6 là một vấn đề. Làm thế nào tôi có thể nhận được nhật ký CloudWatch tương ứng với SMS từ SDK nút? – Guig

0

Bạn có thể đã làm điều này nhưng để định cấu hình nhật ký trên máy tính để bàn cho việc gửi SMS, bạn phải định cấu hình tùy chọn SMS. Bạn cần tạo vai trò IAM để cho phép truy cập nhật ký trên máy tính bảng. Nó rất đơn giản để làm điều đó thông qua giao diện điều khiển AWS. Các bước được cung cấp tại http://docs.aws.amazon.com/sns/latest/dg/sms_preferences.html

Bạn thậm chí có thể kiểm soát phần trăm phân phối thành công + SMS không thành công được ghi lại nếu bạn muốn. Một khi điều này được thực hiện, bạn sẽ bắt đầu thấy các bản ghi nhật ký điện toán đám mây bất cứ cách nào bạn gửi tin nhắn SMS.

Tôi muốn thêm nhận xét này làm nhận xét nhưng tôi không có đủ đại diện. Tôi sẽ xóa câu trả lời này nếu nó không hoạt động.

Các vấn đề liên quan