You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pinpoint双向SMS的SNS主题中通过解析消息体实现订阅过滤?

解决方案:Pinpoint双向SMS + SNS Topic复用与消息过滤

核心结论

SNS订阅过滤策略无法直接基于消息体内容创建规则,它仅支持通过**消息属性(Message Attributes)**进行过滤。所以你需要先把短信里的to号码、keyword等字段提取出来转为消息属性,再用过滤策略实现订阅者的消息隔离。

具体实现步骤

  1. 引入Lambda做消息中转
    不要让Pinpoint直接把短信发送到SNS Topic,改为先发送到Lambda函数:

    • 在Pinpoint的双向SMS配置里,把接收短信的目标设置为Lambda函数
    • 在Lambda中解析短信消息体,提取你需要的字段(比如目标号码、关键词)
    • 将这些字段设置为SNS消息的属性,再把消息转发到目标SNS Topic
  2. 配置SNS订阅过滤策略
    当消息带着属性进入SNS Topic后,给每个订阅者设置对应的过滤规则:

    • 如果订阅者只关注特定号码,过滤策略设为:{"TargetPhoneNumber": ["+1234567890"]}
    • 如果按关键词过滤,策略设为:{"Keyword": ["MYKEYWORD"]}
  3. Lambda示例代码(Python)

    import boto3
    import json
    
    sns_client = boto3.client('sns')
    TARGET_SNS_TOPIC_ARN = 'arn:aws:sns:us-east-1:123456789012:your-topic-name'
    
    def lambda_handler(event, context):
        # 解析Pinpoint传来的短信消息
        sns_message = event['Records'][0]['Sns']['Message']
        sms_payload = json.loads(sns_message)
        
        # 提取关键字段(注意字段名需匹配Pinpoint实际返回的结构)
        target_phone = sms_payload['destinationNumber']  # 接收短信的Pinpoint号码
        keyword = sms_payload.get('keyword', '')
        
        # 转发到SNS并添加消息属性
        sns_client.publish(
            TopicArn=TARGET_SNS_TOPIC_ARN,
            Message=sns_message,
            MessageAttributes={
                'TargetPhoneNumber': {
                    'DataType': 'String',
                    'StringValue': target_phone
                },
                'Keyword': {
                    'DataType': 'String',
                    'StringValue': keyword
                }
            }
        )
        return {'statusCode': 200, 'body': 'Message forwarded successfully'}
    

注意事项

  • 务必测试Pinpoint发送给Lambda的消息结构,确认destinationNumber、originationNumber等字段的准确名称
  • 给Lambda配置对应权限,确保它能向目标Topic发布消息(可使用精细化权限而非全量权限)
  • 消息属性的数据类型要与字段内容匹配,比如电话号码用String类型,避免过滤失败

内容的提问来源于stack exchange,提问作者JakeHova

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 20:45:40