尽管响应成功,但仍未交付AWS SMS

时间:2020-05-19 22:05:25

标签: amazon-web-services sms

我已经看到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) {
  }
}

我没主意了。不确定如何解决此问题。任何帮助,将不胜感激。 谢谢,

1 个答案:

答案 0 :(得分:1)

我相信,根据SMS的性质,它有时可能会失败。

根据我自己的观察,AWS雇用了一些区域SMS提供商,以帮助他们将SMS发送给您的运营商。

有时SMS提供程序无法发送。有时,它们会被接收方拒绝。

目前,我们无法确定它是否会失败(并在这种情况下做出反应)如果SMS对您的业务至关重要,我建议与AWS结合使用另一个SMS服务。