agrodata / teams-notification-channel
Package to use microsoft teams with laravel channel
Requires
- php: ^8.2
- 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/ADtoken-cache-key
Indica 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);