Teams Bot App 初探

news/2024/4/30 3:33:18/文章来源:https://blog.csdn.net/xxjjxx/article/details/127024147

上一篇文章深入讲了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 分钟基本不可能完成。

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

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

相关文章

二叉树中求最大路径和

题目来自LeetCode中,链接为124. 二叉树中的最大路径和 一棵树的最大路径和可能存在于哪里: 单纯的存在于以左子树为根节点的子树中单纯的存在于以右子树为根节点的子树中根节点到达左子树B中某节点的路径根节点到达右子树C中某节点的路径左子树中某节…

Android日志分析02-am篇

Android日志分析02-am篇 在日常分析bug时,免不了和系统ActivityManagerService打交道,根据日志去查看各个Activity的生命周期,从而判断是否出现Activity生命周期异常。 先使用adb logcat和adb bugreport再pixel2的模拟器抓取一份从开机到打开…

代码随想录4——链表: 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题02.07链表相交、142.环形链表II

文章目录1.24两两交换链表中的节点1.1.题目1.2.思路1.3.代码实现1.3.1.对next指针的理解1.3.2.编程中要备份哪些节点的指针?1.3.3.代码实现2.19删除链表的倒数第N个节点2.1.题目2.2.思路3.面试题02.07链表相交3.1.题目3.2.解答4.142.环形链表II4.1.题目4.2.思路1.24…

JavaEE——No.1 多线程案例

JavaEE传送门JavaEE JavaEE——No.1 线程安全问题 JavaEE——No.2 线程安全问题 目录多线程案例1. 单例模式饿汉模式懒汉模式2. 阻塞队列阻塞队列的使用阻塞队列的实现多线程案例 1. 单例模式 单例模式是一种常见的设计模式. 设计模式: 软件开发时, 会遇到一些常见的 “问…

存储系统基本概念

内容框图 存储器的层次化结构 由于cpu运行太快,所以中间需要主存,Cache,寄存器去传递。 主存–辅存(硬件操作系统):实现虚拟存贮系统,解决了主存容量不够的问题。 Cache–主存(硬件自…

测试用例设计专栏

哈喽大家好哎呀,今天给大家普及一下测试用例如何设计,看牛逼的大佬们是如何测试的。 测试用例笔试题 出题:在一个页面上有一个输入框,一个计数器(count)按钮,用于计算一个文本字符串中字母a出现的次数,请…

Linux 逻辑卷精简卷报错问题解决

一、 故障描述 现象1:oraclelog目录提示坏道信息,进行修复后执行删除文件操作,目录不可使用。 现象2:lsblk看到目录出现重复,并且有tmeta,tdata卷出现(图一) 现象3:message日志出现多目录报错,持续写入(图二) 图一 检查lv #lvs -a 看到多出的pmspare,tdata,tmeta…

VSCode 使用教程-9.Node运行js出现 Cannot use import statement outside a module的问题

前言 js中导入公共模块,使用import的方式导入,用node运行js文件会出现Cannot use import statement outside a module的问题 问题描述 目录结构 └─src└─js└─ext.js└─main.js └─index.html在ext.js 文件写一些公共方法 export const m (f…

vue3 ts vite 项目快速构建

1.安装nodejs(建议装14版本稳定) 下载 | Node.js 中文网 装完之后会有一个命令叫 npm 可以在终端输入npm -v 来检查是否安装成功2.构建vite项目官方文档开始 {#getting-started} | Vite中文网 vite 的优势冷服务 默认的构建目标浏览器是能 在 script 标签上支持原生 ESM 和…

Java操作HDFS

1. 创建maven项目 New Project 2. 添加依赖 <!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-client --><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>2.…

steam搬砖汇率差项目详解

很久没有分享赚钱项目了&#xff0c;今天这里给大家介绍一个游戏搬砖的项目&#xff1a;steam游戏汇率差赚钱项目。 项目原理&#xff1a; Steam平台是一个国外游戏及装备售卖平台。而我们所谓的Steam游戏装备搬砖就是利用steam平台和网易的BUFF平台来操作。steam汇率差赚钱原…

十大经典排序算法综述(Java代码实现,思想通用)

关于十大排序的文章也有不少了&#xff0c;但感觉大部分在各个排序算法的适用场景、如何实现外排等细节方面没怎么讲&#xff0c;故总结了这篇文章&#xff0c;欢迎浏览 一、前言 内部排序是指排序时将待排序数据全部加载到内存的算法。 外部排序是指在处理海量数据排序时&…

什么是C语言?

什么是C语言&#xff1f; 文章目录什么是C语言&#xff1f;1.C语言的起源2.C语言的使用领域3. 为什么要学习C语言4.C语言的学习境界5.如何学习C语言6.学习C语言的推荐书籍1.C语言的起源 C语言之父是丹尼斯里奇&#xff1a;丹尼斯里奇&#xff08;1941年9月9日-2011年10月12日&…

Linux 简单命令 - cron 计划任务 、NTP

Linux 简单命令 - cron NTP cronNTP 一、cron 计划任务就是按照系统的时间(时刻、周期)执行指定的任务 系统服务&#xff1a; crond。 配置文件&#xff1a; /etc/crontab /var/spool/cron/用户名 配置记录格式&#xff1a; 分 时 日 月 周 任务操作命令 (用绝对路径、必要时…

集成学习详解

入门小菜鸟&#xff0c;希望像做笔记记录自己学的东西&#xff0c;也希望能帮助到同样入门的人&#xff0c;更希望大佬们帮忙纠错啦~侵权立删。 目录 一、集成学习的产生原因与相关定义 1、产生原因 2、相关定义 &#xff08;1&#xff09;同质集成 &#xff08;2&#xf…

第三章 学校与班级管理

01 学校组织与管理 02 班级与班集体 03 班主任与班主任工作 04 班级活动与班队活动 05 课外活动 02 班级与班集体 一、班级与班集体 二、班级管理 三、班级突发事件的处理 一、班级与班集体 &#xff08;一&#xff09;班级 了解 年龄、知识程度相近&#xff0c;有共同的学…

python学习—第一步—Python小白逆袭大神(第二天)

python进阶python语法继续学习数据结构数字字符串列表元组字典面向对象继承JSON异常处理try except finallyLinux命令作业来啦&#xff01;问题python语法继续学习 数据结构 数字 Number类型用于存储数值。 1、数学运算math模块及常用函数 菜鸟教程 导入math 代码示例&#…

微信小程序事件和页面跳转

一、页面跳转 1.非TabBar页面 一个小程序拥有多个页面&#xff0c;我们通过wx.navigateTo进入一个新的页面 我们通过下边点击事件实现页面跳转进行代码实现及参考 wx.navigateBack&#xff08;&#xff09;回退到上一个页面 wx.redirectTo&#xff08;url&#xff09;删除…

最新AWVS14.9.220913107 支持Windows使用教程(附下载地址)

主要内容&#xff1a;awvs14.9下载、awvs14.9使用教程、awvs14.9安装教程、awvs14.9批量扫描、awvs14.9用法、awvs最新版下载 使用方法 一键PJ 一键PJ则只需要在安装Acunetix软件后&#xff0c;运行pj工具即可 通用思路 修改hosts文件&#xff08;C:\Windows\System32\driv…

15天深度复习JavaWeb的详细笔记(十一)——VUE、Element

文章目录demo11-VUE、Element1&#xff0c;VUE1.1 概述1.2 快速入门1.3 Vue 指令1.3.1 v-bind & v-model 指令1.3.2 v-on 指令1.3.3 条件判断指令1.3.4 v-for 指令1.4 生命周期2&#xff0c;Element2.1 快速入门2.2 Element 布局2.2.1 Layout 局部2.2.2 Container 布局容器…