定制 agrodata/teams-notification-channel 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

agrodata/teams-notification-channel

最新稳定版本:0.22

Composer 安装命令:

composer require agrodata/teams-notification-channel

包简介

Package to use microsoft teams with laravel channel

README 文档

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
  • 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);

统计信息

  • 总下载量: 2.89k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2024-10-03