首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用OriginationNumber发布Boto3 SNS短信时出现问题

使用OriginationNumber发布Boto3 SNS短信时出现问题
EN

Stack Overflow用户
提问于 2021-05-14 04:38:51
回答 1查看 112关注 0票数 0

我们有一个非常简单的用例,当系统警报发生时,python应用程序会向待命用户发送短信。我已经在AWS API中创建了访问id/密钥,并通过Pinpoint创建了一个免费号码。

我的发布函数如下所示:

代码语言:javascript
复制
        try:
            sns = boto3.client('sns',
                               aws_access_key_id='<our api id>',
                               aws_secret_access_key='<our api key>',
                               endpoint_url='https://sns-fips.us-east-2.amazonaws.com',
                               config=Config(region_name='us-east-2',
                                             proxies={'https': '<our proxy>'}))
            for o in users:
                number = getattr(o,'number') if getattr(o,'number').startswith('+') else '+1' + getattr(o,'number').replace("-","").replace("(","").replace(")","")
                print('Sending message ' + msg + ' to contact ' + getattr(o,'name') + ' at number ' + number)
                result = sns.publish(PhoneNumber=number, Message=msg, MessageAttributes={'AWS.MM.SMS.OriginationNumber': {'DataType': 'String', 'StringValue': '+1<our tollfree>'}})
                print(result)
        except Exception as ex:
            print("SMS API EXCEPTION: {0}".format(ex), flush=True)

如果我没有包含MessageAttributes,消息就会正常发送,但会得到亚马逊网络服务分配的长数字(很快就会消失)。如果我进入我的SNS仪表盘,使用我们的免费电话手动发送一条消息,它就会通过。如果将免费费用更改为其他费用,则无法通过。所以我知道这种关联是存在的。

我还尝试更改代码以使用Boto精确定位客户端,并获得相同的行为,没有发生消息传递,也没有错误。

使用sns发布,我的结果返回一个状态代码200,一个请求id,0个重试尝试,等等。所以看起来消息正在被发送。我在短信发送日志里什么也看不到。

我是不是漏掉了什么?提前感谢您的指点。

EN

回答 1

Stack Overflow用户

发布于 2021-05-14 22:29:33

哇,简单的解决方案。east-2不提供Pinpoint,east-1才提供。切换了区域,它起作用了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67525947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档