【问题标题】:How to send an SMS with custom sender ID with Amazon SNS and Python and boto3如何使用 Amazon SNS 和 Python 以及 boto3 发送带有自定义发件人 ID 的 SMS
【发布时间】:2016-11-16 05:54:38
【问题描述】:

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 的正确方法是什么?

【问题讨论】:

  • 那个电话号码是哪个国家的?
  • @error2007s 德国
  • 我在尝试从控制台发送消息时遇到了同样的问题。无论我在发件人 ID 字段中写什么,我都得到了NEXMO_SMS。这是一个错误吗?
  • 作为解决方法,您可以设置 'DefaultSenderID' #!/usr/bin/env python import boto3 s = boto3.Session(profile_name='Godzilla') sns = s.client('sns') sns.set_sms_attributes( attributes={ 'DefaultSenderID': 'Godzilla', } ) response = sns.get_sms_attributes( attributes=[ 'DefaultSenderID', ] ) print(response)

标签: python amazon-web-services sms amazon-sns boto3


【解决方案1】:

发件人 ID 必须是 1-11 个字母数字字符,不能有空格;例如:

  • THISISME - ✅
  • TestForSO - ✅
  • StackOverflow - ?(太长。最多 11 个字符)
  • Some one - ?(无空格)

正如其他人所提到的,发件人 ID 自定义取决于国家/地区/蜂窝提供商,因此请务必对其进行测试。

示例 sn-p

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

【讨论】:

  • 嗨,Jossef,我尝试这样做,但我得到“无效参数:PhoneNumber 原因:+97250******* 无法发布到”。我把我的真实电话号码放在那里。请给点建议好吗?
  • 我们是否需要联系 AWS 支持以启用发件人 ID?
  • @PRAVEENKUMART 不确定他们是否需要启用它。但试一试
【解决方案2】:

检查您的目的地国家/地区是否支持发件人 ID

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

【讨论】:

    【解决方案3】:

    Adam Owczarczyk 所述,某些国家/地区不允许您在短信中传输发件人 ID。在这种情况下,API 将获取您的号码并将其替换为字符串,以允许您的消息被传递。尝试解决它通常只会将号码列入黑名单。您可以通过为您的测试人员 ID 输入一个简短的描述性字符串来测试这一点,并查看是否通过。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多