尽管响应成功,但 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 服务。