agrodata/microsoft-powerautomate-channel

Package to use microsoft teams with laravel channel

0.4 2024-10-21 20:19 UTC

This package is auto-updated.

Last update: 2024-11-21 20:30:31 UTC


README

powerautomate-notification-channel

Biblioteca usada para enviar uma requisição HTTP para o Microsoft PowerAutomate com intuito de enviar notificação via Microsoft Teams

Configuração Power Automate

O fluxo dentro do PowerAutomate deverá estar configurado exatamente igual ao seguinte documento para funcionar: https://agrodata.atlassian.net/wiki/spaces/COF/pages/1557266433/Microsoft Teams

img.png

Notificação -> solicitação HTTP para PowerAutomate -> envia notificação para o Microsoft Teams

Instalação

Instale a versão mais atual do pacote com o composer:

$ composer require agrodata/microsoft-powerautomate-channel

ou você pode adicionar a seguinte linha diretamente no arquivo composer.json:

{
    "require": {
        "agrodata/microsoft-powerautomate-channel": "0.3"
    }
}

Configuração

Após a instalação, registre o provider diretamente no arquivo: config/app.php:

'providers' => [
	// ...
	
	Agrodata\MicrosoftPowerAutomateChannel\MicrosoftNotificationChannelServiceProvider::class,
]

O seguinte nó será adicionado no arquivo config/services.php pelo provider (caso não seja adicionar, deverá ser inserido manualmente).

<?php
...
[
    'microsoft-powerautomate-channel' => [
        'powerautomate-url' => env('MICROSOFT_POWERAUTOMATE_URL'),
        'tenant-id' => env('MICROSOFT_TENANT_ID'),
        'client-id' => env('MICROSOFT_CLIENT_ID'),
        'client-secret' => env('MICROSOFT_CLIENT_SECRET'),
        'cache-key'  => env('MICROSOFT_POWERAUTOMATE_TOKEN_CACHEKEY', 'microsoft-powerautomate-token'),
    ]
];
  • powerautomate-url: URL HTTP gerada pelo inicio do fluxo do Power Automate (conforme a documentação)
  • tenant-id: Tenant ID do Azure
  • client-id: Client ID da aplicação criada em App registrations dentro do Azure (conforme documentação)
  • client-secret: Secret ID gerado em em App registrations -> Certificates & secrets dentro do Azure (conforme documentação)
  • cache-key: Após realizar a autenticação da aplicação do azure o token de acesso será armazenado em cache na chave definida nessa variável
#.env
MICROSOFT_POWERAUTOMATE_URL=powerautomate-flow-url
MICROSOFT_TENANT_ID=azure-tenant-id
MICROSOFT_CLIENT_ID=azure-client-id
MICROSOFT_CLIENT_SECRET=*****
MICROSOFT_POWERAUTOMATE_TOKEN_CACHEKEY=cache-key

Como usar

Use o comando Artisan para criar uma notificação:

php artisan make:notification SomeNotification

Returne [microsoft-powerautomate] no método public function via($notifiable) do arquivo de notificação:

public function via($notifiable)
{
    return ['microsoft-powerautomate'];
}

Adicione o método public function toMicrosoftPowerautomate($notifiable) em sua notificação:

//...

public function toMicrosoftPowerautomate($notifiable) 
{
    return "Mensagem automatica enviada via powerAutomate & microsoftTeams";
}

exemplo de envio de notificação

*Atenção: Para enviar uma notificação a model de usuário deve possuir a Trait "Notifiable"

    class User extends Authenticatable
    {
        use Notifiable;
        //...
#notify one user
$user->notify((new SomeNotification(..)));

#notify multiple users
Notification::send($users, new SomeNotification(..);

Extra: Helpers

Após a instalação e configuração poderá ser usada a helper power_automate_notification ou a classe NotificationApiService para enviar mensagem para o Microsoft Teams pelo fluxo do Power Automate

Example:

//microsoft_teams(string $receiverId, string $message, string|null $graphToken = null): bool;
$result = power_automate_notification($receiverId, $message, $graphToken);
#or
$result = return (new MicrosoftPowerAutomateService($graphToken))->sendRequestMessage($receiverId, $message);