概述
RTM SDK 除了提供实时消息送达以外事件,还提供了呼叫邀请功能。RTM SDK 提供了简单的流程控制接口,同时还会按时序激活 LocalInvitation
和 RemoteInvitation
的生命周期,开发者根据自身的业务逻辑可以自由的实现符合产品的场景。
RTM SDK 提供的呼叫邀请功能,仅仅是实现了呼叫邀请的基本控制逻辑(即发送、取消、接受和拒绝呼叫邀请),不会处理邀请接通之后的动作,也不会管理整个邀请的生命周期,需要开发者根据自己的业务逻辑自行维护。
邀请流程:
-
主叫端发送或取消呼叫邀请
-
被叫端接受或拒绝呼叫邀请
可用于多种业务场景:
- 坐席呼叫
- 主播连麦邀请
- 在线教育
- ...
基本流程
RTM SDK 提供了一个完整的呼叫要求过程,主叫和被叫的呼叫邀请状态和生命周期分别用 LocalInvitation
和 RemoteInvitation
来定义。
发起呼叫邀请
步骤:
-
通过
ArRTM.createLocalInvitation
创建一个本地邀请LocalInvitation
实例,同时LocalInvitation
生命周期开始。 -
实例调用
send
方法发送呼叫邀请。被叫收到RemoteInvitationReceived
回调,此时RemoteInvivation
生命周期开始。主叫收到LocalInvitaionReceivedByPeer
回调。
示例代码:
// 创建 LocalInvitation
localInvitation = Client.createLocalInvitation(calleeId);
// 发送呼叫邀请
localInvitation.send();
取消呼叫邀请
主叫使用 LocalInvitation
实例调用 cancel
取消呼叫邀请。被叫收到 RemoteInvitationCanceled
回调,此时 RemoteInvitation
生命周期结束。主叫收到 LocalInvitationCanceled
回调,此时 LocalInvitation
生命周期结束。
示例代码:
localInvitation.cancel();
取消呼叫邀请,需要在被叫端 RemoteInvitation
接受或拒绝呼叫邀请操作之前执行。
接受呼叫邀请
被叫从 RemoteInvitationReceived
回调获取 RemoteInvitation
并调用 accept
接受呼叫邀请。被叫收到 RemoteInvitationAccepted
回调,此时 RemoteInvitation
生命周期结束。主叫收到 LocalInvitationAccepted
回调,此时 LocalInvitation
生命周期结束。
示例代码:
// 收到远程呼叫邀请
Client.on("RemoteInvitationReceived", remoteInvitation => {
// 自动接受呼叫邀请
remoteInvitation.accept();
});
你可能会同时收到好几次呼叫邀请,所以业务逻辑要控制好,保证一次只进行一次呼叫,根据业务逻辑去接受和拒绝其他呼叫邀请。
拒绝呼叫邀请
被叫从 RemoteInvitationReceived
回调获取 RemoteInvitation
并调用 refuseRemoteInvitation
拒绝呼叫邀请。被叫收到 RemoteInvitationRefused
回调,此时 RemoteInvitation
生命周期结束。主叫收到 LocalInvitationRefused
回调,此时 LocalInvitation
生命周期结束。
示例代码:
// 收到远程呼叫邀请
Client.on("RemoteInvitationReceived", remoteInvitation => {
// 自动拒绝呼叫邀请
remoteInvitation.refuse();
});
API 参考
详情请见 RTM Web SDK 呼叫邀请管理 API 文档。
示例项目
你可以到 GitHub 下载最新版的 ArRTM-Web-Tutorial 查看完整的源码和代码逻辑。