Azure オートメーション運用手順書を使用した Teams チャネルへの投稿

Azure オートメーション運用手順書を使用した Teams チャネルへの投稿

ファイルの作成から Teams への投稿チャネルまで

約1ヶ月前、私は私の経験について書いた Azure Automation 運用手順書として実行される PowerShell スクリプトを使用した SharePoint Online でのファイルの作成.Azure オートメーション アカウントにリソースとして格納されているユーザー資格情報を使用して、SharePoint PnP モジュールで認証したことを報告しました。認証されると、 Add-PnPFile スクリプトによって作成されたファイルを SharePoint ドキュメント ライブラリ内のファイルとして作成するコマンドレット。

保存された資格情報を使用して、ドキュメントライブラリを所有していたMicrosoft 365グループのメンバーのIDを使用してファイルを作成できることを確認しましたが、これを行う別の方法を見つけることができませんでした。私はまた、グラフのアクセス許可が機能する方法のために、Teamsチャネルに投稿する方法が見つからなかったとも言いました。明らかに、私は自分の知識の限界を探っていました。

2つのコメントが有益な提案をしました。最初に、PnP PowerShell モジュールには Submit-PnpTeamsChannelMessage コマンドレットは、特に証明書ベースの認証(CBA)と組み合わせると、これが答えになる可能性があることを示唆しました。2つ目は、着信Webhookコネクタを使用してターゲットチャネルに投稿することを提案しました。

送信 PnpTeamsChannelMessage を使用してチーム チャネルに投稿する

私のスクリプトはCSVファイルとHTMLファイルで出力レポートを作成し、すでにPnPに接続していました。ザ Submit-PnpTeamsChannelMessage コマンドレットは、チャネルのメッセージ本文として HTML コンテンツを受け入れます。接続と本文の部分が整ったら、このコードを使用して投稿メッセージを追加できます。

$TargetTeamId = "107fe4dd-809c-4ec9-a3a1-ab88c96e0a5e"
$TargetTeamChannel = "19:6d688803124c48d6bfa796284e641e9d@thread.tacv2"
Submit-PnPTeamsChannelMessage -Team $TargetTeamId -Channel $TargetTeamChannel -Message $Body -ContentType Html -Important

パラメーターは、ターゲット チャネルとチャネルを所有するチームの識別子です。チーム識別子は、 ゲットチーム 又は Get-MgGroup コマンドレット:

Get-Team -DisplayName "Tenant Information" | ft GroupId, DisplayName

GroupId                              DisplayName
-------                              -----------
107fe4dd-809c-4ec9-a3a1-ab88c96e0a5e Tenant Information

Get-MgGroup -Filter "displayName eq 'Tenant Information'" | ft Id, DisplayName

Id                                   DisplayName
--                                   -----------
107fe4dd-809c-4ec9-a3a1-ab88c96e0a5e Tenant Information

チーム識別子がわかれば、 チームチャネルを取得 コマンドレット:

Get-TeamChannel -GroupId 107fe4dd-809c-4ec9-a3a1-ab88c96e0a5e | ft Id, DisplayName

Id                                               DisplayName
--                                               -----------
19:078bef3cfb6c4c519d4f585f099c9c91@thread.tacv2 General
19:6d688803124c48d6bfa796284e641e9d@thread.tacv2 Planning 2021

その他のパラメーターは一目瞭然です。注意すべき唯一のもう 1 つの点は、重要スイッチがこのマーキングをメッセージに適用することです。図 1 にその結果を示します。

Azure オートメーションで実行されているスクリプトを使用して Teams チャネルに投稿されたメッセージ
図 1: Azure オートメーションで実行されているスクリプトを使用して Teams チャネルに投稿されたメッセージ

すごい!Azure オートメーションで実行されているスクリプトによって作成されたコンテンツを使用して、Teams チャネルにメッセージを投稿できます。残っている唯一の課題は、保存されている資格情報の使用を排除する方法です。私はまだその点を探っています。

受信 Webhook コネクタを使用して Teams チャネルに投稿する

着信 Webhook コネクタは、すべての teams チャネルでサポートされている標準コネクタの 1 つです。コネクタの機能は、ターゲット チャネルを識別する URI に送信された JSON 形式のコンテンツを受け入れ、そのチャネルに新しいメッセージとして投稿することです。Webhook コネクタを使用して、新しい Microsoft 365 ロードマップ項目に関する情報を投稿する例を次に示します。通常のメッセージをチャネルに投稿する代わりに、コネクタはメッセージ カードを投稿します。これらは、新しい情報が利用可能になったことを通知することを意図しており、完全なストーリーを見つけることができる場所をユーザーに伝えるための指示 (ハイパーリンクなど) を含めることができます。私の場合、カードの最大サイズ制限を破ったため、完全なレポートをメッセージカードに収めることは不可能でした。そのため、新しいバージョンのレポートが利用可能になったことを読者に伝えるカードと、(SharePoint Online から) レポートをダウンロードするためのボタンを作成しました。私が使用したコードは次のとおりです。

# Post to Teams channel using an incoming webhook connector
$GroupWebHookData="The new report is available in <a href="" + $NewFileUri + '">' + 'Microsoft 365 Groups Expiration Report</a>'
$DateNow = Get-Date -format g
$Notification = @"
    {
        "@type": "MessageCard",
        "@context": "https://schema.org/extensions",
        "summary": "Microsoft 365 Groups",
        "themeColor": "0072C6",
        "title": "Notification: New Microsoft 365 Groups Expiration Report is available",
         "sections": [
            {
                "facts": [
                    {
                        "name": "Tenant:",
                        "value": "TENANT"
                    },
                    {
                        "name": "Date:",
                        "value": "DATETIME"
                    }],
                    "markdown" : "true"                   
                  }],
                "potentialAction": [{
                       "@type": "OpenUri",
                       "name": "Download the report",
                       "targets": [{
                           "os": "default",
                           "uri": "URI"
                 }],
    }  ]
   } 
"@

$NotificationBody = $Notification.Replace("TENANT","$TenantName").Replace("DATETIME","$DateNow").Replace("URI","$NewFileUri")
# Make sure you use the URI for your channel here.
$TargetChannelURI = "https://office365itpros.webhook.office.com/webhookb2/107fe4dd-809c-4ec9-a3a1-ab88c96e0a5e@b662313f-14fc-43a2-9a7a-d2e27f4f3478/IncomingWebhook/0a3dea30f595436ead8138334516911a/eff4cd58-1bb8-4899-94de-795f656b4a18"
$Command = (Invoke-RestMethod -uri $TargetChannelURI -Method Post -body $NotificationBody -ContentType 'application/json')     

チャネルにポストされる結果のメッセージ カードは単純ですが、ジョブは完了します (図 2)。

受信 Webhook コネクタを使用して Teams チャネルに投稿されたメッセージカード
図 2: 受信 Webhook コネクタを使用して Teams チャネルに投稿されたメッセージ カード

仕事をやり遂げる

結論は、 Submit-PnpTeamsChannelMessage コマンドレットまたは受信 Webhook コネクタ。どちらの方法にも独自の制限がありますが、制限が何であるかを理解したら、さまざまな状況でどのアプローチを取るかを簡単に決定できます。

Azure オートメーション運用手順書で出力を作成するために使用した完全なスクリプトは次のとおりです。 GitHub で利用可能.


Microsoft 365エコシステムの変化する世界に追いつくには、 Office 365 for IT プロフェッショナル 電子ブック。毎月の更新は、加入者が新しい開発について学ぶことを意味します彼らが起こるようにメンツ。

未分類

Posted by admin