testmonitor/teams-client

The TestMonitor Teams Client.

v3.0.0 2024-12-17 09:40 UTC

This package is auto-updated.

Last update: 2024-12-17 09:41:23 UTC


README

Latest Stable Version CircleCI StyleCI codecov License

This package provides a very basic, convenient, and unified wrapper for sending messages to Microsoft Teams using an incoming webhook.

It's mostly a based on Sebastian Bretschneider's PHP Microsoft Teams Connector, but uses Guzzle instead of the PHP CURL extension. This package leverages Microsoft Teams Adaptive Cards, making it a great fit for Power Automate.

Table of Contents

Installation

To install the client you need to require the package using composer:

$ composer require testmonitor/teams-client

Use composer's autoload:

require __DIR__.'/../vendor/autoload.php';

You're all set up now!

Usage

Before you can post messages, you need to set up an incoming webhook in Teams:

  • Launch the Microsoft Teams application.
  • Select the Teams tab.
  • Locate the channel where you want notifications delivered, then click the three dots (More options) next to it.
  • Select Workflows from the dropdown menu.
  • In the search bar, type "webhook".
  • Choose the Post to a channel when a webhook request is received template.
  • Enter a name for the workflow or use the default name.
  • Click Next.
  • Confirm the selected Team and Channel.
  • Click Add workflow and your webhook URL will be provided.

Use the webhook URL to create a new client instance:

$teams = new \TestMonitor\Teams\Client('https://webhook.url/');

Examples

Post a simple message to Teams:

$card = new \TestMonitor\Teams\Resources\Card;

$card->addElement(
    new \TestMonitor\Teams\Resources\Card\Elements\TextBlock('Simple heading')
);

$teams->postMessage($card);

Adaptive cards allow way more comprehensive messages. Here's another example:

$card = new \TestMonitor\Teams\Resources\Card;

$title = new \TestMonitor\Teams\Resources\Card\Elements\TextBlock('Simple heading');
$facts = new \TestMonitor\Teams\Resources\Card\Elements\FactSet(
    new \TestMonitor\Teams\Resources\Card\Elements\Fact('Status', 'Completed'),
    new \TestMonitor\Teams\Resources\Card\Elements\Fact('Category', 'Feature request'),
);
$action = new \TestMonitor\Teams\Resources\Card\Actions\OpenUrl('https://www.testmonitor.com/');

$card->addElement($title)
     ->addElement($facts)
     ->addAction($action);

$teams->postMessage($card);

For more information on composing these messages, head over to PHP Microsoft Teams Connector for more examples or refer to Microsoft's documentation on Adaptive Cards.

Tests

The package contains integration tests. You can run them using PHPUnit.

$ vendor/bin/phpunit

Changelog

Refer to CHANGELOG for more information.

Contributing

Refer to CONTRIBUTING for contributing details.

Credits

License

The MIT License (MIT). Refer to the License for more information.