Comment configurer la journalisation des messages vocaux Amazon Pinpoint pour l'API Amazon Pinpoint SMS et Voice v1 ?

Dernière mise à jour : 12/08/2022

Je souhaite surveiller l'état des messages vocaux que j'envoie via Amazon Pinpoint. Comment puis-je procéder ?

Brève description

Pour journaliser l'état des messages vocaux Amazon Pinpoint, vous devez configurer une destination d'événements. Une fois la destination d'événements configurée, celle-ci reçoit les données de réponse concernant les messages vocaux que vous envoyez via Amazon Pinpoint.

Vous pouvez configurer l'une ou plusieurs des ressources AWS suivantes en tant que destinations d'événements vocaux Amazon Pinpoint :

Pour configurer une destination d'événements, vous pouvez utiliser les API de messagerie textuelle et vocale Amazon Pinpoint ou l'un des kits SDK AWS.

Remarque : la résolution suivante s'applique uniquement aux SMS Amazon Pinpoint et à l'API Voice v1. Pour l'API Amazon Pinpoint SMS and Voice v2, consultez Comment configurer la journalisation des messages vocaux Amazon Pinpoint pour l'API Amazon Pinpoint SMS et Voice v2 ?

Solution

Les exemples de procédures suivants montrent comment utiliser les API de messagerie textuelle et vocale Amazon Pinpoint pour créer une destination d'événements. Pour que chaque exemple de configuration fonctionne, vous devez utiliser l'opération d'API SendVoiceMessage afin d'envoyer des messages vocaux. La requête d'API doit également transmettre le nom de votre ensemble de configuration dans le paramètre ConfigurationSetName. Pour obtenir un exemple de code, consultez Envoi de messages vocaux dans le Guide du développeur Amazon Pinpoint.

Remarque : si vous recevez des erreurs lors de l'exécution de commandes depuis l'interface de la ligne de commande AWS (AWS CLI), assurez-vous d'utiliser la version la plus récente d'AWS CLI. Si les journaux vocaux ne se remplissent pas une fois que vous avez effectué l'une de ces procédures, veuillez consulter l'article suivant : Pourquoi mes journaux de messages vocaux Amazon Pinpoint ne se remplissent pas ?.

Pour configurer une rubrique Amazon SNS en tant que destination d'événements vocaux Amazon Pinpoint

1.    Assurez-vous que la stratégie d'accès à votre rubrique SNS inclut l'autorisation suivante. Cela permet au serveur Amazon Pinpoint de transmettre des journaux :

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

2.    Créez un ensemble de configuration en exécutant la commande create-configuration-set de l'AWS CLI suivante :

Remarque : vous pouvez remplacer VoiceSNS par n'importe quel nom pour votre ensemble de configuration.

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

3.    Abonnez le point de terminaison pour lequel vous souhaitez recevoir les journaux de messages vocaux à une rubrique Amazon SNS existante ou à une nouvelle rubrique. Pour obtenir des instructions, consultez Pour abonner un point de terminaison à une rubrique Amazon SNS dans le Guide du développeur Amazon SNS.

Remarque : pour créer une rubrique Amazon SNS à l'aide de l'AWS CLI, exécutez la commande create-topic suivante :

aws sns create-topic --name pinpointsmsvoice

4.    Dans un éditeur de texte, créez un fichier de requête d'entrée nommé SNSDestination.json. Ensuite, copiez et collez les paramètres de destination suivants dans le fichier :

Important : remplacez par votre région AWS. Remplacez par votre ID de compte AWS. Remplacez pinpointsmsvoice par le nom de votre rubrique Amazon SNS. Vous pouvez modifier les valeurs MatchingEventTypes pour inclure uniquement les types d'événements que vous souhaitez journaliser.

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

5.    Mappez l'ensemble de configuration vers les paramètres de destination en exécutant la commande create-configuration-set-event-destination suivante :

Important : assurez-vous de remplacer VoiceSNS par le nom de votre ensemble de configuration.

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

6.    Testez la configuration en envoyant un message vocal Amazon Pinpoint à l'aide de l'opération d'API SendVoiceMessage. Au bout de quelques minutes, l'événement apparaît sur le point de terminaison abonné à la rubrique Amazon SNS.

Important : assurez-vous que le paramètre ConfigurationSetName de la requête d'API correspond au nom de votre ensemble de configuration.

Pour configurer CloudWatch Logs en tant que destination d'événements vocaux Amazon Pinpoint

1.    Créez un ensemble de configuration en exécutant la commande create-configuration-set de l'AWS CLI suivante :

Remarque : vous pouvez remplacer VoiceCW par n'importe quel nom pour votre ensemble de configuration.

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

2.    Créez un nouveau groupe de journaux CloudWatch pour recevoir les journaux de messages vocaux en exécutant la commande create-log-group suivante :

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

-ou-

Utilisez un groupe de journaux CloudWatch existant pour effectuer les étapes suivantes.

3.    Obtenez l'ARN de votre groupe de journaux CloudWatch en procédant comme suit :
Ouvrez la console CloudWatch.
Dans le volet de navigation de gauche, choisissez Logs (Journaux). Choisissez ensuite Log groups (Groupes de journaux).
Dans la colonne Log group (Groupe de journaux), choisissez le nom de votre groupe de journaux.
Dans le volet Log group details (Détails du groupe de journaux), copiez la valeur ARN. Il s'agit de l'ARN de votre groupe de journaux.

4.    Créez un nouveau rôle AWS Identity and Access Management (IAM) que le service Amazon Pinpoint doit assumer. Pour obtenir des instructions, consultez Création d'un rôle pour un service AWS (console) ou Création d'un rôle pour un service (AWS CLI). Lorsque vous configurez le rôle, modifiez la politique d'approbation du rôle pour qu'elle inclue l'instruction d'autorisations suivante dans la section principal de la politique :

Remarque : cette instruction d'autorisations autorise le service sms-voice à assumer le rôle IAM.

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

5.    Modifiez la politique d'autorisations du rôle IAM pour qu'elle inclue l'instruction d'autorisations suivante :

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

Remarque : cette instruction d'autorisations accorde l'autorisation d'appeler des opérations d'API CloudWatch Logs spécifiques. Pour plus d'informations, veuillez consulter la référence des autorisations CloudWatch Logs.

6.    Dans un éditeur de texte, créez un fichier de requête d'entrée nommé CloudWatchDestination.json. Ensuite, copiez et collez les paramètres de destination suivants dans le fichier :

Important : remplacez par votre région AWS. Remplacez par votre ID de compte AWS. Remplacez par le nom du rôle IAM. Vous pouvez modifier les valeurs MatchingEventTypes pour inclure uniquement les types d'événements que vous souhaitez journaliser.

{
    "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.    Mappez l'ensemble de configuration vers les paramètres de destination en exécutant la commande create-configuration-set-event-destination suivante :

Important : assurez-vous de remplacer VoiceCW par le nom de votre ensemble de configuration.

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

8.    Testez la configuration en envoyant un message vocal Amazon Pinpoint à l'aide de l'opération d'API SendVoiceMessage. Au bout de quelques minutes, l'événement apparaît dans le groupe de journaux CloudWatch.

Pour configurer un flux Kinesis Data Firehose en tant que destination d'événements vocaux Amazon Pinpoint

1.    Créez un ensemble de configuration en exécutant la commande create-configuration-set de l'AWS CLI suivante :

Remarque : vous pouvez remplacer VoiceKinesis par n'importe quel nom pour votre ensemble de configuration.

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

2.    Créez un flux de diffusion Kinesis Data Firehose. Pour le paramètre Destination, choisissez Amazon Simple Storage Service (Amazon S3).

Important : acceptez la fonction de service IAM par défaut. Copiez ensuite le nom de la fonction de service IAM dans votre presse-papiers. Vous aurez besoin du nom du rôle pour les étapes suivantes.

3.    Modifiez la politique d'approbation de la fonction de service IAM pour qu'elle inclue l'instruction d'autorisations suivante dans la section principal de la politique :

Remarque : cette instruction d'autorisations autorise le service sms-voice à assumer le rôle IAM.

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

4.    Modifiez la politique d'autorisations de la fonction de service IAM pour qu'elle inclue l'instruction d'autorisations suivante :

Important : ne supprimez aucune des instructions d'autorisations par défaut de la fonction de service IAM.

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

5.    Dans un éditeur de texte, créez un fichier de requête d'entrée nommé KinesisFirehoseDestination.json. Ensuite, copiez et collez les paramètres de destination suivants dans le fichier :

Important : remplacez par votre région AWS. Remplacez par votre ID de compte AWS. Remplacez Name_of_Kinesis_Firehose par le nom de votre flux Amazon Kinesis Data Firehose. Remplacez par le nom de votre rôle IAM. Vous pouvez modifier les valeurs MatchingEventTypes pour inclure uniquement les types d'événements que vous souhaitez journaliser.

{
    "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.    Mappez l'ensemble de configuration vers les paramètres de destination en exécutant la commande create-configuration-set-event-destination suivante :

Important : assurez-vous de remplacer VoiceKinesis par le nom de votre ensemble de configuration.

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

7.    Testez la configuration en envoyant un message vocal Amazon Pinpoint à l'aide de l'opération d'API SendVoiceMessage. Au bout de quelques minutes, l'événement apparaît dans le compartiment Amazon S3 que vous avez configuré lorsque vous avez créé le flux Kinesis Data Firehose.


Cet article vous a-t-il été utile ?


Avez-vous besoin d'aide pour une question technique ou de facturation ?