2016-10-26 2 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.
Код выше работает хорошо, когда я буду отправки одного SMS-сообщение, за исключением атрибута DefaultSenderID Wich не работает, когда я отправляю SMS на мобильное устройство.Amazon SNS - AWS-СДК-PHP

Документация Amazon гласит, что DefaultSenderID - Строка, такая как ваш бизнес-бренд, который отображается как отправитель на принимающем устройстве. Поддержка идентификаторов отправителей зависит от страны. Идентификатор отправителя может быть 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) { } 
Смежные вопросы