座席相关事件回调

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?: (
        type: JRTCCallCenterCallState,
        incomingType: JRTCCallCenterIncomingType,
        inviter: 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;
    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

获取业务号列表结果回调

座席调用 queryAllGroups 接口获取业务号列表,会收到此回调。

Type declaration

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

      • result: boolean

        获取结果

        • true: 获取成功
        • false: 获取失败
      • groups: ArrayList<JRTCCallCenterGroupItem>

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

      Returns void

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

签入回调

座席调用 checkin 接口成功,会收到此回调。

Type declaration

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

      • result: boolean

        签入结果 - true: 签入成功 - false: 签入失败

      • pause: boolean

        签入后的示闲/示忙状态 - true: 签入后示忙 - false: 签入后示闲

      • reason: string

        失败原因

      Returns void

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

签出回调

座席调用 checkout 接口签出排队机,会收到此回调。

Type declaration

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

签入/签出状态改变

Type declaration

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

通话状态改变回调

Type declaration

onCallQueueCount?: (count: number) => void

当前排队人数上报回调

Type declaration

    • (count: number): void
    • Parameters

      • count: number

        当前座席所关联的所有业务号下排队总人数,不包含已经分配座席但是未接听的的访客成员

      Returns void

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

示忙/示闲回调

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

Type declaration

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

      • operationId: number

        对应 applyStatePause 接口的返回值

      • result: boolean

        示忙/示闲操作结果

        • true: 示忙/示闲成功
        • false: 示忙/示闲失败

      Returns void

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

通话转接回调

调用 transferCall 接口将通话转接给其他座席或业务组时,会收到此回调。

Type declaration

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

      • operationId: number

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

      • result: boolean

        通话转接结果

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

      Returns void

onMemberJoin?: (participant: JRTCRoomParticipant) => void

通话中有新成员加入回调

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

Type declaration

onMemberLeave?: (participant: JRTCRoomParticipant) => void

通话中有成员离开回调

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

Type declaration

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

通话中成员属性更新回调

常用的有 ChangeParam#volume 音量值、ChangeParam#audio 音频上传状态、ChangeParam#video 视频上传状态等。
例如当通话中有成员关闭视频传输,通话中所有成员都会收到此回调。

Type declaration

onCallPropertyChanged?: (propChangeParam: JRTCRoomPropChangeParam) => void

通话属性改变回调

Type declaration

重点关注屏幕共享,即当PropChangeParam#screenShare screenShare 属性为 true 时,去处理屏幕共享相关事件。
可根据 JRTCGuest#getShareStreamId shareRenderId 和 JRTCGuest#getShareUserId shareUserId 属性进行屏幕共享画面的渲染和停止渲染。

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

收到加急请求回调

访客在排队过程中调用 JRTCGuest#requestUrgent requestUrgent 接口发起加急请求成功后,管理员权限的座席(业务管理平台配置)会收到此回调。
座席收到回调后可调用 responseUrgent 接口对加急请求进行处理,接口的参数从此回调中获得。

Type declaration

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

      • serialNumber: string

        服务唯一标识

      • callerNumber: string

        发起加急请求的用户ID

      Returns void

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

处理加急结果回调

Type declaration

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

      • result: boolean

        处理结果

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

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

      Returns void

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

查询空闲座席回调

座席调用 queryAvailableAgentList 接口查询空闲座席成功时,会收到此回调。

Type declaration

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

      • operationId: number

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

      • result: boolean

        查询结果

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

        查询到的空闲座席列表

      Returns void

onHoldStateChanged?: (hold: boolean) => void

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

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

Type declaration

    • (hold: boolean): void
    • Parameters

      • hold: boolean

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

      Returns void

onCallTypeChanged?: (callType: JRTCCallCenterCallType) => void

音视频通话切换回调

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

Type declaration

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

请求音视频通话切换结果回调

Type declaration

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

      • result: boolean

        请求音视频通话切换结果

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

        失败原因

      Returns void

目前仅支持Sip通话情况下,请求Sip成员开启视频

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

收到消息回调

通话中的访客和座席可分别调用 JRTCGuest#sendMessage(string, string, string) sendMessage} 和 (string, string, string) sendMessage} 接口给通话中的指定成员或全体成员发送文本消息,接收消息的成员会收到此回调,由此获取消息具体信息。

Type declaration

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

      • content: string

        消息内容

      • contentType: string

        消息内容类型

      • messageType: JRTCCallCenterMessageType

        消息归属类型

        • JRTCCallCenterMessageType#UNKNOWN : 未知消息类型
        • JRTCCallCenterMessageType#ONE_TO_ONE : 一对一消息
        • JRTCCallCenterMessageType#TYPE_GROUP : 群发消息(发送给通话中所有成员)
      • fromUserId: string

        发送方的用户ID

      Returns void

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

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

邀请第三方座席结果回调

Type declaration

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

      • result: boolean

        邀请第三方座席结果

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

        邀请第三方座席失败原因

      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

        邀请第三方访客失败原因,仅在失败时生效

      Returns void

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

收到事件通知消息回调

通话中的访客和座席可分别调用 JRTCGuest#sendNotifyMessage sendNotifyMessage 和 sendNotifyMessage 接口给通话中的指定成员或全体成员发送通知消息,接收消息的成员会收到此回调,由此获取消息具体信息。

Type declaration

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

      • notifyMessage: JRTCNotifyMessage

        事件通知实体类

      • fromUserId: string

        发送方的用户ID

      Returns void

onOnewayVideoChanged?: (turnOn: boolean) => void

收到单向视频状态变化回调

通话中座席调用 requestOneWayVideo 请求单向视频,所有成员都会收到此回调。
收到此回调后,应用需要自行实现单向视频功能,例如用图片遮挡该座席画面,SDK不会对画面进行单向处理。

Type declaration

    • (turnOn: boolean): void
    • Parameters

      • turnOn: boolean

        是否单向视频

      Returns void

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

收到访客签名请求结果回调

通话中访客调用 JRTCGuest#responseSignResult(boolean, string, string) responseSignResult} 接口给座席发送签名请求结果,座席会收到此回调。

Type declaration

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

      • result: boolean

        签名结果

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

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

      • extraInfo: string

        随路额外消息

      Returns void

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

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

Type declaration

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

      • operationId: number

        操作id,对应 (int) switchPartRole 接口的返回值

      • result: boolean

        切换自己在通话中角色结果 - true: 操作成功 - false: 操作失败

      • error: string

        切换自己在通话中角色操作失败原因

      Returns void

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

踢出通话成员结果回调

Type declaration

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

      • operationId: number

        操作id,对应 (String) kickParticipant 接口的返回值

      • result: boolean

        踢出通话成员结果 - true: 操作成功 - false: 操作失败

      • error: string

        踢出通话成员操作失败原因

      Returns void