使用AzureFunction开发最简单的Teams Outgoing Webhook

上篇文章讲了teams app的serverless架构,这篇主要讲如何真正使用Azure Function来开发一个最最简单的Teams Outgoing Webhook。

我们先登入azure的portal,创建一个azure function。我这里创建了一个名字叫outgoing-webhook的azure function。完成后如下图,记住这个azure function的URL,我这里是 https://outgoing-webhook.azurewebsites.net

OutgoingWebhook

在左边菜单里选择”Functions”,点击”Add”创建一个新的function

OutgoingWebhook

选择Trigger,我们使用HTTP Trigger

OutgoingWebhook

输入我们function的名字,我这里叫HandleMessage,有一点需要注意,Authorization level需要选择”Anonymous”,然后点击Create Function

OutgoingWebhook

完成后就可以看到我们有了HandleMessage这个函数。

OutgoingWebhook

输入我们的outgoing webhook代码。

OutgoingWebhook

#r "Newtonsoft.Json"using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;public class Message
{public string Text { get; set; }
}public static async Task<IActionResult> Run(HttpRequest req, ILogger log)
{log.LogInformation("C# HTTP trigger function processed a request.");string requestBody = await new StreamReader(req.Body).ReadToEndAsync();var message = JsonConvert.DeserializeObject<Message>(requestBody);return new OkObjectResult(new Message { Text = "Echo: " + message.Text });
}

回到Teams,先选择需要添加outgoing webhook的一个team,选择”Manage team”

OutgoingWebhook

进入”Apps”页面,在右下方,点击 “Create an outgoing webhook”,你有可能看不到这个选项,如果看不到,你需要用管理员账号按照下面的步骤到office365后台进行设置

OutgoingWebhook

使用你的Office365管理员账号登入”https://portal.office.com”,点击”Admin”菜单

OutgoingWebhook

在左侧找到”Teams”菜单

OutgoingWebhook

然后找到 “Teams app”,点击”Permission policies”,点击你所在policy组,我这里是默认的”Global (Org-wide default)”

OutgoingWebhook

确保Custom apps是Allow all apps

OutgoingWebhook

再到Setup policies,确保 “Upload custom apps”是打开的状态

OutgoingWebhook

回到Teams,刷新页面,或者重新登入,现在你应该可以看到 “Create an outgoing webhook”的连接了,点击它。

OutgoingWebhook

在弹出的页面里输入你的webhook名字,和URL。 OutgoingWebhook

我这里使用名字”OutgoingWebhookTest”,URL是https://outgoing-webhook.azurewebsites.net/api/HandleMessage。这个URL就是我们前面创建的azure function的URL,加上function的名字。

{azure function url}/api/{http-triggered function name}

OutgoingWebhook

创建完后进入一个channel,at这个webhook,我这里是 @outgoingWebhookTest

OutgoingWebhook

后面跟上你想发给这个webhook的文字。

OutgoingWebhook

发送后,等几秒钟后,你就可以收到我们function发回来的回复了。

OutgoingWebhook

如果你点开Azure Function的log,可以实时的看到我们function被teams调用的记录

OutgoingWebhook

使用Azure Function开发的好处是代码简单,不需要ngrok之类的工具,而且当你webhook只是用来自己测试玩玩,基本是免费的,这也是Azure serverless的一大优势!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/277923.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java 基础 之 标识符

www.verejava.com/?id1699254… /* 标识符的命名规则: 1. 是以字母&#xff0c;数字&#xff0c;下滑线_和美元符号$ 组成 2. 不能以数字开头 3. 区分大小写 4. 不能是java的保留关键字 5. 最好是见名思意 */ public class Identifier {public static void main(String[] args…

Ubuntu宿主机与VMware中其他系统虚拟机的互通

Ubuntu做宿主机&#xff0c;VMware中创建Windows10&#xff0c;并且通过三种模式实现两系统互通&#xff0c;其实并非是件难事。在有线网卡未接网线的环境下&#xff0c;关闭两系统防火墙&#xff0c;基本遵从下文便可实现。 转载&#xff1a;https://note.youdao.com/ynotesha…

使用Azure轻松实现Teams App的全球合规性

我在之前的一篇博客里面讲了合规性对于我们Teams app是非常重要的&#xff0c;因为office365平台就是面向全世界用户的&#xff0c;我们开发的teams app一旦发布后&#xff0c;立刻就会有各国各地区的用户来进行安装使用&#xff0c;所以符合用户所在地区的要求是非常重要的。 …

【php复习之】php创建数组的几种方式

1、array()函数 1.1无key值 $arrarray(1,2,3,4); 1.2键值对 $arrarray( name>myj,age>18,phone>1888888888);1.3空数组 $arrarray(); 2、compact()函数 compact函数可以把变量转换为数组。 $a aaa;$b bbb;$c ccc;$arr3 compact(a,b,c);输出&#xff1a;{"a&q…

ADC知识(2)——直流参数(输入电压参考,参考电流输入,积分非线性误差,差分非线性误差)...

目录 四、 输入参考电压范围 五、 参考电流 六、 非线性问题 差分非线性误差 积分非线性 四、 输入参考电压范围 大多数数据手册中&#xff0c;将它定义为一个特定的参考电压值&#xff0c;通常这个电压作为 此转换器最常用的参考电压。在参考输入电压…

LuckyDraw app使用CosmosDB的成本分析

我在以前的博客里说过我的LuckyDraw app在数据存储方面使用的是 Azure Table Storage&#xff0c;当时选择这个的原因是成本考虑&#xff0c;因为它实在是便宜&#xff0c;对于我这种个人开发维护的免费的teams app来说&#xff0c;成本是一个很重要的考量点。 当然&#xff0…

React 重温之 组件生命周期

生命周期 任何事物都不会凭空产生&#xff0c;也不会无故消亡。一个事物从产生到消亡经理的各个阶段&#xff0c;我们称之为 生命周期。 具体到我们的前端组件上来&#xff0c;一个组件的生命周期可以大体分为创建、更新、销毁这个三个阶段。 本文主要介绍React 的组件生命周期…

迁移聊天记录到Teams

有一些朋友问我teams是否支持将其他平台/系统里的聊天记录迁移某个channel里&#xff0c;答案是肯定的&#xff0c;teams团队在去年年中的时候就提供了这个功能。这个功能是通过graph api来完成的&#xff0c;我们今天就来看看如何迁移聊天记录到teams里。 首先&#xff0c;我…

leetcode-191-Number of 1 Bits

题目描述&#xff1a; Write a function that takes an unsigned integer and returns the number of 1 bits it has (also known as the Hamming weight). Example 1: Input: 11 Output: 3 Explanation: Integer 11 has binary representation 000000000000000000000000000010…

androidsdk里的android.bat和uiautomatorview.bat启动就闪退问题

进入D:\androidsdk\tools文件夹&#xff1a; 使用编辑文件工具&#xff1a; rem Check we have a valid Java.exe in the path.set java_execall lib\find_java.bat 替换成下列代码&#xff1a; rem Check we have a valid Java.exe in the path.set java_exeC:\Program Files\…

10 个优质的 Laravel 扩展推荐

这里有 10 个用来搭建 Laravel 应用的包 为何会创建这个包的列表&#xff1f;因为我是一个「比较懒」的开发者&#xff0c;在脸书上是多个 Laravel 小组的成员。平日遇到最多的问题就是开发是需要用那些包。我很懒所以我不想每次都从头开始搞这些东东。 为何此文没有包括管理包…

Teams AppId, InstallationId 和 ExternalId 的区别

大家如果看teams的 graph api 开发文档&#xff0c;可能会把 app id, installation id 和 external id 搞混&#xff0c;我自己一开始的时候就有点被搞晕了&#xff0c;再加上app manifest里面的 id 和 bot id&#xff0c;基本就彻底晕掉了。 那我们今天这篇文章就来讲讲这几种…

osi参考模型(开放系统互连参考模型)

自互联网诞生以来&#xff0c;随着网络飞速发展&#xff0c;用户迫切要求能在不同体系结构的网络空间交换信息&#xff0c;使得不同的网络能够互联起来。 国际化标准组织&#xff08;International Organization for Standardization&#xff0c;即ISO&#xff09;从1977年开始…

Java:反射+泛型:获取类型参数的实例

2019独角兽企业重金招聘Python工程师标准>>> 场景描述&#xff1a; 我需要开发四个页面&#xff0c;每个页面都是只涉及增删改查的基本逻辑。 最简单的写法&#xff1a; 创建四个接口A,B,C,D&#xff0c;每个接口中都声明了增删改查四个方法,完全一致 public Map<…

servlet(1)

servlet类分级&#xff1a; 1.ServletConfig接口类&#xff1a;理解为读取servlet配置的类&#xff0c;里面有四个抽象方法如下&#xff1a; ①getServletName:获取servlet在web.xml中的名字 ②getServletContext&#xff1a;获取Servlet上下文&#xff0c;相当于web项目管理所…

如何在 Apple Silicon (M1) 上开发 Teams App

apple 在几个月前发布了自家的芯片 M1&#xff0c;由于将多核cpu&#xff0c;多核gpu&#xff0c;神经网络运算&#xff0c;内存和其他一切处理部件高度整合在一起&#xff0c;大大提高数据传输速度。发布后好评如潮&#xff0c;我也没有忍住&#xff0c;入手了一台最低配的mac…

BZOJ5289 洛谷4437:[HNOI/AHOI2018]排列——题解

https://www.lydsy.com/JudgeOnline/problem.php?id5289 https://www.luogu.org/problemnew/show/P4437 考虑对于a[i]m,a[m]n&#xff0c;我们令p[j]i,p[k]m&#xff08;一定会有一对(j,k)满足这个条件的&#xff09;&#xff0c;则我们会有p[k]a[p[j]]&#xff0c;此时我们要…

集成学习-Adaboost

Adaboost 中文名叫自适应提升算法&#xff0c;是一种boosting算法。 boosting算法的基本思想 对于一个复杂任务来说&#xff0c;单个专家的决策过于片面&#xff0c;需要集合多个专家的决策得到最终的决策&#xff0c;通俗讲就是三个臭皮匠顶个诸葛亮。 对于给定的数据集&#…

主动给团队或用户安装Teams App

在写这篇文章的时候&#xff0c;这个新功能还处在 Public Review&#xff0c;这意味着可能&#xff08;很小的可能性&#xff09;这里写的方法在正式发布前还会有一些改动。 之前有一些做teams app开发的朋友问过我&#xff0c;能不能主动给一个team或者一个用户安装一个指定的…

thinkphp5多级控制器是什么?怎么使用?

thinkphp5多级控制器是什么&#xff1f;怎么使用&#xff1f; 一、总结 1、多级控制器是让控制器的级数变成多级&#xff0c;也就是controller目录下可以新建其它目录。 2、使用的话注意目录下的控制的的命名空间&#xff08;加上目录名&#xff09;&#xff08;namespace app\…