当前位置: 首页 > news >正文

解决方案架构师系列 - AWS - Pinpoint

AWS Pinpoint介绍

Amazon Pinpoint 为营销人员和开发人员提供了一款可自定义的工具,助力他们大规模地开展跨渠道、行业和活动的客户通信。

Amazon Pinpoint是一个全面的客户参与平台,‌旨在帮助营销人员和开发人员大规模地开展跨渠道、‌行业和活动的客户通信。‌它提供了一系列功能,‌包括创建和管理营销活动、‌客户细分、‌推送通知、‌电子邮件、‌短信、‌语音消息以及应用程序内消息等,‌通过这些功能,‌用户可以与客户进行互动并分析活动效果,‌以优化营销策略。‌

使用Amazon Pinpoint的主要步骤包括:‌

  1. 创建项目:‌首先,‌用户需要在AWS控制台中创建一个新的项目,‌这是使用Amazon Pinpoint的第一步。‌
  2. 导入数据并创建客户细分:‌接下来,‌导入客户数据并创建不同的客户细分,‌以便更精确地定位目标受众。‌
  3. 创建活动:‌设计并创建各种营销活动,‌包括推送通知、‌电子邮件、‌短信等。‌
  4. 查看活动分析:‌活动创建后,‌可以通过分析工具查看活动的效果,‌包括送达率、‌打开率、‌点击率等,‌以便优化未来的活动。‌
  5. 项目管理和发送:‌管理项目,‌包括设置推送通知、‌电子邮件、‌短信等,‌并监控其性能。‌

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 为营销人员和开发人员提供了一款可自定义的工具&#xff0c;助力他们大规模地开展跨渠道、行业和活动的客户通信。 Amazon Pinpoint是一个全面的客户参与平台&#xff0c;‌旨在帮助营销人员和开发人员大规模地开展跨渠道、‌行业和活动的客…...

MF173:将多个工作表转换成PDF文件

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

Docker、containerd、CRI-O 和 runc 之间的区别

容器与 Docker 这个名称并不紧密相关。你可以使用其他工具来运行容器 您可以使用 Docker 或一堆非Docker 的其他工具来运行容器。docker只是众多选项之一&#xff0c;Docker&#xff08;公司&#xff09;在生态系统中创建了一些很棒的工具&#xff0c;但不是全部。 容器方面有…...

PRISM-Python 中的规则一个简单的 Python 规则感应系统

欢迎来到雲闪世界.PRISM 是一种现有算法&#xff08;尽管我确实创建了一个 Python 实现&#xff09;&#xff0c;PRISM 相对简单&#xff0c;但在机器学习中&#xff0c;有时最复杂的解决方案效果最好&#xff0c;有时最简单的解决方案效果最好。然而&#xff0c;当我们希望建立…...

DB-GPT:LLM应用的集大成者

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

汉明权重(Hamming Weight)(统计数据中1的个数)VP-SWAR算法

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

基于 PyTorch 的模型瘦身三部曲:量化、剪枝和蒸馏,让模型更短小精悍!

基于 PyTorch 的模型量化、剪枝和蒸馏 1. 模型量化1.1 原理介绍1.2 PyTorch 实现 2. 模型剪枝2.1 原理介绍2.2 PyTorch 实现 3. 模型蒸馏3.1 原理介绍3.2 PyTorch 实现 参考文献 1. 模型量化 1.1 原理介绍 模型量化是将模型参数从高精度&#xff08;通常是 float32&#xff0…...

二、原型模式

文章目录 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关键步骤安装&#xff0c;为使用yolo所需的环境配置完善。同时也算是记录下我的配置流程&#xff0c;为以后用到的时候能笔记查阅。 Anaconda 软件安装 Anaconda官网&#xff1a;https://www.anaconda…...

Django实战项目之进销存数据分析报表——第二天:项目创建和 PyCharm 配置

在上一篇博客中&#xff0c;我们讨论了如何搭建一个全栈 Web 应用的开发环境&#xff0c;包括 Python 环境的创建、Django 和 MySQL 的安装以及前端技术栈的选择。现在&#xff0c;让我们继续深入&#xff0c;学习如何在 PyCharm 中创建一个新的 Django 项目并进行配置。 一…...

静态路由实验

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

VSCode STM32嵌入式开发插件记录

要卸载之前搭建的VSCode嵌入式开发环境了&#xff0c;记录一下用的插件。 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 总结&#xff1a; 查看进程中各个线程占用百分比 top -H -p <pid> 某线程100%了 说明 任务处理不过来 会卡 但是永远不可能超100% 系统监视器里面看到的是 所有线程占用的 总和会超100%。 所以最好的情况是&…...

自然学习法和科学学习法

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

力扣第二十四题——两两交换链表中的节点

内容介绍 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4] 输出&#xff…...

C语言柔性数组详解

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

自动驾驶---视觉Transformer的应用

1 背景 在过去的几年&#xff0c;随着自动驾驶技术的不断发展&#xff0c;神经网络逐渐进入人们的视野。Transformer的应用也越来越广泛&#xff0c;逐步走向自动驾驶技术的前沿。笔者也在博客《人工智能---什么是Transformer?》中大概介绍了Transformer的一些内容&#xff1a…...

预训练语言模型实践笔记

Roberta output_hidden_statesTrue和last_hidden_states和pooler_output 在使用像BERT或RoBERTa这样的transformer模型时&#xff0c;output_hidden_states和last_hidden_state是两个不同的概念。 output_hidden_states: 这是一个布尔值&#xff0c;决定了模型是否应该返回所…...

Perl 哈希

Perl 哈希 Perl 哈希是一种强大的数据结构&#xff0c;用于存储键值对集合。它是 Perl 语言的核心特性之一&#xff0c;广泛应用于各种编程任务中。本文将详细介绍 Perl 哈希的概念、用法和最佳实践。 什么是 Perl 哈希&#xff1f; Perl 哈希是一种关联数组&#xff0c;其中…...

Linux之Mysql索引和优化

一、MySQL 索引 索引作为一种数据结构,其用途是用于提升数据的检索效率。 1、索引分类 - 普通索引(INDEX):索引列值可重复 - 唯一索引(UNIQUE):索引列值必须唯一,可以为NULL - 主键索引(PRIMARY KEY):索引列值必须唯一,不能为NULL,一个表只能有一个主键索引 - 全…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

无法与IP建立连接,未能下载VSCode服务器

如题&#xff0c;在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈&#xff0c;发现是VSCode版本自动更新惹的祸&#xff01;&#xff01;&#xff01; 在VSCode的帮助->关于这里发现前几天VSCode自动更新了&#xff0c;我的版本号变成了1.100.3 才导致了远程连接出…...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中&#xff0c;高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司&#xff0c;近期做出了一个重大技术决策&#xff1a;弃用长期使用的 Nginx&#xff0c;转而采用其内部开发…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 &#x1f4dd; 在上一篇文章中&#xff0c;我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源&#xff0c;方便后续将资源打包到一个可执行文件中。 2.embed介绍 &#x1f3af; Go 1.16 引入了革命性的 embed 包&#xff0c;彻底改变了静态资源管理的…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...