我尝试使用V2 API在SNS服务中发送短信,但它有效,但是我有义务创建一个主题和订阅手机号码目标。
该文档告诉我没有义务为目的地手机号码创建主题和订阅以发送SMS,因此我发现我必须使用V3 API发送短信而不需要TopicARN。
使用具有5.5版本和V3 API的PHP服务器之后,没有询问TOPIC ARN,但是花了这么多时间,超过1分钟,我得到503错误作为服务器响应,没有错误在log_error上。 你能帮我吗?
我在V2上使用和使用的代码,但不是V3:
require 'aws-autoloader.php';
use Aws\Sns\SnsClient;
$snsClient = SnsClient::factory(array(
'key' => 'mykey',
'secret' => 'mysecret',
'version' => 'latest',
'region' => 'us-west-2'
));
$destination = array('+number'); // this way works on V2, but not on V3
//$destination = '+number'; // tried like this too
try {
$resp = $snsClient->publish(array(
'PhoneNumber' => $destination,
'Message' => utf8_encode('Message')
));
echo $resp->get('MessageId');
} catch(Exception $e)
{
echo $e->getMessage(); // I didn´t get exception, i got server error 503
}
答案 0 :(得分:1)
我发现问题,在开始使用PHP API V3之后我必须这样开始:
$snsClient = SnsClient::factory(array(
'version' => 'latest',
'region' => 'us-west-2',
'credentials' => array(
'key' => 'mykey',
'secret' => 'mysecret',
)
));
但我仍有问题,我收到此消息:
在“https://sns.us-west-2.amazonaws.com”上执行“发布”时出错; AWS HTTP错误:客户端错误:POST https://sns.us-west-2.amazonaws.com
导致400 Bad Request
响应:发件人InvalidPara(截断...)InvalidParameter(客户端):无效参数:TopicArn或TargetArn原因:没有所需参数的值 - 发件人InvalidParameter Invalid参数:TopicArn或TargetArn原因:所需参数没有值
我没有设置TopicARN或TargetARN,因为我不想为每个目标号码创建订阅,文档告诉我,我可以发送一个号码而不注册它。
任何帮助?
答案 1 :(得分:0)
发送短信时,您不需要TopicArn。就这样做:
首先安装 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" => "Transational",
"Message" => "Hello World! Visit www.tiagogouvea.com.br!",
"PhoneNumber" => "FULL_PHONE_NUMBER"
);
$result = $sns->publish($args);
echo "<pre>";
var_dump($result);
echo "</pre>";
结果必须有一个包含许多数据的数组,包括MessageId。