webhook

Communiquez avec vos Groupes Office 365 grâce aux WebHooks

Citation Publié le Mis à jour le

Bonjour,

Microsoft a annoncé lors d’ Ignite 2016 la montée en puissance de la fonctionnalité Groupes dans Office 365.

Les WebHooks sont des appels HTTP POST pour prévenir de l’apparition d’un événement quelque part.

C’est d’ailleurs la technologie mère qui soutient tous les connecteurs des Groupes Office 365, lisez les lignes suivantes, vous allez comprendre pourquoi.

webhooks
Vous pouvez grâce aux WebHooks publier des messages dans les conversations des Groupes depuis n’importe où.

Quel est l’intérêt ?

L’intérêt et de pouvoir ouvrir la plateforme et la faire dialoguer avec vos applicatifs externes ou même la plateforme Office 365. Ne soyez pas trop verbeux, au risque de polluer les utilisateurs. Les cas d’usages peuvent être les suivants :

  • une erreur de gravité importante
  • un mail office 365 de priorité urgente envoyé par un client spécifique

Voici ce que vous obtiendrez dans l’onglet « Conversations » une fois les webhooks paramétrés :

sans-titre
Onglet « Conversations » d’un Groupe Office 365 avec un Webhook

Démarrez un WebHook lié à un Groupe Office 365.

Ceci se fait grâce à un connecteur, qui est accessible via l’onglet « Connecteurs » de votre Groupe :

snip_20161013143818

Il vous faut ensuite ajouter un WebHook entrant, en donnant « un nom » et éventuellement en choisissant un logo :

snip_20161013144442

Après ceci vous devez copier l’URL du WebHook généré, qui est unique pour votre Groupe Office 365 :

snip_20161013145021

 

 

l’URL est du type : https://outlook.office365.com/webhook/aaa-aaa/IncomingWebhook/aaa/aaa

Ne communiquez pas cette url elle est unique et le WebHook n’est pas authentifié. Au pire vous pouvez toujours le supprimer ou en recréer une autre. Vous pouvez créer plusieurs WebHook dans un Groupe, si vous avez à gérer plusieurs sources.

Testez le webhook

Vous pouvez utiliser hurl.it ou un outil en ligne de commande, curl (téléchargeable ici, croyez moi ne perdez pas de temps à le chercher ailleurs sur le net 😉

L’équipe dev outlook nous propose un excellent tutoriel pour utiliser curl via https://dev.outlook.com/Connectors/GetStarted je n’ai rien a y ajouter.

pour mémoire, la ligne de commande est :

SET WEBHOOKURL="https://outlook.office365.com/webhook/aaa-aaa/IncomingWebhook/aaa/aaa"

curl -H "Content-Type: application/json" -d "{\"text\": \"Hello World!\"}" %WEBHOOKURL%

Voici la correspondance complète des champs JSON avec l’affichage des WebHooks dans la conversation des groupes :

sans-titre001

{
"title": "Hello from curl",
"text": "Visitez le [Portail Dev Outlook](https://dev.outlook.com) pour en apprendre plus sur les Connecteurs Office 365!",
"themeColor": "EA4300",
"potentialAction": [{"@context": "https://schema.org",
                    "@type": "ViewAction",
                    "name": "Open Outlook Dev Center",
                    "target": ["https://dev.outlook.com"]}
                    ]
}

Lancez vous !

Les possibilités sont infinis, voici la liste de quelques liaisons envisageables et les outils …

via zapier.com (quel bel outil !)

Voici comment configurer l' »Action » dans zapier pour paramétrer « Webhooks by Zapier »

snip_20161018140636

via flow.microsoft.com

Voici la configuration qu’il faut appliquer dans flow à votre activité « HTTP » :

snip_20161018121826

via ifttt.com

Il faut ajouter le channel « Maker » dans votre « Recipie », et configurer les champs comme suit :

snip_20161018155609

via du code

Voici différentes manières de faire un appel à un WebHook avec du code, pour l’intégrer dans votre application préférée :

Technologie Code
PHP <!--?php
class OfficeSender {private $_url;
private $_jsonData;
public function __construct($url, $data)
{$this->_url = $url;
$this->_jsonData = $data;
}

public function sendRequest()
{
$ch = curl_init($this->_url);
$jsonDataEncoded = json_encode($this->_jsonData);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonDataEncoded);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
$result = curl_exec($ch);
}
}
$url = 'https://outlook.office365.com/webhook/aaa-aaa/IncomingWebhook/aaa/aaa';
$data = array(
'text' => 'test', // you put summary or text as key
'title' => 'welcome from php'
);

$req = new OfficeSender($url, $data);
$req->sendRequest();
?>

Node.js SharePoint www.eliostruyf.com
Powershell Set-StrictMode -Version Latest

$webhookURI = "https://outlook.office365.com/webhook/aaa-aaa/IncomingWebhook/aaa/aaa"

$pjson = @{
"title" = "Hello from powershell";
"text" = "This is my message. Hello there!";
"themeColor" ="EA4300";
}

Invoke-WebRequest `
-Uri $webhookURI `
-Method "POST" `
-Body (ConvertTo-Json -Compress -InputObject $pjson)

Un grand merci à Toufik pour avoir testé et réalisé les scripts en PHP et NodeJS !

Sources :
webhook dans sharepoint
https://www.eliostruyf.com/sample-node-js-sharepoint-webhook-application-released/
https://dev.outlook.com/Connectors/GetStarted

Pour aller plus loin :

Webhooks Azure Automation