首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SNS服务不发送短信V3 API

SNS服务不发送短信V3 API
EN

Stack Overflow用户
提问于 2016-09-05 21:24:22
回答 2查看 1K关注 0票数 0

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

文档告诉我,我没有义务为目标手机号码创建主题和订阅来发送短信,所以我发现必须使用V3接口才能发送没有TopicARN义务的短信。

在使用PHP5.5版本的服务器和V3应用程序接口后,没有询问主题ARN,但它花了这么多时间,超过1分钟,我得到了503错误作为服务器响应,在log_error上没有错误。你能试着帮我一下吗?

我在V2上使用并工作的代码,但不是V3:

代码语言:javascript
复制
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
 }
EN

回答 2

Stack Overflow用户

发布于 2016-09-05 23:33:55

我发现了问题,在开始使用PHP API V3之后,我必须这样开始:

代码语言:javascript
复制
$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错误:客户端错误:POST https://sns.us-west-2.amazonaws.com导致400 Bad Request响应:发送方InvalidPara (截断...)InvalidParameter (客户端):无效参数: TopicArn或TargetArn原因:必填参数无值-发送者InvalidParameter无效参数: TopicArn或TargetArn原因:必填参数无值

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

有什么帮助吗?

票数 1
EN

Stack Overflow用户

发布于 2016-12-22 01:02:37

当发送短信时,你不需要TopicArn。只需这样做:

首先安装aws/aws-sdk-php.使用composer:

composer require aws/aws-sdk-php

使用以下命令创建php文件:

代码语言:javascript
复制
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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39331603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档