呼叫邀请

最近更新时间:2022-09-20 05:17:40

概述

RTM SDK 除了提供实时消息送达以外事件,还提供了呼叫邀请功能。RTM SDK 提供了简单的流程控制接口,同时还会按时序激活 LocalInvitationRemoteInvitation 的生命周期,开发者根据自身的业务逻辑可以自由的实现符合产品的场景。

RTM SDK 提供的呼叫邀请功能,仅仅是实现了呼叫邀请的基本控制逻辑(即发送、取消、接受和拒绝呼叫邀请),不会处理邀请接通之后的动作,也不会管理整个邀请的生命周期,需要开发者根据自己的业务逻辑自行维护。

邀请流程:

  • 主叫端发送或取消呼叫邀请

  • 被叫端接受或拒绝呼叫邀请

可用于多种业务场景:

  • 坐席呼叫
  • 主播连麦邀请
  • 在线教育
  • ...

基本流程

RTM SDK 提供了一个完整的呼叫要求过程,主叫和被叫的呼叫邀请状态和生命周期分别用 LocalInvitationRemoteInvitation 来定义。

发起呼叫邀请

步骤:

  1. 通过 ArRTM.createLocalInvitation 创建一个本地邀请 LocalInvitation 实例,同时 LocalInvitation 生命周期开始。

  2. 实例调用 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 查看完整的源码和代码逻辑。