documentation はそのためにメッセージ属性を使用することを提案していますが、どの属性名を使用するのかわかりません。
これはこれまでのところ機能します:
sns = boto3.client('sns', region_name='eu-west-1')
sns.publish(
PhoneNumber='+491701234567',
Message='hi there',
MessageAttributes={
'AWS.SNS.SMS.SenderID': {
'DataType': 'String',
'StringValue': 'MySenderID'
}
}
)
SMSが配信されますが、送信者IDフィールドに何らかの(ランダム?)値が含まれています。そのため、メッセージ属性の設定が通知なく無視されているようです。カスタム送信者IDを設定する正しい方法は何ですか? ?
送信者IDは1〜11文字の英数字で、スペースは不要です。例えば:
THISISME
-✅TestForSO
-✅StackOverflow
-???? (長すぎます。最大11文字)Some one
-???? (場所がない)他の人が述べたように、送信者IDのカスタマイズは国/携帯電話プロバイダーによって異なるため、必ずテストしてください。
スニペットの例
import boto3
access_key = '....'
secret = '....'
region = "us-east-1"
number = '+972...<your number>'
sender_id = 'TestForSO'
sms_message = 'Your code: 123456'
sns = boto3.client('sns', aws_access_key_id=access_key, aws_secret_access_key=secret, region_name=region)
sns.publish(PhoneNumber=number, Message=sms_message, MessageAttributes={'AWS.SNS.SMS.SenderID': {'DataType': 'String', 'StringValue': sender_id}, 'AWS.SNS.SMS.SMSType': {'DataType': 'String', 'StringValue': 'Promotional'}})
送り先の国が送信者IDをサポートしているかどうかを確認する
http://docs.aws.Amazon.com/sns/latest/dg/sms_supported-countries.html
Adam Owczarczyk で述べたように、一部の国では、テキストメッセージで送信者IDを送信することが許可されていません。この場合、APIはあなたの番号を取得して文字列に置き換え、メッセージを配信できるようにします。通常、この問題を回避しようとすると、番号がブラックリストに登録されます。これをテストするには、テスターIDの短い説明文字列を入力し、それが成功するかどうかを確認します。