douji9734 2017-10-08 14:47
浏览 37
已采纳

用于印度号码的AWS SNS SMS

I'm using AWS SDK 3.0 to send SMS via AWS SNS for indian numbers. I've ec2 instance created on AWS. Please refer the code below :

$params = array(
        'credentials' => array(
            'key' => 'XXXXXX',
            'secret' => 'XXXXXXX',
        ),
        'region' => 'us-west-2', // < your aws from SNS Topic region
        'version' => 'latest',
         'http' => [ 'verify' => false ]
    );
    $sns = new \Aws\Sns\SnsClient($params);

    $args = array(
        'MessageAttribute' => [
            'AWS.SNS.SMS.SenderID' => [
                'DataType'    => 'String',
                'StringValue' => 'Sender',
            ],
            'AWS.SNS.SMS.SMSType'  => [
                'DataType'    => 'String',
                'StringValue' => 'Transactional',
            ]
        ],
        "Message" => "Test Message",
        "PhoneNumber" => "+91XXXXXX",
        'MessageStructure' => 'string',
    );

    $result = $sns->publish($args);

This code is sending SMS. However, the SMS are getting logged as Promotional SMS instead of Transactional. Thus getting delivered between 9am to 8pm only.

Any help is much appreciated.

  • 写回答

1条回答 默认 最新

  • dougou8552 2017-10-08 17:02
    关注

    Your programming logic is fine. There is a typo in you script.It is MessageAttributes not MessageAttribute. Due to this typo, it is ignoring the Message attributes which you are passing and taking the default message type set in your Text messaging preferences section in SNS aws console which is Promotional.

    Correct Code:

    $args = array(
        'MessageAttributes' => [
            'AWS.SNS.SMS.SenderID' => [
                'DataType'    => 'String',
                'StringValue' => 'Sender',
            ],
            'AWS.SNS.SMS.SMSType'  => [
                'DataType'    => 'String',
                'StringValue' => 'Transactional',
            ]
        ],
        "Message" => "Test Message",
        "PhoneNumber" => "+91XXXXXX",
        'MessageStructure' => 'string',
    );
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?