agrodata / teams-notification-channel
Package to use microsoft teams with laravel channel
Installs: 2 685
Dependents: 0
Suggesters: 0
Security: 0
pkg:composer/agrodata/teams-notification-channel
Requires
- php: ^8.2
- illuminate/cache: *
- illuminate/notifications: *
- illuminate/validation: *
README
   
teams-notification-channel
Biblioteca usada para enviar mensagem via microsoft Teams de usuários logados no sistema via AD/EntraID para outros usuários do AD/EntraId
Exemplo
Será utilizado um campo dentro da tabela de usuário para armazenar os ID's do EntraID/AD dos usuários.
usuário autenticado ($user->external_id)  -> envia notificação -> outro usuário ($user->external_id)
Instalação
Instale a versão mais atual do pacote com o composer:
$ composer require agrodata/teams-notification-channel
ou você pode adicionar a seguinte linha diretamente no arquivo composer.json:
{
    "require": {
        "nairanomura/notificationapi-laravel": "1.0"
    }
}
Config
Após a instalação, registre o provider diretamente no arquivo: config/app.php:
'providers' => [
	// ...
	
	Agrodata\TeamsNotificationChannel\TeamsNotificationChannelServiceProvider::class,
]
O seguinte nó será adicionado no arquivo config/services.php pelo provider
(caso não seja adicionar, deverá ser inserido manualmente).
return [
   
    //...
    'teams-notification-channel' => [
        'user-field-id'    => env('TEAM_NOTIFICATION_CHANNEL_USER_FIELD_ID', 'external_id'),
        'user-field-token' => env('TEAM_NOTIFICATION_CHANNEL_USER_FIELD_TOKEN'),
        'token-cache-key'  => env('MICROSOFT_GRAPH_TOKEN_KEY', 'graph-token'),
    ]
];
- user-field-id: Nome do campo na tabela de usuário que será armazenado o ID do usuário EntraID/AD
- token-cache-keyIndica o nome da chave de cache que está armazenado o accessToken da Microsoft- ! IMPORTANTE ! É necessario que, ao realizar login para solicitar o accessToken no Microsoft EntraID/AD os seguintes escopos sejam solicitados:- Chat.Create
- Chat.ReadWrite
 
 
- ! IMPORTANTE ! É necessario que, ao realizar login para solicitar o accessToken no Microsoft EntraID/AD os seguintes escopos sejam solicitados:
- user-field-token: Indica qual campo da tabela de usuário estará armazenado o accessToken do usuário microsoft. Só será utilizado caso o accessToken não esteja em cache
#.env
TEAM_NOTIFICATION_CHANNEL_USER_FIELD_ID=external_id
TEAM_NOTIFICATION_CHANNEL_USER_FIELD_TOKEN=microsoft-user-id
MICROSOFT_GRAPH_TOKEN_KEY=cache-key
Using
Use o comando Artisan para criar uma notificação:
php artisan make:notification SomeNotification
Returne [microsoft-teams] no método public function via($notifiable) do arquivo de notificação:
public function via($notifiable)
{
    return ['microsoft-teams'];
}
Adicione o método public function toMicrosoftTeams($notifiable) em sua notificação:
//...
public function toMicrosoftTeams($notifiable) 
{
    return "Mensagem automatica enviada via 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 notification_api ou a classe NotificationApiService
para enviar mensagem via Microsoft Teams
Example:
//microsoft_teams(string $receiverId, string $message, string|null $graphToken = null): bool;
$result = microsoft_teams($receiverId, $message, $graphToken);
#or
$result = return (new MicrosoftGraphService($graphToken))->sendChatMessage($receiverId, $message);