座席相关事件回调接口

此接口定义了座席在呼叫中心系统中可能收到的各种事件回调,包括签入/签出管理、 通话状态变化、成员加入/离开、消息接收和特殊业务场景(加急请求、单向视频、录制等)的回调方法。 应用需要实现这些回调以响应座席在通话过程中的各种事件。

interface JRTCAgentCallback {
    onGetAllGroups?: (
        result: boolean,
        groups: ArrayList<JRTCCallCenterGroupItem>,
    ) => void;
    onCheckin?: (result: boolean, pause: boolean, reason: string) => void;
    onCheckout?: (
        result: boolean,
        reason: JRTCCallCenterCheckoutReason,
    ) => void;
    onCheckStateChanged?: (
        currState: JRTCCallCenterOperatorState,
        oldState: JRTCCallCenterOperatorState,
    ) => void;
    onCallStateChanged?: (
        state: JRTCCallCenterCallState,
        incomingType: JRTCCallCenterIncomingType,
        inviter: undefined | JRTCInviter,
        reason: JRTCCallCenterTermReason,
    ) => void;
    onCallQueueCount?: (count: number) => void;
    onApplyResult?: (operationId: number, result: boolean) => void;
    onTransferCallResult?: (operationId: number, result: boolean) => void;
    onMemberJoin?: (participant: JRTCRoomParticipant) => void;
    onMemberLeave?: (participant: JRTCRoomParticipant) => void;
    onMemberUpdate?: (
        participant: JRTCRoomParticipant,
        changeParam: JRTCRoomParticipantChangeParam,
    ) => void;
    onCallPropertyChanged?: (propChangeParam: JRTCRoomPropChangeParam) => void;
    onRemoteRecordStateChanged?: (
        state: JRTCRemoteRecordState,
        oldState: JRTCRemoteRecordState,
    ) => void;
    onScreenShareStateChanged?: (
        shareUserId: undefined | string,
        shareStreamId: undefined | string,
        oldShareUserId: undefined | string,
        oldShareStreamId: undefined | string,
        changeType: JRTCScreenShareChangeType,
    ) => void;
    onUrgentRequest?: (serialNumber: string, callerNumber: string) => void;
    onResponseUrgentResult?: (result: boolean, operationId: number) => void;
    onQueryAvailableAgentList?: (
        operationId: number,
        result: boolean,
        userIds: ArrayList<string>,
    ) => void;
    onHoldStateChanged?: (hold: boolean) => void;
    onCallTypeChanged?: (callType: JRTCCallCenterCallType) => void;
    onTurnCallTypeForSipResult?: (result: boolean, reason: string) => void;
    onMessageReceived?: (
        content: string,
        contentType: string,
        messageType: JRTCCallCenterMessageType,
        fromUserId: string,
    ) => void;
    onDeliveryAbort?: (
        isShutDown: boolean,
        deliveryUserId: string,
        reason: string,
    ) => void;
    onInviteThirdAgentResult?: (result: boolean, error: string) => void;
    onInviteThirdGuestResult?: (
        result: boolean,
        userId: string,
        error: string,
    ) => void;
    onNotifyMessageReceived?: (
        notifyMessage: JRTCNotifyMessage,
        fromUserId: string,
    ) => void;
    onOnewayVideoChanged?: (turnOn: boolean) => void;
    onSignResultResponse?: (
        result: boolean,
        fromUserId: string,
        extraInfo: string,
    ) => void;
    onSwitchPartRoleResult?: (
        operationId: number,
        result: boolean,
        error: string,
    ) => void;
    onKickParticipantResult?: (
        operationId: number,
        result: boolean,
        error: string,
    ) => void;
}

Properties

onGetAllGroups?: (
    result: boolean,
    groups: ArrayList<JRTCCallCenterGroupItem>,
) => void

获取业务号列表结果回调

Type declaration

    • (result: boolean, groups: ArrayList<JRTCCallCenterGroupItem>): void
    • Parameters

      • result: boolean

        获取结果,true表示获取成功,false表示获取失败

      • groups: ArrayList<JRTCCallCenterGroupItem>

        座席业务实体对象列表,获取失败时为undefined

      Returns void

当访客调用queryAllGroups接口获取业务号列表后, 会收到此回调,通知请求结果及返回的业务号列表数据。 业务号列表可用于展示可选的客服业务类型,供用户选择需要咨询的服务。

onCheckin?: (result: boolean, pause: boolean, reason: string) => void

签入回调

Type declaration

    • (result: boolean, pause: boolean, reason: string): void
    • Parameters

      • result: boolean

        签入结果

        • true: 签入成功
        • false: 签入失败
      • pause: boolean

        签入后的示闲/示忙状态

        • true: 签入后示忙
        • false: 签入后示闲
      • reason: string

        失败原因,当 result 为 false 时有效

      Returns void

座席调用 JRTCAgent.checkin 接口后,会收到此回调通知签入结果。 签入成功后,座席可以开始接收来电。

onCheckout?: (result: boolean, reason: JRTCCallCenterCheckoutReason) => void

签出回调

Type declaration

座席调用 checkout 接口签出排队机后,会收到此回调。 签出后,座席将不再接收新的来电。

onCheckStateChanged?: (
    currState: JRTCCallCenterOperatorState,
    oldState: JRTCCallCenterOperatorState,
) => void

签入/签出状态改变回调

Type declaration

当座席的签入/签出状态发生变化时,会收到此回调。 可用于更新界面显示和通知用户状态变化。

onCallStateChanged?: (
    state: JRTCCallCenterCallState,
    incomingType: JRTCCallCenterIncomingType,
    inviter: undefined | JRTCInviter,
    reason: JRTCCallCenterTermReason,
) => void

通话状态改变回调

Type declaration

此回调在以下情况会触发:

应用应根据不同状态调整UI展示和功能可用性,如在TALKING状态启用媒体传输, 在IDLE状态释放资源等。

onCallQueueCount?: (count: number) => void

当前排队人数上报回调

Type declaration

    • (count: number): void
    • Parameters

      • count: number

        当前排队总人数

      Returns void

此回调会定期上报当前座席所关联的所有业务号下排队总人数, 不包含已经分配座席但是未接听的访客成员。 应用可以据此更新显示排队情况。

onApplyResult?: (operationId: number, result: boolean) => void

示忙/示闲回调

Type declaration

    • (operationId: number, result: boolean): void
    • Parameters

      • operationId: number

        操作ID,对应 applyStatePause 接口的返回值

      • result: boolean

        示忙/示闲操作结果

        • true: 操作成功
        • false: 操作失败

      Returns void

座席示忙/示闲状态发生改变时会收到此回调,例如调用 applyStatePause 接口修改忙闲状态。 可以通过 isPause 获取当前的忙闲状态。

onTransferCallResult?: (operationId: number, result: boolean) => void

通话转接结果回调

Type declaration

    • (operationId: number, result: boolean): void
    • Parameters

      • operationId: number

        操作ID,对应 transferCall 接口的返回值

      • result: boolean

        通话转接结果

        • true: 转接成功
        • false: 转接失败

      Returns void

调用 transferCall 接口将通话转接给其他座席或业务组后,会收到此回调。 转接成功后,当前座席将退出通话,被转接的座席会收到来电。

onMemberJoin?: (participant: JRTCRoomParticipant) => void

通话中有新成员加入回调

Type declaration

当第三方成员加入通话时,已在通话中的所有成员会收到此回调。 新加入的成员本身不会收到此回调。

应用应在收到此回调时更新UI界面,添加新成员的视频窗口(如果有视频), 并可能需要调整布局以适应新的成员数量。可通过participant对象获取 新成员的ID、名称、角色等信息。

onMemberLeave?: (participant: JRTCRoomParticipant) => void

通话中有成员离开回调

Type declaration

通话中有成员离开时,剩余的成员会收到此回调。 离开的成员本身不会收到此回调。

应用应在收到此回调时更新UI界面,移除离开成员的视频窗口, 并可能需要调整布局。特别是座席成员离开时,可能需要显示通话即将结束的提示。 可通过participant对象识别离开成员的身份和角色。

onMemberUpdate?: (
    participant: JRTCRoomParticipant,
    changeParam: JRTCRoomParticipantChangeParam,
) => void

通话中成员属性更新回调

Type declaration

当通话中成员的属性发生变化时,如音量变化、音视频状态变化等,会触发此回调。 常见的属性变化包括:

  • volume - 成员实时音量值
  • audio - 音频上传状态变更
  • video - 视频上传状态变更

应用应根据属性变化更新UI显示,如显示音量指示器、切换摄像头开启/关闭图标、 在视频暂停时显示占位图像等。

onCallPropertyChanged?: (propChangeParam: JRTCRoomPropChangeParam) => void

通话属性改变回调

Type declaration

当通话的属性发生变化时,如屏幕共享状态变更、录制状态变更等,会触发此回调。

重点关注屏幕共享属性,当screenSharetrue时, 应用需处理屏幕共享相关事件。可通过getShareStreamIdgetShareUserId获取共享画面的流ID和用户ID,用于渲染共享内容。 当屏幕共享停止时,应及时停止渲染并释放相关资源。

onRemoteRecordStateChanged?: (
    state: JRTCRemoteRecordState,
    oldState: JRTCRemoteRecordState,
) => void

远程录制状态变化回调

Type declaration

onScreenShareStateChanged?: (
    shareUserId: undefined | string,
    shareStreamId: undefined | string,
    oldShareUserId: undefined | string,
    oldShareStreamId: undefined | string,
    changeType: JRTCScreenShareChangeType,
) => void

屏幕共享状态变化回调

Type declaration

    • (
          shareUserId: undefined | string,
          shareStreamId: undefined | string,
          oldShareUserId: undefined | string,
          oldShareStreamId: undefined | string,
          changeType: JRTCScreenShareChangeType,
      ): void
    • Parameters

      • shareUserId: undefined | string

        当前屏幕共享用户 ID

      • shareStreamId: undefined | string

        当前屏幕共享流 ID

      • oldShareUserId: undefined | string

        变化前屏幕共享用户 ID

      • oldShareStreamId: undefined | string

        变化前屏幕共享流 ID

      • changeType: JRTCScreenShareChangeType

        屏幕共享变化类型

      Returns void

onUrgentRequest?: (serialNumber: string, callerNumber: string) => void

收到加急请求回调

Type declaration

    • (serialNumber: string, callerNumber: string): void
    • Parameters

      • serialNumber: string

        服务唯一标识

      • callerNumber: string

        发起加急请求的用户ID

      Returns void

访客在排队过程中调用 JRTCGuest.requestUrgent requestUrgent 接口发起加急请求成功后, 具有管理员权限的座席(业务管理平台配置)会收到此回调。

座席收到回调后可调用 responseUrgent 接口对加急请求进行处理, 接口的参数从此回调中获得。

onResponseUrgentResult?: (result: boolean, operationId: number) => void

处理加急请求结果回调

Type declaration

    • (result: boolean, operationId: number): void
    • Parameters

      • result: boolean

        处理结果

        • true: 处理成功
        • false: 处理失败
      • operationId: number

        操作ID,对应 responseUrgent 接口的返回值

      Returns void

座席调用 responseUrgent 接口处理加急请求后,会收到此回调通知处理结果。

onQueryAvailableAgentList?: (
    operationId: number,
    result: boolean,
    userIds: ArrayList<string>,
) => void

查询空闲座席结果回调

Type declaration

    • (operationId: number, result: boolean, userIds: ArrayList<string>): void
    • Parameters

      • operationId: number

        操作ID,对应 queryAvailableAgentList 接口的返回值

      • result: boolean

        查询结果

        • true: 查询成功
        • false: 查询失败
      • userIds: ArrayList<string>

        查询到的空闲座席用户ID列表

      Returns void

座席调用 queryAvailableAgentList 接口查询空闲座席后,会收到此回调。 可用于实现转接功能,选择可转接的目标座席。

onHoldStateChanged?: (hold: boolean) => void

收到通话保持或取回的回调

Type declaration

    • (hold: boolean): void
    • Parameters

      • hold: boolean

        通话状态,true表示通话被保持,false表示通话被取回

      Returns void

通话中座席可调用setHoldState接口保持通话或取回通话, 通话中所有成员都会收到此回调。

当通话被保持时,应用应向用户显示"通话已保持"提示,并可能需要暂停媒体传输。 当通话被取回时,应恢复正常通话界面并重新启用媒体传输。

onCallTypeChanged?: (callType: JRTCCallCenterCallType) => void

音视频通话模式切换回调

Type declaration

通话中的访客和座席可分别调用 JRTCGuest.turnCallType turnCallType 和 turnCallType 方法切换音视频通话模式,通话中所有成员都会收到此回调。

应用需据此更新UI界面和相应的音视频处理逻辑。

onTurnCallTypeForSipResult?: (result: boolean, reason: string) => void

请求SIP成员切换音视频模式结果回调

Type declaration

    • (result: boolean, reason: string): void
    • Parameters

      • result: boolean

        请求结果

        • true: 请求成功
        • false: 请求失败
      • reason: string

        失败原因,当 result 为 false 时有效

      Returns void

目前此回调仅支持SIP通话场景,用于请求SIP成员开启视频后的结果通知。 请求成功并不意味着SIP端一定会开启视频,具体行为取决于SIP端的设置和用户操作。

onMessageReceived?: (
    content: string,
    contentType: string,
    messageType: JRTCCallCenterMessageType,
    fromUserId: string,
) => void

收到消息回调

Type declaration

    • (
          content: string,
          contentType: string,
          messageType: JRTCCallCenterMessageType,
          fromUserId: string,
      ): void
    • Parameters

      • content: string

        消息内容

      • contentType: string

        消息内容类型

      • messageType: JRTCCallCenterMessageType

        消息归属类型

      • fromUserId: string

        发送方的用户ID

      Returns void

通话中的访客和座席可分别调用JRTCGuest.sendMessage sendMessage和sendMessage 接口发送消息,接收方会通过此回调获取消息。

消息归属类型包括:

  • UNKNOWN - 未知消息类型
  • ONE_TO_ONE - 一对一消息
  • GROUP - 群发消息(发送给通话中所有成员)

应用应根据消息类型和内容更新聊天界面,如在聊天窗口显示接收到的消息。 可通过fromUserId识别消息发送者,并可能需要根据身份显示不同的样式。

onDeliveryAbort?: (
    isShutDown: boolean,
    deliveryUserId: string,
    reason: string,
) => void

录制异常回调

Type declaration

    • (isShutDown: boolean, deliveryUserId: string, reason: string): void
    • Parameters

      • isShutDown: boolean

        录制异常时服务器是否自动结束通话,true表示自动结束通话,false表示不自动结束通话

      • deliveryUserId: string

        录制异常的用户ID

      • reason: string

        录制异常的原因

      Returns void

当远程录制服务异常退出时,会触发此回调通知所有通话成员。

应用应在收到此回调时向用户显示相应提示,如"录制服务异常"。 如果isShutDowntrue,还应提示用户通话即将结束, 此时通话会被服务器自动终止。

onInviteThirdAgentResult?: (result: boolean, error: string) => void

邀请第三方座席结果回调

Type declaration

    • (result: boolean, error: string): void
    • Parameters

      • result: boolean

        邀请结果

        • true: 邀请成功
        • false: 邀请失败
      • error: string

        邀请失败原因,当 result 为 false 时有效

      Returns void

座席邀请其他座席加入通话后,会收到此回调通知邀请结果。 邀请成功只表示邀请已发出,被邀请方是否接受邀请需要等待进一步通知。

onInviteThirdGuestResult?: (
    result: boolean,
    userId: string,
    error: string,
) => void

邀请第三方访客结果回调

Type declaration

    • (result: boolean, userId: string, error: string): void
    • Parameters

      • result: boolean

        邀请结果

        • true: 邀请成功
        • false: 邀请失败
      • userId: string

        访客用户ID

      • error: string

        邀请失败原因,当 result 为 false 时有效

      Returns void

座席邀请访客加入通话后,会收到此回调通知邀请结果。 邀请成功只表示邀请已发出,被邀请的访客是否接受邀请需要等待进一步通知。

onNotifyMessageReceived?: (
    notifyMessage: JRTCNotifyMessage,
    fromUserId: string,
) => void

收到事件通知消息回调

Type declaration

    • (notifyMessage: JRTCNotifyMessage, fromUserId: string): void
    • Parameters

      • notifyMessage: JRTCNotifyMessage

        事件通知实体类

      • fromUserId: string

        发送方的用户ID

      Returns void

通话中的访客和座席可分别调用JRTCGuest.sendNotifyMessage sendNotifyMessage和 sendNotifyMessage接口发送通知消息, 接收方会通过此回调获取消息。

与普通文本消息不同,通知消息通常用于传递特定业务事件,如文件传输请求、 评价请求等。应用应根据通知消息的类型和内容执行相应的业务逻辑。 notifyMessage对象包含消息类型、内容等信息,可用于区分不同的通知事件。

onOnewayVideoChanged?: (turnOn: boolean) => void

单向视频状态变化回调

Type declaration

    • (turnOn: boolean): void
    • Parameters

      • turnOn: boolean

        是否开启单向视频

        • true: 开启单向视频
        • false: 关闭单向视频

      Returns void

通话中座席调用 requestOnewayVideo 请求单向视频时,所有成员都会收到此回调。

收到此回调后,应用需要自行实现单向视频功能,例如用图片遮挡该座席画面, SDK不会对画面进行单向处理。此功能常用于座席需要看到访客但不希望被看到的场景。

onSignResultResponse?: (
    result: boolean,
    fromUserId: string,
    extraInfo: string,
) => void

访客签名请求结果回调

Type declaration

    • (result: boolean, fromUserId: string, extraInfo: string): void
    • Parameters

      • result: boolean

        签名结果

        • true: 签名成功
        • false: 签名失败
      • fromUserId: string

        响应签名请求结果的访客用户ID

      • extraInfo: string

        随路额外消息,可包含签名数据或其他相关信息

      Returns void

通话中访客调用 JRTCGuest.responseSignResult responseSignResult 接口给座席发送签名请求结果时, 座席会收到此回调。

此功能通常用于需要访客电子签名的业务场景,如合同签署、意向确认等。

onSwitchPartRoleResult?: (
    operationId: number,
    result: boolean,
    error: string,
) => void

切换自己在通话中角色结果回调

Type declaration

    • (operationId: number, result: boolean, error: string): void
    • Parameters

      • operationId: number

        操作ID,对应 switchPartRole 接口的返回值

      • result: boolean

        切换结果

        • true: 操作成功
        • false: 操作失败
      • error: string

        操作失败原因,当 result 为 false 时有效

      Returns void

座席调用 switchPartRole 接口切换自己在通话中的角色后, 会收到此回调通知操作结果。

角色切换可能影响座席在通话中的权限和可执行的操作。

onKickParticipantResult?: (
    operationId: number,
    result: boolean,
    error: string,
) => void

踢出通话成员结果回调

Type declaration

    • (operationId: number, result: boolean, error: string): void
    • Parameters

      • operationId: number

        操作ID,对应 kickParticipant 接口的返回值

      • result: boolean

        踢出结果

        • true: 操作成功
        • false: 操作失败
      • error: string

        操作失败原因,当 result 为 false 时有效

      Returns void

座席调用 kickParticipant 接口踢出通话中的某个成员后, 会收到此回调通知操作结果。

操作成功后,被踢出的成员将离开通话,其他成员会收到成员离开的通知。