我正在使用适用于 PHP 的 AWS 开发工具包 - 版本 3。
当我发送一条 SMS 消息时,下面的代码运行良好,但属性 DefaultSenderID 除外,当我向移动设备发送 SMS 消息时,该属性不起作用。
亚马逊文档称DefaultSenderID – 一个字符串,例如您的企业品牌,在接收设备上显示为发件人。对发件人 ID 的支持因国家/地区而异。发件人 ID 可以是 1 - 11 个字母数字字符,并且必须至少包含一个字母。
有人在使用 Amazon SNS 时遇到过这个问题吗?
$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.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) { }