Corriger une campagne sans créer un nouvel enregistrement
Utilisez cette route pour modifier la description d’une campagne existante, ses exemples de messages, l’explication du consentement ou les caractéristiques de contenu prises en charge. Conservez l’identifiant de la campagne ainsi que sa marque et son cas d’utilisation actuels. Créer un nouvel enregistrement ne constitue pas le mécanisme de nouvelle tentative pour corriger une campagne existante.
Authentifiez-vous avec un compte API activé, via HTTPS, depuis une adresse IP source autorisée. Seule une campagne appartenant à ce compte est accessible. Consultez son état actuel avant de préparer les modifications ; ce processus ne permet pas de mettre à jour les campagnes expirées.
curl --silent --show-error --fail-with-body --user "$API_USER:$API_PASSWORD" \
"https://api.multitel.net/tcr/v2/campaign/$CAMPAIGN_ID"Choisir les champs qui ont réellement changé
Préparez le fichier campaign-update.json contenant les modifications prises en charge. Le portail actuel n’envoie que les champs de campagne modifiés et n’envoie ni brandId, ni usecase, ni campaignId, ni les informations d’état réservées aux réponses. Les mises à jour directes via l’API utilisent également un objet JSON contenant les champs, et non l’enveloppe changes/version du portail.
| Champs | Informations à fournir |
|---|---|
| description, messageFlow | Une description exacte du service et des modalités selon lesquelles les personnes donnent leur consentement, reçoivent les messages et retirent leur consentement. Chaque champ accepte 40–4096 caractères. |
| sample1–sample5 | Des exemples réalistes pour cette campagne, de 20–1024 caractères par exemple non vide. Conservez le nombre d’exemples exigé par le cas d’utilisation qualifié ; n’envoyez pas de messages sans rapport avec celui-ci. |
| helpMessage, optinMessage, optoutMessage | Les réponses pertinentes destinées aux destinataires, de 1024 caractères au maximum. Lorsque cela est requis, respectez le minimum de 20 caractères et expliquez le service réellement proposé. Consultez les exigences actuelles en matière de consentement avant de vider un champ. |
| optinKeywords, optoutKeywords, helpKeywords | Des mots-clés séparés par des virgules, sans espaces, de 255 caractères au maximum. Veillez à la cohérence entre les réponses et le traitement effectif des mots-clés. |
| privacyPolicyLink, termsAndConditionsLink | Des adresses publiques pertinentes, de 2048 caractères au maximum, décrivant les pratiques réelles de ce service. |
| embeddedLinkSample | Un lien représentatif de ceux que les messages contiendront, de 255 caractères au maximum. |
| numberPool, embeddedLink, embeddedPhone, ageGated, directLending | Les caractéristiques réelles de la campagne, sous forme de booléens JSON. Pour en désactiver une, utilisez false, et non la chaîne de caractères "false". |
| autoRenewal | Le schéma de l’API publique prend en charge ce booléen JSON, bien que l’éditeur habituel du contenu des campagnes dans le portail ne le propose pas. Désactiver le renouvellement n’annule pas un engagement minimal existant et n’efface pas les frais déjà dus. |
| resellerId | Le schéma permet également d’associer un revendeur. Cette fonction ne figure pas dans le formulaire habituel de correction du contenu du portail. N’utilisez pas ce champ pour transférer une campagne d’un client à un autre et ne supposez pas que l’API configurera le service de l’opérateur pour un autre revendeur. |
Le schéma de mise à jour ne propose pas brandId, usecase, subscriberOptin, subscriberOptout ou subscriberHelp comme champs modifiables. Ne copiez pas l’intégralité du corps d’une requête de création de campagne dans une mise à jour. Consultez la qualification actuelle lorsque vous examinez les exigences relatives aux messages.
Envoyer une correction ciblée
Cet exemple présente, à titre d’illustration, un service de rappel de rendez-vous. Adaptez-le au service réel de la campagne et à son parcours de consentement avant de l’utiliser.
{
"description": "Appointment reminders requested by customers of the registered business.",
"sample1": "Example business: Your requested appointment reminder is ready. Reply STOP to opt out."
}curl --silent --show-error --fail-with-body --user "$API_USER:$API_PASSWORD" \
--request PUT \
--header 'Content-Type: application/json' \
--header "Idempotency-Key: $IDEMPOTENCY_KEY" \
--data-binary @campaign-update.json \
"https://api.multitel.net/tcr/v2/campaign/$CAMPAIGN_ID"Pour un même envoi prévu, conservez la même clé ainsi que la méthode, le chemin, la chaîne de requête et les octets du corps strictement identiques. Toute modification du contenu nécessite une requête examinée séparément ; ne changez pas aveuglément de clé après un dépassement de délai. Une requête terminée peut renvoyer une erreur mise en cache, et un doublon dont le traitement est en cours peut renvoyer 409 avec Retry-After.
Relire la campagne
Une réponse HTTP 200 renvoie directement un objet JSON de campagne. Vérifiez campaignId, puis récupérez la même campagne avec GET et comparez les champs visés. Un enregistrement réussi ne demande pas, à lui seul, un nouveau réexamen par l’opérateur, ne modifie pas les affectations de numéros, n’active pas l’envoi et n’envoie aucun message.
Le portail vérifie la version du formulaire avant l’enregistrement et relit ensuite la campagne. Le point de terminaison PUT public n’impose pas cette version du portail : coordonnez les modifications simultanées. Une clé d’idempotence ne détecte pas la mise à jour effectuée par une autre personne.
Si le portail affiche un refus de réexamen non résolu, corrigez d’abord le contenu, puis utilisez l’action distincte de demande de réexamen lorsqu’elle est disponible. Cette action vérifie la campagne actuellement en production et son état de partage. L’enregistrement du contenu seul ne déclenche pas cette action, et l’existence d’un identifiant de campagne ne prouve pas son approbation.
Dans le service actuel, les mises à jour ordinaires de campagne via PUT ne déclenchent pas de débit distinct pour l’enregistrement de la campagne. Les frais mensuels existants, les engagements minimaux, la location de numéros et les frais liés à l’utilisation des messages continuent de s’appliquer. Pour connaître les tarifs de campagne actuellement configurés, consultez les frais de campagne.
Gérer les restrictions et les résultats incertains
Pour HTTP 400, lisez l’erreur propre au champ et vérifiez les longueurs, le texte de consentement et l’état de la campagne. Pour 401, 403 ou 404, vérifiez les identifiants d’authentification de l’API, l’adresse IP source autorisée et l’appartenance de la campagne au compte. Pour 429, respectez Retry-After. En cas de 500, de 502 ou d’interruption de la requête, conservez l’identifiant de la campagne et tout requestId, puis rapprochez les données de l’enregistrement existant avant tout nouvel envoi.
L’instantané local dépend du corps renvoyé. Une réponse partielle non vide peut omettre des champs antérieurs, notamment les métadonnées de renouvellement ; une réponse vide peut laisser subsister des valeurs obsolètes. Vérifiez le résultat complet de GET plutôt que de considérer la seule réussite comme une preuve de la conservation de tous les champs. Signalez les différences non résolues au service d’assistance. Cette route ne met pas à jour les affectations aux opérateurs de manière atomique et ne fournit pas d’action générale de rétablissement de l’activation auprès des opérateurs.