我在瀏覽亞馬遜AWS PHP-sdk的文檔時遇到了問題。用亞馬遜AWS服務發送短信PHP
基本上,我只需要發送一個標準的文本消息到一個數字。我知道這是可能的,因爲亞馬遜允許你通過控制檯直接通過該屏幕發送消息:
它說,一些有關使用「發佈」的方法,但通過文件仔細看還真沒有提供任何答案。 #Publish documentation link
任何幫助或指導表示讚賞。我目前正在尋找一個解決方案,使用sdk的V2。
在此先感謝。
我在瀏覽亞馬遜AWS PHP-sdk的文檔時遇到了問題。用亞馬遜AWS服務發送短信PHP
基本上,我只需要發送一個標準的文本消息到一個數字。我知道這是可能的,因爲亞馬遜允許你通過控制檯直接通過該屏幕發送消息:
它說,一些有關使用「發佈」的方法,但通過文件仔細看還真沒有提供任何答案。 #Publish documentation link
任何幫助或指導表示讚賞。我目前正在尋找一個解決方案,使用sdk的V2。
在此先感謝。
沒有哪裏有一個文檔顯示它使用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。
儘管我很欣賞你的時間和精力,但我目前沒有一個亞馬遜賬戶來測試它。自最初發布(時間限制等)以來,我們與另一個SMS提供商進行了交流。再次,我應該刪除這個,但它可能在未來幫助某人。謝謝! – Imperialized
這怎麼可以用SDK的v2來完成? –
@LesterPeabody我不知道。 :( –
要使用發佈操作將消息發送到移動端點(例如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
),
));
什麼是EndpointArn? –
EndpointArn是TargetArn的值,如果該值爲空,則您需要爲電話號碼或TopicArn指定一個值 – Yun
請更新您的示例以反映通過電話號碼向特定手機發送短信。 –
如果您使用的AWS SDK版本早於3.0,您仍然創建了主題並使用SMS類型進行了訂閱。但從3.0開始,你可以直接發送短信給一個號碼。
$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,
));
你究竟在哪裏看到那個屏幕? –
如果您登錄AWS服務,請單擊Amazon SNS,然後從控制檯發送文本消息。 – Imperialized