Agora 教程丨如何实现15mins自主搭建一个教育平台?
[ 前言 ]
2020 年对于全球而言都是非常特殊的一年,人与人之间的“物理连结”受到了严重影响,日常的生活、工作大都也逐渐向线上转移。受此影响,大量的线下业务也加速了线上转型,这其中教育行业的在线化趋势尤为明显。
对于教育机构而言,目前常见的教学平台搭建主要有两种选择:可直接使用的 SaaS 平台以及自主开发的 PaaS 平台。但这两种方式都有着较为明显的长短板:SaaS 即拿即用但无法灵活扩展;PaaS 可根据业务需求进行定制化且后期可扩展,但对于开发者的经验以及开发时间会有一定要求。
在这个过程中,如何有效获取自有用户数据促进用户留存以及如何快速进行自主品牌的打造是目前线上教育面临的挑战。而教育 aPaaS 平台的出现,也许刚好可以满足以上需求。
什么是教育 aPaaS
1、关于 aPaaS
在我们了解什么是教育 aPaaS 前,首先需要理解几个关于云服务的基本概念。以下图为例,简单直接点来说:
IaaS(Infrastructure as a service – 基础设施即服务)就是有权管理操作系统之上的一切功能。就像一个未经加工的食材,你可以自行选择器具,然后用这个食材做任何料理,发挥空间很大,但需要付出大量的资源采买、时间和人力成本。
PaaS(Platform as a service – 平台即服务)则是抽象掉了硬件和操作系统细节,可以无缝地扩展(scaling)。开发者只需要关注自己的业务逻辑,不需要关注底层。你拿到手的就是一个食物半成品,在这个既定基础上你可以根据自身的需求来进行味道或配料上的调整,咸淡由你。
SaaS(Software as a Service – 软件即服务)给用户提供的能力是使用在云基础架构上运行的云服务提供商的应用程序。约等于可“直接食用”,但几乎没办法做更多的调整和选择,给什么就是什么。
图片来源:
https://twitter.com/jeffbarr/status/892767314168365056
不难看出,PaaS 平台给开发者提供了最大的灵活度,从业务逻辑到实时互动的方式,甚至音视频的清晰度等参数,都可自定义。不过,由于开放的接口比较多,开发者需要一定时间根据产品需求来实现。而 SaaS 虽然可以“即拿即用”,但短板也是显而易见:不灵活、无法定制化、业务数据留存在第三方平台。
那么 aPaaS 是什么呢?
aPaaS(Application Platform as a Service - 应用平台即服务)和 PaaS 都可以完成软件的开发和部署,都支持云端访问。对于开发者来讲,两者的差异在于集成时间与代码量上。以开发一个比较完备的教育应用为例,使用 PaaS 的开发者需要至少两周到一个月的时间,除了要先搞定几百个 API 的作用外,还要理解业务逻辑层面的代码。而 aPaaS 是把复杂的业务逻辑都封装成可配置的参数了,开发者不用去管底层逻辑,不用去学每个 API 是什么,现成参数配置成自己需要的就可以。使用教育 aPaaS 产品最快只需要 15 分钟,通过修改数行参数即可达到应用上线的目的。
2、教育 aPaaS 给我们带来了什么?
自主品牌和个性化业务功能是教育机构与生俱来的需求。随着教育机构业务的不断成长,这种需求会越发强烈与迫切。同时,教师、学生信息以及课程日志等数据对于教育机构而言也是企业未来业务增长很重要的一部分企业资产,对于学员留存也至关重要。
如果选择使用 SaaS 化平台,虽然可以直接上手使用,但由于其是以行业标准化需求来进行开发的,因此很难满足机构的定制化需求,甚至在教育机构的 Logo、UI、域名等品牌信息的露出上也会十分受限,不利于教育机构自主品牌的打造。
另一方面,教师和学生的信息、上课数据等业务数据也会被动保留在第三方直播平台,对企业机构而言,这无疑是给自己的数据安全埋下了一个不定时的隐患。
在 PaaS 平台进行开发虽然能很好地避免以上问题,甚至在定制化方面做得更好,但对于缺乏经验的开发团队或上线排期紧的项目,也就显得有些为难了。
声网Agora发布的 “灵动课堂”是基于 Low-code (低代码)的首款教育 aPaaS 产品,帮助教育机构和开发者最快 15 分钟上线自有品牌,从根本上加快了在本地或云中构建和部署功能强大的现代教育应用程序所需的时间。支持拥有自主品牌、功能灵活可扩展、业务数据自主掌控、稳定可靠、具有XLA体验质量保障等。
低代码开发,模块化功能扩展——提效
“灵动课堂”基于声网Agora 教育 aPaaS 平台,同时满足灵活定制和低代码接入的用户需求,节省 90%+ 开发时间,15 分钟即可上线自有品牌的全功能在线互动教学平台。具备课堂互动、课堂管理、角色管理、权限管理、用户管理等丰富功能,通过模块化功能设计,支持业务功能灵活扩展。同时实现在线教学全流程打通,支持通过标准接口无缝对接用户业务管理系统。
10 倍负荷冗余,不再担心高并发——稳定
依托声网Agora 自研的软件定义实时网 SD-RTN ,基于深度学习算法实时、准确识别网络异常,实现用户“零感知”故障切换机制,为业务高可用保驾护航。还针对东南亚、中东、北美等外教所在国和国内中小城市,做到专属网络优化,端到端优质传输率高于 99%。
数据在自己手里更安全——安全
上线“灵动课堂”后,教育机构的业务数据可以存储在本地或指定第三方服务器,机构可以做到 100% 自主掌控数据留存和迁移。同时,还提供资源隔离、内容加密、传输加密和身份鉴权等功能,多重安全防护措施对教育机构的业务数据安全进行保障。
15 分钟实现云课堂
开发 ≠ 写代码,对于开发者而言,用 100 种方式写出同一个需求是你的能力,但用最高效、简洁的方式写出需求是一种选择。
教育 aPaaS 平台对于开发者而言,重点不仅仅在于提效降本,更重要的是有一部分技术人也许没办法写 100 种代码,但他们关心业务、有着 100 种关于业务的想法,可最终都掣肘于技术的门槛。借助教育 aPaaS 中成熟的基础设施、现成的标准零件、自动化的装配流水线,开发者只需要专注于最核心的业务价值即可。就算是碰到了非标需求,也可以随时自己动手,用最灵活的手工定制方式来解决各种边角问题。
声网一直致力于通过低代码(Low-code)的方式为开发者减负、降低门槛, 让实时互动场景的开发变得更普适、更方便。作为声网推出的教育行业首款低代码教育 aPaaS 产品,“灵动课堂”将原本需要几百个 API 接口才能开发“在线互动课堂”的复杂逻辑进行模块化封装,简化为只需填写或修改几个简单参数即可完成上线,教育机构和开发者无需再花费大量的时间去理解底层音视频的复杂逻辑。
以 Web 为例,首先准备好:
创建 Agora 项目并获取 App ID 和 App 证书
获取 Netless 的 AppIdentifier 和 sdkToken
第三方云存储账号
生成 RTM Token(详情可参考 RTM Token 生成文档:https://docs.agora.io/cn/Real-time-Messaging/token_server_rtm?platform=All%20Platforms)
然后通过 npm/cdn 获取 Agora Edu SDK,根据注释,修改代码中的 AppID、userUuid、dom节点、RESTful API token。
下面示例演示了 1V1 教室的创建
1 AgoraEduSDK.config({
2 // 声网APP ID
3 appId: '<YOUR AGORA APPID>',
4 })
5
6 AgoraEduSDK.launch(
7 // 放置教育应用的dom节点
8 document.querySelector("#root1"),
9 {
10 // 你的用户的全局唯一标识ID,需要与你签发restToken时使用的uid一致
11 userUuid: "userUuid",
12 // 声网RESTful API token,必须使用RTM Token
13 rtmToken: "006f488493d1886435f963dfb3d95984fd4IABFUDvP51uuFjh3OT3Z3AhgOvCxoWDJ959XnVqGGFbJE0AK77EAAAAAIgCUerYEzZcCYAQAAQD/////AgD/////AwD/////BAD/////"
14 rtmUid: "12311"
15 // 用于显示的用户名
16 userName: "userName",
17 // 你的课堂的全局唯一标识ID
18 roomUuid: "roomUuid",
19 // 进入房间的角色,roleType 1: 老师, 2: 学生
20 roleType: 1,
21 // 房间的类型,0: 1v1, 1: 小班, 2: 大班
22 roomType: 0,
23 // 用于显示的房间名
24 roomName: "roomName",
25 // 是否开启设备检测,true的话会在进入教室前显示设备检测页面
26 pretest: true,
27 listener: (evt) => {
28 console.log("evt", evt)
29 }
30 }
31).then(e => window.room$ = e)
根据需要,修改好课堂名称、用户角色、课堂类型(如 1v1课堂, 小
根据需要,修改好课堂名称、用户角色、课堂类型(如 1v1课堂, 小班课, 大班课)、房间名称等,就完成基本的开发啦。
注:声网“灵动课堂”主要提供的是课堂内的实时互动体验,本身不提供用户系统和排课系统。
如果你已经建立了自己的用户系统和排课系统,可以参考下图将你的用户系统和排课系统与声网“灵动课堂”进行对接。
你需要实现以下业务逻辑:
在你的服务端部署 RTM Token 生成器,通过 Agora App ID、App 证书和用户 ID 参数生成 RTM Token。详情请参考**生成 RTM Token 文档。
设计一个 RESTful API,用于实现以下三个目的:
验证登录 App 的用户是否在用户系统中存在。
获取该用户的个人信息与排课信息。
获取 RTM Token 生成器为该用户签发的 RTM Token。
客户端获取到用户 ID、课堂 ID 和 RTM Token 后,调用 Agora Edu SDK 的 launch
方法,传入用户 ID、课堂 ID 和 RTM Token 以及其他参数,即可启动声网“灵动课堂”。
Agora 教程丨如何实现15mins自主搭建一个教育平台?的更多相关文章
- 从零开始搭建一个PaaS平台 - 我们要做什么
前言 从最开始的小公司做小网站,到现在进入现在的公司做项目,发现小公司里很多很多工作都是重复的劳动(增删改查),不过想想也是,业务软件最基础的东西不就是增删改查吗. 但是很多时候,这种业务逻辑其实没有 ...
- 超强教程:如何搭建一个 iOS 系统的视频直播 App?
现今,直播市场热火朝天,不少人喜欢在手机端安装各类直播 App,便于随时随地观看直播或者自己当主播.作为开发者来说,搭建一个稳定性强.延迟率低.可用性强的直播平台,需要考虑到部署视频源.搭建聊天室.优 ...
- springboot+dubbo基于zookeeper快速搭建一个demo
由于小编是在windows环境下搭建的,故该示例均为在windows下操作,这里只是提供一个快速搭建思路,linux操作也基本上差不多. 首先本示例的dubbo是基于zookeeper发布订阅消息的, ...
- Django1.8教程——从零开始搭建一个完整django博客(一)
第一个Django项目将是一个完整的博客网站.它和我们博客园使用的博客别无二致,一样有分类.标签.归档.查询等功能.如果你对Django感兴趣的话,这是一个绝好的机会.该教程将和你一起,从零开始,搭建 ...
- linux下利用elk+redis 搭建日志分析平台教程
linux下利用elk+redis 搭建日志分析平台教程 http://www.alliedjeep.com/18084.htm elk 日志分析+redis数据库可以创建一个不错的日志分析平台了 ...
- GeoServer基础教程(一):环境搭建篇
转自:http://imxz.me/tech/3sdev/installation-of-geoserver.html GeoServer的是一个基于Java的软件,它允许用户查看和编辑地理空间数据, ...
- 如何搭建一个独立博客——简明Github Pages与Hexo教程
摘要:这是一篇很详尽的独立博客搭建教程,里面介绍了域名注册.DNS设置.github和Hexo设置等过程,这是我写得最长的一篇教程.我想将我搭建独立博客的过程在一篇文章中尽可能详细地写出来,希望能给后 ...
- ActiveReports 9实战教程(1): 手把手搭建环境Visual Studio 2013 社区版
原文:ActiveReports 9实战教程(1): 手把手搭建环境Visual Studio 2013 社区版 ActiveReports 9刚刚发布3天,微软就发布了 Visual Studio ...
- Batch入门教程丨第二章:认识变量相关概念
在前两期的学习内容中,我们已经了解了Batch入门教程有关的知识和编程方法,如何编写和运行Windows Batch程序,脚本语言的入门方式等,今天我们将继续深入学习Batch入门教程之认识变量相关概 ...
- Batch入门教程丨第一章:部署与Hello World!(下)
在上期分享的内容中,我们已经掌握了基础理论知识,今天我们将继续了解和学习与Windows Batch有关的知识和编程方法,如何编写和运行Windows Batch程序,脚本语言的入门方式等,从而能够更 ...
随机推荐
- Django中的缓存的配置与使用
一.使用装饰器 在文件开头导入下面代码,然后在函数上方添加缓存的装饰器 from django.views.decorators.cache import cache_page 一:在视图View中使 ...
- Django 介绍及环境准备
Django介绍: Django(发音:[`dʒæŋɡəʊ])是基于Python的Web框架,它是开源的,免费的. Django使构建更好的web应用程序变得更容易.更快.代码更少 django的MT ...
- echarts 画图报错 this.dom.getContext is not a function
我给 <el-card>绑定了ref,利用$refs获取 echarts实例 const echarts1 = echarts.init(this.$refs.echarts1); 结果 ...
- 20200921--同行列对角线的格(奥赛一本通P89 2 二维数组)
输入三个自然数n,i,j(1<=i<=n,1<=j<=n),输出在一个n*n格的棋盘中(行列均从1开始编号),与格子(i,j)同行,同列,同一对角线的所有格子的位置. 如:n= ...
- centos7安装ffmpeg shell脚本
#!/bin/sh # # Date: 2021-04-28 # Author: yb # Description: 安装ffmpeg # 检测当前用户是否为root [ $(id -u) != &q ...
- 剑指offer-孩子们的游戏
题目描述:每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈.然后,他随机指 ...
- 关于php pconnect长连接如何刷新连接的讨论
由于每个pconnect所建立的连接信息和单个进程绑定.线上偶发了redis在某一台机器php-fpm上连接正常而无法进行任何操作的问题. 先说结论 查看redis拓展官方文档 close方法 有一句 ...
- Linux(2)
虚拟机关键配置名词解释 远程链接工具 linux准则 远程链接工具快捷键 系统相关命令 文件相关命令 linux目录结构 虚拟机关键配置名词解释 # 虚拟网络编辑器说明 桥接模式 # 可以访问互联网 ...
- 大胖子走迷宫【spfa跑状态】【到这个点,并且这个胖 = max(到这个点,按照时间变的这个胖)
大胖子走迷宫 题意 思路 普通的bfs走迷宫,多加了一个熟悉,就是胖的圈数.可以来回走,普通的bfs可能不太好处理,我们把这些状态放进spfa跑. 状态定义为{x,y,fat}:坐标位置,胖的圈数. ...
- Linux应用开发之【多线程开发-回调函数】
原来我一直都不懂回调函数是什么 ... Callback Function 定义:通过函数指针调用的函数 在理解这个回调函数之前我们需要先了解回调机制 回调机制在编程中体现在:特定的情况发生后,返回并 ...