Envoyer un sms sur un évènement métier

De Wiki1000
Version du 13 janvier 2015 à 09:48 par Syfre (discuter | contributions)
(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)

Dans cet exemple nous allons envoyé un SMS lorsque un évènement métier se produit en utilisant un hook

L'envoi du SMS se fait en utilisant le service en ligne octopush.

Comme beaucoup de ces services, octopush utilise une API basée sur un POST au format HTML. Il faut donc renseigner un certain nombre de champ et faire un POST sur l'url du service en encodant les champs au format HTML FORM. C'est précisement ce que fait l'action "Post des paramètres"

Envoi d'un sms sur un évènement métier

Le paramétrage du hook est le suivant :

Hook-octopush-1.png

Le numéro de téléphone du mobile destinataire est récupéré de l'objet ayant déclenché l'évènement, pour s'assurer de ne pas faire d'appel inutile on teste dans la condition que le champs et bien valide. Un meilleur teste serait de vérifier le contenu du champ car octopush n'accepte que les formats internationaux.

Les champs nécessaires du message sont définis dans les paramètre du hook :

Hook-octopush-2.png

  • user_login, api_key
Les informations de compte de octopush
  • sms_recipients
Le numéro du mobile du destinataire. C'est le contenu de l'attribut unMobile de l'objet à l'origine de l'évènement qui est utilisé.
  • sms_text
Le contenu du sms, ici il s'agit d'un contenu statique mais les règles de substitutions s'appliquent sur les paramètres.

Récupérer le ticket octopush

Lorsque vous effectuez une requête d'envoi sur le serveur octopush celui-ci retourne un ticket pour cette requête qui vous permettra d'obtenir le statut de l'envoi. Le ticket est contenu dans la réponse xml au POST.

Pour récupérer ce ticket et l'enregistrer dans un journal, on doit pouvoir récupérer la réponse à la requête POST. Ceci est réalisé par un script, définit au niveau du hook, qui sera exécuté après le POST.

Hook-octopush-3.png

Le code pour récupérer le ticket et l'enregistrer est le suivant :

var doc:TxmlDocument; inst:OctopushLog;
begin
  doc := TxmlDocument.Create(nil);
  doc.LoadFromString(Response);
  withP transaction do
   begin
     inst := OctopushLog.Create;
     inst.HttpCode := ErrorCode;
     inst.Ticket := doc.xPath('//octopush/ticket').AsString;
     inst.Recipient := doc.xPath('//octopush/successs/success/recipient').AsString;
     inst.queueTopic := '/octopush/pending';
   end;
end
Outils personnels