Article
· Fév 15 6m de lecture

Envoyer des messages WhatsApp depuis la production InterSystems IRIS

Dans cet article, nous allons voir comment utiliser le service de messagerie instantanée WhatsApp depuis InterSystems IRIS pour envoyer des messages à différents destinataires. Pour ce faire, nous devons créer et configurer un compte dans Meta et configurer une opération métier pour envoyer les messages que nous souhaitons.

Examinons chacune de ces étapes plus en détail.

Créer un compte sur Meta

C'est peut-être le point le plus compliqué de toute la configuration, puisque nous devrons configurer une série de comptes jusqu'à ce que nous puissions avoir la fonctionnalité de messagerie.

Vous pouvez ici lire la documentation officielle de Meta.

Nous allons d’abord créer un compte Meta personnel, donnant ainsi notre âme à Zuckerberg :

La prochaine étape est la création d'un compte professionnel qui nous permettra d'utiliser les services WhatsApp dans nos applications et qui sera lié à notre compte personnel :

Et puis nous nous sommes inscrits en tant que développeurs facebook à partir d'ici. L'étape suivante consistait, une fois dans le compte développeur, à créer une application:

En suivant les instructions de la documentation, nous sélectionnons un type d'application « Other » :

Et un type d'application:

Dans la dernière étape, nous attribuerons le nom de l'application et la lierons à notre compte professionnel pour pouvoir utiliser les fonctionnalités de WhatsApp.

Enfin, après ce processus long et fastidieux de création de plusieurs comptes, nous aurons notre application prête à être configurée avec la fonctionnalité WhatsApp.

Vous pouvez voir dans le menu de gauche qu'une nouvelle option WhatsApp sera disponible une fois configurée. En accédant à l'option de configuration de l'API, vous pouvez voir tout ce dont nous avons besoin pour nous connecter à la fonctionnalité de messagerie.

Ce que l'on voit sur cet écran :

  • Nous avons un numéro de test à partir duquel les messages seront envoyés (From) à nos destinataires identifiés avec un identifiant que nous utiliserons ultérieurement pour passer des appels à l'API depuis notre IRIS.
  • Nous avons défini un numéro de destination (To) auquel nous enverrons nos messages de test (nous devons l'enregistrer au préalable pour accepter de recevoir les messages).
  • Un Token d'Authentification a été généré avec une validité de 24 heures.
  • Dans notre appel, nous devons envoyer nos données au format JSON comme suit :
    { 
        "messaging_product": "whatsapp", 
        "to": "", 
        "type": "template", 
        "template": 
            { 
                "name": "hello_world",
                "language": 
                    { "code": "en_US" } 
            } 
    }
     

Pour cet exemple, nous allons utiliser un modèle de message, même si nous pouvons envoyer n'importe quel texte. Comme vous pouvez également le constater, il suffit d'effectuer un appel HTTP POST vers l'URL définie dans l'exemple :

https://graph.facebook.com/{{Version}}/{PhoneID}/messages

Pour notre exemple, nous allons créer 3 modèles différents, afin que nous puissions voir comment configurer différents messages. Nous avons accédé à cette option à partir du lien affiché à l'étape 2 de la configuration de l'API.

Finalement, nous avons maintenant tout pour commencer à envoyer des messages à notre client. Passons à la configuration de notre instance IRIS.

Configuration d'IRIS

Pour notre exemple, nous allons configurer une petite production qui simule la réception de messages de type HL7 ORU avec des données de glycémie pour un certain patient. En fonction du niveau reçu, nous enverrons au patient un modèle de message ou un autre.

Service Métier

Nous allons commencer par créer un Service Métier pour capturer la messagerie HL7 à partir d'un fichier :

Et vous recevrez un message comme celui-ci :

MSH|^~\&|HIS|HULP|APP||20230330133551||ORU^R01|71186|P|2.5.1
PID|||1502935519^^^SERMAS^SN~184001^^^HULP^PI||CABEZUELA SANZ^PEDRO^^^||20160627|M|||PASEO JULIA ÁLVAREZ 395 3 E^^MADRID^MADRID^28909^SPAIN||6XXXXXXXX^PRN^^PEDRO.CABEZUELA@GMAIL.COM|||||||||||||||||N|
PV1||O|||||0545128263Q^MARTÍNEZ FERNÁNDEZ^SUSANA^^MD^^^^|||||||1|||||173815|||||||||||||||||||||||||20230330133551|20230330133551
ORC|1|921099|131777||||^^^20231126133551||20230330133551|||0269410060K^URDANETA LÓPEZ^SUSANA^^MD^^^^|HULP||||||||HULP||||||||LAB
OBR|1|921099|131777|LAB^LABORATORY^L||||||||||||0269410060K^URDANETA LÓPEZ^SUSANA^^MD^^^^|||||||||F
OBX|1|NM|GLU^Glucosa|1|200|mg/dL|70-105|N|||F|||20231123124525||Lectura desde dispositivo de control|1|

Processus Métier

Une fois le message reçu, nous l'enverrons à un Processus Métier qui transformera le message HL7 en un type de message créé par nos soins et qui contiendra les informations qui nous concernent. Comme vous pouvez le voir, ce sera un BPL très simple :

Si nous regardons la transformation, nous verrons comment, en fonction des données de glycémie et des limites définies, nous indiquerons le type de modèle de message que nous allons utiliser :

Opération Métier

Ce composant se chargera d'envoyer l'appel POST au serveur WhatsApp. Pour ce faire, nous définirons la classe EnsLib.HTTP.OutboundAdapter comme adaptateur du composant. Ici vous pouvez voir le code de la classe :

Class Whatsapp.BO.WhatsAppBO Extends Ens.BusinessOperation
{

Parameter ADAPTER = "EnsLib.HTTP.OutboundAdapter";
Parameter INVOCATION = "Queue";
Property Version As %String(MAXLEN = 5);
Property PhoneNumberId As %String(MAXLEN = 15);
Property Token As %String(MAXLEN = 1000);
Parameter SETTINGS = "Version,PhoneNumberId,Token";
Method SendMessage(pRequest As Whatsapp.Message.WhatsAppRequest, Output pResponse As Whatsapp.Message.WhatsAppResponse) As %Status
{
    set tSC=$$$OK
    set body = {
      "messaging_product": "whatsapp",
      "to": "",
      "type": "template",
      "template": {
          "name": "",
          "language": {
              "code": "en"
          }
      }
    }
    do body.%Set("to", pRequest.telephone)
    do body.template.%Set("name", pRequest.template)
    $$$TRACE(body.%ToJSON())

    set request = ##class(%Net.HttpRequest).%New()
    set request.Authorization = "Bearer "_..Token
    set request.ContentType = "application/json"
    set request.Https = 1
    set request.SSLConfiguration="default"
    set request.Location = "/"_..Version_"/"_..PhoneNumberId_"/messages"
    do request.EntityBody.Write(body.%ToJSON())    

    set status = ..Adapter.SendFormData(.response,"POST",request)
    $$$TRACE(response.StatusCode)

    set pResponse = ##class(Whatsapp.Message.WhatsAppResponse).%New()

    Quit tSC
}

XData MessageMap
{
<MapItems>
  <MapItem MessageType="Whatsapp.Message.WhatsAppRequest">
    <Method>SendMessage</Method>
  </MapItem>
</MapItems>
}

}

Nous avons défini 3 nouveaux paramètres pour le composant dans lesquels nous indiquerons :

  1. La version de l'API que nous invoquerons.
  2. L'identifiant du téléphone à partir duquel le message sera envoyé et que nous avons vu précédemment dans les informations de notre application de compte de développeurs Meta.
  3. Le token que nous enverrons en en-tête de notre appel (rappelez-vous qu'il est valable 24 heures).

Puisque la connexion requise est HTTPS, nous avons créé une configuration SSL par défaut :

À ce stade, tout est configuré pour lancer nos tests de messagerie. Nous allons essayer d'envoyer 3 fichiers HL7, chacun avec une valeur de glucose différente pour notre patient :

  • Valeur 80 : qui générera un message de notification indiquant que nos niveaux sont normaux.
  • Valeur 110 : dans laquelle il nous avertira que nous dépassons la limite et nous incitera à faire de l'exercice pour abaisser les niveaux.
  • Valeur 200 : dans laquelle il nous alertera de notre niveau et nous incitera à nous rendre dans un centre médical.

Copions les messages dans le dossier défini :

*Attention, si vous souhaitez tester l'exemple avec le projet associé vous devez configurer le message HL7 avec votre numéro de téléphone (rechercher et remplacer la valeur 6XXXXXXXX dans l'exemple de message) et modifier le DTL pour prendre en compte le préfixe national de votre téléphone de test.

Voyons le résultat :

Nous avons ici nos 3 messages reçus. Encore un nouveau succès d'InterSystems IRIS ! Si vous avez des questions ou des commentaires, vous pouvez les écrire dans les commentaires et je me ferai un plaisir de vous répondre.

Discussion (0)1
Connectez-vous ou inscrivez-vous pour continuer