2017-10-08 137 views
0

我正在使用AWS SDK 3.0通過AWS SNS爲印度數字發送短信。我在AWS上創建了ec2實例。 請參考下面的代碼:針對印度數字的AWS SNS短信

$params = array(
     'credentials' => array(
      'key' => 'XXXXXX', 
      'secret' => 'XXXXXXX', 
     ), 
     'region' => 'us-west-2', // < your aws from SNS Topic region 
     'version' => 'latest', 
     'http' => [ 'verify' => false ] 
    ); 
    $sns = new \Aws\Sns\SnsClient($params); 

    $args = array(
     'MessageAttribute' => [ 
      'AWS.SNS.SMS.SenderID' => [ 
       'DataType' => 'String', 
       'StringValue' => 'Sender', 
      ], 
      'AWS.SNS.SMS.SMSType' => [ 
       'DataType' => 'String', 
       'StringValue' => 'Transactional', 
      ] 
     ], 
     "Message" => "Test Message", 
     "PhoneNumber" => "+91XXXXXX", 
     'MessageStructure' => 'string', 
    ); 

    $result = $sns->publish($args); 

此代碼發送短信。但是,短信會記錄爲促銷短信而不是交易。因此僅在上午9點至晚上8點之間交付。

任何幫助,非常感謝。

回答

3

你的編程邏輯很好。您的腳本中存在拼寫錯誤。它是MessageAttributes不是MessageAttribute。由於這種錯字,它忽略了您正在傳遞的消息屬性,並且在您的Text messaging preferences部分中設置的default message type在SNS aws控制檯中設置爲Promotional

正確的代碼:

$args = array(
    'MessageAttributes' => [ 
     'AWS.SNS.SMS.SenderID' => [ 
      'DataType' => 'String', 
      'StringValue' => 'Sender', 
     ], 
     'AWS.SNS.SMS.SMSType' => [ 
      'DataType' => 'String', 
      'StringValue' => 'Transactional', 
     ] 
    ], 
    "Message" => "Test Message", 
    "PhoneNumber" => "+91XXXXXX", 
    'MessageStructure' => 'string', 
);