[Teams][.NET]NLOG的訊息拋到Microsoft Teams

這星期收到許多勸敗Microsoft Teams的分享訊息,Teams也是一種辦公室即時通訊合作軟體,不過以前Teams得要有Office 365才能用,現在有免費的方案了。除了團隊溝通、檔案共用和視訊通話等功能,我們先從應用程式的Log拋到Teams 頻道開始,來串一下NLog To Teams Channel

 

 

頻道新增及Webhook安裝(Microsoft Teams)

按一下團隊 > 選擇自己的團隊 > .按一下..其他選項 > 選擇新增頻道

 

依序填入頻道名稱、說明,然後按下新增按鈕

 

建立好頻道後,選...其他選項,點一下連接器。

 

按一下傳入Webhook旁邊的新增按鈕

 

按一下安裝功能

 

輸入Incoming Webhook名稱及圖片後(這個名稱及圖片是傳訊人員的顯示名稱及頭貼),按下建立按鈕。

 

複製頻道Webhook的url到剪貼簿,然後按一下完成按鈕。

*剛剛複製的webhook Url應該長的像下面這樣: 

https://outlook.office.com/webhook/然後很長很長很長一段代碼

 


使用Nlog將log訊息拋到Teams Channel

好,新增好頻道後,接下來要串NLog了,首先新增一個主控台應用程式專案 >

 

打開NuGet封裝管理員尋找NLog,然後安裝NLog、NLog.Config

NLog

NLog.Config

 

打開program.cs程式,撰寫以下測試內容:

using NLog;
using System;

namespace NlogToMSTeams
{
    class Program
    {
        private static Logger logger = LogManager.GetCurrentClassLogger();
        static void Main(string[] args)
        {
            logger.Error($"Today is {DateTime.Now.DayOfWeek}");
            Console.ReadKey();
        }
    }
}

 

打開NLog.config,分別設定Console及Microsoft Teams兩個Target,然後把剛剛建立webhook時複製下來的Url貼到target uri的欄位中

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
      autoReload="true"
      throwExceptions="false"
      internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log">
  <variable name="myvar" value="myvalue"/>
  <targets>
    <target xsi:type="Console" name="console"/>
    <target xsi:type="WebService"
            name="MSTeams"
            url='請填剛剛複製下來那段頻道incoming webhook的url'
            protocol='JsonPost'
            encoding='UTF-8'
            includeBOM='false'   
            >
      <parameter name='text' type='System.String' layout='${message}'/>
    </target>
    <!---->
  </targets>

  <rules>
    <logger name="*" minlevel="Info" writeTo="console" />
    <logger name='*' writeTo='MSTeams' />
  </rules>
</nlog>

 

好,來測試看看!按F5執行Console程式~

執行後,查看Teams的頻道內,果然出現了今天是星期六(Today is Saturday)的訊息。

也很簡單就和AP Log整合在一起了。

 

 


小結:

  • Slack免費版只能10個App整合,Teams免費版則沒有限制。
  • Teams商務基本版價格是每月台幣$150,每個使用者1 TB檔案儲存空間
  • Slack Standard的價格是6.67美金(約台幣200),每個使用者10 GB 儲存空間
  • Teams最多可有 300 個使用者,超過還有企業選項。
  • 如果遇到http 400 bad request,可以先試試用PostMan發送Json格式的POST測試看看。

 

今天是星期六!陪女兒看巧虎。

2018.7.21 桃園展演中心

 


參考

NLog WebService target

Slack Pricing

比較 Teams 方案