Я новичок в AWS, я пытаюсь отправлять OTP-сообщения на телефоны, используя SNS Amazon.Я использовал следующую ссылку: https://docs.aws.amazon.com/sns/latest/dg/sms_publish-to-phone.html
для отправки в качестве подписчика напрямую на телефоны без необходимости создания темы.Я пытаюсь вернуть статистику доставки для каждого из этих сообщений.Я не могу решить эту задачу, копаясь в документе с любительскими знаниями.Может ли кто-нибудь направить меня в правильном направлении в поиске решения для этого варианта использования
Код:
public static void main(String[] args) {
BasicAWSCredentials basicAwsCredentials = new BasicAWSCredentials(aws_access_key_id,aws_secret_access_key);
AmazonSNS snsClient = AmazonSNSClient
.builder()
.withRegion("ap-southeast-1")
.withCredentials(new AWSStaticCredentialsProvider(basicAwsCredentials))
.build();
String message = "My SMS message";
String phoneNumber = "014532154789";
//<set SMS attributes>
Map<String, MessageAttributeValue> smsAttributes = new HashMap<String, MessageAttributeValue>();
smsAttributes.put("AWS.SNS.SMS.SenderID", new MessageAttributeValue()
.withStringValue("JOKER123") //The sender ID shown on the device.
.withDataType("String"));
smsAttributes.put("AWS.SNS.SMS.SMSType", new MessageAttributeValue()
.withStringValue("Promotional") //Sets the type to promotional.
.withDataType("String"));
sendSMSMessage(snsClient, message, phoneNumber, smsAttributes);
}
public static void sendSMSMessage(AmazonSNS snsClient, String message, String phoneNumber, Map<String, MessageAttributeValue> smsAttributes) {
try {
PublishResult result = snsClient.publish(new PublishRequest()
.withMessage("Your otp for InteropX is "+App.genCode())
.withPhoneNumber(phoneNumber)
.withMessageAttributes(smsAttributes));
System.out.println(result); // Prints the message ID.
System.out.println("Your otp for InteropX is "+App.genCode());
} catch(Exception e) {
e.printStackTrace();
}
}
public static String genCode() throws NoSuchAlgorithmException, InvalidKeyException {
final TimeBasedOneTimePasswordGenerator totp = new TimeBasedOneTimePasswordGenerator();
final Key key;
{
final KeyGenerator keyGenerator = KeyGenerator.getInstance(totp.getAlgorithm());
keyGenerator.init(512);
key = keyGenerator.generateKey();
}
final Instant now = Instant.now();
System.out.println(key);
return String.format("%06d", totp.generateOneTimePassword(key, now));
}