API SMS Sending
Si vous souhaitez automatiser l'envoi de SMS de notification et de marketing sans les générer via la plateforme EngageLab, vous pouvez appeler cette API. Indiquez l'ID du modèle de SMS et les destinataires cibles, et le système enverra automatiquement les SMS selon le contenu du modèle.
Configuration de la plateforme
Avant d'appeler l'API, vous devez effectuer les configurations suivantes dans la console SMS d'EngageLab :
Configuration du modèle de SMS : Avant d'appeler l'API, veuillez vous rendre sur la Page de gestion des modèles pour personnaliser et soumettre vos modèles de SMS. Le modèle ne peut être utilisé qu'après validation et une fois que vous avez obtenu l'ID du modèle.
Configuration de la clé API : Rendez-vous sur la Page des clés API pour créer une clé d'authentification API Basic.
Processus d'appel
Veuillez vous référer au processus ci-dessous pour appeler l'API d'envoi de SMS. Si vous avez des questions, veuillez contacter le service client.
URL d'appel
POST https://smsapi.engagelab.com/v1/messages
Authentification de l'appel
Utilisez l'authentification HTTP Basic pour la vérification. Ajoutez Authorization dans l'en-tête HTTP :
Authorization: Basic ${base64_auth_string}
L'algorithme de génération de la base64_auth_string ci-dessus est : base64(dev_key:dev_secret)
Format de la requête
En-tête de la requête
POST /v1/messages HTTP/1.1
Content-Type: application/json
Authorization: Basic amlndWFuZ2RldjpkZXZfc2VjcmV0
Corps de la requête
{
"to": [
"923700056581"
],
"template": {
"id": "1233",
"params": {
"content": "Code de vérification : 039487. Ce code expirera dans 5 minutes. Vous tentez de créer votre compte."
}
}
}
Paramètres de la requête
Un objet de requête est exprimé au format JSON, l'en-tête de la requête doit donc inclure Content-Type: application/json.
| Nom | Emplacement | Type | Obligatoire | Description | Remarques |
|---|---|---|---|---|---|
| Authorization | header | array[string] | Non | ||
| to | body | array[string] | Oui | Liste des cibles | Numéros de téléphone cibles |
| plan_name | body | string | Non | Nom du plan | Optionnel, par défaut '-' si non fourni |
| schedule_time | body | integer | Non | Heure programmée | Non requis pour les envois immédiats, timestamp |
| template | body | object | Oui | ||
| id | body | string | Oui | ||
| params | body | object | Oui | ||
| custom_args | body | object | Non | Paramètre personnalisé |
Si vous avez défini des variables personnalisées lors de la création du modèle, transmettez ici leurs valeurs. Si elles ne sont pas transmises, la clé de la variable sera envoyée telle quelle, par exemple {{var1}}.
Explication pour params
Pour un contenu de modèle avec des champs de variables personnalisés, attribuez les valeurs via params. Par exemple, si le contenu du modèle est Bonjour {{name}}, bienvenue sur EngageLab, vous devez attribuer le paramètre comme suit : params:{"name":"Bob"}.
Exemples de requêtes
1. Envoi de contenu de notification personnalisé :
{
"to": ["+8618701235678"],
"template": {
"id": "notification-template",
"params": {
"order": "123456"
}
}
}
2. Envoi de contenu marketing personnalisé :
{
"to": ["+8618701235678"],
"template": {
"id": "marketing-template",
"params": {
"name": "EngageLab",
"promotion": "30%"
}
}
}
Réponse
Le code de statut HTTP est 200 et le corps de la réponse contient les champs suivants :
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| plan_id | string | Oui | ID du plan |
| total_count | integer | Oui | Nombre de cibles reçues |
| accepted_count | integer | Oui | Nombre de cibles valides reçues |
| message_id | string | Optionnel | Renvoyé pour les envois unitaires avec l'ID du message correspondant |
Exemple de réussite (cible unique)
{
"plan_id": "1972488990548348928",
"total_count": 1,
"accepted_count": 1,
"message_id": "1972488990804201472"
}
Exemple de réussite (plusieurs cibles)
{
"plan_id": "1972484198153367552",
"total_count": 2,
"accepted_count": 2
}
Exemple de réussite (tâche programmée)
{
"plan_id": "1972492618659033088",
"total_count": 1,
"accepted_count": 1,
"schedule_info": {
"task_id": 1972492621368553472
}
}
Exemple d'erreur
{
"plan_id": "1972490061974913024",
"total_count": 1,
"accepted_count": 1,
"message": "err xxxx",
"code": 1
}
Erreurs d'envoi
Le code de statut HTTP est 200 et le corps de la réponse contient les champs suivants :
| Champ | Type | Description |
|---|---|---|
| plan_id | string | Obligatoire |
| total_count | integer | Obligatoire |
| accepted_count | integer | Obligatoire |
| message | string | Obligatoire |
| code | integer | Obligatoire |
{
"plan_id": "string",
"total_count": 0,
"accepted_count": 0,
"message": "string",
"code": 0
}
Codes d'erreur
| Code d'erreur | Code HTTP | Description |
|---|---|---|
| 1000 | 500 | Erreur interne |
| 2001 | 401 | Échec de l'authentification, jeton incorrect fourni |
| 2002 | 401 | Échec de l'authentification, jeton expiré ou désactivé |
| 2004 | 403 | Pas d'autorisation pour appeler cette API |
| 3001 | 400 | Format de paramètre de requête invalide, vérifiez la conformité au format JSON |
| 3002 | 400 | Paramètres de requête invalides, vérifiez s'ils répondent aux exigences |
| 3003 | 400 | Paramètres de requête invalides, validation métier échouée, voir le champ message pour plus de détails |
| 3004 | 400 | Limite de fréquence dépassée, impossible de renvoyer le même modèle au même utilisateur cible pendant la validité du code de vérification |
| 4001 | 400 | Ressource non trouvée, par exemple utilisation d'un modèle inexistant pour l'envoi du message |
| 5001 | 400 | Échec de l'envoi du code de vérification, voir le champ message pour plus de détails |

