我已经看到StackOverflow上的帖子与我的帖子类似,但是没有一个帮助我解决了这个问题。这就是为什么我要创建一个新帖子。
当我第一次设置AWS SNS时,我测试了使用在线控制台发送SMS的效果! 然后,我编写了PHP代码以发送示例消息。我遇到了一些错误,但能够轻松解决它们。但是,当我收到成功回复时,根本没有收到该消息。
我认为这是一个限制问题。因此我联系了AWS,并将限额提高到每月20美元。我更新了首选项,但结果仍然相同。我收到成功响应,仪表板显示一条消息已成功发送(尽管更新消息的数量需要时间)。但是没有收到消息。
这是我的参考代码:
<?php
require './aws/aws-autoloader.php';
use Aws\Sns\SnsClient;
use Aws\Exception\AwsException;
$sdk = new SnsClient([
'region' => 'us-east-1',
'version' => 'latest',
'credentials' => [
'key' => 'XXXXXXXXXXXXXXXXXXX',
'secret' => 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
]
]);
try {
$result = $sdk->publish([
'Message' => 'Reminder - You are scheduled for a session on 2020-05-20 at 4:30 PM',
'MessageStructure' => 'String',
'PhoneNumber' => '+1XXX789XXXX',
'MessageAttributes' => [
'AWS.SNS.SMS.SenderID' => [
'DataType' => 'String',
'StringValue' => 'MyName'
],
'AWS.SNS.SMS.SMSType' => [
'DataType' => 'String',
'StringValue' => 'Transactional'
]
]
]);
var_dump($result);
echo "\n";
} catch (AwsException $e) {
// output error message if fails
var_dump($e->getMessage());
}
这是结果对象:
object(Aws\Result)#119 (2) {
["data":"Aws\Result":private]=>
array(2) {
["MessageId"]=>
string(36) "8cf11950-cdb0-5503-9b69-4e6e9b61eaba"
["@metadata"]=>
array(4) {
["statusCode"]=>
int(200)
["effectiveUri"]=>
string(35) "https://sns.us-east-1.amazonaws.com"
["headers"]=>
array(4) {
["x-amzn-requestid"]=>
string(36) "0488b803-8776-57bc-b9a9-ef3dd1a71805"
["content-type"]=>
string(8) "text/xml"
["content-length"]=>
string(3) "294"
["date"]=>
string(29) "Tue, 19 May 2020 21:50:09 GMT"
}
["transferStats"]=>
array(1) {
["http"]=>
array(1) {
[0]=>
array(0) {
}
}
}
}
}
["monitoringEvents":"Aws\Result":private]=>
array(0) {
}
}
我没主意了。不确定如何解决此问题。任何帮助,将不胜感激。 谢谢,
答案 0 :(得分:1)
我相信,根据SMS的性质,它有时可能会失败。
根据我自己的观察,AWS雇用了一些区域SMS提供商,以帮助他们将SMS发送给您的运营商。
有时SMS提供程序无法发送。有时,它们会被接收方拒绝。
目前,我们无法确定它是否会失败(并在这种情况下做出反应)如果SMS对您的业务至关重要,我建议与AWS结合使用另一个SMS服务。