Saturday, March 27, 2010

Envoyer un SMS avec Google Voice via cURL

Parce qu'il me semblait bien que c'était possible et que cela ouvre un nombre important de possibilités (Dans mon cas Alerting sur incident Serveur ou Appli), voici comment envoyer (gratuitement qui plus est) un SMS depuis tout serveur/PC équipé de la commande cURL ou tout autre utilitaire sachant faire du POST HTTP (Fonctionne tout aussi bien avec wget)

Magical Google : Bien que réservé aux appels US, l'émission de SMS depuis Google Voice semble fonctionner vers la France
PréReq : Disposer d'un compte Google Voice
Légende : En rouge les params a adapter | (..) = Texte tronqué par pudeur sécuritaire.

Synopsis :
  • Step 1 : S'authentifier et récupérer le token "Auth" Google Voice
  • Step 2 : Envoyer le SMS aux destinataires grace au token récupéré en Step 1
Steps Détaillés :


Step 1 : Authentification Google Voice


curl -sSd @gv.txt https://www.google.com/accounts/ClientLogin -k

avec gv.txt = "service=grandcentral&Email=XXXXXXXX&Passwd=XXXXXXXX"

Réponse :

SID=DQAAAJgAAAAS(...)
LSID=DQAAAJsAAAC(...)
Auth=DQAAAJwAAAB(...)

Seul "Auth" sera utilisé par la suite


Step 2 : Send du SMS


curl -sSd @gv2.txt https://www.google.com/voice/sms/send/ -k

avec gv2.txt = "_rnr_se=9/fQIWNcII(...)=&phoneNumber=+336(...),+336(...)&text=Google is my new Best Friend&auth=DQAAAJwAAAB(...)"

dont :

_rnr_se : invariable à récuperer sur la web page de google voice une fois signé dans
input name="_rnr_se" type="hidden"
phoneNumber : en +336 séparé par des "," si plusieurs destinataires
text : le message
auth : le token récupéré en réponse du cURL d'autentification; Ex via => | awk.exe -F"=" "NR==3{ print $2 }"


Réponse si ok :


{"ok":true,"data":{"code":0}}

(qui m'a fait gagné un temps précieux suite a quelques tâtonnements en débug "live HTTP Header" sur le site de Google Voice)

1 comment:

Anonymous said...

merci pour ces infos precieuses et bon courage j`apprecie beacoup votre blog .
http://phonevoipgratuit.blogspot.com/2011/05/comment-envoyer-un-sms-via-google-voice.html