使用 aws sns 向印度号码发送短信

Send sms to Indian numbers using aws sns

我正在尝试使用以下代码使用 aws sns 向特定号码发送短信,但它需要一个 target/topic arn,这不适用于我,因为我想向我指定的号码发送短信在参数中设置。

$client = SnsClient::factory([
        'credentials' => [
            'key'    => "my key",
            'secret' => "my secret"
        ],
        'region'  => "us-east-1",
        'version' => "latest"
    ]);

    $sent = $client->publish(
        [

            'Message' => 'This is the message',
            'PhoneNumber' => '+91887******7'
        ]
    );

我找不到发布对象的确切参数。

来自Amazon SNS Publish() documentation for PHP

  • TargetArn: 如果您没有为 TargetArn 参数指定值,则必须为 PhoneNumberTopicArn 参数.
  • TopicArn: 如果您没有为 TopicArn 参数指定值,则必须为 PhoneNumberTargetArn 参数.
  • PhoneNumber: 如果您没有为 PhoneNumber 参数指定值,则必须为 TargetArnTopicArn 参数.

因此,提供 PhoneNumber 而不是 Target/Topic。

我必须更新 aws php sdk (1)。然后下面的代码工作正常 -

$sns = SnsClient::factory(array(
        'credentials' => array(
            'key' => 's3_key',
            'secret' => 's3_secret'
        ),
        'region' => Constants::$s3Region,
        'version' => 'latest'
    ));

$msgattributes = [
        'AWS.SNS.SMS.SenderID' => [
            'DataType' => 'String',
            'StringValue' => 'Klassroom',
        ],
        'AWS.SNS.SMS.SMSType' => [
            'DataType' => 'String',
            'StringValue' => 'Transactional',
        ]
    ];

    $payload = array(
        'Message' => $message,
        'PhoneNumber' => $number,
        'MessageAttributes' => $msgattributes
    );

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