简体   繁体   English

如何使用 Laravel 5.6 和 PHP 检查是否已从 Amazon AWS SNS 服务成功发送 SMS?

[英]How to check whether SMS has been successfully sent from Amazon AWS SNS service using Laravel 5.6 and PHP?

I am using the Amazon Web Server SNS to send sms to mobile numbers.我正在使用 Amazon Web Server SNS 向手机号码发送短信。 Here is my code:-这是我的代码:-

    $params = array(
        'credentials'   => array(
                                'key'    => self::$smsKey,
                                'secret' => self::$smsSecret
                            ),
        'region'        => 'ap-northeast-1', // < your aws from SNS Topic region
        'version'       => 'latest'
   );
   $sns = new \Aws\Sns\SnsClient($params);

   $args = array(
       "SenderID"       => self::$senderID,
       "SMSType"        => self::$smsType,
       "Message"        => $message,
       "PhoneNumber"    => $phonenumber
   );

   $result = $sns->publish($args);
   echo "<pre>";
   var_dump($result);
   echo "</pre>";

When I var_dump the $result, I get the following data:-当我 var_dump $result 时,我得到以下数据:-

object(Aws\Result)#352 (1) {
  ["data":"Aws\Result":private]=>
  array(2) {
    ["MessageId"]=>
    string(36) "xxxxxxxxxx-xxxxxa-xxxx-xxxx7-xxxxxxxxxx"
    ["@metadata"]=>
    array(4) {
      ["statusCode"]=>
      int(200)
      ["effectiveUri"]=>
      string(40) "https://xxxxxxxxxxxxxxxxxxxx.amazonaws.com"
      ["headers"]=>
      array(4) {
        ["x-amzn-requestid"]=>
        string(36) "yyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyy"
        ["content-type"]=>
        string(8) "text/xml"
        ["content-length"]=>
        string(3) "294"
        ["date"]=>
        string(29) "Tue, 05 Jun 2018 10:46:11 GMT"
      }
      ["transferStats"]=>
      array(1) {
        ["http"]=>
        array(1) {
          [0]=>
          array(0) {
          }
        }
      }
    }
  }
}

How can I check if the sms has been successfully sent?如何检查短信是否已成功发送? There is a status code.有状态码。 But I can't traverse the object properly to retrieve its value.但我无法正确遍历对象以检索其值。

You can get the data like following.您可以获得如下数据。

$meta = $response_object->get('@metadata');
if($meta['statusCode'] === 200){
  echo "Message Sent";
}
if ($result['@metadata']['statusCode'] === 200) {
    echo "Message sent";
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM