• 软电话条对接
  • 对外事件推送
  • 挂机接口
  • 短信接口
  • 签入签出接口
  • IVR流程对接
  • 黑红名单对接
  • 弹屏对接
  • 首页对接
  • 客户TAB页对接
  • 12590语音验证码
  • 流量充值接口
  • 在线客服对接
  • 在线客服自定义UI
  • 微信客服配置
  • 对接数据查询
  • 接口生成与检查

对接概述新版REST接口文档(PASS能力)

客户可以根据自己的需求查看相应的文档:

“软电话条对接”1.希望在自己的系统(必须是B/S系统)中实现电话工具条功能的用户请查看文档。

“在线客服对接”2.希望让客户浏览网站的时候能够实时与客服沟通的用户请查看文档。

“对外事件推送”3.要自己保存通话记录的客户用户请查看文档。

“弹屏对接”4.使用七陌系统,但是来电弹屏要弹出自己系统的客户资料用户请查看文档。

“首页对接”5.使用七陌系统,同时有自己的管理系统,希望能够同时操作两个系统的用户请查看文档。

“短信接口”6.想要实现点击发送验证码或短信通知客户相关信息的用户请查看文档。

“Webcall接口”7.使用双向回呼(匿名通话)或语音验证码、语音通知能力的用户请查看文档。

“挂机接口”8.需要实现定时通话自动挂断的用户请查看文档。

接口对接简介

呼叫中心目前提供以下几种能力对接:

1.软电话条对接:将软电话条嵌入到B/S系统中,实现对接电话工具条功能;此外软电话工具条还支持外呼和来电弹屏功能。

2.在线客服对接:通过将代码植入网站,使网站具有在线客服功能。让客户在网站上通过点击按钮就能联系到客服,与客服沟通。更方便对客户进行全方位服务。

3.对外事件推送:是指将通话的事件(接通事件、挂机事件等)推送过去,由你们接收事件数据进行记录通话记录等操作。

4.弹屏对接:座席来电响铃时,呼叫中心系统以http get方式调用第三方B/S系统的url,并将相关来电数据送给第三方系统。

5.短信接口:通过调用接口向客户发送验证码、通知、回馈营销活动等短信,短信模板需报备。

6.外呼接口:是通过调用外呼接口在你们的系统中实现点击呼叫的功能。

7.Webcall接口:呼叫中心系统提供一个http接口,来发起外呼将被叫呼通后送入指定的流程中。在这个流程中,客户可以实现语音播报、接入坐席等一系列功能。

8.挂机接口:呼叫中心系统提供一个http接口,用户通过传递通话id等参数信息将某通电话强制挂断,该接口多配合接口使用。
“对外事件推送”

接口对接账号参数获取:

“对接数据查询”除短信接口测试阶段需要的md5参数外,其他接口所需参数均可从查询功能中获得。查询时只需输入账户名称,例如“8001@gsmc”,查询只需输入“gsmc”即可。

软电话工具条介绍

软电话工具条只是对通话状态的显示与控制,真正实现通话功能的还是手机(Local) 软电话(sip)或者语音网关(gateway)。

它是BS架构,无需安装ocx控件,纯html,js代码.将我们的软电话条界面嵌入你们的应用系统中,它是独立的,不会影响你们的工单和其他功能。

1.软电话条提供三方面的功能:

1.界面操作–在这个界面上可以进行电话外呼,通话保持,转接,咨询,坐席忙碌空闲状态设置。

2.外呼–通过嵌入软电话条的js代码,在你们的系统界面,点击客户的号码,可以直接呼出去。

3.来电弹屏事件–来电后,我们会告诉你们系统,你们可以根据我们返回给你们的参数进行来电弹屏操作。

界面:

我们做了一个模板,可以通过修改css文件改变软电话条界面的样式.

2.代码使用:(需要贵公司做的)
2.1 软电话模板的试用方法
解压找到phoneBar下的login.html文件,输入账号密码加载软电话页面,进入页面后就可以拨打。
2.2 对接说明

将包下面的文件拷贝到你们的项目中

找到phoneBar下的phonebar.html文件,将phonebar.html文件中的内容拷贝到你们需要加入软电话条界面的页面中

注:根据不同客户账号,js/icallcenter/logon.js代码中的proxy_url参数需要客户自己修改,参数查询请到“对接数据查询”根据开通的账号获得地址。

  1. icallcenter.logon.startLogon = function (loginName, password, extenType) {  
  2.     var config = {  
  3.         Monitor: true,  
  4.         proxy_url: “http://119.**.**.104/”,//根据账号需要不同IP地址,请查询后修改  
  5.         extenType: extenType,  
  6.         password: password,  
  7.         User: loginName,  
  8.         busyType: “0”  
  9.     };  
  10.     icallcenter.logon.initPhone(config);  
  11. };  

源码下载:edb_bar.zip

3.弹屏对接

我们提供一个文件,js/icallcenter下的callProcessor.js,当有事件过来的时候就会触发该方法。如来电,就会触发到onRing方法,并传入参数.

具体参数含义见:

参数名 描述
originCallNo 主叫号码
originCalledNo 被叫号码
Agent 座席工号
ivrkey 来电客户的按键信息,比如 1004@1-1005@2(1004、1005为节点编号) 表示客户先按 1 再按 2后电话才接到座席
callSheetId 通话记录编号,唯一标识当前通话的一个id,可以通过此id找到对应的通话记录
callerProvince 省(主叫号码对应省的中文名称)
callerCity 市(中文名称)
offeringTime 来电时间
queue 队列号
queueName 队列名称
4.通话记录对接: (需要贵公司做的)

你们提供一个http url地址,我们会通过get请求方式,将通话记录实时的传递给你们。

详细信息见文档“对外事件推送”

对外事件推送

1.通话状态推送

平台对外提供五类通话事件接口:

1.呼叫振铃Ring(话务进入呼叫中心触发的事件)

2.被呼振铃Ringing

3.接通Link

4.通话结束Hangup (Unlink也当成Hangup处理,用来记录通话记录只接收此事件类型即可)

5.满意度调查结果 survey (传送的字段,与其他接口不同,下面单独说明)

2.通话接口可以提供如下数据:

注:参数名固定,必须用我们定义的,传递方式必须是get

具体参数含义见:
参数名 描述
CallNo 主叫号码
CalledNo 被叫号码
CallSheetID 通话记录ID,CallSheetID 是这条通话记录再DB中的唯一id
CallType 通话类型:dialout外呼通话,normal普通来电,transfer转接电话,dialTransfer外呼转接
Ring 通话振铃时间(话务进入呼叫中心系统的时间)
Begin 通话接通时间(呼入是按座席接起的时间,外呼按客户接起的时间,如果没接听的话为空)
End 通话结束时间
QueueTime 来电进入技能组时间
Agent 处理坐席的工号
Exten 处理坐席的工号,历史原因该字段与Agent相同
AgentName 处理坐席的姓名
Queue 通话进入的技能组名称
State 接听状态:dealing(已接),notDeal(振铃未接听),leak(ivr放弃),queueLeak(排队放弃),blackList(黑名单),voicemail(留言)
CallState 事件状态:Ring, Ringing, Link, Hangup(Unlink也当成Hangup处理)
ActionID 通过外呼接口调用时,该字段会保存请求的ActionID,其它情况下该字段为空
WebcallActionID 通过调用webcall接口,该字段会保存请求的ActionID,其它情况下该字段为空
RecordFile 通话录音文件名:用户要访问录音时,在该文件名前面加上服务路径即可,如:FileServer/RecordFile
FileServer 通过FileServer中指定的地址加上RecordFile的值可以获取录音
Province 目标号码的省,例如北京市。呼入为来电号码,呼出为去电号码
District 目标号码的市,例如北京市。呼入为来电号码,呼出为去电号码
CallID 通话ID,通话连接的在系统中的唯一标识。CallID 是在通话进行中channel的id,可以用这个id来挂断通话之类的操作。一个call有一个CallID,但一个call可能会出现在多个通话中,比如转接。
IVRKEY 通话在系统中选择的按键菜单,10004@0。格式为:按键菜单的节点编号@选择的菜单按键。如果为多级菜单则为:10004@0-10005@1。
AccountId 账户编号字段,默认不推送有需求的客户对接时联系七陌技术支持人员进行开通
AccountName 账户名称字段,默认不推送有需求的客户对接时联系七陌技术支持人员进行开通

附:可以通过增加的弹屏变量的方式,在推送的参数中增加客户自定义参数用于传递唯一标示。

3.事件推送对接示例

用户可以提供针对某个事件的接收url接口。当有事件产生时,平台会访问这个url,在url路径中传递参数。

如接收Hangup事件的url:

  1. //此url仅为举例,实际url为平台使用者提供给七陌,并配置到云客服的接口
  2. www.xxxx.com/callback  

系统在收到hangup事件时便会访问,并传递参数,如下例:

  1. http://www.xxxx.com/callback?CallNo=13589771577&CallSheetID=2966c9e8-8066-4b91-93a9-c43c9f2f6036&CalledNo=01050854063&CallID=cc-ali-9-1434111238.12986&CallType=normal&RecordFile=monitor/cc.ali.1.9/20150612/20150612-201434_N00000000605_10001092_13589771577_01050854063_10001092_cc-ali-9-1434111238.12986.mp3&Ring=2015-06-12 20:13:58&Begin=2015-06-12 20:14:50&End=2015-06-12 20:15:42&QueueTime=2015-06-12 20:14:34&Queue=其他&Agent=8007&Exten=8007&AgentName=郭小芳&ActionID=&CallState=Unlink&State=dealing&FileServer=http://121.40.138.123&RingTime=1434111274.035155&IVRKEY=10004@0&Province=山东省&District=烟台市    
4.事件推送失败重发功能

我们的事件推送支持失败重发,

需要单独提出对您的账号开启事件失败重发功能,否则此功能默认不开启。

开启失败重发功能后,第三方接收消息的接口接收成功后需要返回给我们字符串200

 。

如果我们推送后接口返回的值中不是字符串200,我们则认为第三方接口接收失败。进入重发流程,一条失败的消息,会在 10秒、30秒、60秒、600秒 后重发,直到第三方接口返回200。如果这4次重发都失败,我们将不会再重发。重发彻底失败的消息,我们会记录下来,第三方可以找我们索取。

5.坐席状态推送

坐席状态接口提供坐席的上线/离线,置闲/置忙状态事件

1.坐席上线/离线

2.坐席置忙/置闲

接口提供的字段:

参数名 描述
Type 事件类型:login登录/登出,busy置忙/置闲
Exten 坐席工号,如8001
ExtenType 坐席登录方式,none|Local|sip|gateway:无电话方式|直线方式|软电话方式|网关方式
State 状态:1(登录/置忙),0(登出/置闲)
Agent 坐席
Time 发生时间
BusyType 置忙类型:1忙碌,2小休,3-9 xx(客户自定义),99 系统置忙(每个外呼或呼入通话接通时,系统都会将坐席置忙,等通话结束+后处理时长过后,系统会将坐席置成坐席的前一个状态)
6.满意度结果推送

来电成功进行满意度评价之后,7moor系统将调用接口,将评价的按键送给接口。

字段只有2个:

参数名 描述
CallSheetID 通话记录的唯一id,用来表示,这个满意度的结果是属于哪一通通话的。
SurveyContent 满意度按键的值

外呼接口

1.接口介绍

第三方系统通过发送HTTP Get请求来调用平台外呼功能,通过此接口可以在客户自己系统中实现点击呼叫的功能。

提示:外呼接口功能是默认关闭的,如需开启,请发送邮件到service@7moor.com,写清要求开启账号的外呼接口功能

接口请求IP地址:具体值在开完账户之后,用户请到“对接数据查询”根据开通的账号查询。如:http://119.254.**.**/app

2.GET请求格式样例:
  1. http://119.254.**.**/app?Action=Dialout&ActionID=1234567890&Account=N0000000012&Exten=01067011234&FromExten=8001&PBX=xx.xx.xx.xx    
3.参数说明

所有字段均区分大小写;字符串编码UTF-8

参数名 说明
Action Dialout 命令名称,外呼接口中固定名称为Dialout
ActionID 唯一字符串 随机码,用户用来标识请求的操作,服务器返回的Response中会带有对应Action的ActionID;在通话事件中会带有该字段;该字段最大长度是40个字节
Account 账户编号 用户请到“对接数据查询”根据开通的账号查询,如N0000000012
Exten 被叫号码 对于手机号,系统会自动判断是否本地号码,从而自动在号码前加0,使用者不需要处理,只需传手机号即可,如138xxxxxxxx。对于固话,如果是外地号码使用者需要将区号带上,如010xxxxxxxx
FromExten 坐席工号 例:假设8001@gs是坐席登陆账号,8001才是坐席工号
PBX xx.xx.xx.xx 用户请到“对接数据查询”根据开通的账号查询
ExtenType Local/sip/gateway 外呼时强制座席使用该接听方式。可选参数。正常情况下调用外呼接口不需传此字段,座席默认使用登陆呼叫中心的接听方式外呼。如有特殊需要,例如:座席不登陆系统发起外呼,需要传此字段。Local为“手机”sip为“软电话”gateway为“语音网关”
4.系统返回

返回Json对象,样例:

  1. {“Response”:“Dialout”,“ActionID”:“34534jh9i23″,“Succeed”:false, “Message”:“401 PBX not found”}    
返回值字段说明:
参数名 说明
Response Dialout 对应Action的名称
ActionID 唯一字符串 对应操作的唯一标记
Succeed 处理结果 请求是否成功,当不成功时会在Message字段中给出原因
Message 结果说明 400 Error action:请求有误,请检查传递的参数是否合法
401 PBX not found:账户配置问题
403 Not allowed:用户账户或验证码无效或过期,请技术支持修改账户属性,允许这个账户使用外呼接口
404 Agent not found:坐席未找到,请检查FromExten字段中的坐席分机号是否传递正确
407 Agent can not take call 坐席无法接听电话(坐席没有登录)
408 Agent busy:坐席忙碌,无法接听(坐席已经有一通电话在进行中)
409 Agent extenType not available:调用者指定的接听方式,不可用。可能原因:软电话未登陆,网关未绑定或未注册,未绑定手机号
500 Server error:服务器

Webcall接口

1.接口简介

呼叫中心系统,提供一个http接口,来发起外呼将被叫呼通后送入指定的流程中。在这个流程中,客户可以实现语音播报、接入坐席等一系列功能。

接口请求IP地址:具体值在开完账户之后,用户请到“对接数据查询”根据开通的账号查询。如:

  1. http://119.254.**.**/command  
2.接口参数如下:(红色为必传参数)
参数名 描述
Action Webcall(固定不变)
PBX PBX,用户请到“对接数据查询”根据开通的账号查询
Account 用户编号,请到“对接数据查询”根据开通的账号查询
ServiceNo 服务号,想要被叫进入的服务号码
Exten 被叫电话号码。
WebCallType 调用WebCall的接口类型(同步异步)当传此值时采用异步的接口,例:WebCallType=asynchronous(不填为同步接口)
CallBackUrl 调用异步时需要传参,回调的地址,例:CallBackUrl=http://www.baidu.com/(仅支持http接口)
CallBackType 回调的方式get或者post,例:CallBackType=post(不填默认为get)
Variable var1:value1,var2:value2……(可以传多个变量,如无需特殊定制可以不传)Variable中可以携带一个CdrVar变量,这个变量会在通话事件对接中推送给第三方系统。例如: Variable=CdrVar:myID:123456
ActionID 本次调用接口的唯一标示,response中会返回此字段。在对外事件推送中会推送次字段,但是参数名为:WebcallActionID
Timeout 接口呼叫被叫的时长单位为秒。值的范围为20至60,此时长包含接口调用后被叫开始振铃的这段时间。如果被叫有响应,则接口立即返回。如被叫一直不接,直到超时时间接口才返回。(本字段可不传,默认超时时长为20秒)
MaxCallTime (此字段只针对双向回呼场景)把webcall用来实现双向回呼时,设置最大通话时长。从双方接通开始计时,到时间自动掐断。单位为秒。(本字段可不传,需要控制通话时长时才传。例如:MaxCallTime:60)
ChatingIvrPrompt (此字段只针对双向回呼场景)对双向回呼通话过程中,给双方播放提示IVR。一般配合MaxCallTime字段来用,提示通话双方还剩余多久的通话时长。 字段值实例:秒-服务号-变量;秒-服务号-变量,;秒-服务号-变量…..

注意事项:

a.定时提醒可以配置多次提醒,每次之间用英文分号分隔。

.每次提醒变量可以传多个,多个变量用英文逗号分隔,变量举例var1:value1,var2:value2……。IVR流程中无需播报变量则变量可不传。

c.在七陌系统中,一个IVR流程的起点为服务号,播放IVR流程之前请提前在通话配置中添加好服务号流程,最好请七陌工作人员协助配置

真实场景举例:要求双方通话为60秒,并且在通话开始后30秒和50秒时播放提醒语音。

MaxCallTime=60&ChatingIvrPrompt=30-01056332288-notice:30;50-01056332288

3.调用实例:
  1. http://127.0.0.1/command?Action=Webcall&PBX=bpx.ali.0&Account=Q00000000****&ServiceNo=01053500303&Exten=1581101****&Timeout=40&Variable=var1:value1,var2:value2  
同步接口返回值详解:

若接口是同步接口,response是在被叫号码做出响应后才会返回。超时时间默认为20秒(可以通过参数Timeout设置)。

接口返回的response是一个json格式字符串,包含如下字段:

参数名 说明
Command Response 值固定不变
Response WebCall 值固定不变
ActionID 随机数 与调用接口时传的ActionID相同。如果调用接口时没传ActionID,则值是Webcall+随机数。
Succeed true/false 本次接口调用是否成功。
Message 数字 a)Message:4 被叫已接听 b)Message:0或8 线路繁忙/异常(某些情况下,也可能为被叫拒接/振铃未接/占线/关机/空号) c)Message:3 被叫拒接/振铃未接/占线/关机/空号 d)Message:5 一般情况下为余额不足,请先检查账户资费。
 
4.Response例子:
  1. {“Command”:“Response”,“Succeed”:true,“Message”:“4”,“ActionID”:“Webcall1382293010856915711”,“Response”:“Webcall”}  
  1. http://127.0.0.1/command?Action=Webcall&PBX=bpx.ali.0&Account=Q00000000****&ServiceNo=01053500303&Exten=1581101****&WebCallType= asynchronous&CallBackUrl=http://www.baidu.com/&CallBackType=post&Timeout=40&Variable=var1:value1,var2:value2
异步接口返回值详解:

若接口是异步接口,response立即返回后,在被叫号码做出响应后会对相应接口推送(详见异步情况调用)。

接口返回的response是一个json格式字符串,包含如下字段:

参数名 说明
Command Response 值固定不变
Response WebCall 值固定不变
ActionID 随机数 与调用接口时传的ActionID相同。如果调用接口时没传ActionID,则值是Webcall+随机数。
Succeed true/false 本次接口调用是否成功。
Response例子:
  1. {“Command”:“Response”,“Succeed”:true,“ActionID”:“Webcall1382293010856915711”,“Response”:“Webcall”}  

异步情况调用:

接口url:http://www.baidu.com/callback

接口示例:http://www.baidu.com/callback?actionid=Webcall1382293010856915711&Message=4

参数名 说明
Message 数字

a)Message:4 被叫已接听

b)Message:0或8 线路繁忙/异常(某些情况下,也可能为被叫拒接/振铃未接/占线/关机/空号)

c)Message:3 被叫拒接/振铃未接/占线/关机/空号

d)Message:5 一般情况下为余额不足,请先检查账户资费。

挂机接口

1.接口简介

第三方系统通过发送HTTP Get请求来调用挂机功能,通过此接口可以在客户自己系统中实现结束一个通话的功能。

接口请求IP地址:具体值在开完账户之后,用户请到“对接数据查询”根据开通的账号查询。如:http://119.254.**.**/app

2.GET请求格式样例:
  1. http://119.254.**.**/app?Action=Hangup&ActionID=1234567890&Account=N0000000012&CallID=dh-pbx03-7-1437983226.1347058&PBX=ds.pbx.1.0  

参数说明:(所有字段均区分大小写;字符串编码UTF-8)

参数名 说明
Action Hangup 命令名称,挂机接口中固定名称为Hangup
ActionID 唯一字符串 随机码,用户用来标识请求的操作,服务器返回的Response中会带有对应Action的ActionID;在通话事件中会带有该字段;该字段最大长度是40个字节
Account 账户编号 用户请到“对接数据查询”根据开通的账号查询,如N0000000012
CallID 通话ID 这个CallID一般都是由通话事件推送获取到的。可以关注link事件,这个事件会在电话接通时抛出来
PBX xx.xx.xx.xx 用户请到“对接数据查询”根据开通的账号查询
3.系统返回

返回Json对象,样例:

  1. {“Response”:“Hangup”,“ActionID”:“34534jh9i23”,“Succeed”:false“Message”:” Null channel!”}  
返回值字段说明:
参数名 说明
Response Hangup 对应Action的名称
ActionID 唯一字符串 对应操作的唯一标记
Succeed 处理结果 请求是否成功,当不成功时会在Message字段中给出原因
Message 结果说明 Null channel! or Null CallID:这个CallID有误或者对应的通话已不存在Null channel!:要挂断的通话已不存在Invalid PBX!:PBX 字段有误

短信接口

提供一个http接口方式,发送短信。

1.接口协议

提交时使用HTTP Get/Post方法

接口调用地址固定:

  1. http://115.29.14.183:3000/openService  

注意事项说明:本接口需要报备调用者IP。调试期间可以传一个md5参数,则不对IP进行验证。发送短信要提前备案模板,备案短信模板请发邮件到service@7moor.com

2.获取短信模板
请求参数
参数名称 是否必须 (1是0否) 参数说明 取值说明
action 1 接口名称 固定为getSmsTemplate不变
account 1 账号 呼叫中心账号ID,用户请到“对接数据查询”根据开通的账号查询。
password 1 密码 呼叫中心接口短信密码
调用实例:

GET方式

  1. http://115.29.14.183:3000/openService?action=getSmsTemplate&account=N00000000***&password=123abc    
返回值示例(JSON格式)
  1. {  
  2.   “success”: true,  
  3.   “data”: [  
  4.     {  
  5.       “_id”: “N00000000143_1″,  
  6.       “num”: “1″,  
  7.       “name”: “验证码模板”,  
  8.       “content”: “您好您的验证码是{1},有效时间为{2}分钟”,  
  9.       “vars”: 2,  
  10.       “sign”: “【七陌科技】”  
  11.     },  
  12.     {  
  13.       “_id”: “N00000000143_2″,  
  14.       “num”: “2″,  
  15.       “name”: “会议邀请”,  
  16.       “content”: “{1}先生/女士,七陌科技欢迎您来参会,会议时间为{2},地址为{3}”,  
  17.       “vars”: 3,  
  18.       “sign”: “【七陌科技】”  
  19.     }  
  20.   ],  
  21.   “message”: “200 ok!”  
  22. }  
返回值参数说明
参数名称 参数说明 值说明
success 成功标示 true/false
message 描述信息 200 ok
data 数组结构 模板的数组集合
_id 模板ID 账户ID_模板编号
num 模板编号,发送时要传 正整数
name 模板名称 验证码模板
content 模板内容 内容中含有变量用{数字},按顺序增长
vars 变量个数 正整数
sign 签名 如:【七陌科技】
3.发送短信
请求参数
参数名称 是否必须 (1是0否) 参数说明 取值说明
action 1 接口名称 固定为sendInterfaceTemplateSms不变
account 1 账号 呼叫中心账号ID,用户请到“对接数据查询”根据开通的账号查询。
password 1 密码 呼叫中心接口短信密码
num 1 接收手机号码 多个手机号码以英文逗号分隔,一次调用最大为3000个号码
templateNum 1 短信模板编号 必须传提前报备过的,从模板查询接口获得
var1至varn 1 需要替换的变量 例如:要替换{1}传var1,中文要urlencode
md5 0 调试验证码 如果ip已经报备,则无需传此参数。传此参数,接口不对请求进行ip验证,一般用来测试,由7moor提供
调用实例:

包含签名长度最大280个字,每66字记一条

GET方式

  1. http://115.29.14.183:3000/openService?action=sendInterfaceTemplateSms&account=N00000000***&password=123abc&num=1860003****&templateNum=1&var1=陈先生&var2=30    
返回值参数说明(JSON格式)

参数值:应答内容为json格式的字符串。

例如:

  1. { “success”: true, “flag”: “00″, “msgid”: “57a6b1f0-e1b5-11e4-9e27-eb091740ddea”, “message”: “短信提交成功” }    

成功:success为true ,flag为00 ,msgid为短信id

若失败,success字段为false ,flag为错误编码 , message为备注

  1. { “success”: false, “flag”: “11″, “message”: “此签名未备案!” }    
响应状态表
success flag 说明
true 00 提交通道成功
false 01 模板编号为空
false 02 内容为空或内容过长
false 03 手机号码为空
false 04 账号为空
false 05 密码为空
false 06 单次群发手机号码不能超过3000个,请检查号码数量
false 07 含有不正确的手机号码,请检查
false 08 短信接口密码错误
false 09 您的账号未开通发短信HTTP接口
false 10 资费不足,无法该条发送短信
false 11 此签名未备案
false 12 未找到对应的短信模板
false 13 此模板异常,无法发送短信
false 99 服务端内部错误

签入签出接口说明

1.签入接口

第三方系统通过发送HTTP Get请求来调用签入功能,通过此接口可以在客户自己系统中实现将坐席设置为离线接听状态的功能。

  • 请求URL地址:对应节点的地址,具体值在开完账户之后由接口提供方发放给客户。
  • GET请求格式:
http://120.55.72.***/app?Action=SignIn&ActionID=SignIn0.41748595997299165&Account=N00000000143&Exten=7001&PBX=1.1.1.101&ExtenType=gateway
  • 参数说明:所有字段均区分大小写;字符串编码UTF-8
参数 说明
Action SignIn 命令名称,签入接口中固定名称为SignIn
ActionID 唯一字符串 随机码,用户用来标识请求的操作,服务器返回的Response中会带有对应ActionActionID;在通话事件中会带有该字段;该字段最大长度是40个字节
Account 账户编号 由接口提供方发放给使用者,如N0000000143
Exten 座席号 当前账户下的坐席号一般为800080018002
PBX xx.xx.xx.xx 账户所在的PBX,由接口提供方发放给使用者
ExtenType gateway ExtenType 非必传。不传签入手机,传的话值只能为gateway

系统返回

  • 返回Json对象
{“Command”:”Response”,”Succeed”:true,”ActionID”:”SignIn0.41748595997299165″,”Response”:”SignIn”}  
  • 字段说明
参数 说明
Response SignIn 对应Action的名称
ActionID 唯一字符串 对应操作的唯一标记
Succeed 处理结果 请求是否成功,当不成功时会在Message字段中给出原因
Message 结果说明 User has not bind gateway sip number or gateway sip number not register!:这个坐席未注册sip号或者未绑定sip号
2.签出接口

第三方系统通过发送HTTP Get请求来调用签出功能,通过此接口可以在客户自己系统中实现将坐席从离线接听的状态设置为签出的功能。

  • 请求URL地址:对应节点的地址,具体值在开完账户之后由接口提供方发放给客户。
  • GET请求格式:
http://120.55.72.***/app?Action=SignOut&ActionID=SignOut0.41748595997299165&Account=N0000000014&Exten=7001&PBX=1.1.1.101
  • 参数说明:所有字段均区分大小写;字符串编码UTF-8
参数 说明
Action SignOut 命令名称,签出接口中固定名称为SignOut
ActionID 唯一字符串 随机码,用户用来标识请求的操作,服务器返回的Response中会带有对应ActionActionID;在通话事件中会带有该字段;该字段最大长度是40个字节
Account 账户编号 由接口提供方发放给使用者,如N0000000143
Exten 座席号 当前账户下的坐席号一般为800080018002
PBX xx.xx.xx.xx 账户所在的PBX,由接口提供方发放给使用者

系统返回

  • 返回Json对象

{“Command”:”Response”,”Succeed”:true,”ActionID”:”SignOut0.41748595997299165″,”Response”:”SignOut”}

  • 字段说明
参数 说明
Response SignOut 对应Action的名称
ActionID 唯一字符串 对应操作的唯一标记
Succeed 处理结果 请求是否成功,当不成功时会在Message字段中给出原因
Message 结果说明 User has not bind gateway sip number or gateway sip number not register!:这个坐席未注册sip号或者未绑定sip号
Reason 301 坐席不为离线接听状态,不能签出

IVR流程对接说明

1.场景描述用户拨打 400 号码/中继服务号或者由 webcall 接口邀请进入七陌 IVR 流程中。

场景一:

根据来电号码调用第三方接口获取相对应号码并呼叫该号码,双方开始通话。

 场景二:

根据来电号码调用第三方接口判断客户等级,根据不同等级分配给对应坐席。

场景三:

来电用户输入分机号,根据分机号调用第三方接口获取相对应号码并呼叫该号码,双方开始通话。

 场景四:

来电用户输入订单号,根据订单号调用第三方接口返回给客户对应的订单信息。

场景五:

来电用户输入用户名密码,根据输入信息调用第三方接口返回给客户登陆成功/失败的信息

2.对接操作以上场景,由于对应的数据都存在于客户自己的服务器中,七陌系统需要通过接口进行数据交互,所以需要客户开发一个跟七陌系统进行数据交互的接口。

例如:

客户提供的接口为 http://www.7moor.com/7moortest,在调用接口的同时七陌会将来电用户的来电号码作为一个参数传给接口,客户以 get 方式获取:

http://www.7moor.com/7moortest?callNo=151********

流程图:

3.注意事项

只能以 get 方式传参,返回值只能为字符串,不能带有任何格式。

如:返回值为一个手机号 123456,则接口只需要返回这个手机号:123456 即可。

黑红名单对接

第三方系统通过发送HTTP Get 或者Post请求来调用,通过此接口用户可以在自己的系统中实现添加黑红名单的功能。本接口会对访问的IP进行验证,请提前报备请求发起的服务器IP。因为安全原因本接口只允许从第三方的服务端发起,请勿从浏览器直接调用本接口。

•   请求的URL地址:http://112.124.23.131:3000/service

•   GET请求格式例子:http://112.124.23.131:3000/service?action=saveBlackList&json={“Account”:”N00000000421″,”PBX”:”1.1.1.101″,”BlackNum”:”13030303300″,”Type”:”1″}

•   参数说明:所有字段区分大小写;字符串编码UTF-8

参数

说明

action

saveBlackList

命令名称,接口中固定名称为saveBlackList

json

一个Json格式的字符串

这个Json中包含了插入号码及名单类型的信息

•   Json中字段说明

参数

说明

Account

用户编号

由接口提供方发给使用者,如N000000012

PBX

PBX地址

当前用户的PBX地址

BlackNum

号码

需要向黑红名单那增加的电话号码需增加的字段,传新值

Type

呼入黑名单1外呼黑名单2 红名单0

需要增加名单类型需增加的字段,传新值

系统返回

•   返回Json对象

•   { “success”: true, “message”: “200 ok!” }

•   返回值字段说明

参数

说明

success

成功标识 值为true标识增加成功,false增加失败,具体原因查看message字段

message

失败具体原因

增加失败的具体原因

弹屏对接

1.弹屏对接简介

 七陌系统提供来电弹屏对接。当座席来电响铃时,七陌系统以http get方式调用第三方B/S系统的url 。并将相关来电数据送给第三方系统。

 

新增对接全局配置中开启token验证功能

开启之后会在访问页面的地址后加上两个参数 token tokenid

页面拿到这两个参数之后 可以通过

我们提供的一个校验接口

页面对接token校验 rest接口

校验token值的合法性 然后再进行是否允许登陆的处理

校验接口返回值说明:

返回值样例:{code : 200 , message :”token check success!”}

code值详解:

200:合法请求 校验成功

500:服务器错误

501:未查询到对应token数据

502:很抱歉,token已经超时

503:token不匹配,非法请求

 
2.弹屏对接步骤:
第一步:添加弹屏页面

操作步骤:管理员坐席登陆云客服,点击左下角进入设置页面

高级功能 —> 弹屏对接  —> 来电对接  —>  添加

弹屏对接分为两种弹屏方式:

弹出方式:弹出一个独立页面,可以选择是重新打开新页面或者Tab页面。

嵌入方式:将弹屏页面嵌入通话模块的右侧空白处。

注意:弹出方式首次设置有可能被浏览器拦截,如无新页面弹出请检查浏览器右上角是否有红色“X”。

第二步:在技能组管理设置弹屏页面

        弹屏页面可以添加多个,具体弹出哪个页面由技能组管理设置的来电弹屏控制。

操作步骤:

高级功能 —> 通话配置  —> 技能组管理  —>  选择技能组 —>  来电弹屏 —>  保存—>  生效

注意:生效之后坐席需要重新登陆。

3.对接举例:

比如我们要将百度作为弹屏,当来电时七陌系统将访问如下url:

  1. http://www.baidu.com/?originCallNo=0105000&originCalledNo=01058010112&queue=10000203&offeringTime=2014-10-30 11:01&callerProvince=北京&callerCity=北京&callSheetId=3abb77ec-84b2-496d-8373-246af7c83cd5&Agent=7000&RingTime=1414638063.250258&queueName=技能组&ivrkey=100065@1-100064@1&loginName=7000    
4.通话数据参数说明:
参数名 描述
originCallNo 主叫号码
originCalledNo 被叫号码
queue 来单进入技能组编号
offeringTime 来电进入系统的时间
callerProvince 主叫号码省份
callerCity 主叫号码城市
callSheetId 通话记录的ID
Agent 接听座席工号
RingTime 座席响铃时间,是时间戳格式
queueName 来电进入技能组名称
ivrkey 来电,在系统流转ivr时,按过的按键,每个按键以-分割
loginName 接听座席工号
5.效果展示

嵌入型的弹出效果为:

弹出型即打开一个新的浏览器窗口,弹出第三方页面。

首页对接

1.首页对接简介

七陌系统提供首页对接。将第三方系统作为一个功能模块整个嵌入到呼叫中心系统之中,这样坐席就能在一个页面同时操作两个甚至多个系统,免去了来回切换系统的繁琐操作。

新增对接全局配置中开启token验证功能

开启之后会在访问页面的地址后加上两个参数 token tokenid

页面拿到这两个参数之后 可以通过

我们提供的一个校验接口

页面对接token校验 rest接口

校验token值的合法性 然后再进行是否允许登陆的处理

校验接口返回值说明:

返回值样例:{code : 200 , message :”token check success!”}

code值详解:

200:合法请求 校验成功

500:服务器错误

501:未查询到对应token数据

502:很抱歉,token已经超时

503:token不匹配,非法请求

2.首页对接步骤:
第一步:添加首页对接页面

操作步骤:管理员坐席登陆云客服,点击左下角进入设置页面

高级功能 —> 弹屏对接  —> 首页对接  —>  添加

首页对接页面可添加多个,会在首页对接模块左侧以列表的形式显示。

第二步:发送邮件开通首页对接模块权限

        首页对接功能模块的权限是默认关闭状态,客户需发送邮件到七陌官方服务邮箱service@7moor.com申请开通权限,邮件中要写明:开通首页对接权限,开通的账号信息和公司名称以及需要开通功能的角色。

3.对接举例:

比如我们要将百度作为弹屏,当来电时七陌系统将访问如下url:

  1. http://www.baidu.com?loginName=坐席&loginExten=8000    
4.通话数据参数说明:
参数名 描述
loginName 坐席名称
loginExten 坐席工号
5.效果展示

TAB页对接说明

客户 TAB 页对接:

七陌系统提供客户 TAB 页对接。七陌系统以 http get 方式调用第三方 B/S 系统的 url 。 如果是来电弹屏会将相关来电数据送给第三方系统。

注意:客户 TAB 页可以配置多个,最多限制 5 个

1, 配置:在平台系统设置高级功能弹屏对接客户 TAB 页对接

配置 URL 格式(以百度为例):http://www.baidu.com

2, 配置完成后需要重新登录系统,完成配置

3, 系统会在来电、通话记录、在线客服、客户、工单中以 TAB 页的形式展现配置的 url

4,当来电时七陌会推送以下数据:
参数名 描述
originCallNo 主叫号码
originCalledNo 被叫号码
queue 来单进入技能组编号
offeringTime 来电进入系统的时间
callerProvince 主叫号码省份
callerCity 主叫号码城市
callSheetId 通话记录的ID
Agent 接听座席工号
RingTime 座席响铃时间,是时间戳格式
queueName 来电进入技能组名称
ivrkey 来电,在系统流转ivr时,按过的按键,每个按键以-分割
loginName 接听座席工号
name 客户名称
title 职位
phone 电话(如果配置多个电话会以”,”分割)
email 邮箱(如果配置多个邮箱会以”,”分割)
weixin 微信(如果配置多个微信会以”,”分割)
provincecity note 省市 备注
webdisplayName exten 公司网址处理坐席姓名 处理坐席工号
tabType tab页对接模块类型:normal(来电弹屏)、call(通话记录)、webchat(在线客服)、customer(客户模块)、business(工单)

调用实例:

http://www.baidu.com/?originCallNo=0107000&originCalledNo=01056332222&queue=1000034 5&offeringTime=2016-05-27 17:51&callerProvince= 北 京 市 &callerCity= 北 京 市 &callSheetId=8167f0e0-04c4-4ec8-80c5-5748bc8a22aa&Agent=8000&RingTime=1464342709.58 9960&queueName=技能组 2&ivrkey=&shortTime=17:51&name=未知客户&status=普通客户&title=&phone=0107000&email=&weixin=&province= 北京市&city= 北京市 &address=&note=&sex=&age=&birth=&displayName=周杰伦&exten=8000&tabType=normal

4, 当客户为我系统保存的客户,七陌会推送客户的基本信息

参数名 描述
name 客户名称
title 职位
phone 电话(如果配置多个电话会以”,”分割)
email 邮箱(如果配置多个邮箱会以”,”分割)
weixin 微信(如果配置多个微信会以”,”分割)
province
city
note 备注
web 公司网址
displayName 处理坐席姓名
exten 处理坐席工号
tabType tab页对接模块类型:normal(来电弹屏)、call(通话记录)、webchat(在线客服)、customer(客户模块)、business(工单)
调用实例:

http://www.baidu.com?name= 测 试 客 户 &title= 项 目 经 理 &phone=0107000,15010457345&email=scctarena@163.com&weixin=123456&province=北京市 &city=北京市&address=北京奥林佳泰大厦&note=无备注&web=&displayName=周杰伦 &exten=8000&tabType=customer

5,在线客服(非我系统已保存的客户)会推送

参数名 描述
qimoClientId 客户自定义ID(如不自定义我们会生成一个32 位的uuid)
displayName 处理坐席姓名
exten 处理坐席工号
tabType tab页对接模块类型:normal(来电弹屏)、call(通话记录)、webchat(在线客服)、customer(客户模块)、business(工单)
调用实例: 1, 客户没有自定义:

http://www.baidu.com?qimoClientId=19d42c10-078c-11e6-9e2f-152f10edbf70&displayNam e=周杰伦&exten=8000&tabType=webchat

2, 客户自定义:

http://www.baidu.com?qimoClientId=123abc&displayName=周杰伦&exten=8000&tabType=webchat

6,微信咨询(非我系统已保存的客户)会推送

参数名 描述
qimoClientId 微信openId
displayName 处理坐席姓名
exten 处理坐席工号
tabType tab页对接模块类型:normal(来电弹屏)、call(通话记录)、webchat(在线客服)、customer(客户模块)、business(工单)
调用实例:

http://www.baidu.com?qimoClientId=oMpomtzVAlzbKs85_lb2MNwED0VM&displayName= 周杰伦&exten=8000&tabType=webchat

新增对接全局配置中开启token验证功能

开启之后会在访问页面的地址后加上两个参数 token tokenid

页面拿到这两个参数之后 可以通过

我们提供的一个校验接口

页面对接token校验 rest接口

校验token值的合法性 然后再进行是否允许登陆的处理

校验接口返回值说明:

返回值样例:{code : 200 , message :”token check success!”}

code值详解:

200:合法请求 校验成功

500:服务器错误

501:未查询到对应token数据

502:很抱歉,token已经超时

503:token不匹配,非法请求

12590语音验证码

1.开发流程介绍

1.1 语音验证码接口请求方式

支持 GET 和 POST

•      Base URL

BaseURL:http://115.29.14.183:3000/OpenService

注意:

1.本接口会对访问 IP 进行验证,请提前报备请求发起的服务器 IP

2.报备 IP 请发邮件到 service@7moor.com

•      业务流程说明

 请求示例

http://115.29.14.183:3000/OpenService?action=voiceVerifyStandard&account=N0000000****&exten=151********&verifyCode=1234

 获取账账户编号

登录对接指南(http://www.7moor.com/interface)→查询账号信息→输入账户名

账户编号:接口需要传的 account 字段

2、语音验证码
2.1 请求参数
属性 类型 约束 说明
action String 必选 动作名称 voiceVerifyStandard
account String 必选 账户编号 N00000000***
exten String 必选 接收号码,被叫为座机时需要添加区号;被叫为分机时分机号由’-‘ 隔开,
如:01052823298-3627
186****1234 01052823298
verifyCode String 必选 验证码内容,为数字,不区分大小写,长度 4-8 位 256728
 callbackUrl  String  可选  语音验证码状态通知回调地址(必须符合 URL 规范),7moor 平台将向该 Url 地址 发送呼叫结果通知。
 actionID  String  可选  用户用来标识请求的操作,如不传则为随 机码。
注:语音验证码固定播放两次
2.2 请求示例
http://115.29.14.183:3000/OpenService? action=voiceVerifyStandard&account=N0000000****&exten=151********&verifyCode=1234
2.3 响应包体
属性 类型 约束 说明
statusCode String 必选 请求状态码,取值 000000(成功), 可参考错误代码。 000000(成功)
callSid String 必选 一个由 32 个字符组成的唯一电话标 识符
dateCreated String 必选 电话的创建时间
2.4JSON 响应示例
  1. {  
  2.  “statusCode” : “000000”, 
  3.     “VoiceVerify” : { 
  4.         “statusCode”: “000000”,
  5.     “dateCreated” : “2016-01-07 15:09:50”, 
  6.      “callsid”:”1601071509506408000101160001bf2f”
  7.    }
  8.     }
3、语音验证码回调通知
3.1 请求地址
POST/respUrl (调用语音验证码接口时的 respUrl 参数)
3.2 请求包体
目前回调只支持 JSON 格式;
属性 类型 约束 说明
account String 必选 账户编号 N00000000***
action String 必选 表示语音验证码 VoiceCode
callSid String 必选 对应接口返回 callSid 参数,一 路呼叫的唯一标示 160107150950640800 0101160001bf2f
exten String 必选 外呼号码
status String 必选 通话状态  0 正常通话1 被叫通话未应答
2 外呼失败
 actionID  String  必选  用户用来标识请求的操作,如不传则为随机码。  a4a2c080-b50d-11e5818b-03624a863382
 duration  String  必选  通话时长  单位秒
3.3 JSON 请求示例
  1. POST【客户充值时传的回调 URL】HTTP/1.1
  2.  {
  3.       “account”:”N00000000***”, 
  4.       “action”:”VoiceCode”,
  5.      “callSid”:”1601071509506408000101160001bf2f”, 
  6.        “exten”:”186****1234″, 
  7.     “status”:”0″, 
  8.     “actionID”:”a4a2c080-b50d-11e5-818b-03624a863382″, 
  9.        “duration”:”6″ 
  10.    }

流量充值接口

1、 开发流程介绍
1.1流量充值接口请求方式

支持GET和POST

Ø Base URL

Base URLhttp://115.29.14.183:3000/OpenService

注意:

  1. 本接口会对访问IP进行验证,请提前报备请求发起的服务器IP
  2. 报备IP请发邮件到service@7moor.com
Ø 业务流程说明
Ø 请求示例

http://115.29.14.183:3000/OpenService?action=flowPackage&account=N00000000***&phoneNum=186****1234

Ø 获取账账户编号

登录对接指南(http://www.7moor.com/interfaceà查询账号信息à输入账户名

账户编号:接口需要传的account字段

2、获取流量档位
2.1请求参数

属性

类型

约束

说明

action String 必选 动作名称 flowPackage
account String 必选 账户编号 N00000000***
phoneNum String 必选 查询的手机号 186****1234
2.2请求示例
http://115.29.14.183:3000/OpenService?action=flowPackage&account=N00000000***&phoneNum=186****1234
 
2.3响应包体

属性

类型

约束

说明

success String 必选 处理成功标示 true/false
message String 必选 附加提示 200 ok
data String 必选 详情内容
sn String 可选 流量包的编码 100006
packet String 可选 流量包的大小,对应于sn 1024
2.4JSON响应示例
  1. {  
  2.   “success”: true,
  3.       “success”: true,
  4.         “statusCode”: “000000”,
  5.      carrier”: “中国移动”,
  6.        “packageList”: {   
  7.     “flowPackage”: [  {
  8.              “sn”: “100001”,
  9.        “packet”: “10”    },   {
  10.        “sn”: “100002”,
  11.   “packet”: “30” } ] },
  12.       “statusMsg”: “获取成功”}
  13.       “message”: “200 ok!”
  14.  }
3流量充值(直充)

同一手机号每月允许充值5次,不含充值失败次数。

3.1请求示例

http://115.29.14.183:3000/OpenService?action=flowRecharge&account=N00000000***&phoneNum=186****1234&sn=100001&packet=10&reason=&customId=&callbackUrl=http://backurl

3.2请求参数

属性

类型

约束

说明

action String 必选 动作名称 flowRecharge
phoneNum String 必选 业务定制手机号 186****1234
account String 必选 账户编号 N00000000***
sn String 必选 流量包档位编码 100006
packet String 必选 流量包大小 1024
reason String 可选 第三方扩展参数 ? test
customId String 必选 第三方交易id  长度不超过32为非中文、非特殊字符、要求唯一 695136f5028d11e5a1610050568e55bd
callbackUrl String 必选 回调第三方的地址 http://192.168.1.1:8080/FlowNotify
3.3响应包体

属性

类型

约束

说明

举例

statusCode String 必选 请求状态码,取值000000(成功) 0000
statusMsg String 必选 对状态码的描述 获取成功
rechargeId String 必选 流量网关产生的唯一业务标识id 695136f5028d11e5a1610050568e55bd
status String 必选 流量充值的结果1,充值中3,成功4,失败 1
customId String 必选 第三方交易id 695136f5028d11e5a1610050568e5500
 3.4JSON响应示例
  1. {  
  2.   “success”: true,
  3.      “data”: {
  4.         “statusCode”: “000000”,
  5.      “customId”: “695136f5028d11e5a1610050568e5500”,
  6.        “statusMsg”: “请求发送成功”,
  7.      “rechargeId”: “87c28ec9da7f4cdca5add0c912a2c42d”,
  8.           “status”: “1”
  9.       },
  10.        “message”: “200 ok!”
  11.   “packet”: “30” } ] },
  12.       “statusMsg”: “获取成功”}
  13.       “message”: “200 ok!”
  14.  }
4流量充值状态查询
4.1请求示例
http://115.29.14.183:3000/OpenService?action=flowRechargeStatus&account=N00000000***&rechargeId=87c28ec9da7f4cdca5add0c912a2c42d
4.2请求参数

属性

类型

约束

说明

action String

必选

动作名称

flowRechargeStatus

account String

必选

账户编号

N00000000***

rechargeId String

二选一

流量网关产生唯一业务标识id

09c62d8f028b11e5a1610050568e55bd

customId String 第三方交易id

695136f5028d11e5a1610050568e55bd

注:有rechargeId的则优先选用rechargeId;没有rechargeId可以使用customId查询充值状态。

4.3响应包体

属性

类型

约束

说明

举例

statusCode String 必选 请求状态码,取值000000(成功) 0000
statusMsg String 必选 对状态码的描述 获取成功
status String 必选 充值结果1,充值中3,成功4,失败 1
4.4JSON响应示例
  1. {  
  2.   “success”: true,
  3.      “data”: {
  4.         “statusCode”: “000000”,
  5.     “statusMsg”: “充值成功”,
  6.         “status”: “3”
  7.        },
  8.            “message”: “200 ok!”
  9.       },
5流量充值回调通知
5.1请求地址

POST / callbackURL (流量充值时的callbackurl参数)

5.2请求包体

目前回调只支持JSON格式;

属性

类型

约束

说明

举例

account String

必选

账户编号

N00000000***

rechargeId String

必选

流量网关产生唯一业务标识id

订单号

phoneNum String

必选

流量充值号码
status String

必选

充值结果
msg String

必选

充值结果描述
customId String

必选

第三方交易id

695136f5028d11e5a1610050568e55bd

 
5.3JSON请求示例
  1. POST【客户充值时传的回调URL】HTTP/1.1{
  2.   “account”: “N00000000***”,
  3.    “rechargeId”: “87c28ec9da7f4cdca5add0c912a2c42d”,
  4.       “phoneNum”: “186****1234”,
  5.     “statusMsg”: “充值成功”,
  6.        “status”: “3”,
  7.       “msg”: “充值成功”,
  8.         “customId”: “87c28ec9da7f4cdca5add0c912a2c42d”
  9.      }
5.4 第三方服务器响应

若三方服务器不回响应包体,系统默认认为三方服务器接收成功;

返回包体格式:

{
“success”: true
}

在线客服对接

1.在线客服应用场景:

在线客服主要应用于:以网上贸易为主的B2C电子商务性质的网站和网店、以咨询为主的网站、有意识塑造电子商务品牌形象的企业站点、B2B门户网站。

2.在线客服优势:

1 降低运营成本

2进行无缝沟通

3保证监控管理

4更灵活的多网站管理

3.在线客服对接步骤:

七陌系统提供在线客服对接。当客户点击网站上对接好的在线客服功能按钮的时候,可以直接在网页上与客服进行交流。

第一步:添加在线客服技能组
第二步:配置在线客服接入号

分为网站在线客服接入号与移动在线客服接入号

在首次添加在线客服配置的时候会有一个提示,点击确定后会跳转到账户信息,左侧可以选择需要的机器人功能。

网站在线客服:配置界面

企业简称:企业的简称,会显示在logo下方;(必填)

网站名称:网站的名称;(必填)

企业LOGO:企业的图标,如不传则默认为容联七陌的logo

客服欢迎词:客户打开在线客服对话框首先看到的话;默认:您好,欢迎光临

在线客服提示框文案:在线客服功能在网站上显示的文字;默认:咨询客服

聊天框设置:聊天框的颜色风格,根据网站选择不同风格。

技能组:第一步添加的接收客户消息的客服技能组,可根据不同业务选择多个技能组,至少有一个技能组(必选)

启用智能机器人:选择是否开启智能机器人功能。

保存并进入下一步:

接下来按照配置提示完成代码植入即可完成对接。

注:我们还支持客服按钮自定义功能,即隐藏默认按钮,添加自定义样式按钮,参见上图:自定义客服按钮。

3.1 配置参数说明
  1. //以下代码以及参数仅供参考,实际参数以配置完接入号后配置说明页面中的参数为准。  
  2. <script type=’text/javascript’ src=’http://webchat.7moor.com/javascripts/7moorInit.js?accessId=5d8477d0-79a7-11e5-a21d-a319553981f9&autoShow=true’ async=’async’></script>    
参数名 描述
accessId 在线客服唯一编码,用于识别对接账号,无需改动
autoShow 控制默认按钮是否显示,默认为true(显示),需要自定义按钮样式则改为false
3.2 在线客服配置测试:

完成配置在线客服接入号之后可以使用提供的测试功能

测试在线客服对接效果:

配置说明中提供了检测网站植入代码的功能:

3.3 在线客服其他功能

3.3.1自定义按钮

完成上述的步骤后,如果您想自定义客服按钮,将上述步骤代码里的autoShow的值改为false。自定义完您的客服按钮后,将下面的代码做为客服按钮的点击事件。

例如:

  1. <button onclick=“qimoChatClick();”>在线咨询</button>  

3.3.2自定义客户id

以下代码为可选部分,如果您想自定义自己的用户id(默认由系统随机生成用户id),将这段代码放在全局,且在上面那段js脚本之前,并赋予qimoClientId变量一个值,该值为string类型或json类型.string类型则该值为用户id,用户id必须唯一。

  1. <script type=’text/javascript’>  
  2.         var qimoClientId = ‘123abc’;// 自定义用户的唯一id  
  3. </script>  
  4.   
  5. //或  
  6.   
  7. <script type=’text/javascript’>  
  8.         var qimoClientId = {userId: ‘123abc’, nickName:’test’};// 自定义用户的唯一id  
  9. </script>  

3.3.3链接引出

下方的链接可直接让您的用户联系到您,而不需要在网站嵌入任何代码。您也可以将此链接分享到各种社交平台,让用户随时随地都能联系到您。。

  1. //以下代码以及参数仅供参考,实际参数以配置完接入号后配置说明页面中的参数为准。  
  2. http://webchat.7moor.com/wapchat.html?accessId=5d8477d0-79a7-11e5-a21d-a319553981f9&fromUrl=设置您自己的来源  

3.3.4多级结束会话

配置结束会话类别,可配置多级分类

操作步骤:管理员账号进入设置功能 — 渠道接入配置 — 渠道字典 — 结束会话 — 添加结束会话类别。

注:结束会话种类至少要有一个,否则坐席将不能结束会话。

3.3 移动在线客服配置界面

企业简称:企业的简称,会显示在logo下方;(必填)

app名称:要对接app的名称;(必填)

客服欢迎词:客户打开在线客服对话框首先看到的话;

消息分发技能组:接收客户消息的客服技能组,第一步添加的多渠道技能组(必选)

启用智能机器人:选择是否开启智能机器人功能。

保存并进入下一步:

接下来按照配置提示完成SDK植入。

在线客服自定义UI说明

  • js引入
  • 整体流程,按照该代码进行ui功能开发
  • 发送消息接口
  • 转人工接口
  • 提交满意度评价
  • 提交留言
  • 提交常见问题
  • 断开连接前提示
  • js引入

  1. <script type=“text/javascript” src=“http://libs.baidu.com/jquery/1.7.2/jquery.min.js”></script>  
  2. <script type=“text/javascript” src=“http://webchat.7moor.com/javascripts/7moorSDKInit.js”></script>  
  • 整体流程,按照该代码进行ui功能开发

  1. var qimoAccessId = queryStr; //平台提供的接入号accessId  
  2.   
  3. //先加载sdk的js  
  4. loadQimoSDK(qimoAccessId, function(){  
  5.     // TODO 加载sdk完毕,可以弹出点击咨询的按钮了  
  6.   
  7.     var peers = QimoSDK.getPeers();  
  8.   
  9.     //图片发送初始化  
  10.     QimoSDK.initImageSendBtn({  
  11.         “btnId”“image-btn”,  //必填  
  12.         “btnImage”“http://webchat.7moor.com/images/image-icon.png”,  //可选,默认值:http://webchat.7moor.com/images/image-icon.png  
  13.         “btnWidth”“22px”//可选,按钮宽度  
  14.         “btnHeight”“20px”//可选,按钮高度  
  15.   
  16.         ‘uploadProgress’: function(evt){  
  17.   
  18.         },  
  19.   
  20.         ‘uploadComplete’: function(result){  
  21.             console.log(result);  
  22.             if(result.errcode == 0){  
  23.                 //TODO 上传成功  
  24.             }else{  
  25.                 //TODO 上传失败  
  26.             }  
  27.         },  
  28.   
  29.         ‘uploadFailed’: function(errObj){  
  30.             console.log(errObj.errmsg);  
  31.         },  
  32.   
  33.         ‘uploadCanceled’:function(evt){  
  34.   
  35.         }  
  36.     });  
  37.   
  38.     //表情初始化  
  39.     QimoSDK.initEmojiFaceSendBtn({  
  40.         “containerId”:“face-con”,  //必传,接收表情列表,回传<ul><li></li></ul>形式  
  41.         “textareaId”“chatbox_input”,   //必传  
  42.         “faceClickFun”:“” , //选填  
  43.     }, function(data){  
  44.         if(data.errcode == 0){  
  45.             //todo 点击按钮,弹出containerId所在层  
  46.   
  47.         }else{  
  48.             console.info(data.errmsg);  
  49.         }  
  50.     });  
  51.   
  52.     //点击咨询按钮后初始化多技能组,  
  53.     $(“.consultBtn”).live(“click”function(){  
  54.   
  55.         //默认样式处理 ,  获取所有技能组方法:QimoSDK.getPeers(), 在点击技能组后,回传技能组号: QimoSDK.setPeer(id);  
  56.         QimoSDK.initDefaultConsultShow(function(result){  
  57.             //如果有多个技能组,则先展示技能组  
  58.             if(result){  
  59.                 // TODO 将技能组列表展示出来  
  60.   
  61.             }else{  
  62.                 //只设置一个技能组的情况,直接  
  63.                 initChat();  
  64.             }  
  65.         });  
  66.         // todo 初始化聊天框信息  
  67.   
  68.     });  
  69.   
  70.     function initChat(){  
  71.         //建立连接,第二个参数目前固定可以传fromUrl【来源页面】,seoSource【搜索来源】, seoKeywords【搜索关键字】  
  72.         QimoSDK.init(qimoAccessId, {fromUrl: window.location.href}, function(initData){  
  73.             $(“.chatcontainer”).show(); //展示聊天框  
  74.             //todo 初始化后的业务处理  
  75.             if(initData.errcode == 0){  
  76.                 console.info(“连接成功”);  
  77.                 /** 
  78.                  * 消息的监听,这个必须写在回调里头 
  79.                  */  
  80.                 QimoSDK.onMessage(function(data){  
  81.                     console.log(data);  
  82.                     if(data.errcode == 0){  
  83.                         //todo 新消息过来的处理,数组  
  84.                         if(data.type == “newMsg”){  
  85.                             var msgArr = data.data;  
  86.                             for(var i =0; i<msgArr.length; i++){  
  87.                                 var msg = msgArr[i];  
  88.                                 if(msg.contentType == “text”){  
  89.                                     //todo 文本消息  {agentName:msg.agentName, content:msg.content}  
  90.                                     pageUtils.appendServiceChatMsg();  
  91.                                 }else if(msg.contentType == “image”){  
  92.                                     //todo 图片消息 缩图 QimoSDK.getThumbnailImg(url, width);  
  93.   
  94.                                 }else if(msg.contentType == “video”){  
  95.                                     //todo 视频消息  
  96.   
  97.                                 }else if(msg.contentType == “voice”){  
  98.                                     //todo 音频消息  
  99.                                 }  
  100.   
  101.                             }  
  102.   
  103.                         }  
  104.                         //todo 系统通知的处理  
  105.                         else if(data.type == “systemNotice”){  
  106.                             var notice = data.data;  
  107.   
  108.                             //座席在线,弹出会话框  
  109.                             if(notice.type == “online”){  
  110.                                 // todo 客服在线  
  111.   
  112.                             }  
  113.                             //座席不在线,转留言  
  114.                             else if(notice.type == “offline”){  
  115.                                 // todo 客服不在线  
  116.   
  117.                                 if(QimoSDK.globalSet.isLeaveMsg == “1”){  
  118.                                     // todo 客服不在线,请留言给我们  
  119.   
  120.                                 }else{  
  121.                                     //系统直接在聊天框中展示不在线的消息{agentName:QimoSDK.companyName, content:QimoSDK.globalSet.msg || “”}  
  122.   
  123.                                     QimoSDK.closeChat(function(){});  
  124.                                 }  
  125.   
  126.                             }  
  127.                             //座席响应会话  
  128.                             else if(notice.type == “claim”){  
  129.                                 // todo 客服 notice.kefu 受理了该会话  
  130.   
  131.                                 //  QimoSDK.sendTextMsg({content: “会话来源于<a target=’_blank’ href='”+ window.location.href+”‘>”+ window.location.href+”</a>”, showHtml:true, notShow: true});  
  132.   
  133.                             }  
  134.                             //会话被座席结束,前端要有个响应  
  135.                             else if(notice.type == “finish”){  
  136.                                 // todo 会话被系统终结  
  137.                                 QimoSDK.closeChat(function(){});  
  138.                             }  
  139.                             //客服转接,即将由另外一位客服服务  
  140.                             else if(notice.type == “redirect”){  
  141.                                 // todo 会话转由另外一个座席处理  
  142.   
  143.                             }  
  144.   
  145.                             //机器人服务  
  146.                             else if(notice.type == “robot” && notice.kefu){  
  147.                                 // todo 机器人服务, 出现转人工的按钮  
  148.   
  149.                             }  
  150.                             //展示 当前有多少人排队  
  151.                             else if(notice.type == “queueNum” && notice.queueNum && notice.queueNum > 0 ){  
  152.                                 //TODO 展示 当前有多少人排队  
  153.                             }  
  154.                         }else if(data.type == “investigate”){  
  155.                             //TODO 座席端主动推送满意度评价过来  评价项获取:QimoSDK.getCsrConfig(function(csrConfig){});  
  156.   
  157.                         }  
  158.                     }else{  
  159.                         console.info(data.errmsg);  
  160.                     }  
  161.                 });  
  162.   
  163.                 //发起会话请求  
  164.                 QimoSDK.startChat(function(chatData){  
  165.                     //断开前提醒  
  166.                     showWarmTip();  
  167.   
  168.                     // 获取初始化返回的数据{companyLogo:’xxxxxxxxxx’, companyName:’xxxxxxxxxxxxxx’}  
  169.                     var companyLogo = chatData.data.companyLogo;  
  170.                     var companyName = chatData.data.companyName;  
  171.                     //todo 开启会话,获取基本信息  
  172.   
  173.                     //历史消息  
  174.                     QimoSDK.getHistoryMsg(function(data){  
  175.                         if(data.errcode == 0){  
  176.                             var msgs = data.data;  
  177.                             if(!msgs){msgs = []}  
  178.                             for(var i=0; i<msgs.length; i++){  
  179.                                 var msg = msgs[i];  
  180.                                 if(msg.contentType == “image”){  
  181.                                     //todo 图片处理  
  182.                                     msg.content = ‘<a target=“_blank” href=“‘+msg.content+'”><img src=“‘+QimoSDK.getThumbnailImg(msg.content, 100)+'”></a>’;  
  183.                                 }  
  184.                                 if(msg.type == “out”){  
  185.                                     //座席消息  
  186.                                 }else if(msg.type == “in”){  
  187.                                     //用户消息  
  188.                                 }  
  189.                             }  
  190.                         }  
  191.                     });  
  192.   
  193.                 });  
  194.             }else if(initData.errcode == 1){  
  195.                 console.info(“连接认证失败”);  
  196.             }  
  197.   
  198.         });  
  199.     }  
  200. });  
  • 发送消息接口

  1. //发送文本消息 showHtml:是否支持html, notShow:用户端是否展示这条信息    
  2. QimoSDK.sendTextMsg({content: content,showHtml: false, notShow: false}, function(data){    
  3.     if(data.errcode == 0){    
  4.         //todo 成功    
  5.     }else if(data.errcode == 1){    
  6.         console.info(“消息不能为空”);    
  7.     }else if(data.errcode == 2){    
  8.         console.info(“会话已被关闭,不能回复”);    
  9.     }else if(data.errcode == 3){    
  10.         console.info(“消息发送失败”);    
  11.     }else if(data.errcode == –1){    
  12.         console.info(“请求失败”);    
  13.     }    
  14. });    
  • 转人工接口

  1. QimoSDK.convertToManual(function(convertData){  
  2.     if(convertData.errcode == 0){  
  3.         console.info(“转人工成功”);  
  4.     }else if(convertData.errcode == 1){  
  5.         console.info(“已转人工”);  
  6.     }else if(convertData.errcode == 2){  
  7.         console.info(“客服不在线”);  
  8.         if(QimoSDK.globalSet.isLeaveMsg == “1”){  
  9.             //todo 留言,跳到留言页面  
  10.         }else{  
  11.             //TODO 直接系统消息告知, 系统消息:QimoSDK.globalSet.msg  
  12.             QimoSDK.closeChat(function(){});  
  13.         }  
  14.     }else if(convertData.errcode == –1){  
  15.         console.info(“请求失败”);  
  16.     }  
  17. });  
  • 提交满意度评价

  1. //评价项获取:QimoSDK.getCsrConfig(function(csrConfig){});    
  2. var investigateData = {    
  3.     way:“”,   //值为 in或者out  out代表的是用户响应座席主动推过来的评价请求, in代表用户主动发起的评价    
  4.     key:“”,   //值为评价项的key值,    
  5.     value:“”,  //值为评价项的value值    
  6.     proposal:“”, //建议,用户主动发起才可能有    
  7.     label:[]  //标签项,用户主动发起才可能有    
  8. }    
  9.     
  10. QimoSDK.submitInvestigate(investigate, function(data){    
  11.     if(data.errcode == 0){    
  12.        //todo 提交问卷调查成功    
  13.     }else{    
  14.        // todo 失败    
  15.     }    
  16. });    
  • 提交留言

  1. QimoSDK.submitLeaveMsg({content: “”, phone:“”, email: “”}, function(data){    
  2.   if(data.errcode == 0){    
  3.     //todo 留言成功    
  4.   }else{    
  5.    //todo 留言失败    
  6.   }    
  7. });   
  • 提交常见问题

  1. //在QimoSDK.init方法的回调里头 初始化常见问题     
  2. QimoSDK.getQaConfig(function(err, qaCatalogList){ //todo 获取常见问题处理 })     
  3. //根据分类ID 获取问题列表     
  4. QimoSDK.sedQuestion({cid: cid, page: pageNum}, function(quesList){});</pre>    
  5. <pre>//提交问题    
  6. QimoSDK.submitQuestion({_id:’问题id’, question:’问题内容’}, function(data){});    
  • 断开连接前提示

  1. //断开前提醒, 在QimoSDK.startChat的回调里调用showWarmTip();  
  2. var showBreakTips = false;  
  3. var chatTimer =0;  
  4. window.showWarmTip = function () {  
  5.     var nowTime = chatUtils.getTimestamp();  
  6.     if (QimoSDK.globalSet.break_tips_len&gt;=0 &amp;&amp; QimoSDK.lastTimeForSendMsg &amp;&amp; nowTime – QimoSDK.lastTimeForSendMsg &gt; ((QimoSDK.globalSet.break_len-QimoSDK.globalSet.break_tips_len) * 60000) &amp;&amp; QimoSDK.kefu &amp;&amp; QimoSDK.kefu != QimoSDK.companyName) {  
  7.         if(!showBreakTips){  
  8.             pageUtils.appendGreySystemMsg(pageUtils.getCurrentDateTime());  
  9.             pageUtils.appendServiceChatMsg({agentName:QimoSDK.kefu, content: QimoSDK.globalSet.break_tips || “【系统消息】由于很久没有收到您的消息,系统已自动关闭会话。如有需要,请再联系我们。”});  
  10.             showBreakTips = true;  
  11.         }  
  12.         if(QimoSDK.globalSet.break_len &amp;&amp; nowTime – QimoSDK.lastTimeForSendMsg &gt;= (QimoSDK.globalSet.break_len*60000)){  
  13.             QimoSDK.closeChat(function(){});  
  14.             $(“.footer”).prepend(“&lt;div class=’chat-finish’&gt;会话结束了&lt;/div&gt;”);  
  15.             QimoSDK.chatFinish = true;  
  16.             clearTimeout(chatTimer);  
  17.         }  
  18.     }else{  
  19.         showBreakTips = false;  
  20.     }  
  21.   
  22. chatTimer = setTimeout(‘showWarmTip()’, 5000);  
  23. };  

微信客服配置说明

七陌系统提供微信客服服务。客户可以通过微信公众号与第三方企业进行咨询沟通处理事务。

公众号必须为微信公众号平台认证过的公众号,才能保证消息正常收发。

授权步骤:

第一步:添加在线客服技能组

第二步:授权微信公众号

微信配置中,点击授权,然后由第三方企业公众号管理员扫描二维码,并进行授权操作。

注意事项:

为了保证消息正常收发,微信授权必须的三个权限是:

消息管理权限

用户管理权限

账号服务权限

微信客服配置页面

消息分发技能组:接收客户问题的客服技能组,第一步添加的技能组(必选)

启用智能机器人:选择是否开启智能机器人功能。

欢迎词:客户进入聊天界面的欢迎词语

其他权限注意事项:

七陌微信客服支持配置公众号菜单(需授权菜单管理权限),在七陌平台设置菜单后会覆盖微信公众号管理平台的配置菜单。

机器人转人工支持关键字转人工,配置转人工菜单。如果使用配置转人工菜单方式,则公众号菜单必须要在七陌平台设置。在菜单中配置对应的转人工子菜单,则可以实现机器人转人工的功能。

如需配置满意度评价功能,需授权 网页服务权限

微信对接步骤:

如果客户不希望使用授权的方式则可以使用对接方式实现微信客服的功能。

功能概述:

微信对接是指,第三方企业作为微信平台与七陌平台的消息中转站,第三方企业在收到微信消息之后将消息通过七陌提供的接口转发到七陌平台,并提供一个接口用于接收客服人员回复客户的消息。

公众号名称:第三方企业公众号名称

APP ID :第三方企业公众号唯一标识

接受消息地址:由第三方企业提供给七陌的,用于接收客服人员回复客户的消息

消息分发技能组:接收客户问题的客服技能组,第一步添加的技能组。