如何为 Amazon Pinpoint 短信和语音 v1 API 设置 Amazon Pinpoint 语音消息的日志记录?

上次更新日期:2022 年 8 月 12 日

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

简短描述

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

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

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

注意:以下解决方案仅适用于 Amazon Pinpoint 短信和语音 v1 API。有关 Amazon Pinpoint 短信和语音 v2 API 的信息,请参阅如何为 Amazon Pinpoint 短信和语音 v2 API 设置 Amazon Pinpoint 语音消息的日志记录?

解决方法

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

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

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

1.    确保您的 SNS 主题的访问策略包含以下权限。这允许 Amazon Pinpoint 服务器传输日志:

{
"Sid": "pinpointsmsvoice",
"Effect": "Allow",
"Principal": {
"Service": "sms-voice.amazonaws.com"
},
"Action": "SNS:Publish",
"Resource": "arn:aws:sns:us-west-2:XXXXXX:pinpointsmsvoice"
}

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

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

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

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

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

aws sns create-topic --name pinpointsmsvoice

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

重要提示:将 替换为您的 AWS 区域。然后,将 替换为您的 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"
    }
}

5.    通过运行以下 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

6.    使用 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 的输入请求文件。然后,复制以下目标参数并粘贴到文件中:

重要提示:将 替换为您的 AWS 区域。然后,将 替换为您的 AWS 账户 ID。将 替换为 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 的输入请求文件。然后,复制以下目标参数并粘贴到文件中:

重要提示:将 替换为您的 AWS 区域。然后,将 替换为您的 AWS 账户 ID。将 Name_of_Kinesis_Firehose 替换为 Amazon Kinesis Data Firehose 流的名称。将 替换为您的 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 存储桶中。


这篇文章对您有帮助吗?


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