远程教学之流程消息.md
5 KB
流程描述(已过时,需要更新)
- 客户端在启动的时候,登录腾讯通信云服务,登录后记录状态。在用户登出的的时候,同时登出腾讯通信云服务。
- 教师根据课表打开课程,选择远程教学模式进入,开始远程授课,
- 如果当前登录成功,则教师向服务器申请本次上课所需要的公开群信息和音视频Room的信息(a)。
- 如果当前未登录成功,则再次尝试登录,登录成功后,执行(a)
- 登录不成功,则提示用户,服务当前不可用。请退出重试,或者联系我们。
- 教师创建公开群,并且进入音视频房间,进入后通知盒子鱼服务器通知给相应的学生
- 学生接到通知后选择同意,加入公开群,并且进入音视频房间。
- 如果学生加入群成功,教师端应该能收到有人入群的系统消息
- 如果学生之前已经加入过此群,则通过自定义消息把自己的id信息发送到群里。
- 以上两种情况,教师端都可以获取到学生的id信息,判断对方是本课合法邀约的学生,则开始上课的过程
- 教师下放本次课程所需要的资源信息。
- 学生端检查是否已经下载完全部的资源, 如果未下载则进行下载,下载完通知给教师端。 (或者在学生已经确定上哪一课的时候,由后台先偷偷下载一批, 但是上课的时候,仍然需要再次检查)
- 教师端收到学生端资源齐备的消息后,进入课程,开始上课,同时通知给服务器上课开始了,同时发送各种控制消息。
- 学生端收到控制消息后,展现相应的课程内容,在教师允许学生回答的时候,可以进行答题操作
- 教师结束课程,上报给服务器,同时回到书架或者课表页面。学生则回到课表页面。
以上为开发第一阶段的流程设计。
- 第一阶段,服务器只负责公共群和音视频房间的信息管理
- 第二阶段,服务器可以通过腾讯云通信IM的API进行更多的控制工作,例如公共群和音视频房间的创建可以由服务器进行。
在线授课接口定义
流程消息定义
- 学生上报自己的用户Id
- 学生收到推送之后,根据推送的信息,加入到指定的群。
- 如果该学生之前已经加入过该群,则加群之后会返回已经入群的错误码,学生可以发送自定义消息告诉教师,自己已经入群。
- 如果该学生第一次入群,把申请消息设置为自己的id,则教师端会收到有用户入群的消息,根据消息内容判断是否允许入群。
学生端上报Id的自定义消息
{
"type":"flow",
"command":"reportId",
"id":"17293"
}
- 下发课程资源信息与教师端元数据(教师端动作,具体的消息定义还需要讨论)
- 学生端根据老师端的版本信息,判断自己的版本是否和老师的版本相匹配,如果不匹配则提示更新。
- 如果匹配则进入下载资源的流程
{
"type":"flow",
"command":"prepareCourse",
"screenWidth":1024,
"screenHeight":768,
"device":"ios"
"appVersion":"6.6.0"
"courseName":"英雄是怎样炼成的"
"templateList":{"subTypeList":[0,2,3,6],
"typeStringList":["group_test_item_video",
"content_scene_video"]
"attachmentType":"smallFile"
}
附属的小文件是一个Json格式的资源列表
[
95d8ca1ca0c5209bd75a4c2181f8609d,
7b251f924497500ed26428342a815d1b,
45bc7b7e7828020eaa016674327d5dff,
53f086e895518ee3b488404620117d56,
fc5545a9a728904dc533efcbfff1d2c5,
7b251f924497500ed26428342a815d1b
]
-
学生端开始下载课程所需要的资源(学生端动作) 如果学生端需要下载资源,则发送此消息。如果检查到无须下载新的资源,则不发送此消息。
{ "type":"flow", "command":"beginDownloadCourseResources" }
-
学生端已经下载好课程所需要的资源(学生端动作) 检测到本地已经下载好了全部的课程所需资源后,通知给教师端。
{ "type":"flow", "command":"downloadedAllCourseResources" }
-
发送课程页信息(教师端动作)
{ "type":"flow", "command":"coursePage", "sendPageIndex":3 "attachmentType":"smallFile" }
附属的小文件是一个Json格式的页面信息 (考虑到将来如果页面比较复杂,或者附加了比较长的文章,可能出现当个页面信息过长,不适合发送自定义信息的情况)
{
"pageInfo" : 页面Json信息
"swipeDirection" : 0 (0-左滑 1-右滑)
"coursePageType" : 0 (这个值主要是为了兼容本地双屏功能用的,这里固定填写0就可以了)
}
-
结束课程(教师端动作)
{ "type":"flow", "command":"endCourse" }
-
学生上报结束课程
{ "type":"flow", "command":"endCourse" }
教师端收到此信息后解散群