概述
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 查看完整的源码和代码逻辑。

