Envoyer des textos en Chine avec SMS Framework

· 4 min de lecture

Publication originale

Cet article a été publié à l'origine le 18 septembre 2008 sur The Standard, le blogue de Raincity Studios, sous la signature « Makara Wang ». Cet article reflète le contexte et les outils de l'époque; certains liens et services mentionnés n'existent plus. Article traduit du chinois; le texte original est en chinois.

Voir l'original dans l'Internet Archive

Les plateformes de messagerie texte (SMS) ne sont sûrement une nouveauté pour personne, mais sous forme de module Drupal, c'est encore assez nouveau. Ce module s'appelle « SMS Framework » et se trouve à l'adresse http://drupal.org/project/smsframework. Sa version 1.0 est sortie.

Le cœur de SMS Framework est un cadre très simple : il définit un ensemble de fonctions, ou d'interfaces, qui permettent à d'autres développeurs de créer facilement des interfaces côté utilisateur ou des interfaces SMS côté serveur (Gateway, ou passerelles), et il fournit aussi quelques modules utiles construits avec ce cadre. Par exemple, sms_user permet d'associer un numéro à chaque utilisateur, sms_clickatell est une passerelle, et ainsi de suite (voir l'annexe à la fin pour les détails). Ces modules ne sont pas encore au point; pour l'instant, SMS Framework n'est donc qu'un outil de développement. Ce que cet article veut montrer, c'est comment s'en servir pour développer un module Drupal capable d'envoyer des textos en Chine.

La première chose à expliquer, c'est comment envoyer un texto à un téléphone cellulaire par le Web. En bref, le serveur du site envoie, selon un protocole précis, une requête réseau à un fournisseur de SMS (China Mobile et compagnie, ou un revendeur de deuxième niveau). Le protocole est déterminé par le fournisseur : il peut être conçu sur mesure (par exemple, celui de China Mobile), être REST (le plus souvent HTTP GET), ou SOAP, etc. Cela soulève la question du choix du fournisseur. En général, les fournisseurs de premier niveau conviennent mieux aux entreprises qui ont les moyens, car non seulement les conditions d'adhésion sont exigeantes, mais les protocoles étant conçus sur mesure, les coûts de développement sont aussi plus élevés; les revendeurs de deuxième niveau, en revanche, conviennent mieux à une adhésion et à un développement rapides, mais avec des limites plus ou moins importantes sur le plan des fonctions et de la souplesse.

Voyons maintenant SMS Framework lui-même. J'utilise ici la version HEAD du début septembre. (Attention : comme ce module en est au début de son développement, les API et les fonctions changent souvent et beaucoup; c'est donc le module lui-même qui fait foi.) Il définit une série de hooks et de fonctions, dont les plus fondamentaux sont :

  1. hook_gateway_info() —— sert à ajouter une interface SMS, c'est-à-dire à implémenter un protocole SMS donné. En bref, on définit une nouvelle fonction dont les paramètres sont le numéro du destinataire, le contenu du message, etc., et dont le rôle est d'emballer ce contenu et de l'envoyer au moyen du protocole.
  2. sms_send() —— sert à envoyer un texto; ses paramètres sont aussi le numéro du destinataire, le contenu du message, etc. Elle est destinée à l'interface utilisateur : elle appelle une passerelle désignée pour envoyer le message.

Ce que nous voulons implémenter ici, c'est une passerelle; pour ce qui est de l'utilisation, vous pouvez écrire une page simple qui appelle sms_send() pour la tester. Avant de commencer, consultez « API.txt » ainsi que des modules comme sms_clickatell qui implémentent une passerelle.

En prenant comme exemple le service Web (SOAP) de WINIC (http://www.winic.org/), voici ce qu'il faut écrire :

  1. Module —— appelons-le sms_winic; il faut écrire le fichier info;
  2. sms_winic_gateway_info() —— définit les divers renseignements et fonctions de la passerelle;

    return array(
      'winic' => array(
        'name' => 'WINIC',
        'configure form' => 'sms_winic_admin_form', // indiquer un nom de fonction, à implémenter soi-même
        'send' => 'sms_winic_send', // idem
        'send form' => 'sms_winic_send_form', // idem
      ),
    );

  3. sms_winic_send($number, $message, $options) —— la fonction d'envoi elle-même;
    D'abord, utilisez « $soapclient = new SoapClient($winic_url); » pour créer le client (nécessite la prise en charge de SOAP dans PHP);
    Ensuite, vous pouvez utiliser des méthodes comme « __getFunctions() » et « __getTypes() » pour obtenir les méthodes offertes par le serveur SOAP; elles peuvent servir pendant les tests.
    Pour les méthodes offertes par WINIC, un seul appel à « $response = $soapclient->SendMessages($parameters); » suffit pour envoyer le message. $parameters doit contenir les renseignements suivants :

    array
      'tos' => string 'numéro,numéro'
      'msg' => string 'contenu du texto'
      'otime' => string ''
      'uid' => string 'test'
      'pwd' => string '123456'

    En général, le serveur SOAP renvoie un objet contenant un message d'état; il suffit d'analyser ce message selon la documentation fournie par WINIC, d'en informer l'utilisateur ou de passer à l'étape suivante, et le travail de cette fonction est terminé.
  4. configure form —— une fonction de formulaire standard, où l'on peut mettre les paramètres à configurer comme le nom d'utilisateur et le mot de passe;
  5. send form —— aussi une fonction de formulaire standard, qui peut servir à ajouter des champs supplémentaires au formulaire d'envoi.

Et voilà, une passerelle simple est implémentée. Pour l'utiliser ou la tester, définissez-la d'abord comme passerelle par défaut (Default) dans la page de configuration, puis appelez sms_send() à l'endroit de votre choix.

On le voit, SMS Framework rend l'implémentation d'un protocole SMS très intuitive, ce qui rejoint de près la philosophie même de Drupal, et la complexité d'une passerelle dépend en grande partie de la complexité du protocole SMS.

Fin de l'article.

Note : j'ai déjà soumis sms_winic : http://drupal.org/node/310154

Annexe —— modules existants et leurs fonctions

  • sms.module —— API de base
  • sms_clickatell.module —— passerelle Clickatell (http://clickatell.com/), interface SMS
  • sms_muse.module —— passerelle Muse (http://mobilemuse.ca/), interface SMS
  • sms_email_gateway.module —— envoie des textos par courriel
  • sms_user.module —— s'intègre aux utilisateurs de Drupal et permet à chaque utilisateur de définir un numéro de cellulaire
  • sms_sendtophone.module —— fournit quelques interfaces pour l'envoi de textos
  • sms_blast.module —— envoie des textos de groupe
  • sms_receive.module —— offre la prise en charge de la réception de textos (pas encore au point)
  • sms_og.module —— offre la prise en charge de la réception de textos pour Organic Groups (dépend de sms_receive)
  • En plus de ces modules intégrés, un autre module —— Messaging (http://drupal.org/project/messaging) —— le prend aussi en charge, ce qui veut dire que messaging peut utiliser sms pour envoyer des messages.

Votre entreprise mérite d'être trouvée.

Parlez-nous de votre projet. Nous vous répondons en français ou en anglais, et nous nous déplaçons partout dans la MRC de Papineau.

Affichage

Vos choix restent dans ce navigateur. Rien n'est envoyé.

Taille du texte
100 %
Couleurs
Lecture
Autres aides
Accessibilité du site