SNS服务不发送SMS V3 API


SNS service does not send SMS V3 API

我尝试使用V2 API在SNS服务中发送短信,它工作了,但它迫使我创建一个主题和一个手机号码目标订阅。

文档告诉我,我没有义务为目标手机号码创建主题和订阅来发送短信,所以我发现我必须使用V3 API来发送短信,而不需要TopicARN义务。

在使用5.5版本的PHP服务器和V3 API后,没有询问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
 }

我发现了问题,在开始使用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"上执行"Publish"错误;AWS HTTP错误:Client error: POST https://sns.us-west-2.amazonaws.com result in a 400 Bad Request response: Sender InvalidPara (truncated…)InvalidParameter (client):参数无效:TopicArn或TargetArn原因:所需参数无值- Sender InvalidParameter参数无效:TopicArn或TargetArn原因:所需参数无值

我没有设置TopicARN或TargetARN,因为我不想为每个目标号码创建订阅,文档告诉我,我可以发送一个号码而不注册它。

帮忙吗?

发送短信时不需要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。