Dossier : Utiliser l’API Twitter pour envoyer des sms gratuitement

Aujourd’hui je voulais vous parler un peu de mon projet de TIPE. Sorte de TPE que l’on fait en classe prepa, il correspond à un projet scientifique à mener sur toute l’année. On est 3 par groupe et on se lance sur un sujet qui doit évidemment traité de ce qu’on a pu voir en cours. Dans ce cas, Twitter, c’est pour le plaisir ^^.

Nous avons choisi une alarme pilotée par PC. Pour clarifier la chose, nous avons fait un petit circuit électronique avec un contacteur relié à une carte d’acquisition qui permet d’envoyer un signal au PC en passant par l’USB. Un programme en C gère tout ca (je simplifie, ce n’est pas ce qui nous intéresse la) et on voulait que le propriétaire de la maison/bureau/ordinateur reçoive un sms lors d’une intrusion dans la pièce.

Pour cela j’ai codé avec mon groupe, un petit fichier simple en php qui utilise l’API twitter. Pour redonner à César ce qui appartient à César : j’ai utilisé une class php simplifiée par rapport à ce qui est founi par twitter créée par un blogueur nommé Emmanuel Pays (Loopion).

Vous pouvez télécharger cette class twitter ici.

Le problème c’est que je ne sais pas me servir de cette class et je ne le sais toujours mais, mais en fouillant sur le web et en bidouillant, j’ai réussi à faire ce que je voulais : automatiser l’envoie de sms par twitter et tout cela gratuitement !

Voila le code que j’ai mis dans ma page php (la class twitter bidouillée):

class twitter
{
var $username="logintwittercompteauto";
var $password="password";
function sendSms($to,$text)
{
$url = 'http://twitter.com/direct_messages/new.xml';
$post = 'user='.$to;
$post .= '&text='.$text;
if(strlen($text)<140) if($this->request($url,$post)) return true;
else return false;
}
function postMessage($text)
{
$url = 'http://twitter.com/statuses/update.xml';
$post = 'status='.$text;
if(strlen($text)<140) if($this->request($url,$post)) return true;
else return false;
}
function request($url,$post)
{
$curl_handle = curl_init();
curl_setopt($curl_handle, CURLOPT_URL, "$url");
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_POST, 1);
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $post);
curl_setopt($curl_handle, CURLOPT_USERPWD, $this->username.":".$this->password);
$buffer = curl_exec($curl_handle);
curl_close($curl_handle);
if (empty($buffer)) return false;
else return true;
}
}

Comme vous pouvez le voir, il suffit de remplacer le login et le password par celui du compte qui va envoyé les messages. Puisque je le rappelle, dans twitter, pour recevoir des sms, il va vous falloir créer un compte pour vous, ajoutez votre numéro de portable, créer un 2e compte qui sert pour l’envoie automatique de message. Il faut aussi qu’il soit amis. Chaque direct message envoyé par le 2e compte sera recu par sms si votre compte est paramétré bien sur.
En gros, j’ai un compte nommé : “AUTO” qui est celui qui envoie un direct message à mon compte “antoineb”. J’ai ajouté l’un l’autre dans les amis (ils sont amis mutuels). J’ai paramétré “antoineb” pour que je recoive seulement les directs messages sur mon portable.
Maintenant avec l’API je vais pouvoir envoyer un message sur mon portable grâce au compte Twitter “AUTO” qui va en fait envoyer un direct message au compte “antoineb”. C’est bon tout le monde suit ?

Bon maintenant passons au code utilisé. Je renseigne comme je l’ai dis précédemment la class. Les fans de php remarqueront que je l’ai bidouillée et que je l’ai mise directement dans mon code php, que j’ai enlevé le public qu’il y avait devant chaque instruction. Je vous ai dis que je ne savais pas comment m’en servir !

Vous pourrez le mettre n’importe ou dans votre code php (une boucle, un if…) :
$test=new twitter();
if($test->sendSms($twitter,'Intrusion le '.$dateheure)) echo "SMS envoyé";
else echo "Le SMS n'a pas pu être envoyé à $twitter";

Dans mon cas j’ai créer une variable $twitter qui correspond au login du 2e compte “antoineb” par ex. $dateheure correspond à la date et l’heure du jour, ce qui permet à l’utilisateur de connaitre l’heure de l’intrusion si son portable n’est pas allumé au moment où elle se produit.

Donc normalement, avec les bases de php (ce que j’ai à peine), vous devriez facilement tourner ca à votre sauce. Pour info, le code ci-dessus s’appelle l’instanciation.

Advertisements

15 thoughts on “Dossier : Utiliser l’API Twitter pour envoyer des sms gratuitement”

  1. ^^ n’exagère pas tout de même. Moi je le trouve bien pratique pour poser des questions en rapport avec le blogging et le high tech ou tout simplement discuter avec personnes dont tu n’as pas l’instant messenger. Les gens te suivront plus facilement sur twitter qu’il te passeront leur adresse msn.
    Evidemment faut voir ce que tu fais avec, c’est vrai qu’il y a des gens qui écrivent des conneries mais c’est de plus en plus rare.

    Like

  2. Oui je caricature, mais c’est un peu ca quand même 🙂
    Après évidement il y a des usages qui sont intéressants mais dans l’ensemble j’y voit plus d’inconvénients que d’avantages.

    Like

  3. Sympa, j’y avais pensé quand je m’étais inscrit à twitter, et puis ça m’est sorti de la tête. Merci en tout cas, je vais le mettre à profit pour plein d’autres choses 🙂

    Like

  4. J’ai pas tout compris à ce post mais ça m’a l’air interéssant… moi je n’arrive pas à envoyer mon numéro de téléphone sur twitter!
    Comment on fait ?

    Like

  5. C’est vrai ça, je voulais tester cette API mais l’indicatif international se place tout seul en fonction de quelques pays dans une liste où la France ne figure pas et on ne peut pas le choisir soi-même donc impossible de mettre un numéro de téléphone Français !

    Comment avez-vous fait Antoine du blog ?

    Like

  6. C’est vrai ça, comment faites-vous Antoine du blog ? Impossible pour nous d’entrer des numéros de France, seuls quelques pays sont disponibles !

    Like

  7. Pardon d’avoir remis le même message. Merci pour ces renseignements en tout cas et tenez-nous au courant si un jour ils le remettent…

    Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s