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)
    • Autres constructeurs - pas encore supportés (Xiaomi HyperOS et Google Pixel en cours d'adaptation)
  • 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"
    }
  ]
}