简介
本文档介绍在呼叫方因中继网关容量超出而无法获得CCB服务时,如何解决客户语音门户(CVP)CCB问题。
先决条件
要求
Cisco 建议您了解以下主题:
使用的组件
本文档中的信息基于以下软件版本:
- CVP服务器10.5
- 统一联络中心企业版(UCCE)10.5
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您使用的是真实网络,请确保您已经了解所有命令的潜在影响。
背景信息
在排除网关容量问题之前,了解CCB中的中继验证过程非常重要。基本上,该过程首先确定来自Callback_current表(21、22、23)中的EventTypeID的调用数; Pending、Inprogress、Temporary,适用于特定网关和位置。
其次,从同一Callback_current表中确定已完成的呼叫数,其中原因为connected: EventTypeID = 24(已完成),CauseID = 27(已连接)。
最后,该过程将这两个值相加,并与Survivability.tcl服务下配置的中继数量进行比较。
如果结果超出配置的中继阈值,则进程发回故障(返回1),否则发回ok(返回0)。
总之,用于验证CCB的中继的公式为:
CCB中继<(Callback_current表,EventTypeID位于(21,22,23)中;Pending、Inprogress、Temporary for specific gateways)+ Callback_current table of EventTypeID = 24(Completed),CauseID = 27(Connected)
如果CCB中继值较低,则验证失败。
症状
呼入呼叫不会获得CCB优惠。呼叫直接进入队列,而不管估计等待时间(EWT)
故障排除
步骤1.从语音可扩展标记语言(VXML)服务器的CallbackEntry应用程序收集活动日志。
步骤2.在活动日志中搜索验证为无的任何呼叫:
Validate_02,data,result,none
这意味着验证未通过。获取此调用的GUID。 按活动日历过滤呼叫,然后查找如下所示的日历:
start,parameter,callid=BBBBAAAACCCCDDDDEEEEFFFFAAAABBBB
步骤3.收集报告服务器的CVP报告日志。在CVP报告日志中查找相同呼叫。
ValidateHandler:ValidateHandler.exec: ValidateHandler GUID=BBBBAAAACCCCDDDDEEEEFFFFAAAABBBB results:none validation status bitmask=0x00000103
步骤4.将位掩码号转换为二进制。使用程序员计算器:0001 00000011
步骤5.检查CCB表的CVP报告指南位掩码。您应该看到由于“EXCEED_CAPACITY_GW”,验证失败。
00000000
0000001 OK
00000000
0000010 ICM_NO_SCHEDULED_ALLOWED
00000000 00000100 ICM_NO_PREEMPTIVE_ALLOWED
00000000 00001000 NOT_IN_QUEUE
00000000 00010000 TOD
00000000 00100000 EWT
00000000 01000000 PROBE_FAILED_NO_RESPONSE
00000000 10000000 PROBE_FAILED_NO_CONFIG
00000001 00000000 EXCEED_CAPACITY_GW
00000010 00000000 EXCEED_CAPACITY_QUEUE
注意: ICM_NO_SCHEDULED_ALLOWED和OK位始终设置
步骤6.将问题缩小到特定队列。从CVP报告服务器检查CCB服务器,以确定是否存在任何未提供CCB的特定队列。打开Web浏览器并键入。
http://{报告服务器IP地址}:8000/cvp/CallbackServlet?method=Diag
以下是提供CCB的队列示例:
这是未提供CCB的队列示例
第 7 步: 检查队列是否由特定网关提供服务。检查网关配置(生存性应用参数)。
application
service new-call flash:bootstrap.vxml
!
service survivability flash:survivability.tcl
paramspace callfeature med-inact-det enable
param ccb id:10.201.198.21;loc:CALO;trunks:512
步骤8.如果配置正确,请检查报告服务器数据库(Informix)中存储的信息,确定此特定网关和位置上的呼叫数。您可以通过CCB ID(本例中为10.201.198.21)或位置(本例中为CALO)进行检查。
步骤 9在报告服务器上,访问Informix数据库。
打开CMD提示符并键入:dbacces
导航到connection > connect
选择cvp实例
键入username cvp_dbadmin
键入密码
选择callback@cvp database
退出并导航至“查询语言”
步骤10.运行查询:
从callback_current中选择count(*),其中location == "CALO";
步骤11.如果该值等于或大于在网关中为位置配置的中继值,则这就是验证失败的原因,因为Callback_Current表中已达到允许的中继的最大数量。
注意: 如CVP报告指南中所述,回调表是两个表的视图:Callback_Current和Callback_Historical。这两张表是相同的。每30分钟,已完成的呼叫的数据将从Callback_Pending提取并移至Callback_Historical。
步骤12.如果每个位置的中继值在Callback_Current表中已达到其限制,并且队列中没有回调,则表明在将回调记录从Callback_Current移到Callback_Historical表时出现问题。
步骤13.确保CVPCallbackArchive在Schedule Tasks(CVP报告服务器)下运行。 导航到开始 — >程序 — >附件 — >系统工具 — >计划任务。
.
步骤14.如果此任务CVPCallbackArchive完成,请确保退出代码为(0x0)。
步骤15.如果步骤13和14正常,但Callback_Historical表中仍没有数据,则需要确定为什么信息没有添加到数据库中。检查当前表和历史表中存储信息的完整性。 在informix dbaccess CMD窗口中运行此查询:
Select count (*) from callback_current where surrogateid in (select surrogateid from callback_historical);
步骤 16 如果计数为1或更高,则意味着历史记录表中已存在当前表的主键,并且不会将该信息添加到数据库中。在多数情况下,争用条件会导致重复记录进入callback_current表中。
对队列表进行GUID到surrogateid的映射。当呼叫从回调等待转为回调队列脚本时,似乎会出现一个窗口,其中存档作业将记录从当前移至历史记录,应用程序在当前表中使用同一surrogateid输入一个新记录。 此问题与此CDETS CSCuq86400相关。
解决方案
步骤1.访问Informix数据库。打开CMD提示符并键入:dbacces
步骤2.导航到connection > connect,选择cvp实例。键入username cvp_dbadmin并键入密码
步骤3.选择callback@cvp database exit并导航到Query Languages
步骤4.运行以下命令:
delete from callback_current where surrogateid in(select surrogateid from callback_historical);
如果出现临时表错误,请执行以下操作:
删除表t1;
步骤5.运行sp过程,该过程将信息从查询语言窗口的dbaccess从当前回调表移动到历史回调表。
执行过程sp_arch_callback();
步骤6.检查当前表中的记录没有之前多。
从callback_current中选择count(*),其中location == "CALO";
永久解决方案
步骤1.导航到Cisco\CVP\informix_frag,然后在文本编辑器中打开sp_arch_callback.sql。
步骤2.在文件开头取消对此行的注释:—drop procedure sp_arch_callback; (删除 — 在行首)。
步骤3.添加以下行:delete from callback_current where surrograted in(select surrogateid from callback_historical);在
创建过程sp_arch_callback()行。
步骤4.保存文件。
步骤5.这是文件第一部分应如何显示的示例。
{*********************************************************************************
Stored procedure to move completed calls out of the active table into the
historical table.
*********************************************************************************}
drop procedure sp_arch_callback;
create procedure sp_arch_callback()
DEFINE p_ageoff INTEGER;
-- delete any duplicates found in current table.
delete from callback_current where surrogateid in (select surrogateid from callback_historical);
测试最终解决方案
步骤1: 打开CMD提示符并运行命令:dbschema
dbschema -d callback -f sp_arch_callback
注:如果在运行dbschema命令时出现授权问题,请以cvp_dbadmin身份登录报告服务器,然后再试一次。
步骤2.从输出中,确保执行Delete from命令。