Amazon SNS - aws-sdk-php

问题描述 投票:0回答:1

我正在使用适用于 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 ) {   }
php amazon-web-services aws-sdk amazon-sns
1个回答
1
投票

对于任何仍在为此苦苦挣扎的人。

如果您查看文档此处,您会发现需要将密钥 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) { }
© www.soinside.com 2019 - 2024. All rights reserved.