Type de page: docs
SMS sortant
Envoie la production SMS via des contrôles de suppression, de dépenses, d'expéditeur et de fournisseur.
Réponse directe
Envoie la production SMS via des contrôles de suppression, de dépenses, d'expéditeur et de fournisseur.
Contenu source
Les envois sortants passent par le même chemin de sécurité, qu'ils proviennent du API, du composeur de message, du générateur de campagne ou du moteur de workflow.
## Exemples de requêtes
### boucle
```bash
boucle https://api.texttree.ai/api/v1/messages \
-H "Autorisation : Porteur $TEXTREE_ACCESS_TOKEN" \
-H "Type de contenu : application/json" \
-d '{
"numéro_téléphone": "+15551234567",
"body": "Votre rendez-vous est demain à 9h.",
"métadonnées": {
"workflow": "rendez-vous-rappel"
}
}'
```
### JavaScript
```js
réponse const = wait fetch("https://api.texttree.ai/api/v1/messages", {
méthode : "POST",
en-têtes : {
Autorisation : `Bearer ${process.env.TEXTREE_ACCESS_TOKEN}`,
"Content-Type": "application/json",
},
corps : JSON.stringify({
numéro de téléphone : "+15551234567",
body: "Votre rendez-vous est demain à 9h.",
métadonnées : { workflow : "rendez-vous-rappel" },
}),
});
résultat const = attendre la réponse.json();
```
### Python
```py
t'importer
demandes d'importation
résultat = requêtes.post(
"https://api.texttree.ai/api/v1/messages",
headers={"Autorisation": f"Bearer {os.environ['TEXTREE_ACCESS_TOKEN']}"},
json={
"numéro_téléphone": "+15551234567",
"body": "Votre rendez-vous est demain à 9h.",
"metadata": {"workflow": "rendez-vous-rappel"},
},
délai d'attente = 10,
.json()
```
### Elixir
```élixir
Mix.install([:req])
résultat =
Post demandé !(
"https://api.texttree.ai/api/v1/messages",
auth : {:bearer, System.fetch_env!("TEXTREE_ACCESS_TOKEN")},
json : %{
numéro de téléphone : "+15551234567",
body: "Votre rendez-vous est demain à 9h.",
métadonnées : %{workflow: "appointment-reminder"}
}
).corps
```
Chaque expédition est vérifiée par rapport aux suppressions d'espace de travail, aux limites de dépenses, à la réserve du grand livre et à la disponibilité.
de l'expéditeur, validation de la charge utile et préparation du fournisseur avant exécution avec le fournisseur. Expéditions de campagne
Ils vérifient également les suppressions spécifiques à la campagne avant de mettre en file d'attente un message TextTree et à nouveau si
ajoute une suppression de campagne avant l'envoi final.
Le formulaire de soumission rapide et la page de soumission du panel utilisent le même chemin de file d'attente que
le API. Les opérateurs peuvent choisir un numéro d'expéditeur de marque connecté dans l'application, ou
laissez la sélection de l'expéditeur sur automatique. Un expéditeur sélectionné doit rester connecté au
espace de travail lorsque le travailleur distribue le message ; S'il n'est pas disponible, le
le travail se termine par `sender_number_unavailable` et ne recourt pas à un autre
expéditeur.
L'idempotence du message inclut l'expéditeur sélectionné. Réutiliser un `idempotency_key`
avec un destinataire, un organisme, un coût ou un expéditeur différent est un conflit d'idempotence.
## Comportement d'échec
Si un envoi est bloqué, le API renvoie un échec structuré et le journal des messages affiche le même
raison sur la chronologie.
```json
{
"erreur": {
"code": "workspace_suppressed",
"message": "Le destinataire est supprimé pour cet espace de travail.",
"fix": "Respectez la suppression ou supprimez-la uniquement une fois que votre processus de conformité autorise à nouveau SMS."
}
}
```