import os, time from dotenv import load_dotenv import ovh load_dotenv() client = ovh.Client( endpoint=os.getenv("OVH_ENDPOINT", "ovh-eu"), application_key=os.getenv("OVH_APPLICATION_KEY"), application_secret=os.getenv("OVH_APPLICATION_SECRET"), consumer_key=os.getenv("OVH_CONSUMER_KEY"), ) service = os.getenv("OVH_SMS_SERVICE") sender = os.getenv("OVH_SMS_SENDER") to = os.getenv("TEST_RECEIVER") message = "ALERTE TEST DOMO91 (transactionnel)." # Envoi immédiat (pas de differedDelivery) payload = { "sender": sender, "receivers": [to], "message": message, "priority": "high", "coding": "7bit", "class": "phoneDisplay", "noStopClause": True, # => H24 si autorisé par OVH "senderForResponse": False, # True si vous utilisez un numéro et attendez des réponses "validityPeriod": 2880, # minutes où le SMS reste valable (2 jours) "tag": "test-ovh", } print("Envoi en cours…") resp = client.post(f"/sms/{service}/jobs", **payload) # La réponse contient des taskIds pour suivre l'état print("Réponse OVH:", resp) task_ids = resp.get("ids", []) if task_ids: task_id = task_ids[0] # Boucle de suivi simple (optionnelle) while True: task = client.get(f"/sms/{service}/jobs/{task_id}") print("Etat tâche:", task.get("status")) if task.get("status") in ("done", "error", "cancelled"): break time.sleep(2) # On peut aussi lister les SMS sortants pour voir le statut final outgoing_ids = client.get(f"/sms/{service}/outgoing") if outgoing_ids: last_id = outgoing_ids[-1] last = client.get(f"/sms/{service}/outgoing/{last_id}") print("Dernier SMS:", {k: last[k] for k in ("creationDatetime","receiver","status","messageId")})