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.mzph.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创建这一平台则是希望能借用类似于比特币一样的系统来打击假新闻。 通过创建一个受信任的经…