Aller au contenu

Envoyer un SMS

Résumé

  • Nom interne : SendSMS
  • Catégorie : SMS
  • Objectif : Envoyer un message SMS en texte brut à un numéro de téléphone depuis l'appareil Android.
  • Type de tâche : Normale

Compatibilité

  • Version minimale AndroMate : 1.1.0

  • Version maximale AndroMate : 1.1.0

  • Android minimum : Android 13 (API 33)

  • Android maximum testé : Android 16 (API 36)

  • Constructeurs supportés :

    • ✅ Samsung (One UI 6.x / 7.x / 8.x)
    • ✅ Google Pixel (Android Stock)
    • ⚠️ Autres constructeurs — non testés
  • Permissions requises :

    • SEND_SMS

Description détaillée

La tâche Envoyer un SMS envoie un message SMS en texte brut à un numéro de destination via l'API Android SmsManager. Le message est envoyé depuis la carte SIM par défaut de l'appareil.

Avant l'envoi, la tâche valide :

  • Le numéro de destination (msisdn) doit respecter le format international E.164 (ex. +33612345678). Les numéros sans indicatif pays + ou en format local sont rejetés.
  • Le corps du message (message_body) ne doit pas être vide.
  • Le corps du message ne doit pas dépasser 100 caractères.

Paramètres d'entrée

Paramètre Type Obligatoire Valeurs possibles Compatibilité Android Compatibilité AndroMate Défaut
msisdn String Oui Format E.164 : + suivi de 2 à 15 chiffres (ex. +33612345678) — supporte les références $variable Android 13 (API 33) → Android 16 (API 36) 1.1.0 → 1.1.0 ""
message_body String Oui Toute chaîne ≤ 100 caractères — supporte les références $variable Android 13 (API 33) → Android 16 (API 36) 1.1.0 → 1.1.0 ""

Format E.164

Le champ msisdn doit respecter strictement le format international E.164 :

  • Commence par + suivi de l'indicatif pays
  • Suivi du numéro d'abonné
  • Longueur totale : 2 à 15 chiffres après +

Exemples valides : +33612345678, +12125551234, +447911123456

Exemples invalides : 0612345678 (pas d'indicatif pays), 33612345678 (manque le +), +1 (trop court)


Paramètres de sortie

Cette tâche ne produit aucune variable de sortie. Elle retourne VoidResult.

Champ Type Condition de déclenchement Compatibilité Android Compatibilité AndroMate Défaut
VoidResult Toujours

Exceptions

Code Nom de l'exception Description
SMS-TASK-001 MSISDN invalide La valeur msisdn ne respecte pas le format E.164 (+ suivi de 2 à 15 chiffres).
SMS-TASK-002 Corps du message vide Le message_body est vide ou blanc.
SMS-TASK-003 Corps du message trop long Le message_body dépasse la limite de 100 caractères.
ERROR-000 Autre erreur Une erreur runtime inattendue s'est produite pendant l'exécution.

Diagramme d'exécution

Le diagramme suivant illustre l'implémentation réelle basée sur le code Android :

flowchart TD
    Start([Démarrer SendSmsTask]) --> ResolveParams[🔄 Résoudre msisdn + message_body\ndepuis le contexte workflow]

    ResolveParams --> ValidateMsisdn{msisdn correspond\nau regex E.164 ?}
    ValidateMsisdn -->|Non| E1[❌ SMS-TASK-001\nMSISDN invalide]

    ValidateMsisdn -->|Oui| ValidateBody{message_body\nnon vide ?}
    ValidateBody -->|Non| E2[❌ SMS-TASK-002\nCorps du message vide]

    ValidateBody -->|Oui| ValidateLength{longueur message_body\n≤ 100 ?}
    ValidateLength -->|Non| E3[❌ SMS-TASK-003\nMessage trop long]

    ValidateLength -->|Oui| Send[📤 SmsManager.sendTextMessage\nmsisdn, message_body]
    Send --> Success([✅ VoidResult])

    E1 --> Error([❌ Exception])
    E2 --> Error
    E3 --> Error

    style Start fill:#e3f2fd
    style Success fill:#c8e6c9
    style Error fill:#ffcdd2
    style E1 fill:#ffcdd2
    style E2 fill:#ffcdd2
    style E3 fill:#ffcdd2
    style ResolveParams fill:#fff9c4
    style Send fill:#c8e6c9

Comment ça fonctionne :

  1. Résoudre les paramètres : msisdn et message_body sont résolus depuis le contexte workflow
  2. Valider le MSISDN : vérification du format E.164 — lève SMS-TASK-001 si invalide
  3. Valider le corps : vérification que le message n'est pas vide — lève SMS-TASK-002 si vide
  4. Valider la longueur : vérification que le message ne dépasse pas 100 caractères — lève SMS-TASK-003 si trop long
  5. Envoyer : délègue à SmsManager.sendTextMessage() via l'API téléphonie Android
  6. Résultat : retourne VoidResult en cas de succès

Exemples de code

Exemple 1 — Envoyer un message statique

{
  "SendSMS": [
    {
      "id": "1",
      "title": "Envoyer SMS de test",
      "msisdn": "+33612345678",
      "message_body": "Message de test AndroMate"
    }
  ]
}

Exemple 2 — Envoyer avec des variables workflow

{
  "SendSMS": [
    {
      "id": "2",
      "title": "Rapporter le résultat du ping",
      "msisdn": "$numero_cible",
      "message_body": "Résultat ping : $ping_output"
    }
  ]
}

Détails des paramètres d'entrée

1. Paramètre d'entrée : msisdn

Le numéro de téléphone auquel envoyer le SMS. Doit strictement respecter le format international E.164 : - Commence par + - Suivi de l'indicatif pays (1 à 3 chiffres) - Suivi du numéro d'abonné - Total : 2 à 15 chiffres après +

Supporte les références $variable_workflow.

Valide Invalide
+33612345678 0612345678 (pas d'indicatif pays)
+12125551234 33612345678 (manque le +)
+447911123456 +1 (trop court)
  • Défaut : "" — déclenche SMS-TASK-001 si non valide E.164

2. Paramètre d'entrée : message_body

Le contenu du SMS à envoyer. Supporte les références $variable_workflow — résolues à l'exécution.

  • Longueur maximale : 100 caractères — déclenche SMS-TASK-003 si dépassé
  • Ne peut pas être vide — déclenche SMS-TASK-002 si vide
  • Supporte les variables : Oui

Exemple JSON complet

{
  "SendSMS": [
    {
      "id": "1",
      "title": "Envoyer SMS de test",
      "msisdn": "+33612345678",
      "message_body": "Message de test AndroMate"
    }
  ]
}