Microsoft Teams的Outgoing Webhook开发入门
Microsoft Teams的應(yīng)用程序有幾種形式:
這篇我們主要介紹如何使用 ASP.NET Core來開發(fā)最簡單的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就是當(dāng)我們想要創(chuàng)建一個Bot應(yīng)用時,可以不必使用微軟Bot Framework來創(chuàng)建,這個應(yīng)用可以執(zhí)行我們團(tuán)隊的一些自定義工作流和簡單命令。
如何在teams里面創(chuàng)建outgoing webhook
要創(chuàng)建一個outgoing webhook, 進(jìn)入到Teams應(yīng)用, 導(dǎo)航到“團(tuán)隊” Tab頁, 選中需要建立的Channel, 選中“應(yīng)用”這個Tab,點擊最下方的“創(chuàng)建傳出webhook”(英文版本叫Outgoing Webhook), 如下圖所示:
在“創(chuàng)建傳出webhook”對話框中,可以配置傳出webhook在頻道中的顯示方式
- 名稱?將顯示為機(jī)器人的標(biāo)題,也是用戶將如何命名機(jī)器人
- 回調(diào)URL?是將從團(tuán)隊接收消息的端點
- 說明?是一個詳細(xì)的字符串,它將顯示在配置文件卡和團(tuán)隊級應(yīng)用程序儀表板中
- 配置文件圖片是?傳出webhook的可選顯示圖片
這里我們創(chuàng)建一個名為“TestBot”的程序,填入ngrok中的https的地址(關(guān)于ngrok下文會詳細(xì)說到),單擊“創(chuàng)建”,將在當(dāng)前團(tuán)隊中提供傳出webhook。它不會在任何其他團(tuán)隊中提供。下一個對話框?qū)@示一個安全令牌,您將使用該令牌驗證來自Microsoft Teams的請求
這里我們把這個Security Token復(fù)制,保存起來。一旦關(guān)閉這個頁面以后我們無法再進(jìn)入到這個頁面復(fù)制,如果需要拿到這個Token,必須重新創(chuàng)建新的傳出webhook。
讓我們來試一下新鮮出爐的webhook。將傳出webhook添加到團(tuán)隊后,它的外觀和行為就像機(jī)器人一樣,我們可以輕松地進(jìn)行交互。它使用帶有webhook名稱的@mention監(jiān)聽消息,并可以回復(fù)豐富的消息,包括圖像和卡片等
開發(fā)傳出webhook的后端服務(wù)
上面我們講到如何在Teams中創(chuàng)建webhook的應(yīng)用,那當(dāng)我們發(fā)送@這個機(jī)器人,并且發(fā)送消息時,這個bot應(yīng)用是如何接受到消息,并且響應(yīng)這個消息的呢。這里我們基于dotnet core搭建這個bot的后端響應(yīng)服務(wù)程序。
如果你開發(fā)機(jī)器上還沒有安裝 dontnet,那可以到 http://www.dot.net 下載官方SDK,下載完成后,進(jìn)入到windows標(biāo)準(zhǔn)的安裝, 一路“下一步”直到完成。 進(jìn)入到cmd,輸入?dotnet --version,可以看到我們安裝的當(dāng)前dotnet core的版本:
這里我們看到顯示的版本時2.1.300,這個版本是 .NET Core 2.1, 如果是2.1.301,則是 .NET Core 2.1.1
dotnet --info,我們可以看到整個開發(fā)環(huán)境的詳細(xì)信息:
c:\Users\demouser> dotnet --info安裝完dotnet core后,我們就可以開始新建web api項目。
c:\demo> dotnet new webapi -n WebhookSample用vs code打開我們新建的項目的文件夾,可以看到 .Net Core通過模板,為我們新建的web api的項目結(jié)構(gòu):
修改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()的原因是為了簡化一些配置自簽名證書,如果大家已經(jīng)配置過了,這個不注釋掉也可以。
修改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}"};} }執(zhí)行dotnet run命令來運行項目,默認(rèn)本地是以?http://localhost:5000?端口運行
到這里我們的web api項目就整個跑起來了,那么如何和我們在Teams中配置的webhook機(jī)器人產(chǎn)生交互呢?這里需要借助于我們上面說到的ngrok這個工具了。
ngrok 是一個反向代理,通過在公共端點和本地運行的 Web 服務(wù)器之間建立一個安全的通道,實現(xiàn)內(nèi)網(wǎng)主機(jī)的服務(wù)可以暴露給外網(wǎng)。
ngrok 可捕獲和分析所有通道上的流量,便于后期分析和重放?
簡單來說就是,我們在webhook中配置了一個https的外網(wǎng)地址,需要將bot的信息轉(zhuǎn)發(fā)到我們內(nèi)網(wǎng)localhost:5000提供的web api服務(wù),以響應(yīng)Teams中的消息
ngrok官網(wǎng)下載: https://ngrok.com/?
運行ngrok.exe,輸入命令 ```ngrok http 5000`` 這個命令是讓ngrok的服務(wù)器把請求轉(zhuǎn)發(fā)到本地的5000端口,協(xié)議使用HTTP。?
從下面的截圖,我們可以看到工具為我們提供的http和https的兩個外網(wǎng)轉(zhuǎn)發(fā)地址,兩個地址都是指向我們本地的localhost:5000端口?
這里的https地址,就是我們上面在Teams中配置webhook時候需要填入的地址,為了讓webhook中的消息轉(zhuǎn)發(fā)到我們本地,并且識別信息,進(jìn)行響應(yīng)。那我們重復(fù)上文中的步驟:在Teams的channel中輸入@Testbot,然后再輸入come on, 此時我們會收到一個響應(yīng)消息,如下圖:
ngrok還為我們提供了一個非常實用的控制面板,打開你喜歡的瀏覽器,輸入http://localhost:4000,ngrok就會列出所有轉(zhuǎn)發(fā)的請求和響應(yīng):
點擊任何一個請求,在右邊就會顯示這個請求的詳細(xì)信息和它所對應(yīng)的服務(wù)響應(yīng)內(nèi)容。
此時,我們把本地的web api服務(wù)停止掉(在運行服務(wù)的窗口按Ctrl + C),看是否還能響應(yīng)消息,同樣在Teams中發(fā)送消息
這里我們看到Bot響應(yīng)失敗了,查看ngrok的控制面板,看到響應(yīng)報了?502 Bad Gateway?的錯誤
**總結(jié)一下,整個的邏輯是: 我們在webhook中填入服務(wù)的響應(yīng)地址(必須是https的),隨后通過ngrok轉(zhuǎn)發(fā)到我們本地5000端口運行的web api程序,程序處理后返回,然后ngrok再返回給teams,teams server再返回給你。
總結(jié)
這篇文章主要是講解什么是outgoing webhook,如何在Teams中創(chuàng)建一個webhook,如何使用ASP.NET Core開發(fā)webhook后端服務(wù)程序,并且通過ngrok這個橋梁,把Teams和你本地運行的服務(wù)串聯(lián)起來。
在下一篇文章中,我們將會講到,如何使用dotnet template快速開發(fā)帶card功能的outgoing webhook
官網(wǎng)鏈接
- Outgoing webhook
- Code samples for the Microsoft Teams developer platform
- Add bots to Microsoft Teams apps
總結(jié)
以上是生活随笔為你收集整理的Microsoft Teams的Outgoing Webhook开发入门的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ipad和iphone切图_如何在iPh
- 下一篇: 最新小米线刷救砖工具分享+支持全系通用