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

ich das AWS SDK für PHP bin mit - Version 3.
Der obige Code funktioniert gut, wenn ich eine einzelne SMS-Nachricht außer dem Attribut DefaultSenderID wich Senden funktioniert nicht, wenn ich eine SMS an ein Mobilgerät sende.Amazon SNS - aws-sdk-php

Amazon Dokumentation sagt, dass DefaultSenderID - Eine Zeichenfolge, wie Ihre Geschäftsmarke, die als Absender auf dem empfangenden Gerät angezeigt wird. Die Unterstützung für Absender-IDs variiert je nach Land. Die Absender-ID kann aus 1 bis 11 alphanumerischen Zeichen bestehen und mindestens einen Buchstaben enthalten.

Wer hat dieses Problem mit dem Amazon SNS?

+0

Können Sie Ihre vollständigen PHP-Datei hinzufügen, wird es noch andere Funktionen/Methoden im Skript oder ist das Skript erfordert derzeit eine der aws sdk-Dateien? Es hilft, wenn die vollständige php-Datei hinzugefügt werden kann, andernfalls können Sie anderen mitteilen, dass das Problem gelöst wurde und wie Sie das Problem gelöst haben. – Birdy

+0

Das einzige, was im obigen Code fehlt, ist require_once 'autoload..php'. Das vollständige Skript ist der obige Code. Und das Problem bleibt ... –

Antwort

0

Für jeden, der noch damit zu kämpfen hat.

Wenn man sich die Dokumentation aussehen here, werden Sie feststellen, dass Sie MessageAttributes den Schlüssel AWS.SNS.SMS.SenderID auf die Nutzlast des hinzufügen müssen.

Folgendes sollte funktionieren:

$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) { } 
Verwandte Themen