$accessKey = 'XZA...';
$accessSecret = 'YKW...';
$credentials = new Aws\Credentials\Credentials($accessKey, $accessSecret);
$sharedConfig = [
'region' => 'us-east-1',
'version' => 'latest',
'credentials' => $credentials
];
$sdk = new Aws\Sdk($sharedConfig);
$sns = new SnsClient($sharedConfig);
$payload = [
'PhoneNumber' => '+999999999', // E.164 format
'Message' => md5(time()),
'MessageAttributes' => [
'DefaultSenderID' => ['DataType'=>'String','StringValue'=>'MyBrandName'],
'DefaultSMSType' => ['DataType'=>'String','StringValue'=>'Transactional']
]
];
try {
$data = $sns->publish( $payload );
$MessageId = $data->get('MessageId');
} catch ( Exception $e ) { }
我正在使用AWS SDK for PHP - 版本3.
上面的代码在我发送单个短信时效果很好,但当我向移动设备发送短信时, DefaultSenderID 属性不起作用。
亚马逊文档说 DefaultSenderID - 在接收设备上显示为发件人的字符串,例如您的商家品牌。发件人ID的支持因国家/地区而异。发件人ID可以是1到11个字母数字字符,并且必须至少包含一个字母。
使用Amazon SNS的任何人都遇到过这个问题吗?
答案 0 :(得分:0)
对于任何仍在努力解决这个问题的人。
如果查看文档here,您会发现需要将密钥 AWS.SNS.SMS.SenderID 添加到有效负载的 MessageAttributes 中
以下内容应该有效:
$payload = [
'PhoneNumber' => '+999999999', // E.164 format
'Message' => md5(time()),
'MessageAttributes' => [
'AWS.SNS.SMS.SenderID' => [
'DataType' => 'String',
'StringValue' => 'YourSenderID',
]
]
];
try {
$data = $sns->publish($payload);
$MessageId = $data->get('MessageId');
} catch (Exception $e) { }