2016-10-26 228 views
0
 $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的PHP - 3版
上面的代码工作得很好,当我发送一个短信,除了属性DefaultSenderID至极当我将短信发送到移动设备时不起作用。亚马逊SNS - AWS-SDK-PHP

亚马逊文档说DefaultSenderID - 一个字符串,如您的商业品牌,在接收设备上显示为发件人。对发件人ID的支持因国家而异。发件人ID可以是1 - 11个字母数字字符,并且它必须至少包含一个字母。

任何人都使用Amazon SNS遇到过这个问题?

+0

您可以添加完整的PHP文件,有没有脚本中的任何其他函数/方法或没有脚本目前需要任何AWS SDK文件的?如果可以添加完整的php文件,这将有所帮助,否则如果解决了问题,请让其他人知道它已经解决,以及如何解决问题。 – Birdy

+0

上面的代码中缺少的唯一东西是require_once'autoload..php'。完整的脚本是上面的代码。问题依然存在...... –

回答

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