web-dev-qa-db-fra.com

Comment envoyer un SMS avec un ID d'expéditeur personnalisé avec Amazon SNS et Python et boto3

Le documentation suggère d'utiliser des attributs de message pour cela, mais je n'arrive pas à comprendre quel nom d'attribut utiliser.

Cela fonctionne jusqu'à présent:

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'   
    }    
  }   
)  

Le SMS est livré mais avec une valeur (aléatoire?) Dans le champ id de l'expéditeur. Il semble donc que mon paramètre d'attributs de message soit silencieusement ignoré. Quelle est la bonne façon de définir un identifiant d'expéditeur personnalisé ?

24
tgal

L'identifiant de l'expéditeur doit être composé de 1 à 11 caractères alphanumériques, sans espace; par exemple:

  • THISISME - ✅
  • TestForSO - ✅
  • StackOverflow - ???? (trop long. max 11 caractères)
  • Some one - ???? (sans espaces)

Comme d'autres l'ont mentionné, la personnalisation de l'identifiant de l'expéditeur dépend du pays/fournisseur de téléphonie mobile, alors assurez-vous de le tester.

Exemple d'extrait

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

Vérifiez si votre pays de destination prend en charge les ID d'expéditeur

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

1
Adam Owczarczyk

Comme indiqué par Adam Owczarczyk , certains pays ne vous permettent pas de transmettre un ID d'expéditeur dans un message texte. L'API prendra votre numéro et le remplacera par une chaîne dans ce cas pour permettre à votre message d'être livré. Tenter de contourner cela obtient généralement le numéro sur liste noire. Vous pouvez tester cela en entrant une courte chaîne descriptive pour votre ID de testeur et en voyant si cela passe.

1
JaminaBee