Home > Windows にまつわる e.t.c.

Microsoft Teams へ PowerShell からメッセージを飛ばす


Windows Update とかの通知をメールではなくチャット ツールに Web API でメッセージ飛ばそうとしていたのですが、slack だとうまくいかず...
(僕の英語力不足で URI とか鍵発行がうまくできす > <)

そうこうしていたら Microsoft Teams が無料提供になったので、Teams にメッセージ飛ばしてみました。

Microsoft Teams を無料で
https://products.office.com/ja-jp/microsoft-teams/free

 

Teams は、マイクロソフト アカウントで登録すれば良いので、使い始めるのは難しくありません。

 

URI の発行

Microsoft Teams API は URI だけでハンドリングできるので、アクセス用の URI を発行します。

Windows Update 通知が目的だったので、専用のチャンネルを作りました。

URI 発行は、Web サイトからでも、アプリからもできますのでお好きな方で発行してください。(操作はどちらでも一緒)

Microsoft Teams サイト
https://teams.microsoft.com

Microsoft Teams アプリダウンロード
https://teams.microsoft.com/downloads

 

最近、URI 構成が変わったようで、古い URI を使っていると、以下のエラーがメッセ維持に付加されます

Important: Your connector is running on old configuration. Navigate to connector configuration window to update to new configuration.

このエラーは、URI を最新に更新すれば解消されます

 

「ストア」を開く

「Incoming Webhook」を検索

メッセージ送信先を選択

インストール

「コネクタ」を設定

「Incoming Webhook」を構成

メッセージの送信者のアカウントを作成

作成

発行された URI を控えて完了

 

PowerShell でメッセージ送信

Teams に送信するメッセージは JSON 形式なので、JSON で送信メッセージを作成し、Web API でメッセージ送信します。

# Web API の URL
$url = "ここに発行された URI を書く"

# Invoke-RestMethod に渡す Web API の引数を JSON で作成
$body = ConvertTo-JSON @{
    text = "Hello World"
}

# API を叩く
Invoke-RestMethod -Method Post -Uri $url -Body $body -ContentType 'application/json'

 

Web API を叩くと、こんな感じでメッセージが飛びます。

送信されたメッセージ

 

メンションは現状で効かないようなので、通知が必要な場合は Teams Client 側でチャンネル フォロー設定するしかなさっぽです。

 

参考情報

Post notifications to Microsoft Teams using PowerShell | Building Clouds
https://blogs.technet.microsoft.com/privatecloud/2016/11/02/post-notifications-to-microsoft-teams-using-powershell/

 

 

back.gif (1980 バイト)

home.gif (1907 バイト)

Copyright © MURA All rights reserved.