2016-10-26 42 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) { }