当前位置: 首页 > news >正文

Teams Bot App 初探

上一篇文章深入讲了incoming webhook。这篇文章我们来看一个稍微复杂点的,正式点的 teams app:bot。

我们先来和之前一样,通过teams toolkit 的 sample gallery来创建一个 Teams bot app。

创建之后我们先来看一下目录结构和生成的文件。

一共分为三部分:

  1. bot 目录,里面是 Teams app 的主体代码
  2. templates/appPackage 目录,里面是 teams app 的 manifest 模板文件
  3. templates/azure 目录,里面是一些 bicep 文件,如果大家对 bicep 不太熟悉的话,可以认为它是类似于 terraform 的用于创建 azure 资源的一种文件格式

我会在之后的几篇文章中对这三部分展开讲,在这里我们先来运行一下看看效果。点击 F5 运行,如果大家之前没有太多使用过 Teams toolkit,那很可能大家会遇到下面的出错信息。

上篇文章我们讲过,teams toolkit 帮我们自动做了很多事情,包括自动的连接 M365 的 tenant 进行 teams app 的运行调试。所以当我们第一次运行我们的 Hello World Bot,它自动帮我们安装了 ngrok 工具,但是在检测 M365 的时候失败了,失败的原因是它需要一个用于测试的 M365 tenant,如果大家还没有,那可以免费申请一个,如果已经有了,那我们需要登入一下。

点击 Teams Toolkit,然后点击 Sign in to M365,登入我们的测试账号。

完成后,我们再次运行 F5,这次会开始安装 npm packages。

在 vscode 的 output 窗口中会看到如下的信息,说明一切顺利,所有前置要求都已经满足。

同时在 TERMINAL 窗口会看到编译顺利,并且已经为我们打开了一个端口,这里实际上 teams toolkit 在后台为我们做了很多工作,因为 teams bot 需要一个公网的地址,并且需要 https 的支持,所以它在后台实际上是使用了 ngrok,为我们生成了一个公网地址,并且把发送到这个地址的所有请求都转发到了本地的端口,这样我们在本地运行的 bot 就能够接收到 teams 发送来的请求了。这点 toolkit 做的很棒,为开发者提供了很多方便。

更赞的是,teams toolkit,为什么打开了网页版的 teams,并且在后台把 manifest.json 上传到我们的测试 tenant,而且还自动进入到了 app 的安装界面,如下:

当我们点击 Add 按钮后,我们的测试 app,就安装到了 teams 里,并且进入到了我们和 bot 的 1 对 1 的对话窗口。

当我们发送消息 “welcome” 和 “learn” 给 bot后,bot就回复了不同的adaptive card给我们。

如果大家之前有过 teams bot 开发的经验,就会发现,teams toolkit把整个开发,安装,调试过程做的非常顺滑,几乎是一气呵成,难怪在sample gallery中说整个过程是 5 分钟,我觉得可能只要 3 分钟就够了,如果没有 toolkit,我们就需要自己启动配置 ngrok,然后准备 manifest.json 文件,上传,安装。没有个 20 分钟基本不可能完成。

相关文章:

  • 3d卷积神经网络应用,3d可视动态神经检测
  • Hive on Tez 的安装配置
  • 05 关于局部变量名字的存储
  • java毕业设计教程SSM框架实现的车位租赁管理系统|停车场计费系统[包运行成功]
  • 微雪树莓派PICO笔记——7. SPI(串行外设接口)
  • 真正理解Java中的异步
  • 《Unity3D脚本编程与游戏开发》学习Day one
  • JavaScript:JavaScript编程语言学习之前端框架(VUE)架构(MVVM)的简介、案例应用之详细攻略
  • [Python]闭包
  • 《C++程序设计原理与实践》笔记 第5章 错误
  • 静息态fMRI方法在脑动力学表征上的比较
  • LabVIEW自动整理程序框图
  • 拨测API接口+监控方案
  • 第一性原理详解
  • 信息化转型?数字化转型?企业到底该如何选择
  • css系列之关于字体的事
  • Redis在Web项目中的应用与实践
  • Service Worker
  • Spark RDD学习: aggregate函数
  • 关于字符编码你应该知道的事情
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ###C语言程序设计-----C语言学习(3)#
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (强烈推荐)移动端音视频从零到上手(下)
  • (十) 初识 Docker file
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)IOS中获取各种文件的目录路径的方法
  • (转)母版页和相对路径
  • .NET Core中的去虚
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .NET MVC、 WebAPI、 WebService【ws】、NVVM、WCF、Remoting
  • .NET MVC第五章、模型绑定获取表单数据
  • .Net6 Api Swagger配置
  • .netcore如何运行环境安装到Linux服务器
  • .NET单元测试
  • .NET关于 跳过SSL中遇到的问题
  • .Net下使用 Geb.Video.FFMPEG 操作视频文件
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?
  • [ 云计算 | AWS ] AI 编程助手新势力 Amazon CodeWhisperer:优势功能及实用技巧
  • [28期] lamp兄弟连28期学员手册,请大家务必看一下
  • [ai笔记3] ai春晚观后感-谈谈ai与艺术
  • [android] 切换界面的通用处理
  • [Android]如何调试Native memory crash issue
  • [C++11 多线程同步] --- 条件变量的那些坑【条件变量信号丢失和条件变量虚假唤醒(spurious wakeup)】
  • [ERROR] Plugin 'InnoDB' init function returned error
  • [idea]关于idea开发乱码的配置
  • [Java] IDEA Scala环境搭建
  • [loj#115] 无源汇有上下界可行流 网络流