php使用aws的sns服务初探(主要是短信服务)

来源:互联网 发布:贴吧娘贴吧君分手知乎 编辑:程序博客网 时间:2024/06/04 19:22

1.引入aws-sdk-php

使用composer安装:aws/aws-sdk-php

2.使用SnsClient类,生成sns服务对象

$snsClient = new SnsClient([    'region'      => 'ap-southeast-1',//这是亚马逊在新加坡的服务器,具体要根据情况决定    'credentials' => [        'key'         => '需要登陆aws的控制台查看',        'secret'      => '需要登陆aws的控制台查看',    ],    'version'     => '2006-03-01',    //一般在aws的官方api中会有关于这个插件的版本信息    'debug'       => false,]);region:区域信息credentials : 证书version:版本debug:是否是debug

3.向指定的topic订阅者(群发)发送短信

$topic = $client->createTopic([    'Name' => 'abc'             //自定义]);                             //如果已经存在一个同名的topic,则不会重新创建//*** 设置topic显示值,第一次设置或如果topic设置在console中设置了就不用写这个了 $client->setTopicAttributes([    'AttributeName'  => 'DisplayName',                  //可以自定义    'AttributeValue' => 'My SNS Topic Display Name',    //可以自定义    'TopicArn'       => $topic中的值                     //'arn:aws:sns:ap-southeast-1:...:abc', // REQUIRED ]);// 往topic中添加订阅者$client->subscribe([    'Endpoint' => '+86...........',     //手机号或email(注意,如果是手机号,需要转换为E.164国际标准,可以考虑使用google维护的一个开源库: giggsey/libphonenumber-for-php,在github上可以找到,也可以使用composer安装)    'Protocol' => 'sms',                //enum值,有sms、email等值    'TopicArn' => $topic中的值           //'arn:aws:sns:ap-southeast-1:...:abc']);$args = [    'Message' => 'Hello, world!',           // REQUIRED    'TopicArn' =>  $topic中的值              //'arn:aws:sns:ap-southeast-1:...:abc', ];$client->Publish($args);

4.向指定的PhoneNumber发送短信

这个功能需要检查你的php-sdk的版本,如果>3.0就可以使用,如果<3.0,则不能使用下列方式向指定phoneNumber发送
$topic = $client->createTopic([    'Name' => 'abc'             //自定义]);                             //如果已经存在一个同名的topic,则不会重新创建$args = [    'Message' => 'Hello, world!',           // REQUIRED    'PhoneNumber' => '+86....', ];$client->Publish($args);

代码示例:

类文档 : http://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html
参考示例 : https://github.com/chrisbarr/AmazonSNS-PHP-API
https://stackoverflow.com/questions/38752336/sending-sms-with-amazon-aws-services-php

原创粉丝点击