-
Notifications
You must be signed in to change notification settings - Fork 18
API Java client Documentation
Cette documentation s'adresse aux développeurs intéressés par l'utilisation de la API Java client de notification CDS-SNC pour l'envoi d'e-mails ou de messages texte.
Le système de notification CDS-SNC est basé sur le travail effectué par GOV.UK de Notification.
Pour vous connecter au système de notification CDS-SNC, vous devez utiliser un client GOV.UK. Cela signifie que certains messages d'erreur que vous obtenez sont spécifiques à GOV.UK Notification et vous lient directement à leur instance. Nous en sommes conscients et nous prévoyons de changer cela à l'avenir avec le développement de nos propres clients.
Nous vous recommandons d'utiliser cette bibliothèque client plutôt que l'API directement, car il n'y a pas de documentation pour utiliser l'API de cette façon
'notifications-java-client` se déploie à Bintray.
Aller à la page GOV.UK Notification Java page client sur Bintray [lien externe]:
- Sélectionnez Set me up! et utilisez les instructions de téléchargement appropriées.
- Allez dans la section Paramètres de construction Maven de la page et copiez l'extrait de code de dépendance approprié.
Consulter le client journal des modifications pour le numéro de version et les dernières mises à jour.
Ajoutez ce code à votre application :
import uk.gov.service.Notification.NotificationClient;
NotificationClient client = new NotificationClient(apiKey, apiEndpoint);
Remarque: Laisser un /
à la fin de votre apiEndpoint causera une erreur template missing required fields
Pour obtenir une clé API,identifiez-vous et allez à la page API integration. Vous trouverez plus d'informations dans la sectionclé API de la documentation.
Remarque: Changez votre endpoint a api.notification.alpha.canada.ca
Vous pouvez utiliser le système pour envoyer des messages texte ou des e-mails.
SendSmsResponse response = client.sendSms(
templateId,
phoneNumber,
personalisation,
reference,
smsSenderId
);
s'identifier and go to the Templates page pour rechercher l'ID de modèle..
String templateId="f33517ff-2a88-4f6e-b855-c550268ce08a";
Le numéro de téléphone du destinataire du SMS. Ce numéro peut être un numéro canadien ou international
String phoneNumber="555-555-5555";
Si un modèle comporte des champs réservés à des informations personnalisées telles que le nom ou le numéro de référence, vous devez fournir leurs valeurs dans une carte. Par exemple :
Map<String, Object> personalisation = new HashMap<>();
personalisation.put("first_name", "Amala");
personalisation.put("application_date", "2019-01-01");
personalisation.put("list", listOfItems); // Will appear as a comma separated list in the message
Si un modèle n'a pas de champs de remplacement pour les informations personnalisées, vous devez passer dans une carte vide ou 'null'.
Un identifiant unique que vous créez. Cette référence identifie un seul avis unique ou un lot d'avis. Il ne doit pas contenir d'informations personnelles telles que le nom ou l'adresse postale. Si vous n'avez pas de référence, vous devez passer dans une chaîne vide ou null
.
String reference='STRING';
Un identificateur exclusif de l'expéditeur de la notification par SMS. Pour trouver cette information, allez à l'écran Text Message sender settings :
- Connectez-vous à votre compte.
- aller à Paramètres.
- Si vous devez changer de service, sélectionnez Changer de service dans le coin supérieur droit de l'écran et sélectionnez le bon.
- aller à les __ Paramètres du message texte__ et sélectionnez Modifier sur la ligne Envoyer des messages textes.
Dans cet écran, vous pouvez ensuite effectuer les opérations suivantes:
- copier sender ID que vous voulez utiliser et le coller dans la méthode
- sélectionnez Change pour changer l'expéditeur par défaut que le service utilisera, et sélectionnez Save.
String smsSenderId='8e222534-7f05-4972-86e3-17c5d9f894e2'
Si vous n'avez pas un `smsSenderId', vous pouvez omettre cet modificateur.
Si la demande au client est réussie, le client renvoie une SendSmsResponse
.:
UUID notificationId;
Optional<String> reference;
UUID templateId;
int templateVersion;
String templateUri;
String body;
Optional<String> fromNumber;
Si vous utilisez la touchetest clé API, tous vos messages reviennent avec un statut `delivered'.
Tous les messages envoyés à l'aide des touchesteam and whitelist oulive apparaissent sur votre tableau de bord.
Si la demande n'aboutit pas, le client renvoie un NotificationClientException
contenant le code d'erreur correspondant:
httpResult | Message | réparer |
---|---|---|
400 |
[{ "error": "BadRequestError", "message": "Can't send to this recipient using a team-only API key" ]}
|
Utilisez le bon type de clé API |
400 |
[{ "error": "BadRequestError", "message": "Can't send to this recipient when service is in trial mode" }]
|
Votre service ne peut pas envoyer cette notification en mode d'essai. |
403 |
[{ "error": "AuthError", "message": "Error: Your system clock must be accurate to within 30 seconds" }]
|
Vérifier l'horloge de votre système |
403 |
[{ "error": "AuthError", "message": "Invalid token: signature, api token not found" }]
|
Utilisez le bon type de clé API |
429 |
[{ "error": "RateLimitError", "message": "Exceeded rate limit for key type TEAM/TEST/LIVE of 3000 requests per 60 seconds" }]
|
Dépassement de la limite de débit API |
429 |
[{ "error": "TooManyRequestsError", "message": "Exceeded send limits (LIMIT NUMBER) for today" }]
|
Refer to service limits for the limit number |
500 |
[{ "error": "Exception", "message": "Internal server error" }]
|
limite d'envoi dépassée |
SendEmailResponse response = client.sendEmail(
templateId,
emailAddress,
personalisation,
reference,
emailReplyToId
);
s'identifier and go to the Templates page pour rechercher l'ID de modèle
String templateId="f33517ff-2a88-4f6e-b855-c550268ce08a";
L'adresse courriel du destinataire
String emailAddress='sender@something.com';
Si un modèle comporte des champs réservés à des informations personnalisées telles que le nom ou la date d'application, vous devez fournir leurs valeurs dans une carte. Par exemple:
Map<String, Object> personalisation = new HashMap<>();
personalisation.put("first_name", "Amala");
personalisation.put("application_date", "2018-01-01");
personalisation.put("list", listOfItems); // Will appear as a bulleted list in the message
Si un modèle n'a pas de champs de remplacement pour les informations personnalisées, vous devez passer dans une carte vide ou 'null'.
Un identifiant unique que vous créez. Cette référence identifie un seul avis unique ou un lot d'avis. Il ne doit pas contenir d'informations personnelles telles que le nom ou l'adresse postale. Si vous n'avez pas de référence, vous devez passer dans une chaîne vide ou 'null'.
String reference='STRING';
Il s'agit d'une réponse par courriel à l'adresse que vous avez indiquée pour recevoir les réponses de vos utilisateurs. Votre service ne peut pas être mis en service tant que vous n'avez pas configuré au moins une de ces adresses courriels. A mettre en place :
- Connectez-vous à votre compte.
- aller à Paramètres.
- Si vous devez changer de service, sélectionnez Changer de service dans le coin supérieur droit de l'écran et sélectionnez le bon.
- aller à Paramètres du courriel et sélectionnez Modifier sur la ligne Adresses courriel de réponse.
- sélectionnez Configurer pour spécifier l'adresse e-mail de réception des réponses, puis sélectionnez Save.
String emailReplyToId='8e222534-7f05-4972-86e3-17c5d9f894e2'
Si vous n'avez pas de `emailReplyToId', vous pouvez omettre cet modificateur.
Si la demande au client est réussie, le client renvoie une SendEmailResponse
:
UUID notificationId;
Optional<String> reference;
UUID templateId;
int templateVersion;
String templateUri;
String body;
String subject;
Optional<String> fromEmail;
Si la demande n'aboutit pas, le client renvoie un 'NotificationClientException' contenant le code d'erreur correspondant:
httpResult | Message | réparer |
---|---|---|
400 |
[{ "error": "BadRequestError", "message": "Can't send to this recipient using a team-only API key" ]}
|
Utiliser le bon type de clé API |
400 |
[{ "error": "BadRequestError", "message": "Can't send to this recipient when service is in trial mode - see https://www.notifications.service.gov.uk/trial-mode" }]
|
Votre service ne peut pas envoyer cette notification en mode d'essai. |
403 |
[{ "error": "AuthError", "message": "Error: Your system clock must be accurate to within 30 seconds" }]
|
Vérifier l'horloge de votre système |
403 |
[{ "error": "AuthError", "message": "Invalid token: signature, api token not found" }]
|
Utilisez la bonne clé API. |
429 |
[{ "error": "RateLimitError", "message": "Exceeded rate limit for key type TEAM/TEST/LIVE of 3000 requests per 60 seconds" }]
|
Vous avez dépassé votre limite de débit API |
429 |
[{ "error": "TooManyRequestsError", "message": "Exceeded send limits (LIMIT NUMBER) for today" }]
|
Vous avez dépassé votre limite de débit API |
500 |
[{ "error": "Exception", "message": "Internal server error" }]
|
Notification n'a pas été en mesure de traiter la demande, envoyez à nouveau votre notification. |
Envoyez des fichiers sans avoir besoin de pièces jointes.
Il s'agit d'une fonction sur invitation seulement. Contactez-nous pour l'activer.
Pour envoyer un fichier par courriel, ajoutez un champ de remplacement au modèle, puis téléchargez un fichier. Le champ de l'espace réservé contiendra un lien sécurisé pour télécharger le fichier.
- Connectez-vous à votre compte.
- aller à Modèles et sélectionnez le modèle de courriel approprié.
- Ajoutez un champ de caractère de remplissage au modèle de courriel à l'aide de crochets doubles. Par exemple :
"trouvez votre dossier ici: ((link_to_document))"
Le fichier que vous téléchargez doit être un fichier PDF plus petit que 2MB.
- Convertir le PDF en un fichier
byte[]
. - Passez
byte[]
à l'argument de personnalisation. - Appelez le sendEmail method.
Par exemple:
ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource("document_to_upload.pdf").getFile());
byte [] fileContents = FileUtils.readFileToByteArray(file);
HashMap<String, Object> personalisation = new HashMap();
personalisation.put("link_to_document", client.prepareUpload(fileContents));
client.sendEmail(templateId,
emailAddress,
personalisation,
reference,
emailReplyToId);
Si la requête n'aboutit pas, le client renvoie un HTTPError
contenant le code d'erreur correspondant.
error.status_code | error.message | réparer |
---|---|---|
400 |
[{ "error": "BadRequestError", "message": "Can't send to this recipient using a team-only API key" ]}
|
Utilisez la bonne clé API) |
400 |
[{ "error": "BadRequestError", "message": "Can't send to this recipient when service is in trial mode - see https://www.notifications.service.gov.uk/trial-mode" }]
|
Impossible de l'envoyer à ce destinataire lorsque le service est en mode d'essai |
400 |
[{ "error": "BadRequestError", "message": "Unsupported document type '{}'. Supported types are: {}" }]
|
Le document que vous téléchargez doit être un fichier PDF |
400 |
[{ "error": "BadRequestError", "message": "Document didn't pass the virus scan" }]
|
Le document que vous téléchargez doit être exempt de virus. |
400 |
[{ "error": "BadRequestError", "message": "Service is not allowed to send documents" }]
|
Contactez l'équipe SNC Notification |
403 |
[{ "error": "AuthError", "message": "Error: Your system clock must be accurate to within 30 seconds" }]
|
vérifier l'horloge de votre système |
403 |
[{ "error": "AuthError", "message": "Invalid token: signature, api token not found" }]
|
Utilisez la bonne clé API |
429 |
[{ "error": "RateLimitError", "message": "Exceeded rate limit for key type TEAM/TEST/LIVE of 3000 requests per 60 seconds" }]
|
Dépassement de la limite de débit de l'API |
429 |
[{ "error": "TooManyRequestsError", "message": "Exceeded send limits (LIMIT NUMBER) for today" }]
|
Dépassement de la limite d'envoi |
500 |
[{ "error": "Exception", "message": "Internal server error" }]
|
Notification n'a pas été en mesure de traiter la demande, envoyez à nouveau votre notification. |
N\A |
Document is larger than 2MB |
Le document est plus grand que 2MB |
Statut | Renseignements |
---|---|
Created | Notification a placé le message dans une file d'attente, prêt à être envoyé au fournisseur. Il ne devrait rester dans cet état que quelques secondes. |
Sending | Notification a envoyé le message au fournisseur. Le fournisseur tentera de transmettre le message au destinataire. Notification attend les informations de livraison. |
Delivered | Le message a été transmis avec succès. |
Failed | Ceci couvre tous les états de défaillance: - permanent-failure - "Le fournisseur n'a pas pu livrer le message parce que l'adresse électronique ou le numéro de téléphone était erroné. Vous devez supprimer ces adresses e-mail ou numéros de téléphone de votre base de données. Vous serez toujours facturé pour les messages texte à des numéros qui n'existent pas."- temporary-failure - "Le fournisseur n'a pas pu livrer le message après avoir essayé pendant 72 heures. Cela peut se produire lorsque la boîte de réception du destinataire est pleine ou lorsque son téléphone est éteint. Vous pouvez réessayer d'envoyer le message. Vous devrez quand même payer des frais pour l'envoi de messages texte à des téléphones qui n'acceptent pas les messages."- technical-failure - "Votre message n'a pas été envoyé parce qu'il y avait un problème entre Notification et le fournisseur. Vous devrez réessayer d'envoyer vos messages. Vous ne serez pas facturé pour les messages texte qui sont affectés par une panne technique." |
Statut | Renseignements |
---|---|
Pending | GOV.UK Notification is waiting for more delivery information. GOV.UK Notification received a callback from the provider but the recipient's device has not yet responded. Another callback from the provider determines the final status of the notification. |
Sent / Sent internationally | Le message a été envoyé à un numéro international. Dans certains pays, les réseaux mobiles ne fournissent plus d'informations de livraison. L'API Notification client renvoie cet état sous la forme " envoyé ". L'application Notification client renvoie ce statut comme Envoyé à l'international . |
Notification notification = client.getNotificationById(notificationId);
ID de l'avis. Vous pouvez trouver l'ID de notification dans la réponse à l'appel de la méthode de notification originale).
Vous pouvez aussi le trouver dans votre Tableau de bord.
- Connectez-vous à votre compte. Sélectionnez Tableau de bord.
- sélectionnez courriels envoyé ou messages textes envoyé
- Sélectionnez l'avis approprié.
- Copiez l'ID de notification à partir de l'URL de fin de page, par exemple
https://notification.alpha.canada.ca/services/af90d4cb-ae88-4a7c-a197-5c30c7db423b/notification/ID
.
Si la demande est acceptée, le client retourne un Notification
:
UUID id;
Optional<String> reference;
Optional<String> emailAddress;
Optional<String> phoneNumber;
Optional<String> line1;
Optional<String> line2;
Optional<String> line3;
Optional<String> line4;
Optional<String> line5;
Optional<String> line6;
Optional<String> postcode;
Optional<String> postage;
String notificationType;
String status;
UUID templateId;
int templateVersion;
String templateUri;
String body;
Optional<String subject;
DateTime createdAt;
Optional<DateTime> sentAt;
Optional<DateTime> completedAt;
Optional<DateTime> estimatedDelivery;
Optional<String> createdByName;
Si la demande n'aboutit pas, le client renvoie un NotificationClientException
contenant le code d'erreur correspondant.:
httpResult | Message | réparer |
---|---|---|
400 |
[{ "error": "ValidationError", "message": "id is not a valid UUID" }]
|
vérifiez la ID de la notification |
403 |
[{ "error": "AuthError", "message": "Error: Your system clock must be accurate to within 30 seconds" }]
|
Vérifier l'horloge de votre système |
403 |
[{ "error": "AuthError", "message": "Invalid token: signature, api token not found" }]
|
Utiliser la bonne clé API. |
404 |
[{ "error": "NoResultFound", "message": "No result found" }]
|
vérifiez la ID de la notification |
Cet appel API renvoie une page de 250 messages et statuts au maximum. Vous pouvez obtenir soit les messages les plus récents, soit des messages plus anciens en spécifiant un ID de notification particulier dans le modificateur olderThanId.
Vous ne pouvez obtenir l'état des messages que s'ils datent de sept jours ou plus récents.
NotificationList notification = client.getNotifications(
status,
notificationType,
reference,
olderThanId
);
Pour obtenir les messages les plus récents, vous devez passer un argument olderThanId' ou
null' vide.
Pour obtenir des messages plus anciens, passez l'ID d'une notification plus ancienne dans l'argument `olderThanId'. Ceci renvoie les messages les plus anciens suivants de l'ID d'avis spécifié.
Vous pouvez passer en arguments vides ou `null' pour ignorer ces filtres
status | descriptif | textes | courriel |
---|---|---|---|
created | Notification a placé le message dans une file d'attente, prêt à être envoyé au fournisseur. Il ne devrait rester dans cet état que quelques secondes. | Yes | Yes |
sending | Notification a envoyé le message au fournisseur. Le fournisseur tentera de transmettre le message au destinataire. Notification attend les informations de livraison. | Yes | Yes |
delivered | Le message a été transmis avec succès | Yes | Yes |
sent / sent internationally | Le message a été envoyé à un numéro international. Dans certains pays, les réseaux mobiles ne fournissent plus d'informations de livraison. | Yes | |
pending | Notification attend plus d'informations de livraison. Notification a reçu un rappel du fournisseur mais l'appareil du destinataire n'a pas encore répondu. Un autre rappel du fournisseur détermine le statut final de l'avis. |
Yes | |
failed | Retourne tous les états de défaillance: - défaillance permanente - défaillance temporaire - Défaillance technique |
Yes | Yes |
défaillance permanente | Le fournisseur n'a pas pu livrer le message parce que l'adresse électronique ou le numéro de téléphone était erroné. Vous devez supprimer ces adresses e-mail ou numéros de téléphone de votre base de données. Vous serez toujours facturé pour les messages texte à des numéros qui n'existent pas. | Yes | Yes |
défaillance temporaire | Le fournisseur n'a pas pu livrer le message après avoir essayé pendant 72 heures. Cela peut se produire lorsque la boîte de réception du destinataire est pleine ou lorsque son téléphone est éteint. Vous pouvez réessayer d'envoyer le message. Vous devrez quand même payer des frais pour l'envoi de messages texte à des téléphones qui n'acceptent pas les messages. | Yes | Yes |
Défaillance technique | "Votre message n'a pas été envoyé parce qu'il y avait un problème entre Notification et le fournisseur. | ||
Vous devrez réessayer d'envoyer vos messages. Vous ne serez pas facturé pour les messages texte qui sont affectés par une panne technique." | Yes | Yes |
You can filter by:
email
sms
Un identifiant unique que vous créez si nécessaire. Cette référence identifie un seul avis unique ou un lot d'avis. Il ne doit pas contenir d'informations personnelles telles que le nom ou l'adresse postale.
String reference='STRING';
Entrez l'ID d'une notification dans cet argument. Si vous utilisez cet argument, le client renvoie les 250 notifications reçues suivantes plus anciennes que l'ID donné.
String olderThanId='8e222534-7f05-4972-86e3-17c5d9f894e2'
Si vous passez un argument vide ou "null", le client retourne les 250 notifications les plus récentes.
Si la demande au client est acceptée, le client retourne une. NotificationList
:
List<Notification> notifications;
String currentPageLink;
Optional<String> nextPageLink;
Si la demande n'aboutit pas, le client renvoie un NotificationClientException
contenant le code d'erreur correspondant:
httpResult | Message | |
---|---|---|
400 |
[{ "error": "ValidationError", "message": "bad status is not one of [created, sending, sent, delivered, pending, failed, technical-failure, temporary-failure, permanent-failure, accepted, received]" }]
|
Contacter l'équipe SNC Notification |
400 |
[{ "error": "ValidationError", "message": "Applet is not one of [sms, email, letter]" }]
|
Contacter l'équipe SNC Notification |
403 |
[{ "error": "AuthError", "message": "Error: Your system clock must be accurate to within 30 seconds" }]
|
vérifier l'horloge de votre système |
403 |
[{ "error": "AuthError", "message": "Invalid token: signature, api token not found" }]
|
Utilisez la bonne clé API. |
Cela renvoie la dernière version du modèle.
Template template = client.getTemplateById(templateId);
Connectez-vous à votre compte et allez à la page Modèles pour trouver l'ID du modèle.
String templateId='f33517ff-2a88-4f6e-b855-c550268ce08a';
Si la demande est acceptée, le client retourne un 'modèle':
UUID id;
String name;
String templateType;
DateTime createdAt;
Optional<DateTime> updatedAt;
String createdBy;
int version;
String body;
Optional<String> subject;
Optional<Map<String, Object>> personalisation;
Si la demande n'aboutit pas, le client renvoie un NotificationClientException
contenant le code d'erreur correspondant:
httpResult | Message | réparer |
---|---|---|
403 |
[{ "error": "AuthError", "message": "Error: Your system clock must be accurate to within 30 seconds" }]
|
Vérifier l'horloge de votre système |
403 |
[{ "error": "AuthError", "message": "Invalid token: signature, api token not found" }]
|
Utiliser la bonne clé API. |
404 |
[{ "error": "NoResultFound", "message": "No Result Found" }]
|
Cvérifiez l'ID de votre modèle |
Template template = client.getTemplateVersion(templateId, version);
Connectez-vous à votre compte et allez à la page Modèles pour trouver l'ID du modèle.
String templateId='f33517ff-2a88-4f6e-b855-c550268ce08a';
Le numéro de version du modèle.
Si la demande est acceptée, le client retourne un " modèle ":
UUID id;
String name;
String templateType;
DateTime createdAt;
Optional<DateTime> updatedAt;
String createdBy;
int version;
String body;
Optional<String> subject;
Optional<Map<String, Object>> personalisation;
Si la demande n'aboutit pas, le client renvoie un NotificationClientException
contenant le code d'erreur correspondant :
httpResult | message | réparer |
---|---|---|
400 |
[{ "error": "ValidationError", "message": "id is not a valid UUID" }]
|
Vérifier l'ID de la notification |
403 |
[{ "error": "AuthError", "message": "Error: Your system clock must be accurate to within 30 seconds" }]
|
vérifier l'horloge de votre système |
403 |
[{ "error": "AuthError", "message": "Invalid token: signature, api token not found" }]
|
Utilisez la bonne clé API. |
404 |
[{ "error": "NoResultFound", "message": "No Result Found" }]
|
Vérifier l'ID de votre modèle et variante |
Ceci renvoie la dernière version de tous les modèles.
TemplateList templates = client.getAllTemplates(templateType);
Si vous n'utilisez pas `templateType', le client renvoie tous les modèles. Sinon, vous pouvez filtrer par:
email
sms
Si la demande est acceptée, le client renvoie une 'liste de modèles':
List<Template> templates;
S'il n'existe aucun modèle pour un type de modèle ou s'il n'existe aucun modèle pour un service, la liste des modèles est vide.
Ceci génère une version de prévisualisation d'un modèle.
TemplatePreview templatePreview = client.getTemplatePreview(
templateId,
personalisation
);
Les paramètres du modificateur de personnalisation doivent correspondre aux champs de caractères génériques du modèle actuel. Le client de notification API ignore tout champ supplémentaire dans la méthode.
connectez-vous à votre compte et allez à la page Modèles pour trouver l'ID du modèle.
String templateId='f33517ff-2a88-4f6e-b855-c550268ce08a';
Si un modèle comporte des champs réservés à des informations personnalisées telles que le nom ou la date d'application, vous devez fournir leurs valeurs dans une carte. Par exemple :
Map<String, Object> personalisation = new HashMap<>();
personalisation.put("first_name", "Amala");
personalisation.put("application_date", "2018-01-01");
Si un modèle n'a pas de champs de remplacement pour les informations personnalisées, vous devez passer dans une carte vide ou 'null'.
Si la demande au client est acceptée, le client renvoie un TemplatePreview
:
UUID id;
String templateType;
int version;
String body;
Optional<String> subject;
Optional<String> html;
Si la demande n'aboutit pas, le client renvoie un NotificationClientException
contenant le code d'erreur correspondant:
httpResult | message | réparer |
---|---|---|
400 |
[{ "error": "BadRequestError", "message": "Missing personalisation: [PERSONALISATION FIELD]" }]
|
Vérifier que les arguments de personnalisation de la méthode correspondent aux champs de caractères génériques du modèle |
400 |
[{ "error": "NoResultFound", "message": "No result found" }] Vérifier l'ID du modèle |
|
403 |
[{ "error": "AuthError", "message": "Error: Your system clock must be accurate to within 30 seconds" }]
|
Vérifier l'horloge de votre système |
403 |
[{ "error": "AuthError", "message": "Invalid token: signature, api token not found" }]
|
Utilisez la bonne clé API. |