Publié le :
Intégration CREATION_INTERNE

Génération de carte de message Teams via JSON et PROC HTTP

En attente de validation
Le script commence par créer un fichier JSON temporaire simulant une réponse d'API contenant des métriques de santé d'un moteur de recommandation. Il construit ensuite un modèle de carte JSON pour Microsoft Teams, en y insérant un horodatage dynamique. Les données simulées sont lues via le moteur LIBNAME JSON, transformées pour l'affichage, puis reconverties en JSON via PROC JSON. Enfin, les différents fragments JSON sont assemblés et envoyés via une requête POST (PROC HTTP) à une URL de webhook Outlook/Teams.
Analyse des données

Type : CREATION_INTERNE


Toutes les données sont générées dans le script via 'datalines4' (simulation de réponse API et modèle JSON).

1 Bloc de code
DATA STEP Data
Explication :
Création d'un fichier temporaire contenant des données JSON brutes simulées via datalines.
Copié !
1filename apiout temp;
2DATA _null_;
3file apiout;
4INFILE DATALINES;
5INPUT;
6put _infile_;
7datalines4;
8{
9 "anonymous_astore_creation": "05Sep2019:13:05:00",
10 ...
11}
12;;;;
13RUN;
2 Bloc de code
DATA STEP Data
Explication :
Création de l'en-tête du message JSON (MessageCard) avec insertion dynamique de la date et l'heure courantes.
Copié !
1filename heading temp;
2DATA _null_;
3ts = cat('"activitySubtitle": "As of ',"%trim(%sysfunc(datetime(),datetime20.))",'",');
4...
5RUN;
3 Bloc de code
DATA STEP Data
Explication :
Lecture du fichier JSON simulé à l'aide du moteur LIBNAME JSON et transformation de la structure en paires clé/valeur pour le rapport.
Copié !
1LIBNAME prod json fileref=apiout;
2 
3DATA segment (keep=name value);
4 SET prod.root;
5 name="Score data updated (UTC)";
6 value= astore_creation;
7 OUTPUT;
8 ...
9RUN;
4 Bloc de code
PROC JSON Data
Explication :
Conversion de la table SAS transformée en fragment JSON formaté.
Copié !
1filename segment temp;
2PROC JSON out=segment nosastags pretty;
3 export segment;
4RUN;
5 Bloc de code
DATA STEP Data
Explication :
Assemblage des fichiers temporaires (en-tête et segment de données) pour former le payload JSON complet final.
Copié !
1filename msg temp;
2DATA _null_;
3 file msg;
4 INFILE heading END=eof;
5 DO while (not eof);
6 INPUT;
7 put _infile_;
8 END;
9 INFILE segment END=eof2;
10 ...
11RUN;
6 Bloc de code
PROC HTTP
Explication :
Envoi du JSON assemblé vers un point de terminaison Webhook (Teams) via une requête HTTP POST.
Copié !
1PROC HTTP
2 method="POST"
3 ct="text/plain"
4 url="https://outlook.office.com/webhook/my-unique-webhook-endpoint"
5 in=msg;
6RUN;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
Informations de Copyright : Copyright 2019 SAS Institute Inc.


Banner
Le Conseil de l'Expert
Expert
Stéphanie
Spécialiste Machine Learning et IA.
« Cette méthode est idéale pour surveiller la santé des moteurs de recommandation en temps réel. Pour sécuriser davantage le flux, je recommande de stocker l'URL du Webhook dans une macro-variable protégée ou un coffre-fort de mots de passe (PROC PWENCODE), afin d'éviter d'exposer des points d'entrée sensibles dans le code source. »