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” 语音发送。