《CRM企业配置管理员手册.docx》由会员分享,可在线阅读,更多相关《CRM企业配置管理员手册.docx(87页珍藏版)》请在三一办公上搜索。
1、目 录第一章:CRM配置管理简述71、数据管理82、查询管理8第二章:数据管理101、数据对象注册101.1、对象标识101.2、关键字标识101.3、数据类型101.4、字段空间101.5、名称101.6、企业默认111.7、操作日志111.8、查询页默认参数初始化JSON模板111.9、编辑页JS脚本模板111.10、查询页的操作列模板121.11、日志选项卡设置131.12、高级选项卡设置142、数据对象列表142.1、字段152.2、字段分组182.3、触发器182.4、角色182.5、常见字段设置模版相关182.6、常见触发器模版相关233、数据对象建表方式243.1、按月建表243
2、.2、配置缓存表25第三章:查询管理271、查询器注册271.1、标识271.2、关键字271.3、数据源271.4、名称271.5、From271.6、Where281.7、Group281.8、Order281.9、操作列模版281.10、参数初始化模版301.11、分组关键字311.12、计数字段311.13、其它选项卡312、查询器列表332.1、字段332.2、条件332.3、分组条件332.4、角色332.5、常见查询器字段设置模版332.6、常见查询条件字段设置模版383、数据源管理44第四章:配置管理461、编码信息管理462、配置表管理47第五章:模版管理49第六章:定时任务
3、501、定时任务501.1、定时任务添加501.2、定时任务列表512、脚本命令管理512.1、脚本命令注册51第七章:LED大屏521、页面注册522、页面列表522.1、块列表522.2、数据项54附录:指令集551、Velocity方法55方法:#cinBean()55方法:#cinBeanSet()55方法:#cinCompare()55方法:#cinDateFmt()55方法:#cinDateOfWeek()56方法:#cinError()56方法:#cinNvl()56方法:#cinFuncAuth()56方法:#cinIdFmt()57方法:#cinIfEmpty()57方法:#
4、cinIfNotEmpty()57方法:#cinKey2Name()57方法:#cinLog()58方法:#cinMonthTbl()58方法:#cinObj2Json()58方法:#cinRandom()58方法:#cinRoleAuth()59方法:#cinTelEncrypt()59方法:#cinTimeFmt()59方法:#cinBeanShell()59方法:#cinFtpCmd()60方法:#cinFtpDown()60方法:#cinFtpOpen()60方法:#cinFtpUp()60方法:#cinHttpSender()61方法:#cinSoap()61方法:#cinFileA
5、wk()61方法:#cinFileCmd()61方法:#cinFileSave()61方法:#cinChn2Py()62方法:#cinCommaStr2Arr()62方法:#cinJson2Obj()62方法:#cinXml2Obj()62方法:#cinBlockTpl()63方法:#cinBuildTpl()63方法:#cinUrlTpl()63方法:#cinXmlForEach()63方法:#cinXmlParse()63方法:#cinXmlSel()64方法:#cinSpringBean()64方法:#cinSpringMethod()64方法:#cinDs()65方法:#cinSqlF
6、etch()65方法:#cinSqlLoad()65方法:#cinSqlRun()662、$方法取值66第一章:CRM配置管理简述配置管理员登录信息:登录页面:http:/serverip:8080/cc-crm/conf.do企业标识:企业的标识用户名:conf密码:默认cinteam123,新版crm建立的企业默认cinconf123企业配置管理员登陆后首页:CRM系统管理角色共分三个:运营级管理员、企业配置管理员、企业管理员,crm平台的设计模式是基于呼叫中心的架构,多企业独立运行的模式,整个平台只有一个运营级管理员,由运营级管理员来建立若干个企业,每个企业分别有其配置管理员和企业管理员
7、2个管理角色;企业配置管理员级主要配置和管理下面2块的工作:1、数据管理注册和管理当前企业的数据对象,一条数据对象对应生成crm数据库中的一张表,数据对象类型包括:工单数据、基础数据、客户数据、质检数据、操作日志;无论做呼入还是呼出业务,一般一个企业至少需要配置一个工单数据对象和一个客户资料数据对象,供坐席界面在弹屏界面时调用;质检数据对象是指在企业需要质检功能时配置,配置后,质检员可以对坐席保存的工单进行质检评分;操作日志类型的数据对象是用于配合工单使用的,即工单页面可以调用操作日志的数据对象;基础数据类型的数据对象一般是存放一些基本数据,配合业务需求使用的情况下配置。具体的配置请参见第二章
8、内容:数据管理部分介绍。2、查询管理注册和管理当前企业所有的查询器,查询器即是对数据库中的信息进行查询展现到页面,可以对话单、工单等相关数据进行查询和统计;一般分2块,一是导入一些做好的标准查询器模版,例如:呼叫历史、坐席统计等;二是具体业务需求定制的,如工单明细、相关统计等;具体的配置请参见第三章内容:查询管理部分介绍。第二章:数据管理数据对象:一条数据对象对应生成crm数据库中的一张表,常用数据对象类型包括客户资料和工单2种,一般一个企业至少要创建客户资料和工单数据对象,供弹屏页面调用。1、数据对象注册-基本信息- 选项卡:1.1、对象标识数据对象的唯一标识,4位数字;1.2、关键字标识数
9、据对象的key,唯一标识;1.3、数据类型目前类型有:工单数据、基础数据、客户数据、质检数据、操作日志;工单数据对应数据库中的表名:crm_agt_rpt_企业标识_数据对象key基础数据对应数据库中的表名:crm_data_企业标识_数据对象key客户数据对应数据库中的表名:crm_数据对象key_企业标识质检数据对应数据库中的表名:crm_checker_企业标识_数据对象key操作日志对应数据库中的表名:crm_opt_log_企业标识_数据对象key1.4、字段空间表示生成的表默认带的预留字段的数量;数字串含义:例如:20500300指 20个数字类型字段 + 50个字符型字段 + 3
10、个文本类型 + 00预留没用到;1.5、名称数据对象的名称,可以用中文;1.6、企业默认是和否两种值,在没有关联数据对象的情况下,会默认使用设置为 是 的数据对象;1.7、操作日志关联操作日志后,在弹屏和编辑页面可以显示编辑操作日志数据对象的字段,一同保存;1.8、查询页默认参数初始化JSON模板是keyvalue赋值形式;rptTimeFrom:#cinDateFmt(yyyyMMdd)000000,rptTimeTo:#cinDateFmt(yyyyMMdd)235959效果:rptTime:对应查询条件字段的字段名;1.9、编辑页JS脚本模板在此添加JS脚本,可控制数据对象的编辑页面中所
11、有的控件元素;模版1:弹屏工单部分字段内容 从 客户资料 中 根据弹屏页面坐席点击的客户资料自动获取;#if($pageKey = callPage)/ 客户资料属性,工单属性_globalCustomerNotifyCtrCtx.addCtr(data21, $dataObjInfo.objId, data25);_globalCustomerNotifyCtrCtx.addCtr(linkTel1, $dataObjInfo.objId, data31);#end说明:前面的参数data21为客户资料中的字段名,后面的参数为工单中对应的字段名;模版2:控制页面2个编码类型字段的逻辑关系;_
12、baseCodeCtrManager.regCodeCtrTwin($dataObjInfo.objId_data29, $dataObjInfo.objId_data30, -全部-);模版3:弹屏工单部分字段内容 是否可编辑及显示隐藏;var ordersCtrIdArr = new Array ( command0.data35, command0.data36);/需要是控件的nameMyHtmlCtr.disableCtrArr(ordersCtrIdArr); /不可编辑MyHtmlCtr.enableCtrArr(ordersCtrIdArr); /可编辑MyHtmlCtr.hi
13、deCtrArr(ordersCtrIdArr); /隐藏不显示MyHtmlCtr.showCtrArr(new Array(th_$dataObjInfo.objId_data38,); /显示MyHtmlCtr.confCtrValue($dataObjInfo.objId_data38, nowDtStr); /给字段赋值var data37Value = MyHtmlCtr.loadCtrValue($dataObjInfo.objId_data37); /取当前页面的值赋给变量模版4:弹屏工单必填项未填工单保存时弹出窗口提示;$($dataObjInfo.objIdForm).set
14、Attribute(altInValidMsg, true);模版5:控制弹屏工单保存后是否自动示闲和关闭窗口;#if($pageKey = callPage)if(_rptSaveHandlerActionKeyArr) _rptSaveHandlerActionKeyArr$dataObjInfo.objId = autoConf2Idle:true, closeComingCallPage:true;#end(注意:自动示闲和关闭窗口一般二选一,因为可能刚示闲就有电话进来而没有关闭窗口,所以这种情况下会发生错误)模版6:弹屏时客户资料存在则触发此方法,可以再其中增加处理逻辑;functi
15、on CorpOnCustomerSelFunc(customerDataRow) 1.10、查询页的操作列模板数据对象对应的查询页面中操作列的链接,更多模版参见查询器中操作列的模版;外拨说明:$row.linkTel1:取的是当前页面电话的字段名为linkTel1的值;其它常用操作列项,参见查询器操作列模版。1.11、日志选项卡设置(一般配置了也很难看出操作的记录)坐席保存工单模式:设置坐席弹屏工单页面是否可以多次保存工单;记录模式:文件、DB动作、DB轨迹三种;记录模版:数据对象更新时记录字段修改的值,记录模式 选择DB轨迹 时下面的代码会往 业务日志 表中记录修改的值,可以通过日志管理
16、中 业务日志 查询记录;#if($action = Update)#cinDiffDataRow($dataRow, $oldDataRow, $dataObjInfo)#end1.12、高级选项卡设置编辑页列数:数据页面页面每行显示的字段列数,最多支持一行3个字段;按月建表:详见第3节所述;列表页JS脚本模版:示例_baseCodeCtrManager.regCodeCtrTwin(data23, data24, -全部-);/控制数据对象查询页条件中编码下拉框类型字段的逻辑关系;2、数据对象列表添加对应数据对象的如下设置:2.1、字段表示数据对象包含的数据字段,一般没种类型有其固定的字段,
17、其他的字段都是在注册数据对象的时候选择预料的字段;-基本信息-数据类型:对应数据对象注册时的字段空间中所指的类型,常用有3个:字符串、数字、文本(指大文本);数据类型:当前字段的控件类型,常用有:文本框、键值下拉框、日期&时间范围;自定义属性集:onchange=onChangeSellResult1(this.value);/键值下拉框改变调用js中的方法localOptLabels=-请选择- localOptValues= /键值下拉框-显示信息-注意:如果弹屏列表页条件选 是,查询条件也必须选 是;-编辑信息-数据来源:页面输入、客户资料、来电信息;客户资料:可以通过数据来源来设置该字
18、段值从其它表中某个字段获取,弹屏页面中工单中客户资料字段常用此设置来自动同步客户资料的内容,如果同步的字段为日期类型,则来源字段名后加Fmt,例如:原始字段名为createdTime,则来源字段名:createdTimeFmt;注意:来源字段名是字段的字段名,不是DB字段名;来电信息:数据来源可以获取来电信息的内容,包括:dataObjId:,enableMultiDataObj:,agentId:$agentId,agentName:$agentName,departmentId:$departmentId,departmentName:$empty departmentName ? dep
19、artmentId: departmentName,callId:,callSid:,callSeq:0,callType:,callTypeTitle:,userDn:,agentDn:,areaCode:,callingNumber:,transferAgentId:,projectId:,projectName:,serviceId:,shortServiceId:,isHumanCallIn:false,serviceName:,areaCode:,areaName:,callData:,transPara:,/随路数据customerStreamNum:,wordsKey:,isTa
20、skCall:false,areaId:,areaProvince:,/电话所属省份areaProCode:,areaCity:,/电话所属城市encryptTel:,/电话加密显示recordFileName:, / 呼叫结束后录音文件信息ringRecordFile:, / 振铃时上报的录音文件路径accessGwId:languageType:例如:页面效果:常用字段模版:见2.5节内容;2.2、字段分组可以将部分字段设置成一组,在逻辑上进行划分,在弹屏工单页面会按组分开显示;2.3、触发器表示操作数据对象时,触发执行的语句;触发器模版:见2.6节内容;2.4、角色设置可以查看此数据对象
21、权限的角色,系统中内置的角色,添加即可,在首页中会显示有权限的列表;2.5、常见字段设置模版相关2.5.1、字段调用 配置管理 中 编码信息列表 的值rootCode:K200;codeLevel:2;(前面一个是根编码,后面是子编码)说明:rootCode 表示调用根编码的编码标识;codeLevel表示所属根编码下级的对应级别;2.5.2、生成序列号S#cinDateFmt(yyMMddHHmmssSSS)2.5.3、动态下拉选形式加载指定URL地址的数据-项目编号-:数据加载URL地址:/cc-crm/outCallProjectInfo.do?method=getJsonOption-
22、任务编号-:数据加载URL地址:/cc-crm/outCallTaskInfo.do?method=getGsonOptionoutCallTaskInfo.do?method=getGsonOption&needEmpty=1-人工服务-:数据加载URL地址:/cc-crm/ctiServiceInfo.do?method=getGsonOption&needEmpty=1&command.corpVccId=958888-IVR服务-:数据加载URL地址:/cc-crm/ivrServInfo.do?method=getGsonOption&needEmpty=1&command.corp
23、VccId=9588882.5.4、根据角色来控制字段是否具备修改权限cols=60 rows=3#if($userCtx.roleId != ROLE_CC_CHECKER) readonly #end/判断角色是否为质检员,不是则增加 只读 的属性cols=60 rows=3:表示控件页面显示的行列大小;2.5.5、来电弹屏电话匹配多个电话模糊查询/注意:数据量大的情况下要改成值等,效率要高一些。#cinIfNotEmpty($parameterMap, $fieldInfo.fieldName, fieldValue) and (link_tel1 like %$fieldValue%
24、or link_tel2 like %$fieldValue%) #end#cinIfNotEmpty($parameterMap, $fieldInfo.fieldName, fieldValue) and (link_tel1 = $fieldValue or link_tel2 = $fieldValue) #end注意:数据对象中类似用坐席工号这种字段作为条件时,因为默认使用的是模糊查询,所以有可能一些特定的工号查询时结果就不准确了,这时需要将此字段的查询条件模版中加入自定义查询,示例如下:#cinIfNotEmpty($parameterMap, $fieldInfo.fieldNa
25、me, fieldValue) and (agent_id = 000010100002$fieldValue) #end2.5.6、弹屏单选 字段弹屏单选控件是指点击后弹出窗口(调用某个查询器),在窗口中选择对应记录,返回对应的值(选中的列即是返回值的列);数据加载URL地址:queryManager.do?method=pageSearch&command.isFirstQuery=1&queryKey=corpPage注意:corpPage为调调用的查询器的关键字;查询器对应的选择列 设置:页面显示模版:注意:selId为要调用的字段名;2.5.7、日期字段默认为当前日期设置日期字段的默
26、认值模版为:#cinDateFmt(yyyyMMdd)2.6、常见触发器模版相关2.6.1、新建日志表将页面中的字段内容更新到工单表对应字段#set($rptTabelName=crm_agt_rpt_$userCtx.corpId_workorder_#cinDateFmt(yyyyMMddHHmmss, $dataRow.rptCreatedTime, yyyyMM)/设置要操作的数据表的名称赋值给变量$rptTabelName,根据页面时间的字段获取到表名中的时间#cinSqlRun(update $rptTabelName set data_46 = $dataRow.data2 wh
27、ere stream_number = $dataRow.rptId)/执行括号中的sql语句2.6.2、根据页面字段的值来判断执行sql语句#if($dataRow.data3 = 2)#set($cntSql=select count(rpt_id) as optCnt from crm_opt_log_$userCtx.corpId_wolog_#cinDateFmt(yyyyMM) where rpt_id=$dataRow.rptId)#cinSqlLoad($cntSql, 1, sqlRtnMapObj)$sqlRtnMapObj.optCnt#if($sqlRtnMapObj.
28、optCnt != 4) #cinSqlRun(insert into crm_appoint_info (stream_number,corp_id,call_id,call_sid,agent_id,calling_number,task_id,appoint_tel,appoint_time,last_call_time,remark,status,created_time,update_time,rpt_stream_number,rpt_obj_id ) values ( #cinRandom(), $userCtx.corpId,$dataRow.callId,$dataRow.c
29、allSid, $userCtx.userId, $dataRow.callingNumber,$dataRow.serviceId, $dataRow.callingNumber,$dataRow.data30, , , 0, #cinDateFmt(yyyyMMddHHmmss), #cinDateFmt(yyyyMMddHHmmss), $dataRow.rptId, $userCtx.defaultAgtRptObjId)#end#end2.6.3、判断当前班组是不是指定的班组执行相应的sql#if($userCtx.agtGrpId != 100030001001 & $userCt
30、x.agtGrpId != 100030001101) #cinSqlRun(update crm_agt_rpt_$userCtx.corpId_workorder set data_39=date_format(now(),%Y%m%d%H%i%s),data_43=timediff(data_39,data_38) where (stream_number=$dataRow.streamNumber or (call_sid = $dataRow.callSid and call_id = $dataRow.callId);)#else#cinSqlRun(update crm_agt_
31、rpt_$userCtx.corpId_workorder set data_38=date_format(now(),%Y%m%d%H%i%s) where (stream_number=$dataRow.streamNumber or (call_sid = $dataRow.callSid and call_id = $dataRow.callId) and (data_38 is null or data_38=) and (data_37 is not null and data_370);)#end2.6.4、根据执行查询返回的值判断执行语句#set($cntSql=select
32、data_6 as optCnt from crm_agt_rpt_$userCtx.corpId_workorder where stream_number=$dataRow.streamNumber)#cinSqlLoad($cntSql, 1, sqlRtnMapObj)$sqlRtnMapObj.optCnt#if($sqlRtnMapObj.optCnt = 0).#end3、数据对象建表方式3.1、按月建表配置按月建表主要是数据量大后,按月分开数据可提高查询速度,但查询器按时间查询时不能跨月查询;3.1.1、非当前月 模式当前月的表名为原始表名,其它月份为 表名_201208的形式
33、;3.1.2、所有月 模式都已 表名_201208 的形式生成每个月份的表;注意:设置完成后,都需要建立一个 数据表维护的 定时任务,并运行一下才会生成,如果当前数据对象已有数据,先将原表备份一下,生成的方式为:例如当前是8月份,会将原来带数据的表改名为 表名_201207 ,同时生成空数据的3张表(原始表名一个、表名_201209、表名_201210),需要做的工作有 将7月表中的8月数据导入到原始表名中,如果存在7月以前的数据,需要手动建立各个月份的表,并将相应月份的数据导入到表中。配置管理级中添加 数据表维护 的定时任务:查询器中from中的表名对应修改的方式:crm_agt_rpt_$
34、userCtx.corpId_workorder_#cinDateFmt(yyyyMMdd, $parameterMap.call_dateFrom, yyyyMM)说明:适用于数据对象 按月建表模式为 所有月,call_date为条件中的日期字段;#cinMonthTbl(cti_callstat, $parameterMap, rptTimeFrom, yyyyMMddHHmmss)说明:适用于数据对象 按月建表模式为 非当前月,rptTime为条件中的日期字段;3.2、配置缓存表可以对数据对象按1-7天的周期建立对应的缓存表,也需要添加 数据表维护的定时任务,查询器中from中的表名更改
35、成缓存表的表名即可;第三章:查询管理查询器:就相当于一条select语句,实现对已存在的数据进行查询、统计,支持标准的mysql语法;1、查询器注册-基本信息-选项卡:1.1、标识 查询器的唯一标识,一般是数字,可以加字符;1.2、关键字查询器对应的唯一key,标识查询器;1.3、数据源对应数据库: 话单库(smp)、工单库(crm);1.4、名称查询器显示的名称;1.5、From组成查询语句的from,可以嵌套select语句;常用模版示例:crm_agt_rpt_$userCtx.corpId_workorder_#cinDateFmt(yyyyMMdd, $parameterMap.ca
36、ll_dateFrom, yyyyMM)说明:适用于数据对象 按月建表模式为 所有月,call_date为条件中的日期字段;#cinMonthTbl(cti_callstat, $parameterMap, rptTimeFrom, yyyyMMddHHmmss)说明:适用于数据对象 按月建表模式为 非当前月,rptTime为条件中的日期字段;注意:如果from中嵌入了比较复杂的多表查询时,最好把最外层的时间查询的值带入到内层的条件中,例如:startTime = $parameterMap.rptTimeFrom and startTime = $parameterMap.rptTimeTo
37、1.6、Where组成查询语句的条件,无特定条件时加上 1 = 1;1.7、Group组成查询语句的分组条件;1.8、Order组成查询语句的排序条件;1.9、操作列模版对应显示数据页面 操作 栏中显示的 链接;常用模版示例:注意涉及的参数名称一定要和查询器中字段取名一致,否则获取不到值,就存在问题了;#set($fmtTime=#cinDateFmt(yyyy-MM-dd HH:mm:ss, $row.startTime, yyyyMMddHHmmss)/$fmtTime:给这个变量赋值,后面即可调用此变量,startTime对应当前查询器时间的字段名;#if($userCtx.roleId != ROLE_CC_AGENT) 补单#end编辑 /修改数据对象都可以用此方法#if($userCtx.roleId != ROLE_CC_AGENT)改单#end工单工单录音录音/ wavLocation是录音的文件名如下载话单/ javascript:openAcrInfoWin:话单详情话单详细质检 / OBJ_$userCtx.corpId_9000:当前的工单对象,fmtTime参数必须是当前录音的时间,否则调不到。回拨a onclick