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的正确方法是什么?
答案 0 :(得分:1)
检查目的地国家/地区是否支持发件人ID
http://docs.aws.amazon.com/sns/latest/dg/sms_supported-countries.html
答案 1 :(得分:1)
如Adam Owczarczyk所述,某些国家/地区不允许您在短信中发送发件人ID。在这种情况下,API会使用您的电话号码并将其替换为字符串,以使您的消息能够得到传递。尝试解决它通常只会使该号码被列入黑名单。您可以通过输入简短的测试人员ID的描述性字符串来测试它,然后查看是否通过测试。
答案 2 :(得分:0)
发件人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'}})