用于印度号码的AWS SNS SMS

时间:2017-10-08 14:47:57

标签: php amazon-web-services amazon-ec2 aws-sdk amazon-sns

我正在使用AWS SDK 3.0通过AWS SNS为印度号码发送短信。我在AWS上创建了ec2实例。 请参考以下代码:

$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);

此代码正在发送短信。但是,SMS被记录为促销短信而不是交易。因此,仅在上午9点至晚上8点之间交付。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

您的编程逻辑很好。你的脚本中有一个拼写错误。它是 MessageAttributes 而不是 MessageAttribute 。由于这个拼写错误,它忽略了您传递的Message属性,并在default message type的SNS aws控制台的Text messaging preferences部分中设置了Promotional

正确代码:

$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',
);