Cómo enviar un SMS con un ID de remitente personalizado con Amazon SNS y Python and boto3

La documentación sugiere usar atributos de mensaje para eso, pero parece que no puedo averiguar qué nombre de atributo usar.

Esto funciona hasta ahora:

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

El SMS se entrega pero con algún valor (¿aleatorio?) En el campo de identificación del remitente. Así que parece que mi configuración de atributos de mensaje es ignorada silenciosamente. ¿Cuál es la forma correcta de establecer una ID de remitente personalizada?

Compruebe si su país de destino admite ID de remitente

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

Como señaló Adam Owczarczyk , algunos países no le permiten transmitir una identificación de remitente en un mensaje de texto. La API tomará su número y lo reemplazará con una cadena en este caso para permitir que su mensaje sea entregado. Intentar solucionarlo generalmente obtiene el número en la lista negra. Puede probar esto ingresando una cadena breve y descriptiva para su ID de probador, y verificando si se cumple.

La identificación del remitente debe tener 1-11 caracteres alfanuméricos, sin espacios; por ejemplo:

  • THISISME – ✅
  • TestForSO – ✅
  • StackOverflow – 🛑 (demasiado largo. Máx. 11 caracteres)
  • Some one – 🛑 (sin espacios)

Como han mencionado otros, la personalización de la identificación del remitente depende del país / proveedor celular, así que asegúrese de probarlo.

Fragmento de ejemplo

 import boto3 access_key = '....' secret = '....' region = "us-east-1" number = '+972...' 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'}}) 

introduzca la descripción de la imagen aquí