agrodata / microsoft-powerautomate-channel
Package to use microsoft teams with laravel channel
Installs: 2 666
Dependents: 0
Suggesters: 0
Security: 0
pkg:composer/agrodata/microsoft-powerautomate-channel
Requires
- php: ^8.2
- illuminate/notifications: *
- illuminate/validation: *
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

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 registrationsdentro do Azure (conforme documentação)
- client-secret: Secret ID gerado em em- App registrations -> Certificates & secretsdentro 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);