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