使用Amazon AWS服务PHP发送SMS

Imp*_*zed 13 php sdk amazon-web-services

我在浏览亚马逊AWS PHP-sdk的文档时遇到了麻烦.

基本上,我只需要向一个数字发送标准文本消息.我知道这是可能的,因为amazon允许您通过此屏幕直接通过控制台发送消息:

亚马逊控制台SMS

它说了一些关于使用"发布"方法的内容,但查看文档确实没有提供任何答案.#Publish文档链接

任何帮助或指导表示赞赏.我目前正在寻找使用sdk的V2的解决方案.

提前致谢.

Tia*_*vêa 29

没有哪个文档显示它可以与PHP一起使用.阅读Java和C#sdk我编写了可行的PHP版本.

于18年12月20日更新

传递给publish方法的args 现在有了一种新的格式.固定!

如何使用PHP在AWS上发送SMS

首先安装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(
    "MessageAttributes" => [
                'AWS.SNS.SMS.SenderID' => [
                    'DataType' => 'String',
                    'StringValue' => 'YOUR_SENDER_ID'
                ],
                'AWS.SNS.SMS.SMSType' => [
                    'DataType' => 'String',
                    'StringValue' => 'Transactional'
                ]
            ],
    "Message" => "Hello World! Visit www.tiagogouvea.com.br!",
    "PhoneNumber" => "FULL_PHONE_NUMBER"
);


$result = $sns->publish($args);
echo "<pre>";
var_dump($result);
echo "</pre>";
Run Code Online (Sandbox Code Playgroud)

结果必须有一个包含许多数据的数组,包括MessageId.

  • 虽然我感谢您的时间和精力,但我目前没有亚马逊帐户来测试.自从最初发布(时间限制等)以来,我们选择了不同的SMS提供商.同样,我应该删除它,但它可能在将来帮助某人.谢谢! (2认同)
  • 谢谢@TiagoGouvêa为我工作.如果有人需要更详细(复杂)的版本,那么AWS论坛上的这个答案附带的脚本也对我有用:https://forums.aws.amazon.com/thread.jspa?threadID = 234658#739232 (2认同)

小智 5

如果您使用的是 3.0 之前的 AWS 开发工具包版本,您仍然需要创建一个主题并使用 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,
 ));
Run Code Online (Sandbox Code Playgroud)