Microsoft Teams的Outgoing Webhook開發入門

Microsoft Teams的應用程序有幾種形式:

  1. Tabs
  2. Bots
  3. Connectors
  4. Messaging extensions
  5. Activity feed integrations
  6. Outgoing web hooks

這篇我們主要介紹如何使用 ASP.NET Core來開發最簡單的Outgoing web hook。

什么是outgoing webhook

Outgoing webhooks allow you to create a simple bot for basic interaction, like kicking off a workflow or other simple commands you may need. Outgoing webhooks live only in the team in which you create them and are intended for simple processes specific to your company’s workflow.?
If you’ve worked with outgoing webhooks or slash commands in other chat platforms, you can now bring what you have developed over to Microsoft Teams via outgoing webhooks. Outgoing webhooks are an easy way of extending your team without having to go through the full process of creating a bot via the Microsoft Bot Framework. You can use them for custom workflows and commands such as kicking off a build or checking the latest set of livesite issues.
You also have an effective way of ensuring that your service is accessible only by authorized users, as the security token used by your outgoing webhook will only be scoped to the team in which it has been added

上面是微軟官方對outgoing webhook的說明,其實簡單來說,outgoing webhook就是當我們想要創建一個Bot應用時,可以不必使用微軟Bot Framework來創建,這個應用可以執行我們團隊的一些自定義工作流和簡單命令。

如何在teams里面創建outgoing webhook

要創建一個outgoing webhook, 進入到Teams應用, 導航到“團隊” Tab頁, 選中需要建立的Channel, 選中“應用”這個Tab,點擊最下方的“創建傳出webhook”(英文版本叫Outgoing Webhook), 如下圖所示:

teams_create_webhook

在“創建傳出webhook”對話框中,可以配置傳出webhook在頻道中的顯示方式

  • 名稱?將顯示為機器人的標題,也是用戶將如何命名機器人
  • 回調URL?是將從團隊接收消息的端點
  • 說明?是一個詳細的字符串,它將顯示在配置文件卡和團隊級應用程序儀表板中
  • 配置文件圖片是?傳出webhook的可選顯示圖片

outgoing_webhook_setting

這里我們創建一個名為“TestBot”的程序,填入ngrok中的https的地址(關于ngrok下文會詳細說到),單擊“創建”,將在當前團隊中提供傳出webhook。它不會在任何其他團隊中提供。下一個對話框將顯示一個安全令牌,您將使用該令牌驗證來自Microsoft Teams的請求

webhook_secret_token

這里我們把這個Security Token復制,保存起來。一旦關閉這個頁面以后我們無法再進入到這個頁面復制,如果需要拿到這個Token,必須重新創建新的傳出webhook。

讓我們來試一下新鮮出爐的webhook。將傳出webhook添加到團隊后,它的外觀和行為就像機器人一樣,我們可以輕松地進行交互。它使用帶有webhook名稱的@mention監聽消息,并可以回復豐富的消息,包括圖像和卡片等

teams_at_testbot

teams_Testbot

開發傳出webhook的后端服務

上面我們講到如何在Teams中創建webhook的應用,那當我們發送@這個機器人,并且發送消息時,這個bot應用是如何接受到消息,并且響應這個消息的呢。這里我們基于dotnet core搭建這個bot的后端響應服務程序。
如果你開發機器上還沒有安裝 dontnet,那可以到 http://www.dot.net 下載官方SDK,下載完成后,進入到windows標準的安裝, 一路“下一步”直到完成。 進入到cmd,輸入?dotnet --version,可以看到我們安裝的當前dotnet core的版本:

c:\Users\demouser> dotnet --version
2.1.300

這里我們看到顯示的版本時2.1.300,這個版本是 .NET Core 2.1, 如果是2.1.301,則是 .NET Core 2.1.1

dotnet --info,我們可以看到整個開發環境的詳細信息:

c:\Users\demouser> dotnet --info     

安裝完dotnet core后,我們就可以開始新建web api項目。

c:\demo> dotnet new webapi -n WebhookSample

用vs code打開我們新建的項目的文件夾,可以看到 .Net Core通過模板,為我們新建的web api的項目結構:

webapi_project_vscode

修改Startup.cs文件,注釋其中app.UseHttpsRedirection()

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{if (env.IsDevelopment()){app.UseDeveloperExceptionPage();}else{app.UseHsts();}//app.UseHttpsRedirection();app.UseMvc();
}

這里注意下:去掉app.UseHttpsRedirection()的原因是為了簡化一些配置自簽名證書,如果大家已經配置過了,這個不注釋掉也可以。

修改ValuesController.cs文件,改為如下所示的代碼:

[ApiController]
public class ValuesController : ControllerBase
{[HttpPost][Route("api/message")]public Activity Post([FromBody]Activity request){return new Activity(){Text = $"you send message is {request.Text}"};}
}

執行dotnet run命令來運行項目,默認本地是以?http://localhost:5000?端口運行

到這里我們的web api項目就整個跑起來了,那么如何和我們在Teams中配置的webhook機器人產生交互呢?這里需要借助于我們上面說到的ngrok這個工具了。

ngrok 是一個反向代理,通過在公共端點和本地運行的 Web 服務器之間建立一個安全的通道,實現內網主機的服務可以暴露給外網。
ngrok 可捕獲和分析所有通道上的流量,便于后期分析和重放?
簡單來說就是,我們在webhook中配置了一個https的外網地址,需要將bot的信息轉發到我們內網localhost:5000提供的web api服務,以響應Teams中的消息

ngrok官網下載: https://ngrok.com/?
運行ngrok.exe,輸入命令 ```ngrok http 5000`` 這個命令是讓ngrok的服務器把請求轉發到本地的5000端口,協議使用HTTP。?
從下面的截圖,我們可以看到工具為我們提供的http和https的兩個外網轉發地址,兩個地址都是指向我們本地的localhost:5000端口?ngrok_requesttracker_console

這里的https地址,就是我們上面在Teams中配置webhook時候需要填入的地址,為了讓webhook中的消息轉發到我們本地,并且識別信息,進行響應。那我們重復上文中的步驟:在Teams的channel中輸入@Testbot,然后再輸入come on, 此時我們會收到一個響應消息,如下圖:

teams_Testbot

ngrok還為我們提供了一個非常實用的控制面板,打開你喜歡的瀏覽器,輸入http://localhost:4000,ngrok就會列出所有轉發的請求和響應:

ngrok_requesttracker

點擊任何一個請求,在右邊就會顯示這個請求的詳細信息和它所對應的服務響應內容。

ngrok_requesttracker2

ngrok_requesttracker2

此時,我們把本地的web api服務停止掉(在運行服務的窗口按Ctrl + C),看是否還能響應消息,同樣在Teams中發送消息

teams_Testbot

這里我們看到Bot響應失敗了,查看ngrok的控制面板,看到響應報了?502 Bad Gateway?的錯誤

teams_Testbot

**總結一下,整個的邏輯是: 我們在webhook中填入服務的響應地址(必須是https的),隨后通過ngrok轉發到我們本地5000端口運行的web api程序,程序處理后返回,然后ngrok再返回給teams,teams server再返回給你。

teams_Testbot

總結

這篇文章主要是講解什么是outgoing webhook,如何在Teams中創建一個webhook,如何使用ASP.NET Core開發webhook后端服務程序,并且通過ngrok這個橋梁,把Teams和你本地運行的服務串聯起來。

在下一篇文章中,我們將會講到,如何使用dotnet template快速開發帶card功能的outgoing webhook

官網鏈接

  • Outgoing webhook
  • Code samples for the Microsoft Teams developer platform
  • Add bots to Microsoft Teams apps

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/278120.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/278120.shtml
英文地址,請注明出處:http://en.pswp.cn/news/278120.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

0418 jQuery筆記(添加事件、each、prop、$(this))

1.添加點擊事件、each、prop、$(this) 1 //全選框的被動操作2 //定義一個標志保存最終狀態3 var flag false;4 //為每一個選擇框添加點擊事件,數組.click()5 $(.chex).click(function(){6 //遍歷數組,數組.each()7 …

[WC2008]游覽計劃(斯坦納樹)

[Luogu4294] 題解 : 斯坦納樹 \(dp[i][j]\) 表示以\(i\)號節點為根,當前狀態為\(j\)(與\(i\)連通的點為\(1\)) 當根\(i\)不改變時狀態轉移方程是: \(dp[i][j] \min_{s \in j}\{dp[i][s] dp[i][\complement_js] - val[i]\}\) 當根…

使用dotnet template快速開發Microsoft Teams Outgoing Web Hook

在上一篇文章中,我們一步步從無到有在Microsoft Teams中開發了一個簡單的Outgoing Webhook,并和我們本地的Web API應用程序產生交互,總結起來的步驟大概如下: 導航到“團隊” Tab頁, 選中需要建立的Channel, 選中“應…

[Swift]LeetCode1013. 將數組分成和相等的三個部分 | Partition Array Into Three Parts With Equal Sum...

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★?微信公眾號:山青詠芝(shanqingyongzhi)?博客園地址:山青詠芝(https://www.cnblogs.com/strengthen/)?GitHub地址&a…

京津冀產業協同升級 智慧城市等高端產業需求遇熱

云計算、智慧交通、城市環保科技等高端智慧城市產業項目正成為京津冀產業協同的新關注點。 21日,在由北京市經信委、天津市工信委、河北省工信廳聯合組織的京津冀產業協同發展招商推介專項行動上,超過200家與會企業共完成產業對接項目額達311.7億元。與以…

Microsoft Teams:刪除成員賬戶其歷史聊天會發生什么?

介紹: 此博客文章的目的是演示從Office 365刪除用戶的賬號后,此用戶在Microsoft Teams群聊和私聊中的歷史聊天記錄會發生什么改變。 以下是Microsoft Teams聊天對話,其中Adele和其他團隊成員正在參與對話: 此外, Adele和Mega還在…

PostgreSQL Huge Page 使用建議 - 大內存主機、實例注意

標簽 PostgreSQL , Linux , huge page , shared buffer , page table , 虛擬地址 , 物理地址 , 內存地址轉換表 背景 當內存很大時,除了刷臟頁的調度可能需要優化,還有一方面是虛擬內存與物理內存映射表相關的部分需要優化。 1 臟頁調度優化 1、主要包括…

Microsoft Teams:團隊Owner離開公司后,我們該怎么做?

您是否曾在這么一個團隊里,該團隊唯一有Owner權限的人離開了公司?不幸的是,如果這個人不再在公司里,您可能覺得沒有辦法讓其他團隊成員再成為team的owner。我有一個簡單易用的解決方案,但您需要成為Office 365租戶的Admin或聯系你…

python網絡編程-socket編程

一、服務端和客戶端 BS架構 (騰訊通軟件:serverclient) CS架構 (web網站) C/S架構與socket的關系: 我們學習socket就是為了完成C/S架構的開發 二、OSI七層模型 互聯網協議按照功能不同分為osi七層或tcp/ip五…

使用PowerShell配置Microsoft Teams

作為 IT 專業人員, 我一直在尋找自動化任務的方法, 并使日常操作簡單。當使用Microsoft Teams時, 是否能夠在團隊中自動創建團隊,渠道和設置對于Microsoft Teams組建的成功與否至關重要。PowerShell對Microsoft Teams的支持使您可以做到這一點,它為我提供…

常見Kotlin高頻問題解惑

在筆者的Kotlin交流群里,不少同學反復遇到了一些相似的問題。這些問題大都比較基礎,但又容易產生誤解。因此,我決定寫一篇文章,整理群里同學遇到的一些問題 變量和常量的使用 在Kotlin語言中,我們使用var聲明變量&…

關于神經網絡訓練的一些建議筆記

關于網絡訓練時的參考建議: 1.train loss不斷下降,test loss不斷下降,網絡正在學習 2.train loss不斷下降,test loss趨于不變,網絡過擬合,需要增大數據;減小網絡規模dropout;權重衰減…

Microsoft Teams的保留策略

Microsoft Teams保留策略現在可在Office 365安全性和合規性中心里進行配置 今天,我們很自豪地宣布,我們正在開始推出針對Microsoft Teams的保留策略。 推出預計將在未來幾周內完成。 通過此次發布,Teams管理員可以使用Office 365安全性和合規…

八年溯源,如何巧搭區塊鏈

虎嗅注:區塊鏈正在逐步商業化,但最大的挑戰是共識。 為什么這樣說?因為商品的溯源防偽業務在過去正是因為缺乏信任感而沒有得到普及,這是每個溯源從業者最大的感受。 在虎嗅虎跑團每兩周一次線上分享會上,溯源鏈創始人…

數字簽名過程及數字證書

數字簽名是什么? 作者:David Youd 翻譯:阮一峰 原文網址:http://www.youdzone.com/signature.html 1.鮑勃有兩把鑰匙,一把是公鑰,另一把是私鑰。 2.Bob把公鑰送給他的朋友們-Pat、Doug、Susan-- 每人一把…

Teams與OneDrive for Business和SharePoint的關系

作為一個相對看重個人信息安全與隱私的人,個人附件等資料在Microsoft Teams中的存儲方式、文件訪問權限、可見范圍問題引起了我的好奇。 眾所周知,Teams包含3大主要的模塊:單人聊天、團隊、會議。那下面讓我們一起來看一下,對這三…

hadoop學習筆記(二):centos7三節點安裝hadoop2.7.0

環境win7vamvare10centos7 一、新建三臺centos7 64位的虛擬機 master 192.168.137.100 root/123456 node1 192.168.137.101 root/123456 node2 192.168.137.102 root/123456 二、關閉三臺虛擬機的防火墻,在每臺虛擬機里面執行: systemctl sto…

index.html 的默認301或者302跳轉

index.html 的默認301或者302跳轉 <!DOCTYPE html> <html> <head> <title>Google</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> <script>window.locat…

在Microsoft Teams中的Visio協作

所有Team站點都帶有專用文件庫&#xff0c;用于存儲所有工作組的內容。 您現在可以從桌面或云存儲站點將Visio文件上載到此庫&#xff0c;例如&#xff0c;您所在Team的資產都集中在一個位置&#xff0c;供具有權限的任何人進行訪問。與其他存儲文件一樣&#xff0c;您可以直接…

用區塊鏈打擊假新聞 這可能是最2017年的一件事

據外媒報道&#xff0c;非營利性基金會PUBLIQ公布了一個基于區塊鏈打造的平臺。這是一個用于創建和分享原創新聞和媒體內容的平臺&#xff0c;它將在近期推出。據了解&#xff0c;PUBLIQ創建這一平臺則是希望能借用類似于比特幣一樣的系統來打擊假新聞。 通過創建一個受信任的經…