У меня возникли проблемы с копированием документации для AWS PHP-sdk от Amazon.
В принципе, мне просто нужно отправить стандартное текстовое сообщение на номер. Я знаю, что это возможно, потому что amazon позволяет отправлять сообщения через консоль напрямую через этот экран:
В нем говорится об использовании метода «публикации», но, просматривая эту документацию, на самом деле не было ответов. Ссылка #Publish
Любая помощь или руководство приветствуются. В настоящее время я ищу решение, которое использует V2 для sdk.
Заранее спасибо.
Нет, где есть документ, показывающий его использование с PHP. Чтение Java и C # sdk Я написал версию PHP, которая работает.
Сначала установите aws / aws-sdk-php . Использование композитора:
composer require aws/aws-sdk-php
Создайте файл php с:
require './vendor/autoload.php'; error_reporting(E_ALL); ini_set("display_errors", 1); $params = array( 'credentials' => array( 'key' => 'YOUR_KEY_HERE', 'secret' => 'YOUR_SECRET_HERE', ), 'region' => 'us-east-1', // < your aws from SNS Topic region 'version' => 'latest' ); $sns = new \Aws\Sns\SnsClient($params); $args = array( "SenderID" => "SenderName", "SMSType" => "Transactional", "Message" => "Hello World! Visit www.tiagogouvea.com.br!", "PhoneNumber" => "FULL_PHONE_NUMBER" ); $result = $sns->publish($args); echo "<pre>"; var_dump($result); echo "</pre>";
Результат должен иметь один массив со многими данными, включая MessageId.
Если вы используете версию AWS SDK до 3.0, вы все равно создаете тему и подписываетесь с типом SMS. Но начиная с 3.0, вы можете отправить SMS прямо на номер.
$client = SnsClient::factory(array( 'region' => 'us-east-1', 'version' => 'latest', 'credentials' => array( 'key' => 'key', 'secret' => 'secret') )); $message = 'Your verification code is 4'; $payload = [ 'TopicArn' => 'arn:aws:sns:XXXXX', 'Message' => $message, 'MessageStructure' => 'string', 'MessageAttribute' => [ 'AWS.SNS.SMS.SenderID' => [ 'DataType' => 'String', 'StringValue' => 'Sender', ], 'AWS.SNS.SMS.SMSType' => [ 'DataType' => 'String', 'StringValue' => 'Transactional', ] ] ]; $result = $client->subscribe(array( 'TopicArn' => 'arn:aws:sns:XXXXX', 'Protocol' => 'sms', 'Endpoint' => 'XXXXXXXXXXX', )); $subarn = $result['SubscriptionArn']; $result = $client->publish($payload); $result = $client->unsubscribe(array( 'SubscriptionArn' => $subarn, ));
Чтобы использовать действие «Опубликовать» для отправки сообщения на конечную точку мобильного устройства, например приложение на устройстве Kindle или на мобильном телефоне, вы должны указать EndpointArn.
$result = $client->publish(array( 'TopicArn' => 'string', 'TargetArn' => 'string', // Message is required 'Message' => 'string', 'Subject' => 'string', 'MessageStructure' => 'string', 'MessageAttributes' => array( // Associative array of custom 'String' key names 'String' => array( // DataType is required 'DataType' => 'string', 'StringValue' => 'string', 'BinaryValue' => 'string', ), // ... repeated ), ));