Teams Meeting App的 task 弹出框

前几篇文章我们介绍了 Teams Meeting App 的各种类型和如何从无到有的使用 net6 和 c# 来开发一个 Teams Meeting app,那今天我们开始讨论一些 meeting app 的高级互动: task 弹出框。我们先来快速修改一下之前的代码,看看什么是 task 弹出框。

打开 MainPage.cshtml 文件,加入如下代码:

<body style="background: white">
...<button onclick="add()">Add</button><script>microsoftTeams.initialize();const add = (status) => {let taskInfo = {title: "Add an item",height: 250,width: 250,url: `https://96ae-49-189-236-3.ngrok.io/TaskDialog`,};microsoftTeams.tasks.startTask(taskInfo, (err, result) => {});};</script>
</body>

要注意的是,上面url的domain是ngrok生成的域名,所以大家自己的代码肯定和这个不太一样。我们在页面上增加了一个按钮,当用户点击按钮后,我们调用了 teams js sdk的 tasks.startTask() 方法,这个方法可以传入弹出框的宽度,高度和标题。

然后我们增加一个 TaskDialog.cshtml 文件,内容如下:

@page
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Demo</title><script src="https://statics.teams.cdn.office.net/sdk/v1.10.0/js/MicrosoftTeams.min.js"integrity="sha384-6oUzHUqESdbT3hNPDDZUa/OunUj5SoxuMXNek1Dwe6AmChzqc6EJhjVrJ93DY/Bv"crossorigin="anonymous"></script>
</head>
<body style="background: white"><button onclick="sendResult()">OK</button><script>microsoftTeams.initialize();const sendResult = () => {const taskResult = {};microsoftTeams.tasks.submitTask(taskResult);return true;}</script>
</body>
</html>

在TaskDialog页面里,我们放了一个按钮,当用户点击按钮后,我们调用 teams 的 tasks.submitTask() 并且传入 task 的结果。

然后我们运行并且安装这个app到一个meeting里,启动会议,点击 app 侧边栏的按钮,可以看到 teams 会弹出我们预先定义好的对话框页面。

meeting-app-task

这就是 task 弹出框的最最基本版,大家看到这里可能在想,如果和这个弹出框里的一些内容传递侧边栏呢?我们这就来试一下。

首先,我们修改一下 TaskDialog.cshtml 文件:

<body style="background: white">Value: <input type="text" id="inputValue" /><button onclick="sendResult()">OK</button><script>microsoftTeams.initialize();const sendResult = () => {const v = document.getElementById('inputValue');const taskResult = {inputValue: v.value};microsoftTeams.tasks.submitTask(taskResult);return true;}</script>
</body>

我们增加了一个输入框,然后当用户点击 OK 按钮的时候,我们把输入框的内容读取出来,保存到 taskResult 变量里,然后把它传给 microsoftTeams.tasks.submitTask() 函数。

在 MainPage.cshtml 里,我们也把接收到的值显示在界面上。

<body style="background: white">
...<button onclick="add()">Add</button><div id='result'></div><script>microsoftTeams.initialize();const add = (status) => {let taskInfo = {title: "Add an item",height: 250,width: 250,url: `https://96ae-49-189-236-3.ngrok.io/TaskDialog`,};microsoftTeams.tasks.startTask(taskInfo, (err, result) => {document.getElementById('result').innerText = result.inputValue;});};</script>
</body>

可以看到 callback 函数的第二个参数就是从Task弹出框的返回值。

我们运行一下 app,看一下结果。

meeting-app-task

在弹出框里输入一些文字,然后点击 OK 按钮,就可以看到你输入的文字内容显示在了主页面上。

meeting-app-task

看到这里相信大家脑海里已经有很多应用的场景了,赶快开始coding吧

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

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

相关文章

react 学习

react官网地址&#xff1a;http://facebook.github.io/react/ webpack官网地址&#xff1a;http://webpack.js.org/ 英文 https://www.webpackjs.com/ 中文 参考资料&#xff1a; React 入门实例教程-阮一峰 webpack的学习 学习列表&#xff1a; 了解react的语法&#x…

Teams Developer Portal介绍

在去年的 Build2021 大会上讲到的 Teams Developer Portal 已经上线一段时间了&#xff0c;我这几天玩了一下&#xff0c;发现比之前的 app studio 强大了很多&#xff0c;所以赶快写篇文章和大家分享。 Developer Portal 有两种访问的方式&#xff0c;一个是网页版&#xff0…

使用环境变量来配置 Teams App 的 manifest

上篇文章我们介绍了 Teams 的 Developer Portal&#xff0c;今天我想分享一个dev portal里一个比较实用的功能。这个功能在之前的 App Studio 里没有。这个功能叫 Environment variables。 当我们真实开发一个 teams app的时候&#xff0c;肯定有自己的开发环境&#xff0c;测…

[Unity优化]批处理03:静态批处理

[Unity优化]批处理03&#xff1a;静态批处理 原理&#xff1a; 运行时&#xff0c;把需要进行静态批处理的网格合并到一个新的网格中。虽然只进行一次合并操作&#xff0c;但是会占用更多的内存来存储合并后的网格&#xff0c;并且被静态批处理的物体无法移动旋转缩放 要使用静…

JS获取IP地址

HTML代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><script src"https://unpkg.com/vue/dist/vue.js"></script></head><body><div id"vm&quo…

1小时玩爆趣头条自媒体平台,增粉实战操作分享

做自媒体的人最关注的就是每天自己账号的后台数据&#xff0c;因为数据决定当天的收益。因此只要每天能达到几十万的数据&#xff0c;相信对于做自媒体的朋友来说&#xff0c;一个月下来&#xff0c;最少也有1万以上的收入。目前&#xff0c;自媒体平台能赚钱的平台有很多&…

隧道6in4 和隧道6to4(GNS3)

隧道6in4实验配置 拓扑图 Device Interface IP Address&#xff08;IPv6&#xff09; R1 F 0/0 10.1.81.1 F 0/1 2001:db8:cafe:81::10 R2 F 0/0 10.81.1.2 F 0/1 172.81.1.2 R3 F 0/0 172.81.1.3 F 0/1 2001:DB8:ACE:81::20 R4 F 0/0 2001:db8:cafe:81::4…

hadoop常用命令总结

2019独角兽企业重金招聘Python工程师标准>>> 一、前述 分享一篇hadoop的常用命令的总结&#xff0c;将常用的Hadoop命令总结如下。 二、具体 1、启动hadoop所有进程 start-all.sh等价于start-dfs.sh start-yarn.sh 但是一般不推荐使用start-all.sh(因为开源框架中内…

几道web题简单总结

拖了好长时间&#xff0c;总结一下这一段时间做的几道值得记录一下的题目&#xff0c;有的没做出来&#xff0c;但是学习到了新的东西 1.homebrew event loop ddctf的一道题目&#xff0c;学到了python eval函数的用法&#xff0c;首先分析题目&#xff1a; # -*- encoding: ut…

.NET中RabbitMQ的使用

.NET中RabbitMQ的使用 概述 MQ全称为Message Queue, 消息队列&#xff08;MQ&#xff09;是一种应用程序对应用程序的通信方法。RabbitMQ是一个在AMQP基础上完整的&#xff0c;可复用的企业消息系统。他遵循Mozilla Public License开源协议。AMQP(高级消息队列协议) 是一个异步…

SQL Server死锁诊断--同一行数据在不同索引操作下引起的死锁

死锁概述 对于数据库中出现的死锁&#xff0c;通俗地解释就是&#xff1a;不同Session&#xff08;会话&#xff09;持有一部分资源&#xff0c;并且同时相互排他性地申请对方持有的资源&#xff0c;然后双方都得不到自己想要的资源&#xff0c;从而造成的一种僵持的现象。当然…

python下载安装搭建

python官网下载python运行环境&#xff08;https://www.python.org/downloads/&#xff09;&#xff0c;建议下载稳定版本&#xff0c;不推荐使用最新版本 安装 然后我们打开CMD&#xff0c;在里面输入python&#xff0c;就可以直接进入进行编码了 如果输入python出现下面错误 …

Teams Bot App Manifest 文件解析

这篇文章我们继续以 Hello World Bot 这个 sample 来讲一下 manifest template。 实际上在 Teams app 开发的时候&#xff0c;有 manifest 的概念&#xff0c;manifest 是用来说明这个 teams app 的一些基本信息和配置信息&#xff0c;比如 app 的名字&#xff0c;app有哪些能…

Cordova入门系列(三)Cordova插件调用 转发 https://www.cnblogs.com/lishuxue/p/6018416.html...

Cordova入门系列&#xff08;三&#xff09;Cordova插件调用 版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请注明出处 上一章我们介绍了cordova android项目是如何运行的&#xff0c;这一章我们介绍cordova的核心内容&#xff0c;插件的调用。演示一个例子&#xf…

shell脚本传可选参数 getopts 和 getopt的方法

写了一个shell脚本&#xff0c;需要向shell脚本中传参数供脚本使用&#xff0c;达到的效果是传的参数可以是可选参数 下面是一个常规化的shell脚本&#xff1a; echo "执行的文件名为: $0";echo "第一个参数名为: $1";echo "第二个参数名为: $2"…

Teams Tab App 代码深入浅出 - 配置页面

上一篇文章我们使用Teams Toolkit 来创建、运行 tab app。这篇文章我们深入来分析看一下tab app 的代码。 先打开代码目录&#xff0c;可以看到在 src 目录下有入口文件 index.tsx&#xff0c;然后在 components 目录下有更多的一些 tsx 文件&#xff0c;tsx 是 typescript的一…

labelme标注的json文件数据转成coco数据集格式(可处理目标框和实例分割)

这里主要是搬运一下能找到的 labelme标注的json文件数据转成coco数据集格式&#xff08;可处理目标框和实例分割&#xff09;的代码&#xff0c;以供需要时参考和提供相关帮助。 1、官方labelme实现 如下是labelme官方网址&#xff0c;提供了源代码&#xff0c;以及相关使用方…

EpSON TM-82II驱动在POS系统上面安装问题处理

按照品牌名称&#xff0c;在网上下载的安装包为apstmt82.rar 下面讲解一下&#xff0c;如何的解决爱普生打印机在POS机器上面的安装问题&#xff0c;这个算是一个比较奇特的故障问题&#xff0c;不像其它的新北冰洋&#xff08;SN3C&#xff09;的U80_U80II&#xff0c;SeNor的…

打印图片的属性和实现另存图片功能以及使用numpy

上一篇我们已经学了如何读取图片的功能了以及和opencv的环境搭建了&#xff0c;今天接着来学习&#xff0c;哈哈哈&#xff0c;今天刚好五一&#xff0c;也没闲着&#xff0c;继续学习。 1、 首先我们来实现打印出图片的一些属性功能&#xff0c; 先来看一段代码&#xff1a; 1…

Ubuntu 18.04下命令安装VMware Tools

2019独角兽企业重金招聘Python工程师标准>>> sudo apt-get upgrade sudo apt-get install open-vm-tools-desktop -y sudo reboot 转载于:https://my.oschina.net/u/574036/blog/1829455