如何设置 Amazon Pinpoint 语音消息的日志记录?

上次更新时间:2022 年 4 月 26 日

我想监测我通过 Amazon Pinpoint 发送的语音消息的状态。该如何设置?

简短描述

要记录 Amazon Pinpoint 语音消息的状态,您必须配置事件目标。设置事件目标后,它将收到有关您通过 Amazon Pinpoint 发送的语音消息的响应信息。

您可以将以下任意 AWS 资源配置为 Amazon Pinpoint 语音事件目标:

要配置事件目标,您可以使用Amazon Pinpoint SMS 和语音消息收发 API 或某一个 AWS SDK

解决方法

以下示例步骤演示如何使用 Amazon Pinpoint SMS 和语音消息收发 API 创建事件目标。为了使每个示例设置正常工作,您必须使用 SendVoiceMessage API 操作来发送语音消息。API 请求还必须在 ConfigurationSetName 参数中传递配置集的名称。有关代码示例,请参阅 Amazon Pinpoint 开发人员指南中的发送语音消息

注意:如果您在运行 AWS Command Line Interface (AWS CLI) 命令时遇到错误,请确保您使用的是最新版本的 AWS CLI。如果在您完成上述所有步骤后语音日志仍未填充,请参阅以下文章:为什么我的 Amazon Pinpoint 语音消息日志没有填充?

将 Amazon SNS 主题配置为 Amazon Pinpoint 语音事件目标

1.    通过运行以下 create-configuration-set AWS CLI 命令来创建配置集

注意:您可以将 VoiceSNS 替换为配置集的任何名称。

aws pinpoint-sms-voice create-configuration-set --configuration-set-name VoiceSNS

2.    为要接收语音消息日志的端点订阅现有 Amazon SNS 主题或新主题。有关说明,请参阅 Amazon SNS 开发人员指南中的为端点订阅 Amazon SNS 主题

注意:要使用 AWS CLI 创建新的 Amazon SNS 主题,请运行以下 create-topic 命令:

aws sns create-topic --name pinpointsmsvoice

3.    在文本编辑器中,创建一个名为 SNSDestination.json 的输入请求文件。然后,复制以下目标参数并粘贴到文件中:

重要提示:将 <region> 替换为您的 AWS 区域。将 <AccountID> 替换为您的 AWS 账户 ID。将 pinpointsmsvoice 替换为 Amazon SNS 主题的名称。您可以编辑 MatchingEventTypes 的值,以便仅包含要记录的事件类型。

{
    "Enabled": true,
    "MatchingEventTypes": ["INITIATED_CALL", "RINGING", "ANSWERED", "COMPLETED_CALL", "BUSY", "FAILED", "NO_ANSWER"],
    "SnsDestination": {
        "TopicArn": "arn:aws:sns:<region>:<AccountID>:pinpointsmsvoice"
    }
}

4.    通过运行以下 create-configuration-set-event-destination 命令,将配置集映射到目标参数:

重要提示:请确保将 VoiceSNS 替换为配置集的名称。

aws pinpoint-sms-voice create-configuration-set-event-destination --configuration-set-name VoiceSNS --event-destination-name SNS_Destination --event-destination file://SNSDestination.json

5.    使用 SendVoiceMessage API 操作发送 Amazon Pinpoint 语音消息来测试设置。几分钟后,事件将显示在订阅了 Amazon SNS 主题的端点中。

重要提示:请确保 API 请求的 ConfigurationSetName 参数与配置集的名称匹配。

将 CloudWatch Logs 配置为 Amazon Pinpoint 语音事件目标

1.    通过运行以下 create-configuration-set AWS CLI 命令来创建配置集

注意:您可以将 VoiceCW 替换为配置集的任何名称。

aws pinpoint-sms-voice create-configuration-set --configuration-set-name VoiceCW

2.    通过运行以下 create-log-group 命令创建新的 CloudWatch 日志组以接收语音消息日志:

aws logs create-log-group --log-group-name /aws/pinpoint/voice

-或者-

使用现有的 CloudWatch 日志组完成以下步骤。

3.    通过执行以下操作获取 CloudWatch 日志组的 ARN:
打开 CloudWatch 控制台
从左侧导航窗格中选择 Logs(日志)。然后,选择 Log groups(日志组)。
Log group(日志组)列中,选择日志组的名称。
Log group details(日志组详细信息)窗格中,复制 ARN 的值。这是日志组的 ARN。

4.    为 Amazon Pinpoint 服务创建新的 AWS Identity and Access Management (IAM) 角色以供代入。有关说明,请参阅为 AWS 服务创建角色(控制台)为服务创建角色(AWS CLI)。配置角色时,请修改角色的信任策略,使其在策略的主体部分包含以下权限语句:

注意:此权限语句允许 sms-voice 服务代入 IAM 角色。

{
    "Version": "2012-10-17",
    "Statement": [{
        "Effect": "Allow",
        "Principal": {
            "Service": "sms-voice.amazonaws.com"
        },
        "Action": "sts:AssumeRole"
    }]
}

5.    修改 IAM 角色的权限策略,使其包含以下权限语句:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogStream",
                "logs:CreateLogGroup",
                "logs:DescribeLogStreams",
                "logs:PutLogEvents"
            ],
            "Resource": "arn:aws:logs:*:*:*"
        }
    ]
}

注意:此权限语句授予调用特定 CloudWatch Logs API 操作的权限。有关更多信息,请参阅 CloudWatch Logs 权限参考

6.    在文本编辑器中,创建一个名为 CloudWatchDestination.json 的输入请求文件。然后,复制以下目标参数并粘贴到文件中:

重要提示:将 <region> 替换为您的 AWS 区域。将 <AccountID> 替换为您的 AWS 账户 ID。将 <IAM role name> 替换为 IAM 角色的名称。您可以编辑 MatchingEventTypes 的值,以便仅包含要记录的事件类型。

{
    "Enabled": true,
    "MatchingEventTypes": ["INITIATED_CALL", "RINGING", "ANSWERED", "COMPLETED_CALL", "BUSY", "FAILED", "NO_ANSWER"],
    "CloudWatchLogsDestination": {
        "LogGroupArn": "arn:aws:logs:<region>:<AccountID>:log-group/aws/pinpoint/voice:*",
        "IamRoleArn": "arn:aws:iam::<AccountID>:role/<IAM role name>"
    }
}

7.    通过运行以下 create-configuration-set-event-destination 命令,将配置集映射到目标参数:

重要提示:请确保将 VoiceCW 替换为配置集的名称。

aws pinpoint-sms-voice create-configuration-set-event-destination --configuration-set-name VoiceCW --event-destination-name CloudWatch_Destination --event-destination file://CloudWatchDestination.json

8.    使用 SendVoiceMessage API 操作发送 Amazon Pinpoint 语音消息来测试设置。几分钟后,该事件将显示在 CloudWatch 日志组中。

将 Kinesis Data Firehose 流配置为 Amazon Pinpoint 语音事件目标

1.    通过运行以下 create-configuration-set AWS CLI 命令来创建配置集

注意:您可以将 VoiceKinesis 替换为配置集的任何名称。

aws pinpoint-sms-voice create-configuration-set --configuration-set-name VoiceKinesis

2.    创建 Kinesis Data Firehose 传输流。对于 Destination(目标)设置,请选择 Amazon Simple Storage Service (Amazon S3)。

重要提示:接受原定设置的 IAM 服务角色。然后,将 IAM 服务角色的名称复制到剪贴板。以下步骤中需要角色名称。

3.    修改原定设置的 IAM 服务角色信任策略,使其在策略的主体部分包含以下权限语句:

注意:此权限语句授权 sms-voice 服务代入 IAM 角色。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "firehose.amazonaws.com",
          "sms-voice.amazonaws.com"
        ]
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

4.    修改 IAM 服务角色的权限策略,使其包含以下权限语句:

重要提示:请勿移除 IAM 服务角色的任何原定设置权限语句。

{
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "firehose:*",
            "Resource": "*"
        },

5.    在文本编辑器中,创建一个名为 KinesisFirehoseDestination.json 的输入请求文件。然后,复制以下目标参数并粘贴到文件中:

重要提示:将 <region> 替换为您的 AWS 区域。将 <AccountID> 替换为您的 AWS 账户 ID。将 Name_of_Kinesis_Firehose 替换为 Amazon Kinesis Data Firehose 流的名称。将 <IAM role name> 替换为 IAM 角色的名称。您可以编辑 MatchingEventTypes 的值,以便仅包含要记录的事件类型。

{
    "Enabled": true,
    "MatchingEventTypes": ["INITIATED_CALL","RINGING","ANSWERED","COMPLETED_CALL","BUSY","FAILED","NO_ANSWER"],
    "KinesisFirehoseDestination": {
        "DeliveryStreamArn": "arn:aws:firehose:<region>:<AccountID>:deliverystream/<Name_of_Kinesis_Firehose>",
        "IamRoleArn": "arn:aws:iam::<AccountID>:role/service-role/<IAM role name>"
    }
}

6.    通过运行以下 create-configuration-set-event-destination 命令,将配置集映射到目标参数:

重要提示:请确保将 VoiceKinesis 替换为配置集的名称。

aws pinpoint-sms-voice create-configuration-set-event-destination --configuration-set-name VoiceKinesis --event-destination-name KinesisFirehose_Destination --event-destination file://KinesisFirehoseDestination.json

7.    使用 SendVoiceMessage API 操作发送 Amazon Pinpoint 语音消息来测试设置。几分钟后,该事件将显示在您在创建 Kinesis Data Firehose 流时配置的 Amazon S3 存储桶中。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?