Verbindung IPS mit MS Teams

Aufgrund der aktuellen Situation, hänge auch ich im Homeoffice.
Für die Zusammenarbeit der Kollegen, nutzen wir u.a.Teams von Microsoft.
Hier ist es möglich einen eingehenden Webhook zu konfigurieren und kann damit aus IPS Nachrichten senden.

  1. Webhook in Teams anlegen.
    Im Kanal oben rechts auf die drei Punkte und „Connectors“ wählen.

„Incomming Webhook“ konfigurieren

Namen festlegen, Icon konfigurieren und die webhook Adresse kopieren. Done
Jetzt kann man im JSON Format Nachrichten, mittels cURL an den Kanal senden.
In IPS ein Script anlegen und die kopierte Adresse unter $url eintragen.

<?php
$url = "https://outlook.office.com/webhook/40ded607-f14b-44d6-9236-4db84ef78f24@771c9c47-7f24-44dc-958e-34f8713a8394/IncomingWebhook/xxxxxxxxxxxxxxxxxxxxxxxxxxxxx/c73740f2-527f-4c13-9c81-2d61c3ea88b8";
$debug = false;

$json = '{"text": "Hello World"}';
$return = ATN_SendTeams($json,$url);
if ($debug) echo $return;

function ATN_SendTeams($payload,$url)
{
    $handle = curl_init();
    curl_setopt_array($handle,
        array(
            CURLOPT_URL             => $url,
            // Enable the post response.
            CURLOPT_POST            => true,
            // The data to transfer with the response.
            CURLOPT_HEADER          => "Content-Type: application/json",
            CURLOPT_POSTFIELDS      => $payload,
            CURLOPT_RETURNTRANSFER  => true,
            )
        );
    $data = curl_exec($handle);
    curl_close($handle);
    return $data;
}

und schon kann man alles Mögliche senden :slight_smile:


Viel Spass damit
Attain

PS: Nützliche Links
https://docs.microsoft.com/de-de/microsoftteams/platform/webhooks-and-connectors/how-to/connectors-using
https://docs.microsoft.com/de-de/outlook/actionable-messages/message-card-reference

Hallo Attain,

vielen Dank für die Vorlage.
Ich wollte hier nur kurz meine Erweiterung um ein oder mehrere Bilder teilen.


<?php

$url = "https://outlook.office.com/webhook/40ded607-f14b-44d6-9236-4db84ef78f24@771c9c47-7f24-44dc-958e-34f8713a8394/IncomingWebhook/xxxxxxxxxxxxxxxxxxxxxxxxxxxxx/c73740f2-527f-4c13-9c81-2d61c3ea88b8";
$debug = false;

$Title = "Test";
$ThemeColor = "ff0000";
$Text = "Das ist nur ein Test <br> hallo ";

$Bilder = "https://BildUrl_1.jpg,https://BildUrl_2.jpg";

// Wenn mehrere Bilder dann in Array uebergeben
$ArrayBilder = explode(",", $Bilder);

// Json anfang
$json = '{';
   
// Werte übergeben 
$json .= '"title":"'.$Title.'",';
$json .= '"themeColor":"'.$ThemeColor.'",';
$json .= '"text":"'.$Text.'"';

// Wenn Bild hinterlegt schleife durchgehen und bild einfügen	      
if(!empty($Bilder)) {	   
	$pics = "";
	for($i=0;$i<count($ArrayBilder);$i++) {
		$pics .= '{"image":"'.$ArrayBilder[$i].'"},';
	}
		
	$json .= ',
		"sections":[
		      {
		         "images":['.$pics.']
		      }
		   ]';
}

// Json ende	
$json .= '}';	

$return = ATN_SendTeams($json,$url);
if ($debug) echo $return;

function ATN_SendTeams($payload,$url)
{
    $handle = curl_init();
    curl_setopt_array($handle,
        array(
            CURLOPT_URL             => $url,
            // Enable the post response.
            CURLOPT_POST            => true,
            // The data to transfer with the response.
            CURLOPT_HEADER          => "Content-Type: application/json",
            CURLOPT_POSTFIELDS      => $payload,
            CURLOPT_RETURNTRANSFER  => true,
            )
        );
    $data = curl_exec($handle);
    curl_close($handle);
    return $data;
}