尽管响应成功,但 AWS SMS 未交付
AWS SMS NOT Delivered Despite Success Response
我在 Whosebug 上看到 post 的人和我有类似的问题,但是他们中的 none 帮助我解决了问题。这就是为什么我要创建一个新的 post.
当我第一次设置 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) {
}
}
我没主意了。不确定如何解决此问题。任何帮助,将不胜感激。
谢谢,
我相信 SMS 的性质有时会失败。
根据我自己的观察,AWS 雇用了一些区域性 SMS 提供商来帮助他们将 SMS 发送给您的运营商。
有时短信提供商无法发送。有时它们会被接收承运人拒收。
目前,我们无法确定它是否会失败(并针对这种情况做出反应)如果 SMS 对您的业务至关重要,我建议结合 AWS 使用其他 SMS 服务。
我在 Whosebug 上看到 post 的人和我有类似的问题,但是他们中的 none 帮助我解决了问题。这就是为什么我要创建一个新的 post.
当我第一次设置 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) {
}
}
我没主意了。不确定如何解决此问题。任何帮助,将不胜感激。 谢谢,
我相信 SMS 的性质有时会失败。
根据我自己的观察,AWS 雇用了一些区域性 SMS 提供商来帮助他们将 SMS 发送给您的运营商。
有时短信提供商无法发送。有时它们会被接收承运人拒收。
目前,我们无法确定它是否会失败(并针对这种情况做出反应)如果 SMS 对您的业务至关重要,我建议结合 AWS 使用其他 SMS 服务。