Puede enviar mensajes a los canales de Teams desde PowerShell mediante webhook o llamadas a la API de Microsoft Graph. Veamos cómo enviar y leer mensajes en los canales de Microsoft Teams usando PowerShell. Puede usar estos scripts de PS en varios escenarios de supervisión o notificación en los que necesita enviar una notificación no por correo electrónico (cmdlet Send-MailMessage), sino directamente a un canal de Teams.
Contenido:
- Enviar mensajes a los equipos de Microsoft mediante WebHook
- ¿Cómo enviar o leer un mensaje de Teams con Microsoft Graph API?
Enviar mensajes a los equipos de Microsoft mediante WebHook
Puede enviar mensajes a un canal de Microsoft Teams mediante los conectores WebHook integrados. Un conector de webhook es una dirección URL a la que puede enviar un objeto JSON mediante una solicitud HTTP POST.
- Cree un canal en Teams. Puede hacerlo utilizando el módulo PowerShell de Microsoft Teams. Por ejemplo:
Get-team -DisplayName sysops| New-TeamChannel -DisplayName "AdminAlerts" -MembershipType Private
- A continuación, abra el cliente de Teams (una versión web o de escritorio) y seleccione Conectores en el menú contextual del canal;
- Añade el Webhook entrante tipo de conector;
- Especifique el nombre del conector;
- Copie la dirección URL del conector que Azure creó para usted.
Para enviar un mensaje simple al canal usando esta URL, ejecute los siguientes comandos de PowerShell:
$myTeamsWebHook = “https://woshub.webhook.office.com/webhookb2/123456-12312-@aaaaa-bbbb-cccc/IncomingWebhook/xxxxxxxxxxxxxxxxxxxxx/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxxxxxxxxx/xxxxx-xxxx-xxxx-xxxx”
Invoke-RestMethod -Method post -ContentType 'Application/Json' -Body '{"text":"Test Teams!"}' -Uri $myTeamsWebHook
Asegúrese de que su mensaje apareció en el canal de Teams. El conector que ha creado se muestra como el autor del mensaje.
MS Teams le permite enviar no más de 4 mensajes por segundo.
Puede agregar otros datos a su notificación de Teams, cambiar la fuente, el color y agregar información adicional desde su secuencia de comandos de PowerShell.
Por ejemplo, la siguiente secuencia de comandos supervisa los eventos de bloqueo del usuario (Evento 4740) en un controlador de dominio con la función PDC FSMO y envía una notificación al canal de Teams.
$LockedUser = Search-ADAccount -UsersOnly –LockedOut | Get-ADUser –Properties lockoutTime, emailaddress | Select-Object emailaddress, @{n='lockoutTime';e={[DateTime]::FromFileTime($_.lockoutTime)}} | Sort-Object LockoutTime -Descending | Select-Object -first 1
$myTeamsWebHook = "YOUR-WEBHOOK-URL"
$webhookMessage = [PSCustomObject][Ordered]@{
"@type" = "FF0000"
"@context" = "http://schema.org/extensions"
"summary" = "Locked User: $($LockedUser.SamAccountName) "
"themeColor" = '700015'
"title" = "User Lockout Event"
"text" = "`n
SamAccountName: $($LockedUser.SamAccountName)
Mail: $($LockedUser.EmailAddress)
Timestamp: $($LockedUser.LockoutTime.ToString()) "
}
$webhookJSON = convertto-json $webhookMessage -Depth 50
$webhookCall = @{
"URI" = $myTeamsWebHook
"Method" = 'POST'
"Body" = $webhookJSON
"ContentType" = 'application/json'
}
Invoke-RestMethod @webhookCall
Luego, el evento aparece en el canal de Teams y un administrador puede reaccionar ante él.
¿Cómo enviar o leer un mensaje de Teams con Microsoft Graph API?
Con la API de Microsoft Graph, puede enviar y leer mensajes en el canal de Teams. Primero, debe registrar la aplicación Azure, establecer permisos (Group.Read.All
, ChannelMessage.Send
, Chat.ReadWrite
y ChatMessage.Send
) y obtenga un token de autenticación (obtenga más información en el artículo Cómo conectar Azure Microsoft Graph API mediante PowerShell).
$ApplicationID = "4434ad23-b212-3212-3aad-54321de3bbc"
$TenatDomainName = "26216542-aaaa-bbbb-2212-65566aa6c32"
$AccessSecret="12-32Bh654321d3-seLa23l33p.hhj33MM21aaf"
$Body = @{
Grant_Type = "client_credentials"
Scope = "https://graph.microsoft.com/.default"
client_Id = $ApplicationID
Client_Secret = $AccessSecret
}
$ConnectGraph = Invoke-RestMethod -Uri https://login.microsoftonline.com/$TenatDomainName/oauth2/v2.0/token -Method POST -Body $Body
$token = $ConnectGraph.access_token
$URLchatmessage="https://graph.microsoft.com/v1.0/teams/$TeamID/channels/$ChannelID/messages"
$BodyJsonTeam = @"
{
"body": {
"content": "Hello World"
}
}
"@
Invoke-RestMethod -Method POST -Uri $URLchatmessage -Body $BodyJsonTeam -Headers -Headers @{Authorization = "Bearer $($token)"}
Puedes obtener $TeamID
y $ChannelID
usando Get-Team
y Get-TeamChannel
desde el módulo MicrosoftTeams.
De la misma forma, puedes leer mensajes de un chat de Teams usando el método GET.
Artículos Interesantes
Contenido