web-dev-qa-db-ja.com

SMSおよびPythonおよびboto3を送信する方法

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を設定する正しい方法は何ですか? ?

24
tgal

送信者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'}})

enter image description here

2
Jossef Harush

送り先の国が送信者IDをサポートしているかどうかを確認する

http://docs.aws.Amazon.com/sns/latest/dg/sms_supported-countries.html

1
Adam Owczarczyk

Adam Owczarczyk で述べたように、一部の国では、テキストメッセージで送信者IDを送信することが許可されていません。この場合、APIはあなたの番号を取得して文字列に置き換え、メッセージを配信できるようにします。通常、この問題を回避しようとすると、番号がブラックリストに登録されます。これをテストするには、テスターIDの短い説明文字列を入力し、それが成功するかどうかを確認します。

1
JaminaBee