解决方案架构师系列 - AWS - Pinpoint
AWS Pinpoint介绍
Amazon Pinpoint 为营销人员和开发人员提供了一款可自定义的工具,助力他们大规模地开展跨渠道、行业和活动的客户通信。
Amazon Pinpoint是一个全面的客户参与平台,旨在帮助营销人员和开发人员大规模地开展跨渠道、行业和活动的客户通信。它提供了一系列功能,包括创建和管理营销活动、客户细分、推送通知、电子邮件、短信、语音消息以及应用程序内消息等,通过这些功能,用户可以与客户进行互动并分析活动效果,以优化营销策略。
使用Amazon Pinpoint的主要步骤包括:
- 创建项目:首先,用户需要在AWS控制台中创建一个新的项目,这是使用Amazon Pinpoint的第一步。
- 导入数据并创建客户细分:接下来,导入客户数据并创建不同的客户细分,以便更精确地定位目标受众。
- 创建活动:设计并创建各种营销活动,包括推送通知、电子邮件、短信等。
- 查看活动分析:活动创建后,可以通过分析工具查看活动的效果,包括送达率、打开率、点击率等,以便优化未来的活动。
- 项目管理和发送:管理项目,包括设置推送通知、电子邮件、短信等,并监控其性能。
Amazon Pinpoint还提供了多种最佳实践和建议,帮助用户优化送达率、提高客户参与度,并通过收件箱置入测试等方式确保邮件不被标记为垃圾邮件。此外,它还支持使用专用IP地址,帮助用户更好地管理邮件发送,以及通过沙盒模式对短信和语音消息进行限制和管理。
总的来说,Amazon Pinpoint是一个功能强大的工具,它允许用户通过多种渠道与客户进行互动,并通过详细的数据分析和优化建议,提高营销活动的效率和效果12。
Amazon Pinpoint 的安全最佳实践
使用 AWS 身份和访问管理 (IAM) 账户控制 API 操作的 Amazon Pinpoint 访问权限,尤其是创建、修改或 Amazon Pinpoint 删除资源的操作。对于 Amazon Pinpoint API,此类资源包括项目、活动和旅程。对于 Amazon Pinpoint SMS 和 Voice API,此类资源包括电话号码、资源池和配置集。
-
为每个管理 Amazon Pinpoint 资源的人创建一个单独的用户,包括你自己。请勿使用 AWS 根凭证来管理 Amazon Pinpoint 资源。
-
授予每位用户执行其职责所需的最低权限集。
-
使用 IAM 组有效地管理适用于多个用户的权限。
-
定期轮换您的 IAM 凭证。
发送短信或语音消息的示例
您可以参照以下代码示例,使用 AWS SDK for Python (Boto3)发送短信。
import boto3
from botocore.exceptions import ClientErrordef send_sms_message(sms_voice_v2_client, configuration_set, context_keys,country_parameters, destination_number, dry_run, keyword,max_price, message_body, message_type, origination_number,ttl):try:response = sms_voice_v2_client.send_text_message(ConfigurationSetName=configuration_set,Context=context_keys,DestinationCountryParameters=country_parameters,DestinationPhoneNumber=destination_number,DryRun=dry_run,Keyword=keyword,MaxPrice=max_price,MessageBody=message_body,MessageType=message_type,OriginationIdentity=origination_number,TimeToLive=ttl)except ClientError as e:print(e.response)else:return response['MessageId']def main():configuration_set = "MyConfigurationSet"context_keys = {"key1": "value1"}country_parameters = {"IN_TEMPLATE_ID": "TEMPLATE01234","IN_ENTITY_ID": "ENTITY98765"}destination_number = "+14255550168"dry_run = Falsekeyword = "MyKeyword"max_price = "2.00"message_body = ("This is a test message sent from Amazon Pinpoint SMS ""using the AWS SDK for Python (Boto3). ")message_type = "TRANSACTIONAL"origination_number = "+12065550183"ttl = 120print(f"Sending text message to {destination_number}.")message_id = send_sms_message(boto3.client('pinpoint-sms-voice-v2'), configuration_set, context_keys,country_parameters, destination_number, dry_run, keyword, max_price,message_body, message_type, origination_number, ttl)print(f"Message sent!\nMessage ID: {message_id}")if __name__ == '__main__':main()
在前面的示例中,对 main()
函数进行以下更改:
-
将
configuration_set
的值改为您要用于发送此消息的配置集的名称或 Amazon 资源名称 (ARN)。 -
将
context_keys
的值改为您要在发送此消息时使用的键和值。这些键出现在与此消息关联的事件记录中。 -
如果您使用已注册的发件人 ID 向印度的客户发送消息,请将
country_parameters
的值改为匹配您在注册发件人 ID 时收到的注册实体 ID 和模板 ID。
-
重要
如果您不使用注册的发件人 ID 向印度的客户发送消息,请完全忽略此参数。同时,还必须删除
send_sms_message
函数中的相应行。 -
将
destination_number
的值改为您要向其发送消息的电话号码。 -
如果要在不发送任何消息的情况下执行此操作,请将
dry_run
的值改为True
。 -
将
max_price
的值改为您发送此消息的每个消息部分要花费的最大金额(以美元为单位)。一个消息部分最多包含 140 字节的信息。有关更多信息,请参阅 短信字符限制。 -
更改
message_body
的值以包括您要发送的消息。一条消息的最大长度取决于其所包含的字符。有关短信字符编码的更多信息,请参阅短信字符限制。 -
更改
message_type
的值以表示相应的消息类别。有效值包括 TRANSACTIONAT(适用于重要或对时间敏感的消息)和 PROMOTION(适用于不重要或对不时间敏感的消息)。 -
将
origination_number
的值改为您要用于发送消息的电话号码。电话号码必须使用 E.164 格式。 -
将的值更改
ttl
为 Amazon Pinpoint SMS 应尝试发送消息的时间(以秒为单位)。您可以将 TTL 值设置为最多 259200 秒(72 小时)。
发送语音消息
您可以使用以下代码示例,通过 AWS SDK for Python (Boto3)发送语音消息。
import boto3
from botocore.exceptions import ClientErrordef send_voice_message(sms_voice_v2_client, configuration_set, context_keys,destination_number, dry_run, max_price, message_body,message_type, origination_number, ttl, voice_id):try:response = sms_voice_v2_client.send_voice_message(ConfigurationSetName=configuration_set,Context=context_keys,DestinationPhoneNumber=destination_number,DryRun=dry_run,MaxPricePerMinute=max_price,MessageBody=message_body,MessageBodyTextType=message_type,OriginationIdentity=origination_number,TimeToLive=ttl,VoiceId=voice_id)except ClientError as e:print(e.response)else:return response['MessageId']def main():configuration_set = "MyConfigurationSet"context_keys = {"key1":"value1"}destination_number = "+12065550123"dry_run = Falsemax_price = "2.00"message_body = ("<speak>""This is a test message sent from <emphasis>Amazon Pinpoint SMS</emphasis>""using the <break strength='weak'/> AWS SDK for Python (Boto3). ""<amazon:effect phonation='soft'>Thank you for listening.""</amazon:effect>""</speak>")message_type = "SSML"origination_number = "+18445550142"ttl = 120voice_id = "MATTHEW"print(f"Sending voice message with Amazon Pinpoint SMS from {origination_number} to {destination_number}.")message_id = send_voice_message(boto3.client('pinpoint-sms-voice-v2'), configuration_set, context_keys,destination_number, dry_run, max_price, message_body, message_type,origination_number, ttl, voice_id)print(f"Message sent!\nMessage ID: {message_id}")if __name__ == '__main__':main()
在前面的示例中,对 main()
函数进行以下更改:
-
将
configuration_set
的值改为您要用于发送此消息的配置集的名称或 Amazon 资源名称 (ARN)。 -
将
context_keys
的值改为您要在发送此消息时使用的键和值。这些键出现在与此消息关联的事件记录中。 -
将
destination_number
的值改为您要向其发送消息的电话号码。 -
将
max_price
的值改为发送此消息每分钟要花费的最大金额。 -
更改
message_body
的值以包括您要发送的消息。消息最多可包含 6,000 个字符。 -
如果要使用纯文本脚本而不是 SSML 格式的脚本,请将
message_type
的值改为TEXT
-
将
origination_number
的值改为您要用于发送消息的电话号码。电话号码必须使用 E.164 格式。 -
如果要在不发送任何消息的情况下执行此操作,请将
dry_run
的值改为True
。 -
将的值更改
ttl
为 Amazon Pinpoint SMS 应尝试发送消息的时间(以秒为单位)。您可以将 TTL 值设置为最多 259200 秒(72 小时)。 -
将
MATTHEW
替换为要用于发送消息的 Amazon Polly 语音的名称。有关支持的语音的完整列表,请参阅《短信和语音》第 2 版 API 参考SendVoiceMessage中。如果您未指定语音,则您的消息将使用 “MATTHEW” 语音发送。
相关文章:

解决方案架构师系列 - AWS - Pinpoint
AWS Pinpoint介绍 Amazon Pinpoint 为营销人员和开发人员提供了一款可自定义的工具,助力他们大规模地开展跨渠道、行业和活动的客户通信。 Amazon Pinpoint是一个全面的客户参与平台,旨在帮助营销人员和开发人员大规模地开展跨渠道、行业和活动的客…...

MF173:将多个工作表转换成PDF文件
我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套,分为初级、中级、高级三大部分,教程是对VBA的系统讲解&#…...

Docker、containerd、CRI-O 和 runc 之间的区别
容器与 Docker 这个名称并不紧密相关。你可以使用其他工具来运行容器 您可以使用 Docker 或一堆非Docker 的其他工具来运行容器。docker只是众多选项之一,Docker(公司)在生态系统中创建了一些很棒的工具,但不是全部。 容器方面有…...

PRISM-Python 中的规则一个简单的 Python 规则感应系统
欢迎来到雲闪世界.PRISM 是一种现有算法(尽管我确实创建了一个 Python 实现),PRISM 相对简单,但在机器学习中,有时最复杂的解决方案效果最好,有时最简单的解决方案效果最好。然而,当我们希望建立…...

DB-GPT:LLM应用的集大成者
整体架构 架构解读 可以看到,DB-GPT把架构抽象为7层,自下而上分别为: 运行环境:支持本地/云端&单机/分布式等部署方式。顺便一提,RAY是蚂蚁深度参与的一个开源项目,所以对RAY功能的支持应该非常完善。…...

汉明权重(Hamming Weight)(统计数据中1的个数)VP-SWAR算法
汉明权重(Hamming Weight)(统计数据中1的个数)VP-SWAR算法 定义 汉明重量是一串符号中非零符号的个数。它等于同样长度的全零符号串的汉明距离(在信息论中,两个等长字符串之间的汉明距离等于两个字符串对应位置的不同…...

基于 PyTorch 的模型瘦身三部曲:量化、剪枝和蒸馏,让模型更短小精悍!
基于 PyTorch 的模型量化、剪枝和蒸馏 1. 模型量化1.1 原理介绍1.2 PyTorch 实现 2. 模型剪枝2.1 原理介绍2.2 PyTorch 实现 3. 模型蒸馏3.1 原理介绍3.2 PyTorch 实现 参考文献 1. 模型量化 1.1 原理介绍 模型量化是将模型参数从高精度(通常是 float32࿰…...

二、原型模式
文章目录 1 基本介绍2 实现方式深浅拷贝目标2.1 使用 Object 的 clone() 方法2.1.1 代码2.1.2 特性2.1.3 实现深拷贝 2.2 在 clone() 方法中使用序列化2.2.1 代码 2.2.2 特性 3 实现的要点4 Spring 中的原型模式5 原型模式的类图及角色5.1 类图5.1.1 不限制语言5.1.2 在 Java 中…...

【目标检测】Anaconda+PyTorch(GPU)+PyCharm(Yolo5)配置
前言 本文主要介绍在windows系统上的Anaconda、PyTorch、PyCharm、Yolov5关键步骤安装,为使用yolo所需的环境配置完善。同时也算是记录下我的配置流程,为以后用到的时候能笔记查阅。 Anaconda 软件安装 Anaconda官网:https://www.anaconda…...
Django实战项目之进销存数据分析报表——第二天:项目创建和 PyCharm 配置
在上一篇博客中,我们讨论了如何搭建一个全栈 Web 应用的开发环境,包括 Python 环境的创建、Django 和 MySQL 的安装以及前端技术栈的选择。现在,让我们继续深入,学习如何在 PyCharm 中创建一个新的 Django 项目并进行配置。 一…...

静态路由实验
1.实验拓扑图 二、实验要求 1.R6为ISP,接口IP地址均为公有地址,该设备只能配置IP地址,之后不能再对其进行任何配置; 2.R1-R5为局域网,私有IP地址192.168.1.0/24,请合理分配; 3.R1、R2、R4&…...

VSCode STM32嵌入式开发插件记录
要卸载之前搭建的VSCode嵌入式开发环境了,记录一下用的插件。 1.Cortex-Debug https://github.com/Marus/cortex-debug 2.Embedded IDE https://github.com/github0null/eide 3.Keil uVision Assistant https://github.com/jacksonjim/keil-assistant/ 4.RTO…...

linux cpu 占用超100% 分析。
感谢: https://www.cnblogs.com/wolfstark/p/16450131.html 总结: 查看进程中各个线程占用百分比 top -H -p <pid> 某线程100%了 说明 任务处理不过来 会卡 但是永远不可能超100% 系统监视器里面看到的是 所有线程占用的 总和会超100%。 所以最好的情况是&…...

自然学习法和科学学习法
一、自然学习法 自然学习法:什么事自然学习法,特意让kimi来回答了一下。所谓的自然学习法说的俗一点就是野路子学习方法。这种学习方法的特点是“慢”“没有系统性”,学完之后感觉都会了,但是又感觉什么都不会。 二、科学学习法 …...

力扣第二十四题——两两交换链表中的节点
内容介绍 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 示例 1: 输入:head [1,2,3,4] 输出ÿ…...

C语言柔性数组详解
目录 1.柔性数组 2.柔性数组的特点 3.柔性数组的使用 4.柔性数组的优势 1.柔性数组 C99 中,结构体中的最后一个元素允许是未知大小的数组,这就叫做『柔性数组』成员。 例如: struct S {char c;int n;int arr[];//柔性数组 }; struct …...

自动驾驶---视觉Transformer的应用
1 背景 在过去的几年,随着自动驾驶技术的不断发展,神经网络逐渐进入人们的视野。Transformer的应用也越来越广泛,逐步走向自动驾驶技术的前沿。笔者也在博客《人工智能---什么是Transformer?》中大概介绍了Transformer的一些内容:…...
预训练语言模型实践笔记
Roberta output_hidden_statesTrue和last_hidden_states和pooler_output 在使用像BERT或RoBERTa这样的transformer模型时,output_hidden_states和last_hidden_state是两个不同的概念。 output_hidden_states: 这是一个布尔值,决定了模型是否应该返回所…...
Perl 哈希
Perl 哈希 Perl 哈希是一种强大的数据结构,用于存储键值对集合。它是 Perl 语言的核心特性之一,广泛应用于各种编程任务中。本文将详细介绍 Perl 哈希的概念、用法和最佳实践。 什么是 Perl 哈希? Perl 哈希是一种关联数组,其中…...
Linux之Mysql索引和优化
一、MySQL 索引 索引作为一种数据结构,其用途是用于提升数据的检索效率。 1、索引分类 - 普通索引(INDEX):索引列值可重复 - 唯一索引(UNIQUE):索引列值必须唯一,可以为NULL - 主键索引(PRIMARY KEY):索引列值必须唯一,不能为NULL,一个表只能有一个主键索引 - 全…...

python打卡day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...

跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
关于uniapp展示PDF的解决方案
在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项: 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库: npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...
日常一水C
多态 言简意赅:就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过,当子类和父类的函数名相同时,会隐藏父类的同名函数转而调用子类的同名函数,如果要调用父类的同名函数,那么就需要对父类进行引用&#…...