Envoi d'un message - AWS Messagerie push destinée aux utilisateurs finaux

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Envoi d'un message

Le push de messagerie utilisateur AWS final API peut envoyer des notifications push transactionnelles à des identifiants d'appareils spécifiques. Cette section contient des exemples de code complets que vous pouvez utiliser pour envoyer des notifications push via le service Push de messagerie à l'utilisateur AWS final à API l'aide d'un AWS SDK.

Vous pouvez utiliser ces exemples pour envoyer des notifications push via n'importe quel service de notification push pris en charge par AWS End User Messaging Push. Actuellement, AWS End User Messaging Push prend en charge les canaux suivants : Firebase Cloud Messaging (FCM), Apple Push Notification Service (APNs), Baidu Cloud Push et Amazon Device Messaging (ADM).

Pour plus d'exemples de code sur les points de terminaison, les segments et les canaux, voir Exemples de code.

Note

Lorsque vous envoyez des notifications push via le service Firebase Cloud Messaging (FCM), utilisez le nom du service GCM dans votre appel au push API de messagerie utilisateur AWS final. Le service Google Cloud Messaging (GCM) a été interrompu par Google le 10 avril 2018. Toutefois, le AWS Final User Messaging Push API utilise le nom du GCM service pour les messages qu'il envoie via le FCM service afin de maintenir la compatibilité avec le API code écrit avant l'arrêt du GCM service.

GCM (AWS CLI)

L'exemple suivant utilise send-messages pour envoyer une notification GCM Push avec le. AWS CLI Remplacez token avec le jeton unique de l'appareil et 611e3e3cdd47474c9c1399a50example avec l'identifiant de votre application.

aws pinpoint send-messages \ --application-id 611e3e3cdd47474c9c1399a50example \ --message-request file://myfile.json \ --region us-west-2 Contents of myfile.json: { "Addresses": { "token": { "ChannelType" : 'GCM' } }, "MessageConfiguration": { "GCMMessage": { "Action": "URL", "Body": "This is a sample message", "Priority": "normal", "SilentPush": True, "Title": "My sample message", "TimeToLive": 30, "Url": "https://www.example.com" } } }

L'exemple suivant utilise send-messages pour envoyer une notification GCM push, en utilisant toutes les clés existantes, avec le. AWS CLI Remplacez token avec le jeton unique de l'appareil et 611e3e3cdd47474c9c1399a50example avec l'identifiant de votre application.

aws pinpoint send-messages \ --application-id 611e3e3cdd47474c9c1399a50example \ --message-request '{ "MessageConfiguration": { "GCMMessage":{ "RawContent": "{\"notification\": {\n \"title\": \"string\",\n \"body\": \"string\",\n \"android_channel_id\": \"string\",\n \"body_loc_args\": [\n \"string\"\n ],\n \"body_loc_key\": \"string\",\n \"click_action\": \"string\",\n \"color\": \"string\",\n \"icon\": \"string\",\n \"sound\": \"string\",\n \"tag\": \"string\",\n \"title_loc_args\": [\n \"string\"\n ],\n \"title_loc_key\": \"string\"\n },\"data\":{\"message\":\"hello in data\"} }", "TimeToLive" : 309744 } }, "Addresses": { "token": { "ChannelType":"GCM" } } }' \ --region us-east-1

L'exemple suivant utilise send-messages pour envoyer une notification GCM Push avec la charge utile du FCMv1 message à l'aide du. AWS CLI Remplacez token avec le jeton unique de l'appareil et 611e3e3cdd47474c9c1399a50example avec l'identifiant de votre application.

aws pinpoint send-messages \ --application-id 6a2dafd84bec449ea75fb773f4c41fa1 \ --message-request '{ "MessageConfiguration": { "GCMMessage":{ "RawContent": "{\n \"fcmV1Message\": \n {\n \"message\" :{\n \"notification\": {\n \"title\": \"string\",\n \"body\": \"string\"\n },\n \"android\": {\n \"priority\": \"high\",\n \"notification\": {\n \"title\": \"string\",\n \"body\": \"string\",\n \"icon\": \"string\",\n \"color\": \"string\",\n \"sound\": \"string\",\n \"tag\": \"string\",\n \"click_action\": \"string\",\n \"body_loc_key\": \"string\",\n \"body_loc_args\": [\n \"string\"\n ],\n \"title_loc_key\": \"string\",\n \"title_loc_args\": [\n \"string\"\n ],\n \"channel_id\": \"string\",\n \"ticker\": \"string\",\n \"sticky\": true,\n \"event_time\": \"2024-02-06T22:11:55Z\",\n \"local_only\": true,\n \"notification_priority\": \"PRIORITY_UNSPECIFIED\",\n \"default_sound\": false,\n \"default_vibrate_timings\": true,\n \"default_light_settings\": false,\n \"vibrate_timings\": [\n \"22s\"\n ],\n \"visibility\": \"VISIBILITY_UNSPECIFIED\",\n \"notification_count\": 5,\n \"light_settings\": {\n \"color\": {\n \"red\": 1,\n \"green\": 2,\n \"blue\": 3,\n \"alpha\": 6\n },\n \"light_on_duration\": \"112s\",\n \"light_off_duration\": \"1123s\"\n },\n \"image\": \"string\"\n },\n \"data\": {\n \"dataKey1\": \"priority message\",\n \"data_key_3\": \"priority message\",\n \"dataKey2\": \"priority message\",\n \"data_key_5\": \"priority message\"\n },\n \"ttl\": \"10023.32s\"\n },\n \"apns\": {\n \"payload\": {\n \"aps\": {\n \"alert\": {\n \"subtitle\": \"string\",\n \"title-loc-args\": [\n \"string\"\n ],\n \"title-loc-key\": \"string\",\n \"launch-image\": \"string\",\n \"subtitle-loc-key\": \"string\",\n \"subtitle-loc-args\": [\n \"string\"\n ],\n \"loc-args\": [\n \"string\"\n ],\n \"loc-key\": \"string\",\n \"title\": \"string\",\n \"body\": \"string\"\n },\n \"thread-id\": \"string\",\n \"category\": \"string\",\n \"content-available\": 1,\n \"mutable-content\": 1,\n \"target-content-id\": \"string\",\n \"interruption-level\": \"string\",\n \"relevance-score\": 25,\n \"filter-criteria\": \"string\",\n \"stale-date\": 6483,\n \"content-state\": {},\n \"timestamp\": 673634,\n \"dismissal-date\": 4,\n \"attributes-type\": \"string\",\n \"attributes\": {},\n \"sound\": \"string\",\n \"badge\": 5\n }\n }\n },\n \"webpush\": {\n \"notification\": {\n \"permission\": \"granted\",\n \"maxActions\": 2,\n \"actions\": [\n \"title\"\n ],\n \"badge\": \"URL\",\n \"body\": \"Hello\",\n \"data\": {\n \"hello\": \"hey\"\n },\n \"dir\": \"auto\",\n \"icon\": \"icon\",\n \"image\": \"image\",\n \"lang\": \"string\",\n \"renotify\": false,\n \"requireInteraction\": true,\n \"silent\": false,\n \"tag\": \"tag\",\n \"timestamp\": 1707259524964,\n \"title\": \"hello\",\n \"vibrate\": [\n 100,\n 200,\n 300\n ]\n },\n \"data\": {\n \"data1\": \"priority message\",\n \"data2\": \"priority message\",\n \"data12\": \"priority message\",\n \"data3\": \"priority message\"\n }\n },\n \"data\": {\n \"data7\": \"priority message\",\n \"data5\": \"priority message\",\n \"data8\": \"priority message\",\n \"data9\": \"priority message\"\n }\n }\n \n}\n}", "TimeToLive" : 309744 } }, "Addresses": { token: { "ChannelType":"GCM" } } }' \ --region us-east-1

si vous utilisez ImageUrl field forGCM, pinpoint envoie le champ sous forme de notification de données, la clé étantpinpoint.notification.imageUrl, ce qui peut empêcher le rendu de l'image prête à l'emploi. Veuillez utiliser RawContent ou ajouter la gestion des clés de données, par exemple en intégrant votre application à AWS Amplify.

Safari (AWS CLI)

Vous pouvez utiliser AWS End User Messaging Push pour envoyer des messages aux ordinateurs macOS qui utilisent le navigateur Web Safari d'Apple. Pour envoyer un message au navigateur Safari, vous devez spécifier le contenu brut du message et inclure un attribut spécifique dans la charge utile du message. Vous pouvez le faire en créant un modèle de notification push avec une charge utile de message brute, ou en spécifiant le contenu brut du message directement dans un message de campagne, dans le guide de l'utilisateur Amazon Pinpoint.

Note

Cet attribut spécial est requis pour les envois vers les ordinateurs portables et de bureau macOS qui utilisent le navigateur Web Safari. Il n'est pas obligatoire pour l'envoi vers des appareils iOS tels que iPhones etiPads.

Pour envoyer un message aux navigateurs Web Safari, vous devez spécifier la charge utile brute du message. La charge utile du message brut doit inclure un tableau url-args dans l’objet aps. Le tableau url-args est nécessaire pour envoyer des notifications push au navigateur Web Safari. Toutefois, il est acceptable que le tableau contienne un seul élément vide.

L'exemple suivant utilise send-messages pour envoyer une notification au navigateur Web Safari avec le. AWS CLI Remplacez token avec le jeton unique de l'appareil et 611e3e3cdd47474c9c1399a50example avec l'identifiant de votre application.

aws pinpoint send-messages \ --application-id 611e3e3cdd47474c9c1399a50example \ --message-request '{ "Addresses": { "token": { "ChannelType":"APNS" } }, "MessageConfiguration": { "APNSMessage": { "RawContent": "{\"aps\": {\"alert\": { \"title\": \"Title of my message\", \"body\": \"This is a push notification for the Safari web browser.\"},\"content-available\": 1,\"url-args\": [\"\"]}}" } } }' \ --region us-east-1

Pour plus d’informations sur les notifications push Safari, consultez Configuration des notifications push Safari sur le site Web des développeurs Apple.

APNS (AWS CLI)

L'exemple suivant utilise send-messages pour envoyer une notification APNS Push avec le. AWS CLI Remplacez token avec le jeton unique de l'appareil, 611e3e3cdd47474c9c1399a50example avec l'identifiant de votre application, et GAME_INVITATION avec un identifiant unique.

aws pinpoint send-messages \ --application-id 611e3e3cdd47474c9c1399a50example \ --message-request '{ "Addresses": { "token": { "ChannelType":"APNS" } }, "MessageConfiguration": { "APNSMessage": { "RawContent": "{\"aps\" : {\"alert\" : {\"title\" : \"Game Request\",\"subtitle\" : \"Five Card Draw\",\"body\" : \"Bob wants to play poker\"},\"category\" : \"GAME_INVITATION\"},\"gameID\" : \"12345678\"}" } } }' \ --region us-east-1
JavaScript (Node.js)

Utilisez cet exemple pour envoyer des notifications push en utilisant le AWS SDK for JavaScript dans le fichier Node.js. Cet exemple suppose que vous avez déjà installé et configuré le SDK for JavaScript dans Node.js.

Cet exemple suppose que vous utilisez un fichier d'informations d'identification partagé pour spécifier la clé d'accès et la clé d'accès secrète d'un utilisateur existant. Pour plus d'informations, consultez la section Configuration des informations d'identification JavaScript dans AWS SDK le formulaire du guide du développeur Node.js.

'use strict'; const AWS = require('aws-sdk'); // The AWS Region that you want to use to send the message. For a list of // AWS Regions where the API is available const region = 'us-east-1'; // The title that appears at the top of the push notification. var title = 'Test message sent from End User Messaging Push.'; // The content of the push notification. var message = 'This is a sample message sent from End User Messaging Push by using the ' + 'AWS SDK for JavaScript in Node.js'; // The application ID that you want to use when you send this // message. Make sure that the push channel is enabled for the project that // you choose. var applicationId = 'ce796be37f32f178af652b26eexample'; // An object that contains the unique token of the device that you want to send // the message to, and the push service that you want to use to send the message. var recipient = { 'token': 'a0b1c2d3e4f5g6h7i8j9k0l1m2n3o4p5q6r7s8t9u0v1w2x3y4z5a6b7c8d8e9f0', 'service': 'GCM' }; // The action that should occur when the recipient taps the message. Possible // values are OPEN_APP (opens the app or brings it to the foreground), // DEEP_LINK (opens the app to a specific page or interface), or URL (opens a // specific URL in the device's web browser.) var action = 'URL'; // This value is only required if you use the URL action. This variable contains // the URL that opens in the recipient's web browser. var url = 'https://www.example.com'; // The priority of the push notification. If the value is 'normal', then the // delivery of the message is optimized for battery usage on the recipient's // device, and could be delayed. If the value is 'high', then the notification is // sent immediately, and might wake a sleeping device. var priority = 'normal'; // The amount of time, in seconds, that the push notification service provider // (such as FCM or APNS) should attempt to deliver the message before dropping // it. Not all providers allow you specify a TTL value. var ttl = 30; // Boolean that specifies whether the notification is sent as a silent // notification (a notification that doesn't display on the recipient's device). var silent = false; function CreateMessageRequest() { var token = recipient['token']; var service = recipient['service']; if (service == 'GCM') { var messageRequest = { 'Addresses': { [token]: { 'ChannelType' : 'GCM' } }, 'MessageConfiguration': { 'GCMMessage': { 'Action': action, 'Body': message, 'Priority': priority, 'SilentPush': silent, 'Title': title, 'TimeToLive': ttl, 'Url': url } } }; } else if (service == 'APNS') { var messageRequest = { 'Addresses': { [token]: { 'ChannelType' : 'APNS' } }, 'MessageConfiguration': { 'APNSMessage': { 'Action': action, 'Body': message, 'Priority': priority, 'SilentPush': silent, 'Title': title, 'TimeToLive': ttl, 'Url': url } } }; } else if (service == 'BAIDU') { var messageRequest = { 'Addresses': { [token]: { 'ChannelType' : 'BAIDU' } }, 'MessageConfiguration': { 'BaiduMessage': { 'Action': action, 'Body': message, 'SilentPush': silent, 'Title': title, 'TimeToLive': ttl, 'Url': url } } }; } else if (service == 'ADM') { var messageRequest = { 'Addresses': { [token]: { 'ChannelType' : 'ADM' } }, 'MessageConfiguration': { 'ADMMessage': { 'Action': action, 'Body': message, 'SilentPush': silent, 'Title': title, 'Url': url } } }; } return messageRequest } function ShowOutput(data){ if (data["MessageResponse"]["Result"][recipient["token"]]["DeliveryStatus"] == "SUCCESSFUL") { var status = "Message sent! Response information: "; } else { var status = "The message wasn't sent. Response information: "; } console.log(status); console.dir(data, { depth: null }); } function SendMessage() { var token = recipient['token']; var service = recipient['service']; var messageRequest = CreateMessageRequest(); // Specify that you're using a shared credentials file, and specify the // IAM profile to use. var credentials = new AWS.SharedIniFileCredentials({ profile: 'default' }); AWS.config.credentials = credentials; // Specify the AWS Region to use. AWS.config.update({ region: region }); //Create a new Pinpoint object. var pinpoint = new AWS.Pinpoint(); var params = { "ApplicationId": applicationId, "MessageRequest": messageRequest }; // Try to send the message. pinpoint.sendMessages(params, function(err, data) { if (err) console.log(err); else ShowOutput(data); }); } SendMessage()
Python

Utilisez cet exemple pour envoyer des notifications push à l'aide du kit AWS SDK for Python (Boto3). Cet exemple suppose que vous avez déjà installé et configuré le SDK pour Python (Boto3).

Cet exemple suppose que vous utilisez un fichier d'informations d'identification partagé pour spécifier la clé d'accès et la clé d'accès secrète d'un utilisateur existant. Pour plus d'informations, consultez la section Informations d'identification dans le AWS SDKmanuel de référence pour Python (Boto3). API

import json import boto3 from botocore.exceptions import ClientError # The AWS Region that you want to use to send the message. For a list of # AWS Regions where the API is available region = "us-east-1" # The title that appears at the top of the push notification. title = "Test message sent from End User Messaging Push." # The content of the push notification. message = ("This is a sample message sent from End User Messaging Push by using the " "AWS SDK for Python (Boto3).") # The application ID to use when you send this message. # Make sure that the push channel is enabled for the project or application # that you choose. application_id = "ce796be37f32f178af652b26eexample" # A dictionary that contains the unique token of the device that you want to send the # message to, and the push service that you want to use to send the message. recipient = { "token": "a0b1c2d3e4f5g6h7i8j9k0l1m2n3o4p5q6r7s8t9u0v1w2x3y4z5a6b7c8d8e9f0", "service": "GCM" } # The action that should occur when the recipient taps the message. Possible # values are OPEN_APP (opens the app or brings it to the foreground), # DEEP_LINK (opens the app to a specific page or interface), or URL (opens a # specific URL in the device's web browser.) action = "URL" # This value is only required if you use the URL action. This variable contains # the URL that opens in the recipient's web browser. url = "https://www.example.com" # The priority of the push notification. If the value is 'normal', then the # delivery of the message is optimized for battery usage on the recipient's # device, and could be delayed. If the value is 'high', then the notification is # sent immediately, and might wake a sleeping device. priority = "normal" # The amount of time, in seconds, that the push notification service provider # (such as FCM or APNS) should attempt to deliver the message before dropping # it. Not all providers allow you specify a TTL value. ttl = 30 # Boolean that specifies whether the notification is sent as a silent # notification (a notification that doesn't display on the recipient's device). silent = False # Set the MessageType based on the values in the recipient variable. def create_message_request(): token = recipient["token"] service = recipient["service"] if service == "GCM": message_request = { 'Addresses': { token: { 'ChannelType': 'GCM' } }, 'MessageConfiguration': { 'GCMMessage': { 'Action': action, 'Body': message, 'Priority' : priority, 'SilentPush': silent, 'Title': title, 'TimeToLive': ttl, 'Url': url } } } elif service == "APNS": message_request = { 'Addresses': { token: { 'ChannelType': 'APNS' } }, 'MessageConfiguration': { 'APNSMessage': { 'Action': action, 'Body': message, 'Priority' : priority, 'SilentPush': silent, 'Title': title, 'TimeToLive': ttl, 'Url': url } } } elif service == "BAIDU": message_request = { 'Addresses': { token: { 'ChannelType': 'BAIDU' } }, 'MessageConfiguration': { 'BaiduMessage': { 'Action': action, 'Body': message, 'SilentPush': silent, 'Title': title, 'TimeToLive': ttl, 'Url': url } } } elif service == "ADM": message_request = { 'Addresses': { token: { 'ChannelType': 'ADM' } }, 'MessageConfiguration': { 'ADMMessage': { 'Action': action, 'Body': message, 'SilentPush': silent, 'Title': title, 'Url': url } } } else: message_request = None return message_request # Show a success or failure message, and provide the response from the API. def show_output(response): if response['MessageResponse']['Result'][recipient["token"]]['DeliveryStatus'] == "SUCCESSFUL": status = "Message sent! Response information:\n" else: status = "The message wasn't sent. Response information:\n" print(status, json.dumps(response,indent=4)) # Send the message through the appropriate channel. def send_message(): token = recipient["token"] service = recipient["service"] message_request = create_message_request() client = boto3.client('pinpoint',region_name=region) try: response = client.send_messages( ApplicationId=application_id, MessageRequest=message_request ) except ClientError as e: print(e.response['Error']['Message']) else: show_output(response) send_message()

Ressources supplémentaires