在 Amazon Pinpoint 中发送和检索应用程序内消息 - Amazon Pinpoint

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 Amazon Pinpoint 中发送和检索应用程序内消息

您可以使用应用程序内消息向应用程序的用户发送定向消息。应用程序内消息是高度可定制的。它们可以包括用于打开网站或使用户转向应用程序特定部分的按钮。您可以配置背景和文本颜色,定位文本,以及向通知中添加按钮和图像。您可以发送一条消息,或者创建最多包含五条独特消息的轮盘。有关应用程序内消息的概述,包括创建应用程序内消息模板的说明,请参阅《Amazon Pinpoint 用户》指南中的创建应用程序内模板

您可以使用 AWS Amplify 将 Amazon Pinpoint 的应用程序内消息传递功能无缝集成到您的应用程序中。Amplify 可以自动完成获取消息、呈现消息以及向 Amazon Pinpoint 发送分析数据的过程。React Native 应用程序目前支持这种集成。有关更多信息,请参阅《Amplify Framework 文档》中的应用程序内消息

本节提供有关为应用程序中的端点请求应用程序内消息以及解释该请求结果的信息。

检索端点的应用程序内消息

您的应用程序可以调用 GetInAppMessages API 来检索给定端点有权接收的所有应用程序内消息。在调用 GetInAppMessages API 时,您需要提供以下参数:

  • ApplicationId – 与应用程序内消息活动关联的 Amazon Pinpoint 项目的唯一 ID。

  • EndpointId – 您要为其检索消息的端点的唯一 ID。

当您使用这些值调用 API 时,它会返回一个消息列表。有关此操作生成的响应的更多信息,请参阅了解 GetInAppMessages API 响应

您还可以使用 AWS SDK 调用 GetInAppMessages 操作。以下代码示例包括检索应用程序内消息的函数。

JavaScript

在单独的模块中创建客户端并将其导出:

import { PinpointClient } from "@aws-sdk/client-pinpoint"; const REGION = "us-east-1"; const pinClient = new PinpointClient({ region: REGION }); export { pinClient };

检索端点的应用程序内消息:

// Import required AWS SDK clients and commands for Node.js import { PinpointClient, GetInAppMessagesCommand } from "@aws-sdk/client-pinpoint"; import { pinClient } from "./lib/pinClient.js"; ("use strict"); //The Amazon Pinpoint application ID. const projectId = "4c545b28d21a490cb51b0b364example"; //The ID of the endpoint to retrieve messages for. const endpointId = "c5ac671ef67ee3ad164cf7706example"; const params = { ApplicationId: projectId, EndpointId: endpointId }; const run = async () => { try { const data = await pinClient.send(new GetInAppMessagesCommand(params)); console.log(JSON.stringify(data, null, 4)); return data; } catch (err) { console.log("Error", err); } }; run();
Python
import logging import boto3 from botocore.exceptions import ClientError logger = logging.getLogger(__name__) def retrieve_inapp_messages( pinpoint_client, project_id, endpoint_id): """ Retrieves the in-app messages that a given endpoint is entitled to. :param pinpoint_client: A Boto3 Pinpoint client. :param project_id: An Amazon Pinpoint project ID. :param endpoint_id: The ID of the endpoint to retrieve messages for. :return: A JSON object that contains information about the in-app message. """ try: response = pinpoint_client.get_in_app_messages( ApplicationId=project_id, EndpointId=endpoint_id) except ClientError: logger.exception("Couldn't retrieve messages.") raise else: return response def main(): project_id = "4c545b28d21a490cb51b0b364example" endpoint_id = "c5ac671ef67ee3ad164cf7706example" inapp_response = retrieve_inapp_messages( boto3.client('pinpoint'), project_id, endpoint_id) print(inapp_response) if __name__ == '__main__': main()

了解 GetInAppMessages API 响应

当您调用 GetInAppMessages API 操作时,它会返回指定端点有权接收的消息列表。然后,您的应用程序可以根据响应中的值呈现消息。

以下是您在调用 GetInAppMessages API 时返回的 JSON 对象的示例:

{ "InAppMessagesResponse":{ "InAppMessageCampaigns":[ { "CampaignId":"inAppTestCampaign-4c545b28d21a490cb51b0b364example", "DailyCap":0, "InAppMessage":{ "Content":[ { "BackgroundColor":"#f8e71c", "BodyConfig":{ "Alignment":"CENTER", "Body":"This is a sample in-app message sent using Amazon Pinpoint.", "TextColor":"#d0021b" }, "HeaderConfig":{ "Alignment":"CENTER", "Header":"Sample In-App Message", "TextColor":"#d0021b" }, "ImageUrl":"https://example.com/images/thumbnail.png", "PrimaryBtn":{ "DefaultConfig":{ "BackgroundColor":"#d0021b", "BorderRadius":50, "ButtonAction":"CLOSE", "Text":"Dismiss", "TextColor":"#f8e71c" } } } ], "Layout":"MIDDLE_BANNER" }, "Priority":3, "Schedule":{ "EndDate":"2021-11-06T00:08:05Z", "EventFilter":{ "Dimensions":{ "Attributes":{ }, "EventType":{ "DimensionType":"INCLUSIVE", "Values":[ "_session.start" ] }, "Metrics":{ } } } }, "SessionCap":0, "TotalCap":0, "TreatmentId":"0" } ] } }

以下各节提供有关此响应的组成部分的更多信息。

InAppMessageCampaigns 对象

InAppMessageCampaigns 对象包含以下属性:

属性 描述 在哪里设置

CampaignId

一个字符串,其中包含发送消息的 Amazon Pinpoint 活动的名称和唯一活动 ID。该名称位于活动 ID 之前。这两个值用连字符 (-) 分隔。

由 Amazon Pinpoint 在您创建活动时自动创建。

TreatmentId

一个整数,表示此消息的活动处理的 ID。如果活动只有一种处理,则值为 0

Priority

应用程序内消息的优先级,表示为 1 到 5 之间的整数,其中 1 为最高优先级,5 为最低优先级。

创建活动过程的第 1 步

InAppMessage

一个 InAppMessage 对象,其中包含有关如何呈现消息的信息。

基于为活动指定的应用程序内消息模板中的内容。

Schedule

Schedule 对象,其中包含关于消息发送时间的信息。

创建活动过程的第 4 步(如果活动是在控制台创建的),或者是 Schedule 对象(如果活动是使用 API 或 SDK 创建的)。

DailyCap

在 24 小时内可以向用户显示一条应用程序内消息的次数,以整数表示。

继承自项目级设置。如果活动包含覆盖项目设置的设置,则会改用这些设置。

SessionCap

应用程序会话期间可以向用户显示一条应用程序内消息的次数,以整数表示。

TotalCap

每个活动可以向端点显示任何应用程序内消息的总次数,以整数表示。

InAppMessage 对象

InAppMessage 对象包含以下属性:

属性 描述 在哪里设置

Content

一个包含 InAppMessageContent 对象的数组,该对象描述了消息的内容。

基于为活动指定的应用程序内消息模板中的内容。

Layout

描述应用程序内消息在收件人设备上的显示方式的字符串。可能的值有:

  • BOTTOM_BANNER – 显示为页面底部横幅的消息。

  • TOP_BANNER – 显示为页面顶部横幅的消息。

  • OVERLAYS – 覆盖整个屏幕的消息。

  • MOBILE_FEED – 在页面置顶窗口中显示的消息。

  • MIDDLE_BANNER – 显示为页面中间横幅的消息。

  • CAROUSEL – 最多包含五条唯一消息的可滚动布局。

HeaderConfig 对象

HeaderConfig 对象包含以下属性:

属性 描述 在哪里设置

Alignment

一个字符串,指定标题文本的文本对齐方式。可能的值为 LEFTCENTERRIGHT

基于为活动指定的应用程序内消息模板中的内容。

Header

消息标题文本。

TextColor

标题文本的颜色,以十六进制颜色代码(例如,#000000 代表黑色)表示。

BodyConfig 对象

BodyConfig 对象包含以下属性:

属性 描述 在哪里设置

Alignment

一个字符串,指定消息正文的文本对齐方式。可能的值为 LEFTCENTERRIGHT

基于为活动指定的应用程序内消息模板中的内容。

Body

消息的主体文本。

TextColor

正文的颜色,以由十六进制颜色代码(例如,#000000 代表黑色)组成的字符串表示。

InAppMessageContent 对象

InAppMessageContent 对象包含以下属性:

属性 描述 在哪里设置

BackgroundColor

应用程序内消息的背景色,以十六进制颜色代码(例如,#000000 代表黑色)表示。

基于为活动指定的应用程序内消息模板中的内容。

BodyConfig

一个 BodyConfig 对象,其中包含与消息正文内容相关的信息。

HeaderConfig

一个 HeaderConfig 对象,其中包含与消息标题相关的信息。

ImageUrl

消息中显示的图像的 URL。

PrimaryBtn

一个 InAppMessageButton 对象,其中包含有关消息中主要按钮的信息。

SecondaryBtn

一个 InAppMessageButton 对象,其中包含有关消息中辅助按钮的信息。如果应用程序内消息模板未指定辅助按钮,则不显示。

Schedule 对象

Schedule 对象包含以下属性:

属性 描述 在哪里设置

EndDate

将结束活动的计划时间,采用 ISO 8601 格式。

创建活动过程的第 4 步(如果活动是在控制台创建的),或者是 Schedule 对象(如果活动是使用 API 或 SDK 创建的)。

EventFilter

有关导致显示应用程序内消息的事件的信息。当您生成与 Amazon Pinpoint 应用程序内活动匹配的事件时,系统会显示该消息。

InAppMessageButton 对象

InAppMessageButton 对象包含以下属性:

属性 描述 在哪里设置

DefaultConfig

一个 DefaultButtonConfig 对象,其中包含应用程序内消息中按钮的默认设置的信息。

基于为活动指定的应用程序内消息模板中的内容。

Android

一个 OverrideButtonConfig 对象,用于指定按钮在 Android 设备上的行为方式。这将覆盖 DefaultConfig 对象中详细介绍的默认按钮配置。

IOS

一个 OverrideButtonConfig 对象,用于指定按钮在 iOS 设备上的行为方式。这将覆盖 DefaultConfig 对象中详细介绍的默认按钮配置。

Web

一个 OverrideButtonConfig 对象,用于指定按钮在 Web 应用程序中的行为方式。这将覆盖 DefaultConfig 对象中详细介绍的默认按钮配置。

DefaultButtonConfig 对象

DefaultButtonConfig 对象包含以下属性:

属性 描述 在哪里设置

BackgroundColor

按钮的背景色,以十六进制颜色代码(例如,#000000 代表黑色)表示。

基于为活动指定的应用程序内消息模板中的内容。

BorderRadius

按钮边框的半径(以像素为单位),以整数表示。数字越大,圆角越大。

ButtonAction

一个字符串,描述当收件人在应用程序内消息中选择按钮时发生的操作。可能的值有:

  • LINK – 指向 Web 目标的链接。

  • DEEP_LINK – 指向应用程序中特定页面的链接。

  • CLOSE – 关闭消息。

Link

按钮的目标 URL。对于 ButtonAction 为 CLOSE 的按钮不存在。

Text

按钮上显示的文本。

TextColor

按钮上文本的颜色,以十六进制颜色代码(例如,#000000 代表黑色)表示。

OverrideButtonConfig 对象

仅当应用程序内消息模板使用覆盖按钮时,OverrideButtonConfig 对象才会出现。覆盖按钮是针对特定设备类型(例如 iOS 设备、Android 设备或 Web 浏览器)具有特定配置的按钮。

OverrideButtonConfig 对象包含以下属性:

属性 描述 在哪里设置

ButtonAction

当收件人在应用程序内消息中选择按钮时发生的操作。可能的值有:

  • LINK – 指向 Web 目标的链接。

  • DEEP_LINK – 指向应用程序中特定页面的链接。

  • CLOSE – 关闭消息。

基于为活动指定的应用程序内消息模板中的内容。

Link

按钮的目标 URL。对于 ButtonActionCLOSE 的按钮不存在。

Text

按钮上显示的文本。

TextColor

按钮上文本的颜色,以十六进制颜色代码(例如,#000000 代表黑色)表示。