All Posts By

solo@astercc.org

呼叫中心坐席模式手动回拨具体的操作流程

By | 呼叫中心常用功能 | No Comments

呼叫中心坐席模式手动回拨具体的操作流程简介

系统中一个坐席组有可能对应多个模块的多个应用,如果坐席使用分机直接往外打电话,那么系统无法得知其在为哪个应用打电话。为了解决此问题,你需要如下设置。

1.【PBX管理】->【分机管理】-> 找到坐席所使用的分机 -> 在“高级资料”中找到“坐席模式”,将其改为“可用”。

2.【账户和权限管理】->【坐席管理】-> 打开要设置的目标坐席 -> 基本资料下 -> 为其设置一个“当前呼出坐席组”。

3. 【账户和权限管理】->【坐席组管理】-> 打开具体坐席组 -> 基本资料下 -> “当前呼出应用类型”用于帮助你选择“当前呼出应用”。

设置后当坐席使用分机直接外呼时,系统便知其是在为“当前呼出坐席组”工作。再结合坐席组中设置的“当前呼出应用”,系统会把呼叫记录记录在此应用下,并帮助你弹出此应用的处理页面。

温馨提示:分机直接往外打电话时首先请确保该坐席处于空闲状态。其次坐席不处于话后处理状态,话后时处理与通话相关的业务流程,不会记录新的呼叫。坐席组内编辑坐席为静态离线,可以让坐席在不登陆页面的情况下,产生外呼汇总记录。

文件参考: asterCC官方参考文件

呼叫中心坐席主动回拨,通话结果分配结果问题解答

By | 常见问题解答 | No Comments

客户号码×××××××××××涉及座席××××,客户状态为成功,有呼叫记录可查是××××拨打的,但是客户资料却没有坐席归属。

案例:

客户数据被重复导入, 导入后未进行分配, 改客户不属于任何座席。预拨号开始工作客户应答,系统将客户送至坐席接线。客户应答后挂断,但坐席未能接起客户电话。 由于无人接到此客户电话, 客户依然处于未分配状态 看到的就是座席工号=0,名字null。但是此时坐席主动回拨了客户,通过弹屏界面保存了联络信息,但是系统不会将客户划分给坐席,所以客户所属坐席依然是0。

有四种途径使客户属于某个座席:

  1. 管理员分配
  2. 主动获取(座席工作界面有获取按钮)
  3. 成功接听预拨号分配的话务
  4. 座席自己添加的客户

可以在【外呼营销】->【外呼营销任务】-> 打开具体的外呼营销任务 -> “基本资料里”下“手动分配任务”里查询到该号码,手动将此客户分配给坐席解决此问题:

呼叫中心系统为坐席重新分配客户信息方法

By | 常见问题解答 | No Comments

使用的客户总表,出现想把其中的一个客户通过外呼营销任务手动分配给另外一个坐席时,无法查找到改客户。在外呼营销任务的客户管理里可以正常查询到,可如下方法解决。

案例操作:

由于该客户信息之前被调用时浏览器非正常关闭造成。可以在数据库里手动释放该客户,MySQL表名在客户集合包管理里该外呼营销任务对应的客户包里可以看到“cc10_x_individualpackages”,你在数据库里以id=xxx为索引查询该表的locked字段值,结果显示有具体时间值 ”2016-10-12 15:33:20“,说明该客户信息被占用未释放,你可以更改该值为“0000-00-00 00:00:00”释放该用户信息,然后你再执行你之前的查询。

asterCC呼叫中心 MySQL 分配客户信息 坐席

文件参考: asterCC的官方说明文档

asterCC呼叫中心系统发布2.6-rc1

By | 新闻中心 | No Comments

隆重推荐:

时隔6个月后asterCC商业版多用户呼叫中心系统发布了新的版本,该版本除了修复bug之外还提供了以下新功能:

  • 中继页面增加了克隆功能
  • 坐席组振铃策略增加了rrordered
  • 会议静音选项
  • “坐席组监控”页面“状态列”后面增加“状态起始时间”
  • 预拨号功能支持同一个客户的多个号码
  • 工单支持多级自定义关联字段
  • 新增了Link类型字段,可以用于关联第三方地图应用

 

全部修改记录请参见 http://wiki.astercc.com/doku.php?id=zh:change_log:astercc-2.6-rc1_changelog

asterCC商业版呼叫中心系统仍然提供了免费5坐席60天的试用,您可以在这里下载安装体验。

asterCC呼叫中心系统发布2.4-rc2

By | 互联网, 新闻中心 | No Comments

* 坐席评分功能,不再局限于1到5分。

* 坐席服务明细页面,增加了[昨天]快捷搜索按钮。

* IVR呼入服务明细页面,增加了后台任务导出数据的功能。

* 新增按地区统计分析报表的功能。
* 外呼营销任务的自动分配任务页面,将”确定”按钮改为”保存自动分配任务”按钮,防止造成误操作。

* 外呼营销任务的自动分配任务界面,默认选中 按所有未分配 来分配客户。

* 短信供应商可以按团队进行设置了。

* 增加预拨号无空闲坐席时,挂断振铃客户的功能。在[外呼营销任务]->[预拨号高级配置] 下增加该功能的设置选项 [无可用坐席挂断振铃客户]。

* 分机模式下,驻留号码(call-parking)取回的等待时间,由原来的12秒,修改为300秒。

* 呼入客服漏话页面增加坐席组字段。

* 点击拨号的时侯,如果发现有错误数据,之前版本会提示不要重复拨号。此版本加一个继续拨号的按钮,此按钮会自动清除之前的错误拨号数据,并插入新的拨号请求。

* 在坐席工作页面的[群发信息管理]->[公告管理]->[添加公告]中,添加接受者的”全选”功能。
* 号码隐藏的格式修改为:隐藏从右往左的5-8位,如果不足5位,隐藏全部号码。
* 修复了 在团队管理中,录音范围为”全部”时,分机模式的通话录音生成失败的bug。
* 修复了 [角色管理]页面的添加页面中,点击保存提示必填项后,即使填写上内容也无法保存的bug。
* 修复了 [分机管理]页面中,分机详情字段内容添加和修改时长度不一致的bug。
* 修复了 [中继]页面中的外呼主叫号码字段,如果设置为多个空,保存成功后会出现无法再编辑的问题。

* 修复了 [工作时间]页面中,添加工作时间时,结束时间字段无法修改的bug。
* 修复了 [呼叫记录]页面中,导出文件类型为.csv和.xls时,字段不一致的bug。

* 修复 [坐席图形报表]页面中,选择”全部技能组累计”时,点击下载image或者pdf会出现提示请选择坐席组的bug。

* 修复了 使用总表的外呼营销任务,在[外呼营销]->[客户管理]页面中,按”更新时间”搜索后”根据搜索删除”数据时,会删除搜索结果以外其他数据的bug。

* 修复了 导出文件生成文件夹时,名称有空格导致的无法进行压缩,导出任务页面无法下载导出文件的bug

* 修复了 [坐席事件日志]页面导出文件时缺少字段的bug。

* 修复 权限范围为系统的帐号,默认有 拨号器设置 页面权限的bug 。将 拨号器设置 页面的权限改为由角色进行控制。
* 修复了 [预拨号]->[拨号器]->[回收]页面中,回收数据时,无法设置数据回收任务的预约时间为立即回收(即:0000-00-00 00:00)的bug。

* 修复了 [呼入客服]->[呼叫记录]页面中,导出.csv类型数据的bug。

* 修复了卸载[电子商务]应用模块时,左侧管理列表中的[库存管理]模块不能够同步被删除的bug。

* 修复了 外呼任务弹屏界面上,如果客户资料没有客户姓名,则客户标签处以该任务设置的第一个前台显示字段的数值进行显示。如果该任务设置了屏蔽联系方式,并且前台页面显示字段为电话号码一时,客户标签处未进行屏蔽的bug。
* 在坐席工作页面的[群发信息管理]->[公告管理]->[添加公告]中,修复了 管理员选定账号组后,账号未被列出的bug。
* 在坐席工作页面的[群发信息管理]->[公告管理]->[添加公告]中,修复了 坐席组长选定坐席组后,坐席未被列出的bug。
* 修复了 [预拨号]->[预拨号未接通原因]中,角色设置为团队范围时,无法看到本团队的外呼营销任务的bug。
* 修复了 IE8 9 10浏览器下,坐席页面状态处显示为NAN的bug。
* 修改自动拨号的倒计时时间总是60秒开始。

* 修复了 http push模块内存溢出的问题。
* 修复了定时文件合成任务无法及时完成的问题。
* 解决了安装demo数据时无法安装呼入客服模块的bug。

四川爱易惠呼叫中心 与 asterCC系统 联袂打造高品质的话音服务

By | 成功案例, 新闻中心, 电信和通讯 | No Comments

四川爱易惠呼叫中心 与 asterCC系统 联袂打造高品质的话音服务

呼叫中心平台 的搭建对于企业员工工作效率的提升有着重要意义。在销售系统中,电话销售工作是销售系统中的基础环节,因此,完善平台的搭建就成为电销系统的重中之重。四川成都爱易惠呼叫中心,致力于中国电信/中国联通增值业务的电话销售工作,采用30人同时在线的坐席工作模式。自今年8月使用asterCC呼叫中心系统,至今将近5个月的时间,工作时间为每天上午的9:00-12:00,下午13:00-18:00,对客户进行网站销售的推广,同时向用户推荐电信公司的增值业务服务,使客户全面了解业务范围以及网站服务的办理。

使用asterCC呼叫中心系统,起初需要后台管理人员对业务团队进行搭建,创建工作人员角色并设置其相应的使用权限,使用系统的快速设置功能,便能够批量创建工作人员的账号、坐席和分机。而工作中发生个别工作人员变动的情况,只需通过添加/修改/删除账号等信息对单个人员的设置进行更改即可。公司在使用asterCC呼叫系统工作中,[外呼营销任务]是主要使用的系统模块之一,新建外呼营销任务后,将客户数据导入到该任务中,然后使用[预拨号]功能进行外呼工作,使用此模块,需要根据员工情况随时调配拨号器的一些参数,如拨号数上限,拨号间隔等等。此外,公司在做数据统计工作时,会常常用到[报表统计]模块,来统计如员工坐席的振铃时长,通话时长,通话次数,呼叫记录等,公司根据这些数据来计算员工的工时利率等一些指数,这也为呼叫中心的工作考核提供了便利。其次,[系统实时监控]模块在工作中也有较多运用,此模块能够快速为公司提供即时管理服务。

该呼叫中心,最初使用手工拨打的方式来进行电话营销,改用asterCC呼叫中心系统,为公司带来了许多便利之处,无论是销售中心工作人员,亦或者管理考核团队,都节省了许多不必要的工作麻烦。使用短短五个月的时间,公司发现,asterCC呼叫系统,功能强大,还有许多功能未被使用到销售流程当中。公司管理人员表示,会根据工作内容,尽力尝试使用一些新的功能,来减少工作量,提高工作效率。对于公司的管理人员来讲,asterCC系统功不可没。单单就[统计报表]这一项功能来讲,管理人员可以看到员工的工作时长,在线时长等,直观性很强,在未使用asterCC呼叫系统之前,管理人员只能去每个员工坐席上巡查,去看他是否在通话,是否正在工作等。虽然现在公司也需专门的质检人员,但质检人员只需对通话记录抽样调查,听取工作人员的通话录音,在坐席之间进行比对,这样,质检人员便可以很容易地看出哪些员工在偷懒,哪些员公正在很尽力地工作,通过呼叫系统[统计报表]模块反馈的信息,管理人员能够及时有效地与员工沟通,提高工作效率,同时有助于公司业绩的大幅度提升。
asterCC呼叫系统也切实为公司业绩的提升做出了贡献,使用asterCC呼叫系统以后,公司业绩与之前手工拨打电话时相比,业绩有了大约30%—40%的增长,据公司管理人员粗略统计,话务总量与之前相比,多了一半以上,使用系统来拨打号码,节省员工的工作时间,那么员工便能够利用所节省的时间来接通更多的电话。就目前的情况来讲,业绩情况趋于稳定,并且正在保持稳定的增长。

对于asterCC的使用,从整体上来讲,使用较为顺手,在基本操作上没有太多难点,但公司对拨号器功能页面还存在一些疑问,比如,使用过程中会偶尔出现无振铃客户的情况,不过待拨客户数量也在不断减少。虽然这类问题的出现属极少数情况,但公司遇到这类问题总会产生迷惑,无法确定是系统问题,还是网络线路问题。在公司遇到一些操作问题的时候,asterCC的工作人员会为公司提供及时的系统操作指导,并提供完整而详细的问题解决方案。
在日常工作中,呼叫中心坐席人员首先要登录系统,进行签入,随后再开始他们一天的工作。在新员工的入职培训过程中,呼叫中心管理人员在遇到一些系统的使用问题时,及时与asterCC技术支持人员取得联系,并且获得了耐心细致的解答。坐席在使用呼叫系统过程中,常用到的也就是几个按钮,编辑客户资料,处理状态,最后把呼叫结果保存好,偶尔出现来不及保存客户资料,也是主要源于坐席人员的操作不当造成的,与系统本事和后台管理员设置并无太大的关系。

asterCC呼叫中心软件是全球领先的信息解决方案系统,隶属于加拿大的Sonicwell Technology,公司除了为世界各类话音公司提供呼叫中心软件外,还为其提供通讯、呼叫业务的系统解决方案。作为Sonicwell公司旗下产品,除呼叫中心系统外,asterCC还专注于VoIP通讯、CRM系统、运营系统 和 业务模式的研究,未来公司会继续研发新的功能项目。

公司寄语:你们的努力和贡献,是我们事业成功的关键,亦是未来致胜的契机。愿与你们共同成长,携手共进,助力呼叫中心行业实现宏伟蓝图。

使用Wireshark发现VoIP网络电话问题

By | 呼叫中心使用技巧, 开发者博客 | No Comments

Wireshark(原名:Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是捕获网络封包,并尽可能显示出详细的网络封包信息。

供应商希望你相信需要用数千美元的协议分析软件去解决IP电话(VoIP)网络语音。毕竟,数据包的延迟、丢失或乱序会直接影响通话质量。幸运的是,Wireshark是一个开放源代码的软件包,它可以实现这类工具所能实现的功能,甚至更多。

Wireshark,即以前被人们所熟知的 Ethereal,它是网络封包分析软件,使用WinPCAP作为接口,直接与网卡进行数据报文交换。它要做的就是监听网络流量,并用你需要的格式来显示包内容,帮助你发现问题。VOIP涉及一系列Wireshark可以解码并相互关联的复杂协议包。例如,建立一个通话的流程会用到很多协议,而不仅仅是语音流本身。Wireshark使用建立呼叫的信息来更好地理解语音流。用你手中的这些数据,可以进一步隔离VOIP中存在的问题。

想要查找的VoIP问题的原因,你必须能够跟踪从开始到结束的流程,并确保他们产生的是正确的事件。这不但要求你懂得基础协议,而且要理解一些电话的概念。幸运的是,Wireshark提供了一些优秀的工具,以帮助你解释数据。本文将把如何使用Wireshark工具作为重点,来解决3个最常遇到的VOIP问题。

第一个例子是,电话不工作。每次拨打一个号码,即使话机处于空闲状态,也不会有振铃。Wireshark这时就该查看话机和PBX(Private Branch Exchange)交换机之间的数据了。

以root身份启动Wireshark,点击 Capture->Option ,将会弹出捕获选项对话框,如图1所示,确保接口正在使用中,否则,你不会看到的流量。在这个例子中,我们捕获PBX唯一接口eth0的数据流量:

http://www.linuxjournal.com/files/linuxjournal.com/linuxjournal/articles/093/9398/9398f1.jpg(图1:使用Wireshark分析VOIP的捕获选项对话框)
在捕获包之前,需要指定捕获数据包的过滤器选项,来限制你将要处理的数据包数量。因为,无论是信令流(SIP)还是语音流(RTP)都是基于UDP协议的,那我就可以指定UDP作为我捕获的过滤条件。为方便起见,我还可以用实时查询选项检查数据包的更新列表,以便我可以确认我得到适当的流量。点击开始按钮,开始捕捉,很快上方窗格中会显示几个数据包(图2)。

http://www.linuxjournal.com/files/linuxjournal.com/linuxjournal/articles/093/9398/9398f2.jpg(图2:使用Wireshark捕获的IP电话的数据流量)

图2显示出了该分组的列表。前四列显示数据包的号,来源,时间以及所涉及的主机的地址。因为Wireshark抓SIP,它能够识别作为SIP数据包的协议列,并在信息栏上给出详细信息。

图2中信息的粗略检测表明:同样的三个数据包,来回重复了四次。第一个,IP话机主机向PBX主机发送了一个SIP INVITE信令,用以开始一个对话。接下来,PBX通过产生ACK返回给该话机“407代理服务器身份验证”响应,然后用数据包6做了第二次INVITE。由于这是个不断重复的过程,因此我们可以大致猜测是用户名或密码的错误导致身份验证失败。

监听:关于本地数据包的捕获

如果你要捕获的那些数据包,很多都没有到达运行Wireshark机器的网络接口,说明网络交换出了问题。只对某个抓包的通信端口进行限制以提高性能。生成树协议 和 IP协议只会在你试图捕获数据包的地方造成干扰。

你最好直接在那台参与工作的机器抓包,如果那台机器不能使用Wireshark,你总可以使用Tcpdump进行抓取本地的数据包,然后将其移动到其他计算机上,进行数据包分析。如果做不到,或者数据流量跨越多台机器,是时候该从你的网络硬件上寻求突破口了。

大多数管理型交换机可映射一个端口到其他端口所有的数据帧。因此,你可以用Internet将Wireshark 工作平台连接到你的交换机端口上,将所有的网络数据包映射到工作平台上。并且你还可以分析所有的互联网流量。思科 称之为 交换机端口分析器(SPAN),惠普 称之为 端口监控器,3Com公司称其为 巡回分析端口。

选择哪个端口来做镜像取决于你网络情况,一般说来,连接到其他的交换机或路由器的端口是一个不错的选择,这也是降噪过滤器必须要解决的问题。

第一个例子利用了Wireshark的高级解析单个数据包的功能,以突出一个单调的问题。接下来的例子需要更加全面的分析VOIP。Wireshark 用来查看SIP呼叫的建立和确认关键数据包。在这个例子中,这个话机正用于 单通音频。外呼的电话振铃,然后接通,但是仅有一方可以听到声音。会话数据包以与前面的例子相同的方式被捕获,总共140帧。如果没有Wireshark中先进的分析工具提供支持,数据太多以至于无法进行分析。

随着捕获工具的加载,选择 Statistics Telephony->VoIP calls,Wireshark会分析捕获到的任何与VOIP相关的数据包,并显示数据包摘要。点击通话(如果有多个呼叫被显示出来,按住Ctrl可以选择其他通话),然后点击Graph按钮。你会看到有关SIP呼叫的摘要,如图3所示:

http://www.linuxjournal.com/files/linuxjournal.com/linuxjournal/articles/093/9398/9398f3.jpg(图3:SIP会话在Wireshark的图形界面中的显示)

该分析图表对话框显示了各方发来的SIP消息。图3中的第一消息是INVITE消息,这是建立呼叫的第一步。在这个例子中,IP电话访问PBX发出呼叫到SIP地址为:613@fwd.pulver.com,这是测试SIP呼叫FreeWorldDialup提供的回拨服务。这个是用于认证请求的响应,这是公认的。这话机再次尝试并给出了“尝试”的PBX的状态。然后,PBX继续通过联系fwd.pulver.com邀请远程端口。在呼叫被正确建立之前,已经有很多消息发生了交换。

眼下的问题是单通。实际上,图形分析窗口显示IP电话发送实时协议(RTP)的语音数据包到因特网上的SIP终端,但它并没有显示在相反方向的数据流。为了确定为什么没有音频被送回,有必要更深入地读取SIP包。

SIP的功能之一就是建立两个终端之间的RTP数据流,它正是通过带有编码信息,IP地址,以及必要的VoIP工作端口号的会话描述协议(SDP)。需要注意的是,终端发出SDP不一定非得是互相交谈!在图3中,pbxhost主机和fwd.pulver.com 正通过互联网相会谈判,但他们各自指定不同的终端终止语音呼叫。RTP流是单向的,所以一个全双工会话需要在每个方向上都设置一个独立的RTP,用来区分两个SDP信息。

考虑到这一点,找出从pbxhost发送到fwd.pulver.com的SDP信息看起来有点难度。这个SDP消息将包含IP地址,UDP端口和 对端到本地IP电话会话的编码。但SDP消息在图形分析窗口将被SDP标记,来帮助你发现他们,该数据包的偏移量在图3中的0.490。当您单击图形分析窗口中的消息,相应的数据包将在 Wireshark 主窗口的数据包列表窗格中高亮显示。

Wireshark 还可以解析协议,那些协议被包含在当前分组细节窗口选中的数据包里。另外,还提供所述报文列表窗格中报文的摘要。解码是分层的,比如:以太网层,IP协议层,UDP协议 和 SIP协议。你可以通过点击窗口的左侧的箭头深入信息。图4显示的是与以上SDP(会话描述协议)相关字段的扩展信息。 

http://www.linuxjournal.com/files/linuxjournal.com/linuxjournal/articles/093/9398/9398f4.jpg(图4:包含SDP信息的SIP数据包在Wireshark图形界面中的显示)

每一行SDP消息,描述的是将要创建会话的特定属性,并遵循简单的形式,即:属性=值。其中”属性”是一个单个字母,而”值”是一个文本字符串。 Wireshark使用该协议的知识来添加一些额外的文本,比如属性的描述。对于VoIP会话,最重要的属性如下:
a—attributes,属性,例如编解码器和静音抑制
c—connection information,连接信息,包括IP地址期望的RTP流值
m—media description,间媒体描述,包括在RTP终端侦听的端口号
t—active time,工作时间。

从连接信息(c)行,可以确定正在发送数据的主机是IP为192.168.1.151的机器。m属性指定的是34008端口的RTP的期望值。通过属性,可以看到他提供 PCMU和PCMA的编码,包括GSM压缩格式和通过电话事件的按键音媒体格式。这个问题就是,提供的IP地址192.168.1.151是一个私有地址,无法到达网络。当远程主机尝试向192.168.1.151发送数据包时,数据包丢失,因为在网络上不存在这个路由。

完整起见,会话另一端的SDP信息在7.554时间线处。当提供的数据被确认后,在刚开始的SDP信息中,这两部电话开始相互向指定的IP和端口发送语音数据包,因为pbxhost提供了一个无效的地址fwd.pulver.com,语音呼叫的另一半是从未见过此这个请求的。

这是使用网关进行VoIP网络地址转换的常见问题,这个问题是可以根据需求,使用多种方法来解决的,当然这是另一个话题了!

至此,故障排除一直集中在网络电话的呼叫信令方面。一旦终端开始发送RTP流,网络质量又会成为话音质量的影响因素了。影响VoIP的网络因素有 延迟、波动(不稳定)、丢包。延迟即数据包从A终端到B终端所花费的时间。波动是数据序列包中延迟的变量。丢包是指从A终端发出,从未到达B终端的的报文数量。由于VoIP音频是通过实时UDP协议进行传输的,如果头域在乱序的数据包到达之前就已经打开了,那么这个数据包将被丢弃。

举最后一个案例,我发起一个通话,并捕获包括呼叫建立在内的数据包。Wireshark使用所述SIP信息以获得有关RTP分组流,使用RTP分析工具来获取更多详细信息。点击 Statistics→RTP→Show All Streams,Wireshark使用经过解码的数据包,以提供所有的音频对话和一些基本统计数据的列表,如图5所示。

http://www.linuxjournal.com/files/linuxjournal.com/linuxjournal/articles/093/9398/9398f5.jpg(图5:Wireshark捕获的RTP数据流信息列表)

上图中显示出了4个RTP数据流,因为每个音频流包括两个方向的数据流,并且 PBX 主机用来桥接两个话机。用来判断数据流是否有问题的是最后一个字段,即Pb列。如果显示”X”字样,则表示与VoIP相关问题。这条数据流的最大延迟是84毫秒,质量还算可以。最大波动值也算不错,11毫秒(单向延迟150毫秒,波动20毫秒 都是可以接受的极限范围),但 丢包却达到了将近20%,这是很可怕的。
点击并选中这条有问题的数据流,可做进一步的分析,然后 点击”Find Reverse”按钮,再选择会话的另一半,最后 点击”Analyze”按钮可以看到一个接一个的数据包流。丢失的数据包将会被标记上”Wrong sequence nr.”并显示出来,如图6所示。在该图上,还显示了一些有用的统计数据信息,比如当前的带宽,延迟 和 波动。

http://www.linuxjournal.com/files/linuxjournal.com/linuxjournal/articles/093/9398/9398f6.jpg(图6:有关大量丢包的RTP数据流分析)

图6可以清晰地表明一些网络问题,因为丢包异常(稳定的带宽和固定间隔的丢包可以有力证明队列优先级超负荷或者加强了网络设备的监管)。这些丢包在反方向是看不到的,因为捕获包是在靠近会话的源端。点击”Save as CSV…”按钮,你可以保存窗口的内容。

网络问题是比较难解决的,因为它们需要与网络设备和其它潜在方的交互。如果你的VoIP环境不使用互联网,你可以在网络上捕获不同终端的数据包来查找是哪些因素导致的。如果通话数据流是通过互联网进行传输,你必须检查你与互联网的连接,或者需要运营商配合工作。

RTP分析可使用具有特殊配置的专用系统。如果遇到Wireshark的不识别的信令,它将不能够解码所有的RTP信息。点击 Edit->Preferences->Protocols->RTP 按钮,并试图检查解码会话以外的RTP数据包。分析可能会有点慢,但Wireshark的将尝试确定每一个属于RTP流的UDP数据包,让您使用RTP工具来查看通话。

我们在这里检测的最后一个特性是监听语音通话内容的能力。在打开的流分析窗口上点击”Save Payload…”按钮,选择.au格式的文件,并提供一个文件名,然后点击”OK”按钮,语音呼叫将自动保存到硬盘驱动器上。录音文件可以使用 XMMS,soxplay或其他音频播放器进行播放。

解决VoIP的问题不同于大多数其他网络故障诊断,因为独立的信令和语音协议,以及语音的实时性。这三个例子体现Wireshark的重要功能,他可以通过分析SIP呼叫的建立和RTP语音流来做专门的处理。对手的这些商业产品的功能,可以使你找到VoIP问题的根源所在。

 

呼叫中心使用技巧 之 Ngrep捕获系统数据包

By | 呼叫中心使用技巧, 开发者博客 | No Comments

Ngrep:致力于支持绝大部分的GNU的共同特性,将他们应用于网络层。它是一个抓包工具,允许指定各种规则或16进制表达式来匹配数据包的有效载荷。目前它可以识别到 IPv4/6, TCP, UDP, ICMPv4/6, IGMP和整个以太网的PPPSLIPFDDI,令牌环和空接口,并支持与常见抓包工具同样的方式BPF过滤逻辑,如:tcpdump 和 snoop 。   —-by Jordan Ritter

如何使用?原文阅读:点击这里

在下列实施例中,除特殊说明外,均假定使用eth0网络接口

例:基本数据包的捕获

$ ngrep -d any port 25
$ ngrep -d any 'error' port syslog
$ ngrep -wi -d any 'user|pass' port 21

例:调试HTTP交互

$ ngrep port 80
$ ngrep -W byline port 80

例:处理PCAP转储文件寻找.dump格式的包

$ ngrep -O /tmp/dns.dump -d any -T port domain
$ ngrep -w 'm' -I /tmp/dns.dump
$ ngrep -tD ns3 -I /tmp/dns.dump
$ ngrep -I /tmp/dns.dump port 80
监听所有无法通过22端口的流量(即SSH)
$ ngrep not port 22 | strings 8

监听来自某个主机的流量

$ ngrep host 192.168.0.103

捕获并显示从eth0接口呼入/呼出的HTTP(TCP/80) GET方法或POST方法参数的网络流量

$ ngrep -l -q -d eth0 -i "^GET |^POST " tcp and port 80

捕获并显示从eth0接口呼入/呼出HTTP(TCP/80)含有”User-Agent”字符串的网络流量

$ ngrep -l -q -d eth0 -i "User-Agent: " tcp and port 80

捕获并显示从eth0接口呼入/呼出的DNS(UDP/53)查询和响应的网络流量

$ ngrep -l -q -d eth0 -i "" udp and port 53

显示用SELECT语句查询你的MySQL服务器的语句和结果

$ ngrep -d eth0 -i 'select' port 3306

 

显示用SELECT语句查询你的MySQL服务器的语句和结果,并且查询会返回以下结果:

$ mysql -B -e 'select * from foo;' sandbox
 id	name	age
 1	Bob	23
 2	Alice	20
通过ngrep查看网络流量
$ ngrep -d lo -wi "" port 3306
interface: lo (127.0.0.0/255.0.0.0)
filter: (ip or ip6) and ( port 3306 )
match: ((^\W)|(\W$)|(\W\W))
####
T 127.0.0.1:3306 -> 127.0.0.1:55741 [AP]
[...
5.5.43-0ubuntu0.14.04.1.....!!!#+N'v...................?wZ=bUblw5=t.mysql_native_password.
##
T 127.0.0.1:55741 -> 127.0.0.1:3306 [AP]
[...........!.......................sandusr...e....=_.P`..W...mQ.sandbox.mysql_native_password.
##
T 127.0.0.1:3306 -> 127.0.0.1:55741 [AP]
...........
#
T 127.0.0.1:55741 -> 127.0.0.1:3306 [AP]
!....select @@version_comment limit 1
#
T 127.0.0.1:3306 -> 127.0.0.1:55741 [AP]
.....'....def....@@version_comment..!.........................(Ubuntu).........
#
T 127.0.0.1:55741 -> 127.0.0.1:3306 [AP]
.....select * from foo
#
T 127.0.0.1:3306 -> 127.0.0.1:55741 [AP]
.....'....def.sandbox.foo.foo.id.id.?.......B...+....def.sandbox.foo.foo.name.name.!...........)....def.sandbox.foo.foo.age.age.?.................."......1.Bob.23.....2.Alice.20.......".
#
T 127.0.0.1:55741 -> 127.0.0.1:3306 [AP]
.....
###
监听所有发生报错“error“字样的syslog系统日志的网络流量(注:ngrep’知道如何将服务端口名称转换成端口号。例如,可以在/etc/services 中找到)
$ ngrep -d any "error" port syslog

监听特殊的数据流

# Start `ngrep`:
$ ngrep -t '^(GET|POST|HEAD) ' 'dst host 67.207.152.20 and tcp and dst port 80'
# Then send a header request to a specific URL:
$ curl -I xtof.ch
interface: wlan0 (192.168.1.0/255.255.255.0)
filter: (ip or ip6) and ( dst host 67.207.152.20 and tcp and dst port 80 )
match: ^(GET|POST|HEAD) 
###
T 2015/06/11 12:05:09.321783 192.168.1.15:34116 -> 67.207.152.20:80 [AP]
  HEAD / HTTP/1.1..User-Agent: curl/7.35.0..Host: xtof.ch..Accept: */*....                                                                                                                                                          
###

或者,用新的命令行终止系统响应:

$ ngrep -t '^(GET|POST|HEAD) ' 'dst host 67.207.152.20 and tcp and dst port 80' -W byline
interface: wlan0 (192.168.1.0/255.255.255.0)
filter: (ip or ip6) and ( dst host 67.207.152.20 and tcp and dst port 80 )
match: ^(GET|POST|HEAD) 
###
T 2015/06/11 12:11:07.697041 192.168.1.15:34153 -> 67.207.152.20:80 [AP]
HEAD / HTTP/1.1.
User-Agent: curl/7.35.0.
Host: xtof.ch.
Accept: */*.
.

###

 

 

 

呼叫中心使用技巧 之 Tcpdump捕获系统数据包

By | 呼叫中心使用技巧, 开发者博客 | No Comments

Tcpdump:是常用的命令行捕获分析器。它允许用户捕获并显示TCP/IP和其他正通过网络发送或接收的隶属于该计算机的数据包。还可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。

  • 1.用法案例

注:在以下案例中,我用类似 192.x.x.x IP地址 来代替实际的IP,用类似于 example.com 域名 代替实际域名。然而 例子中的本地主机名是“stine”,IP地址使用192.168.0.14”。此外,某些输出出于说明目的已被删除修改。

从一个特定的以太网接口抓包:

$ tcpdump -i eth0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
13:40:54.940904 IP stine.local.15342 > example.com.domain: 46527+ PTR? 14.0.168.192.in-addr.arpa. (42)
13:40:54.940918 IP stine.local.15342 > example.com.domain: 46527+ PTR? 14.0.168.192.in-addr.arpa. (42)
13:40:54.963406 IP example.com.domain > stine.local.15342: 46527 NXDomain* 0/1/0 (119)
13:40:54.964613 IP example.com.domain > stine.local.15342: 46527 NXDomain* 0/1/0 (119)
13:40:54.964656 IP stine.local > example.com: ICMP stine.local udp port 15342 unreachable, length 15
...
9 packets captured
32 packets received by filter
0 packets dropped by kernel

注意:当你不带任何选项执行tcpdump”时,它会捕获所有流经的所有接口的报文。而”-i”选项则是用来捕获一个既定的以太网接口进行过滤。

仅捕获N个流经eth0接口的数据包

$ tcpdump -c 2 -i eth0
14:05:49.749471 IP6 fe80::21a:d6ff:fe2b:4641 > ip6-allnodes: ICMP6, router advertisement, length 56
14:05:49.711275 IP stine.local.62198 > example.com.domain: 38572+ PTR? 1.4.6.4.2.6.e....0.8.e.f.ip6.arpa. (90)

用ASCII码显示捕获的数据包:

$ tcpdump -A -i eth0

捕获数据包并将其输出写入到二进制文件(利于今后对包的分析,如 wireshark):

$ tcpdump -w tcpdump-20140103.pcap -i eth0

从以前保存的文件中的读取数据包(例如,用以前的命令):

$ tcpdump -tttt -r tcpdump-20140103.pcap

用他们的实际IP地址来抓包(而不使用默认的反向DNS(RDNS)查找):

$ tcpdump -n -i eth0

使用完整时间戳捕捉数据包

$ tcpdump -tttt -n -i eth0
2014-01-03 14:19:16.882379 IP6 fe80::21a:d6ff:fe2b:4641 > ff02::1: ICMP6, router advertisement, length 56
2014-01-03 14:19:19.882169 IP6 fe80::21a:d6ff:fe2b:4641 > ff02::1: ICMP6, router advertisement, length 56
捕获大于N个字节的数据包
$ tcpdump -i eth0 greater 1024
捕获小于N个字节的数据包
$ tcpdump -i eth0 less 1024
只捕获特定协议类型的数据包(如:IPIP6ARPRARPDECNET,TCP,UDP,FDDI,TR,WLAN等):
$ tcpdump -i eth0 arp
捕获所有的数据包,但是过滤掉某些协议的(例如,ARP和“RARP”)
$ tcpdump -i eth0 not arp and not rarp
注意:可以通过,”非”组合条件来实现。
捕获特定端口的数据包流:
$ tcpdump -i eth0 port 22
 捕获特定目的IP和端口的数据包:
$ tcpdump -i eth0 dst 192.x.x.x and port 22
  • 2.从Tcpdump操作手册派生出的案例

打印所有到达或从sundown发出的包内容:

$ tcpdump host sundown
打印helios和hot之间,或者helios和ace之间的包:
$ tcpdump host helios and \( hot or ace \)
 打印所有ace和除helios的任意主机之间的IP包:
$ tcpdump ip host ace and not helios

打印本地主机与Berkeley网络上的主机之间的所有通信数据包(注: ucb-ether, 此处可理解为’Berkeley网络’的网络地址,此表达式最原始的含义可表达为: 打印网络地址为ucb-ether的所有数据包)

tcpdump net ucb-ether

打印所有通过网关snup的ftp数据包(注意, 表达式被单引号括起来了, 这可以防止shell对其中的括号进行错误解析)

tcpdump 'gateway snup and (port ftp or ftp-data)'

打印所有源地址或目标地址是本地主机的IP数据包(如果本地网络通过网关连到了另一网络, 则另一网络并不能算作本地网络.(nt: 此句翻译曲折,需补充).localnet 实际使用时要真正替换成本地网络的名字)

tcpdump ip and not net localnet

打印TCP会话中的的开始和结束数据包, 并且数据包的源或目的不是本地网络上的主机.(注: localnet, 实际使用时要真正替换成本地网络的名字))

tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net localnet'

打印所有源或目的端口是80, 网络层协议为IPv4, 并且含有数据,而不是SYN,FIN以及ACK-only等不含数据的数据包.(ipv6的版本的表达式可做练习)(注: 可理解为, ip[2:2]表示整个ip数据包的长度, (ip[0]&0xf)<<2)表示ip数据包包头的长度(ip[0]&0xf代表包中的IHL域, 而此域的单位为32bit, 要换算成字节数需要乘以4, 即左移2. (tcp[12]&0xf0)>>4 表示tcp头的长度, 此域的单位也是32bit, 换算成比特数为 ((tcp[12]&0xf0) >> 4)<<2,即 ((tcp[12]&0xf0)>>2). ((ip[2:2] – ((ip[0]&0xf)<<2)) – ((tcp[12]&0xf0)>>2)) != 0 表示: 整个ip数据包的长度减去ip头的长度,再减去
tcp头的长度不为0, 这就意味着, ip数据包中确实是有数据.对于ipv6版本只需考虑ipv6头中的’Payload Length’ 与 ‘tcp头的长度’的差值, 并且其中表达方式’ip[]’需换成’ip6[]’.)

tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

打印长度超过576字节, 并且网关地址是snup的IP数据包

tcpdump 'gateway snup and ip[2:2] > 576'

打印所有IP层广播或多播的数据包, 但不是物理以太网层的广播或多播数据报

tcpdump 'ether[0] & 1 = 0 and ip[16] >= 224'

打印除’echo request’和’echo reply’类型以外的ICMP数据包( 比如,需要打印所有非ping 程序产生的数据包时可用到此表达式 .(注: ‘echo reuqest’ 与 ‘echo reply’ 这两种类型的ICMP数据包通常由ping程序产生))

tcpdump 'icmp[icmptype] != icmp-echo and icmp[icmptype] != icmp-echoreply'
  • 3.过滤器
    TCP报头格式(TCP V4)(注一个刻度代表一个位的位置)
    源端口(即,源端口号):16位
    目的地端口(即,目的地端口号):16位
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          Source Port          |       Destination Port        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                        Sequence Number                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Acknowledgment Number                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Data |           |U|A|P|R|S|F|                               |
| Offset| Reserved  |R|C|S|S|Y|I|            Window             |
|       |           |G|K|H|T|N|N|                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           Checksum            |         Urgent Pointer        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Options                    |    Padding    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                             data                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

控制位:6位(从左至右):
URG紧急指针字段显著
ACK确认字段显著
PSH推送功能
RST:重置连接
SYN:同步序列号
FIN:从发送方没有更多的数据

请注意以下联想记忆
OSI模型All People Seem To Need Data Processing (所有的人看起来都需要数据处理)
层数:7.应用层=> 6.表示层=>5.会话层=>4.传输层=>3.网络层=>2.数据链路层=>1.物理层
TCP标志Unskilled Attackers Pester Real Security Folks
标志:
Unskilled = URG(紧急指针有效标志)
Attackers = ACK(应答域有效标志)
Pester = PSH(推送标志)
Real = RST(重置连接标志)
Security = SYN(同步序列号标志)
Folks = FIN(数据结束标志)
U  A  P R S F
32 16 8 4 2 1
 获取所有的SYN的数据包:
$ tcpdump 'tcp[13] & 2 != 0'
如何读取用”tcpdump ‘tcp[13] & 2 != 0″捕获的SYN数据包:抓取TCP头部的前13个字节并且第2位不为0的标志,其中”2″指字符串”UAPRSF”从右往左第2位(SYN= S=2)。因此,该命令只捕获SYN包。
通过变量过滤或者捕捉 控制位”U A P R S F” 的数据包(即,用XXX标志TCP的数据包):
$ tcpdump 'tcp[13] & 32!=0' # OR: 'tcp[13] & 32 == 32' # Capture all URG (URGENT) packets
$ tcpdump 'tcp[13] & 16!=0' # OR: 'tcp[13] & 16 == 16' # Capture all ACK (ACKNOWLEDGE) packets
$ tcpdump 'tcp[13] & 8!=0'  # OR: 'tcp[13] & 8 == 8'   # Capture all PSH (PUSH) packets
$ tcpdump 'tcp[13] & 4!=0'  # OR: 'tcp[13] & 4 == 4'   # Capture all RST (RESET) packets
$ tcpdump 'tcp[13] & 2!=0'  # OR: 'tcp[13] & 2 == 2'   # Capture all SYN (SYNCHRONIZE) packets
$ tcpdump 'tcp[13] & 1!=0'  # OR: 'tcp[13] & 1 == 1'   # Capture all FIN (FINISH) packets
$ tcpdump 'tcp[13]=18'      # OR: 'tcp[13] == 18'      # Capture all SYNACK (SYNCHRONIZE/ACKNOWLEDGE) packets
其他常用的过滤器:
'ether host 00:00:00:00:00:00'  # (replace with your MAC) Traffic to or from your MAC address
'!ether host 00:00:00:00:00:00' # (replace with your MAC) Traffic not to or from your MAC address
'broadcast'                     # Broadcast traffic only
icmp                            # ICMP traffic
'icmp[0:2] == 0x0301'           # ICMP destination unreachable, host unreachable
ip                              # IPv4 traffic only
ip6                             # IPv6 traffic only
udp                             # UDP traffic only
捕获所有带有”RST”和”SYN”标志的数据包(R+S = 4+2 = 6):
$ tcpdump 'tcp[13] = 6'
Capture TCP Flags 的数据包:
$ tcpdump 'tcp[tcpflags] & tcp-syn != 0'
注意:除了使用比特/字节,我们也可以通过名称过滤,如下:
显示所有带TCP标志的数据包,其中TCPRST位设置(即所有TCP RST包)为:
$ tcpdump 'tcp[tcpflags] & (tcp-rst) != 0'
  • 4.常用过滤器表达式格式
host A.B.C.D — 所有使用IP地址为A.B.C.D的数据源目的数据包
net A.B.C/n — 所有以IP地址为A.B.C.n 为数据源或者目的地址的数据包
port X — 所有使用X为源端口或目的端口的 TCP 或 UDP 数据包
ether broadcast — 所有以以太网广播为其目标的所有数据包
tcp — 所有 TCP 的数据包
udp — 所有 UDP 的数据包
icmp — 所有 ICMP 的数据包
arp — 所有 ARP 的数据包
索克维尔旗下产品 · CXMind AI联络中心 · WCC全渠道联络中心