如何在Zoom中集成自己的app?一个简单的例子

news2025/2/25 11:15:03

一、注册zoom 账号、以便在zoom app maketplace创建app。

二、安装git、node.js、vscode开发环境(略)。

三、注册ngrok账号,获得一个免费的https静态域名。

四、配置zoom app(wxl),设置上一步获得的https静态域名,验证地址为/auth

五、事件订阅(会议开始和会议结束,也可以订阅其它事件)

六、选择在哪些界面使用app(wxl)、设置主页和允许访问的域名。

七、设置访问范围

八、生成共享app(wxl)的链接

九、开始开发过程(power shell)

1、git clone https://github.com/zoom/zoomapps-sample-js

2、cd zoomapps-sample-js

3、npm install

4、配置.env(参数来源创建app的过程,SESSION_SECRET为随机初始化值)

5、在app.js文件的95行-149行增加/webhook的处理(接收会议开始和结束事情的订阅信息)

app.post('/webhook', (req, res) => {

    var response
  
    console.log(req.headers)
    console.log(req.body)
  
    // construct the message string
    const message = `v0:${req.headers['x-zm-request-timestamp']}:${JSON.stringify(req.body)}`
  
    const hashForVerify = crypto.createHmac('sha256', secretToken).update(message).digest('hex')
  
    // hash the message string with your Webhook Secret Token and prepend the version semantic
    const signature = `v0=${hashForVerify}`
  
    // you validating the request came from Zoom https://marketplace.zoom.us/docs/api-reference/webhook-reference#notification-structure
    if (req.headers['x-zm-signature'] === signature) {
  
      // Zoom validating you control the webhook endpoint https://marketplace.zoom.us/docs/api-reference/webhook-reference#validate-webhook-endpoint
      if(req.body.event === 'endpoint.url_validation') {
        const hashForValidate = crypto.createHmac('sha256', secretToken).update(req.body.payload.plainToken).digest('hex')
  
        response = {
          message: {
            plainToken: req.body.payload.plainToken,
            encryptedToken: hashForValidate
          },
          status: 200
        }
  
        console.log(response.message)
  
        res.status(response.status)
        res.json(response.message)
      } else {
        response = { message: 'Authorized request to Zoom Webhook sample.', status: 200 }
  
        console.log(response.message)
  
        res.status(response.status)
        res.json(response)
  
        // business logic here, example make API request to Zoom or 3rd party
  
      }
    } else {
  
      response = { message: 'Unauthorized request to Zoom Webhook sample.', status: 401 }
  
      console.log(response.message)
  
      res.status(response.status)
      res.json(response)
    }
  })

6、npm start dev

7、ngrok http --domain=shortly-adapted-akita.ngrok-free.app 3000  

8、访问静态域名

9、点击click here 安装app到zoom中

10、允许后

11、打开zoom应用,app(wxl)显示就在zoom窗口中了。

12、点击开始视频会议,获得开始会议事件的订阅信息

13、点击结束会议,获得结束会议事件订阅信息

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

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

相关文章

2024 年 7 月区块链游戏研报:市场波动与数据分化的挑战与机遇

作者:Stella L (stellafootprint.network) 数据来源:Footprint Analytics 游戏研究页面 7 月份,加密货币市场波动显著,价格表现各异。比特币和 Solana 表现抢眼,与此同时,以太坊在美国市场推出现货以太坊…

8.3 字符串中等 306 Additive Number 423 Reconstruct Original Digits from English

306 Additive Number //累加数:除了前两个数,其余数都等于前两个加起来,至少包括三个数 //难点找到前两个数 //条件1:至少包括三个数–>确定前两个数字的最大长度 len n/3 看下方注意1 //条件2:遇到0默认归属于他…

Axure RP界面设计初探:基础操作与实用技巧

Axure RP是目前流行的设计精美的用户界面和交互软件。Axure RP提供了一组丰富的RP。 UI 控件,这些控件根据它们的应用领域进行分类。作为Axure的国产替代品,它可以在线协同工作,浏览器可以在不下载客户端的情况下立即打开和使用。如果以前用A…

护眼灯到底有没有用?一文曝光护眼灯的三大好处!

护眼台灯进入大众的视野,但种类多样,其质量也是参差不齐。不少人一直有着”护眼灯到底有没有用?“质疑,作为学生,课业多且繁重,再加上电子设备普遍普及,眼睛受承受的压力日渐增大。因此&#xf…

如何快速实现MODBUS TCP转Profinet——泗博网关EPN-330

泗博网关EPN-330可作为PROFINET从站,支持与西门子S7-200 SMART/300/400/1200/1500全系列PLC以及具有PROFINET主站的系统无缝对接,而Modbus TCP端,可以与Modbus TCP从站设备、主站PLC、DCS系统以及组态软件等进行数据交互。 通过EPN-330&…

【算法设计题】编写算法,统计带头节点的单链表L的实际元素个数,第5题(C/C++)

目录 第5题 统计带头节点的单链表L的实际元素个数 得分点(必背) 题解:统计带头节点的单链表L的实际元素个数 代码解答 详细解释 举例说明 🌈 嗨,我是命运之光! 🌌 2024,每日百…

第二证券:沪指涨0.31%,电力、煤炭等板块拉升,卫星导航概念活跃

7日早盘,沪指盘中发力上扬,深证成指、创业板指震荡翻绿,场内超2700只个股飘绿。 到午间收盘,沪指涨0.31%报2876.17点,深证成指跌0.04%,创业板指跌0.16%,上证50指数涨0.34%,两市算计…

Leetcode每日刷题之字符串相加(C++)

在学习的同时也不要忘记适当练习,本题字符串相加主要在于字符串类型与整数类型的转化,要将字符串类型转化为整数类型计算后转化为字符串类型输出即可。 思路解析 根据题中给出的信息,我们不可以使用库函数计算大整数,也不能直接将…

代码随想录算法训练营第四天(二)|面试题 02.07. 链表相交 142.环形链表II

面试题 02.07. 链表相交 题目: 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环…

视频号直播回放怎么下载?

一、如果是下载自己直播回放视频: 方法一:视频号助手 打开网址:视频号助手 登陆账号后。下面路径,先点击成回放, 后就可以在下面路径,下载全场回放 但是这种有个缺点,就是不能分段下载。这样…

C语言----计算开机时间

计算开机时间 实例说明 编程实现计算开机时间&#xff0c;要求在每次开始计算开机时间时都能接着上次记录的结果向下记录。 实现过程&#xff1a; 1. 在TC中创建一个C文件。 2. 引用头文件&#xff0c;代码如下: #include <stdio.h> 3. 定义结构体time&#xff0c;用来…

AI绘画 | Stable Diffusion后期处理—无需ControlNet也能轻松高清放大图像与老旧照片修复,SD新手必看教程

大家好&#xff0c;我是画画的小强 分享了这么多期AI绘画Stable DIffusion的入门教程和一些常用的插件玩法后&#xff0c;不知道大家有没有发现&#xff0c;SD还有一个功能&#xff0c;似乎没怎么用到过&#xff0c;它就是—后期处理。 今天就给大家分享一下SD中的 “后期处理…

python 空list如何表示

创建空列表&#xff1a; L List() 或者&#xff1a; L [] 这时L就是一个空列表。 需要注意的是&#xff0c;空列表不是None&#xff0c;因此 L [] If L is not None:# 这里的代码总是会被执行 检查列表是否为空要使用len()&#xff1a; L [] if len(L):# 这里的代码不会执…

单词拆分——LeetCode

139.单词拆分 题目 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。如果可以利用字典中出现的一个或多个单词拼接出 s 则返回 true。 注意&#xff1a;不要求字典中出现的单词全部都使用&#xff0c;并且字典中的单词可以重复使用 示例 1&#xff1a; 输入: s &qu…

idea使用free流程,2024idea免费使用

1.先到官网下载&#xff0c;这里选择win系统的&#xff0c;点击下图的.exe https://www.jetbrains.com/idea/download/?sectionwindows 2.下载好后基本上就是一直点击“下一步”到直到安装好&#xff0c;安装好后先打开软件后关闭退出 3.下载配配套资料 链接: https://pan.ba…

AD域服务器中的用户和计算机管理面板中的账户显示异常

如果发现新建用户时在用户和计算机管理面板中发现显示的用户名不是预期中的效果&#xff0c;可以检查用户的完整DN&#xff0c;其中DN中的CN的值决定了你在用户和计算机管理面板中显示的内容是什么。 &#xff08;由于本人使用Python代码完成新建AD域账号时&#xff0c;发现新…

leetcode-27-移除元素

原理&#xff1a; 1、统计数组nums中出现val的次数n&#xff1b; 2、利用循环进行n次删除nums中的val; 3、返回nums的长度 代码&#xff1a;

你的Java项目还在等待吗?快来学会线程池,解放你的性能!

文章目录 你的Java项目还在等待吗&#xff1f;快来学会线程池&#xff0c;解放你的性能&#xff01;1 什么是线程池&#xff1f;为什么需要它&#xff1f;2 线程池的参数有哪些&#xff1f;3 不同类型的线程池有哪些配置&#xff1f; 你的Java项目还在等待吗&#xff1f;快来学…

ctfhub文件包含

文件包含 url http://challenge-41cbfbe04828b338.sandbox.ctfhub.com:10800/ 构造url&#xff0c;利用hackabar进行Post data修改测试 http://challenge-41cbfbe04828b338.sandbox.ctfhub.com:10800/?fileshell.txt ctfhubsystem("ls"); ctfhubsystem("ls…

【漏洞复现】常见框架漏洞复现 合集

Web框架(Web framework)或者叫做Web应用框架(Web application framework)&#xff0c;是用于进行Web开发的一套软件架构。大多数的Web框架提供了一套开发和部署网站的方式。为Web的行为提供了一套支持支持的方法。使用Web框架&#xff0c;很多的业务逻辑外的功能不需要自己再去…