AnyChat技术支持论坛

标题: 坐席(客服)转接功能 [打印本页]

作者: 零度以下    时间: 2017-5-22 14:05
标题: 坐席(客服)转接功能
客户登录手机端anyChat Queue 智能排队系统,排队等待坐席人员服务,坐席人员A接入客户采用:
var errorcode = BRAC_ObjectControl(ANYCHAT_OBJECT_TYPE_AGENT, mSelfUserId, ANYCHAT_AGENT_CTRL_SERVICEREQUEST, 0, 0, 0, 0, "");建立视频连接。现在坐席人员A将当前客户转接给坐席人员B服务。按照AnyChatCallCenter这个demo上讲述的转接功能,需要传入sessionId的,demo上的sessionId是这样来的://呼叫用户双击
function VideoCallRequest(ID) {
    if (mSelfUserId == ID)
        ForSession("不能呼叫自己...");
    else {
        mTargetUserId = ID;
        var cmdMsg={};
        cmdMsg.cmdOption=CMD_SESSION_REQUEST;
        cmdMsg.srcUserId=mSelfUserId;
        cmdMsg.tarUserId=mTargetUserId;
        cmdMsg.sessionId=-1;
        cmdMsg.sessionType=SESSION_TYPE_CALL;
        BRAC_TransBuffer(0, JSON.stringify(cmdMsg));
        //BRAC_VideoCallControl(BRAC_VIDEOCALL_EVENT_REQUEST,mTargetUserId,0,0,0,"");  // 向指定的用户发送会话邀请
    }
}
但是我们坐席接入调用的不是这个方法,那我们该如何获取sessionId呢。


作者: 零度以下    时间: 2017-5-22 17:16
排队系统在手机端,坐席服务在pc端 web网页: 坐席服务通过这个方法向手机端发送视频邀请。var errorcode = BRAC_VideoCallControl(BRAC_VIDEOCALL_EVENT_REQUEST, ID, 0, 0, 0, "");
作者: 佰锐科技-梁国桦    时间: 2017-5-23 11:58
您好,由于接口特性,VideoCallControl只能支持一对一视频,如果是实现转接或三方,那就只能用透明通道来模拟了
作者: 零度以下    时间: 2017-5-23 13:35
佰锐科技-梁国桦 发表于 2017-5-23 11:58
您好,由于接口特性,VideoCallControl只能支持一对一视频,如果是实现转接或三方,那就只能用透明通道来模 ...

pc端的网页能否通过透明通道向android手机上的anyChat Queue app中的客户发起视频邀请?
function VideoCallRequest(ID) {
  
        mTargetUserId = ID;
        var cmdMsg={};
        cmdMsg.cmdOption=CMD_SESSION_REQUEST;
        cmdMsg.srcUserId=mSelfUserId;
        cmdMsg.tarUserId=mTargetUserId;
        cmdMsg.sessionId=-1;
        cmdMsg.sessionType=SESSION_TYPE_CALL;
        BRAC_TransBuffer(0, JSON.stringify(cmdMsg));
        //BRAC_VideoCallControl(BRAC_VIDEOCALL_EVENT_REQUEST,mTargetUserId,0,0,0,"");  // 向指定的用户发送会话邀请
   
}
手机端无法接收到视频邀请,用BRAC_VideoCallControl(BRAC_VIDEOCALL_EVENT_REQUEST, ID, 0, 0, 0, "");则可以接收到邀请。
作者: 佰锐科技-梁国桦    时间: 2017-5-23 13:48
零度以下 发表于 2017-5-23 13:35
pc端的网页能否通过透明通道向android手机上的anyChat Queue app中的客户发起视频邀请?
function Video ...

那是因为手机端没有做相应的回调处理
作者: 零度以下    时间: 2017-5-24 14:34
谢谢,那android端接收pc端web网页调用以下代码
    mTargetUserId = ID;
       var cmdMsg={};
      cmdMsg.cmdOption=CMD_SESSION_REQUEST;
    var curSessionUser={
    "srcUser":{"userId":mSelfUserId},
    "tarUser":{"userId":mTargetUserId}
};
    cmdMsg.curSessionUser=curSessionUser;
    cmdMsg.srcUserId= mSelfUserId;
    cmdMsg.tarUserId= mTargetUserId;
    cmdMsg.sessionId= -1;
    cmdMsg.sessionType=SESSION_TYPE_CALL;
    var errorCode=BRAC_TransBuffer(mTargetUserId , JSON.stringify(cmdMsg));
    AddLog("VideoCallRequest("  + "cellphone Clinet ID" + ID + ")=" + errorCode, LOG_TYPE_API);
后android应该怎么处理呢。以下代码是否可行
        public void OnAnyChatTransBuffer(int dwUserid, byte[] lpBuf, int dwLen) {
                 
            
                 String returnData = new String(lpBuf, "UTF-8");
                 JSONObject json = new JSONObject(returnData);
                 
                 JSONObject json1 = new JSONObject(json.optString("curSessionUser"));
                 
                 JSONObject json2 =new JSONObject(json1.optString("tarUser"));
                 
                 int mTargetUserId = json2.optInt("userId");   
                     anychat.VideoCallControl(AnyChatDefine.BRAC_VIDEOCALL_EVENT_REQUEST, mTargetUserId, 0, 0, 0, "");
        }
还是要调用anychat.TransBuffer(0, lpBuf, lpBuf.length);

作者: 佰锐科技-梁国桦    时间: 2017-5-24 15:03
零度以下 发表于 2017-5-24 14:34
谢谢,那android端接收pc端web网页调用以下代码
    mTargetUserId = ID;
       var cmdMsg={};

Web端调TransBuffer来发送消息,Android自然也要用TransBuffer的回调来接收。。。Android端如何设置该回调,请参考AnyChatFeatures这个Demo的透明通道部分
作者: 零度以下    时间: 2017-5-24 15:07
佰锐科技-梁国桦 发表于 2017-5-24 15:03
Web端调TransBuffer来发送消息,Android自然也要用TransBuffer的回调来接收。。。Android端如何设置该回 ...

能否发给我一份AnyChatFeatures的demo呢2328787988@qq.com,非常感谢
作者: 佰锐科技-梁国桦    时间: 2017-5-24 15:10
零度以下 发表于 2017-5-24 15:07
能否发给我一份AnyChatFeatures的demo呢,非常感谢

到官网下载中心下载Android的SDK,解压后,在src目录中就有AnyChatFeatures的项目源码,下载中心地址:http://sdk.anychat.cn/html/download.html
作者: iamnxh    时间: 2017-5-24 16:30
是AlphaChannel.java 下OnAnyChatTransBuffer里面么,mMessageList.add(anyChatSDK.GetUserName(dwUserid) + ": " + srtReceMsg);
                mMessageListView.SetFileList(mMessageList);,这里啥也没呀,还是transMessage方法,这里也只是传送数据,还要写新的视频界面么,能不能说详细点呢
作者: 佰锐科技-梁国桦    时间: 2017-5-25 09:58
iamnxh 发表于 2017-5-24 16:30
是AlphaChannel.java 下OnAnyChatTransBuffer里面么,mMessageList.add(anyChatSDK.GetUserName(dwUserid)  ...

OnAnyChatTransBuffer 这个就是收到透明通道消息时的回调了
作者: iamnxh    时间: 2017-5-25 11:54
我在 OnAnyChatTransBuffer  里面应该怎么写呢
作者: iamnxh    时间: 2017-5-25 15:28
佰锐科技-梁国桦 发表于 2017-5-25 09:58
OnAnyChatTransBuffer 这个就是收到透明通道消息时的回调了

我参考 AlphaChannel.java里面 ,// 传送接口
                anyChatSDK.TransBuffer(mUserID, strByteMsg, 1000);里面发送到内容是EditText mETInputMessag;        // 输入指令的view  里面输入的指令 ,请问应该输入什么指令测试呢

作者: iamnxh    时间: 2017-5-25 16:11
佰锐科技-梁国桦 发表于 2017-5-25 09:58
OnAnyChatTransBuffer 这个就是收到透明通道消息时的回调了

请问 anyChatSDK.TransBuffer  里面的具体内容应该发什么,有例子么
作者: 佰锐科技-梁国桦    时间: 2017-5-26 09:17
iamnxh 发表于 2017-5-25 16:11
请问 anyChatSDK.TransBuffer  里面的具体内容应该发什么,有例子么

先问个问题,你是拿着我们的三方呼叫与转接demo来测试的吗?
作者: iamnxh    时间: 2017-5-26 09:48
三方呼叫与转接demo指的是哪个?我用到android版本里面src下的 AnyChatQueue,
作者: 零度以下    时间: 2017-5-26 14:37
//点对对通话开始
function onP2PSessionStart(dwSrcUserId,dwTarUserId,sessionId,param){
    sessionVideo={};
    sessionVideo.srcUser=dwSrcUserId;
    sessionVideo.tarUser=dwTarUserId;
    sessionVideo.sessionType=SESSION_TYPE_CALL;
    sessionVideo.sessionId=sessionId;
    BRAC_EnterRoom(sessionId, "", 0);
    //隐藏呼叫层
    Getdmo("Initiative_Call_Div").style.display = "none";
    //打开远程客户视频屏幕
    createRemoteScreenStartVideo(dwTarUserId);
}


//创建远程客户视频
function createRemoteScreenStartVideo(dwTarUserId){
    console.log("------------------dwTarUserId------------>"+dwTarUserId);
    var dwTarUserIdUserName = BRAC_GetUserInfo(dwTarUserId,USERINFO_NAME);
    // 打开目标用户视频
    var parentObj=document.getElementById("remoteVideoPos");
    BRAC_SetVideoPos(dwTarUserId, parentObj, "ANYCHAT_VIDEO_REMOTE");
}

但是网页上显示不出会话的手机端视频。
作者: 零度以下    时间: 2017-5-26 14:42
零度以下 发表于 2017-5-26 14:37
//点对对通话开始
function onP2PSessionStart(dwSrcUserId,dwTarUserId,sessionId,param){
    sessionV ...

就是如何获取手机端的视频呢
作者: 零度以下    时间: 2017-5-26 14:59
零度以下 发表于 2017-5-26 14:42
就是如何获取手机端的视频呢

加上这两句也不行啊
  BRAC_UserCameraControl(dwTarUserId, 1);//打开视频
    BRAC_UserSpeakControl(dwTarUserId, 1);//打开声音
作者: 零度以下    时间: 2017-5-26 16:26
后台打印日志,双方都进入了room。但是就是接不到手机上的视频
作者: 零度以下    时间: 2017-5-27 10:14
透明通道接通手机和网页端视频,网页上偶尔会显示手机端视屏,是否网络问题,感觉成功率不高。
作者: 佰锐科技-梁国桦    时间: 2017-5-27 11:29
零度以下 发表于 2017-5-27 10:14
透明通道接通手机和网页端视频,网页上偶尔会显示手机端视屏,是否网络问题,感觉成功率不高。

你留个邮箱,我发个Web端的三方呼叫与转接demo给你吧,你参考一下Web端的逻辑,Android端、IOS端也可以做的
作者: 零度以下    时间: 2017-5-27 12:33
佰锐科技-梁国桦 发表于 2017-5-27 11:29
你留个邮箱,我发个Web端的三方呼叫与转接demo给你吧,你参考一下Web端的逻辑,Android端、IOS端也可以做 ...

1059034866@qq.com,谢谢
作者: 零度以下    时间: 2017-5-31 09:09
我现在显示本地视频没有问题,显示Android端视频,就是显示不出来,Android端需要怎么写,我这边通过如下代码
           BRAC_UserCameraControl(sessionVideo.tarUser, 1);
            BRAC_UserSpeakControl(sessionVideo.tarUser, 1);才能打开Android端视频呢
作者: 佰锐科技-梁国桦    时间: 2017-5-31 09:16
零度以下 发表于 2017-5-31 09:09
我现在显示本地视频没有问题,显示Android端视频,就是显示不出来,Android端需要怎么写,我这边通过如下代 ...

我加你QQ来说吧。。。根据你上边发的QQ邮箱地址,已经申请好友了




欢迎光临 AnyChat技术支持论坛 (http://bbs.anychat.cn/) Powered by Discuz! X3