jeudi, octobre 12, 2006

Envoyer des SMS dans son application

Pour un système de gestion d'incident, on m'a demandé de mettre en place des alertes via SMS.
Il existe plusieurs solutions pour envoyer des SMS dont deux principales (elles ont un cout dans tous les cas) :
  1. en envoyant un mail
  2. en faisant une requete http

Pour ma part, j'ai choisi la seconde solution car moins contraignante dans l'utilsation. Effectivement, pour la 1ere solution, il est nécessaire d'avoir un serveur SMTP alors que notre application n'en a pas forcémment besoin et même si l'on a ce serveur, il faut le paramétrer pour autoriser le relais. De plus, cela pose un problème de configuration pour le client qui ne maitrise pas forcemment sa messagerie.

Avec la 2nde solution, il faut juste avoir un accès internet et pouvoir faire du HTTP. Voici un petit exemple avec smsmode.com où le SMS me coûte environ 10cts TTC (le prix est dégressif en fonction du volume).


//On convertit le message au format URL
m_Message = System.Web.HttpUtility.UrlEncode(m_Message);
//On créé la requete spécifié par le fournisseur
HttpWebRequest maRequete = (HttpWebRequest) WebRequest.Create(PASSERELLE+"?pseudo="+LOGIN+"&pass="+MOTDEPASSE
+"&message="+m_Message
+"&numero="+m_Destinataire);


//On recupère la réponse de la requete
HttpWebResponse maReponse = (HttpWebResponse) maRequete.GetResponse();
bool statut = false;
if (maReponse.StatusCode == HttpStatusCode.OK)
{
statut = true;
//Si le code retour est OK
//On lit la réponse enfin d'obtenir les informations
Stream dataStream = maReponse.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string reponse = reader.ReadToEnd();
//On récupère le code retour de cette facon car la trame est :
//code_retourdescription_statussmsID
CodeRetour code = (CodeRetour)Convert.ToInt32(reponse.Split(Convert.ToChar(""))[0]);
maReponse.Close();
return code;
}

En espérant que cela puisse vous aider. J'ai fait une petit API à ce sujet, si vous souhaitez l'obtenir, contactez moi.

Aucun commentaire: