此产品的文档集力求使用非歧视性语言。在本文档集中,非歧视性语言是指不隐含针对年龄、残障、性别、种族身份、族群身份、性取向、社会经济地位和交叉性的歧视的语言。由于产品软件的用户界面中使用的硬编码语言、基于 RFP 文档使用的语言或引用的第三方产品使用的语言,文档中可能无法确保完全使用非歧视性语言。 深入了解思科如何使用包容性语言。
思科采用人工翻译与机器翻译相结合的方式将此文档翻译成不同语言,希望全球的用户都能通过各自的语言得到支持性的内容。 请注意:即使是最好的机器翻译,其准确度也不及专业翻译人员的水平。 Cisco Systems, Inc. 对于翻译的准确性不承担任何责任,并建议您总是参考英文原始文档(已提供链接)。
本文档的目的是提供对通常称为呼叫进度音或简称CPtone的音频回铃音的深入说明。
本文档将尝试讨论并分析回铃在任何和所有IP语音(VoIP)和模拟信令协议中的工作方式。
尽管阅读本文档无需正式前提条件;写这篇文章时希望读者已经对用于建立和连接电话呼叫的底层语音信令协议有一些工作知识。本文档中多次引用这些协议。
信令协议:会话初始协议(SIP)、H323(h225 / h245)、媒体网关控制协议(MGCP)、瘦客户端控制协议(SCCP)、ISDN Q931、E1 R2。
媒体协议:实时协议(RTP)、语音编解码器、视频编解码器。
模拟技术:耳和嘴(E&M)、外汇交换用户(FXS)、外汇局(FXO)和E1 R2。
本文档中的信息基于以下软件和硬件:
运行任何IOS/IOS版本的Cisco IOS和IOS-XE网关(2800 / 3800 / 2900 / 3900 / 4300 / 4400 / CSR1000v / ASR100X)-XE。
Cisco Unified Communications Manger(CUCM)9.X及更高版本
Cisco Unity Connection(CUC)9.x及更高版本
客户语音门户(CVP)9.x及更高版本
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解任何命令或配置的潜在影响。
Rinback不是VoIP或模拟协议,但它存在于每部由手机、固定电话、台式电话和软客户端制作的电话中。因此,了解其工作原理、来源以及如何排除回铃问题是协作工程师工具套件的重要部分。
回铃是向拨打电话的人播放的一系列铃声,让主叫方知道被叫方实际正在振铃。由于呼叫方会认为被叫方实际上没有振铃,因此没有铃声将被视为一个坏信号。回铃/CPtones因国家/地区而异。如果某人要拨打美国号码,则会播放一组不同的回铃,而不是同一人拨打英国号码。
在大多数情况下,回铃由远程被叫方播放到主叫方。为了实现此目的,音频必须向后方向(呼叫到呼叫)切通。
本文档将检查不同协议及其如何协商回铃,以及使用该协议时如何控制回铃。
ISDN Q.931利用了在Q.931信令中可以查看的进度指示符(PI)的概念。通过运行debug isdn q931,在思科语音网关上可以看到此消息。进度指示器可以在“警报”、“进度”、“呼叫继续”、“设置确认”和“断开连接”消息中发送。进度指示器值1或8将剪切回铃和错误消息的向后音频。0、2和3的进度指示器值不会通过向后介质切断。如果远程被叫方无法回铃,则分配给ISDN信道的DSP可以回铃到ISDN线路。
ISDN回铃的已知警告
Q931进度指标
价值 | 定义 | Q.931消息 |
进度指示器= 0 | 带外 | 设置 |
进度指示器= 1 | 呼叫不是终端ISDN。进一步的呼叫进度信息可能在带内可用 | 警报、连接、进度、设置 |
进度指示器= 2 | 目的地址是非ISDN地址。 | 警报、连接、进度 |
进度指示器= 3 | 目的地址是非ISDN地址。 | 设置 |
进度指示器= 8 | 带内信息或适当的模式现在可用。 | 警报、连接、进度、断开 |
ISDN Q.931带内进度指示器的示例
Jun 22 15:16:36.790: ISDN Se0/2/0:23 Q931: TX -> ALERTING pd = 8 callref = 0x80A3 Progress Ind i = 0x8188 - In-band info or appropriate now available
Nov 28 21:25:41.754: ISDN Se0/1/1:15 Q931: TX -> PROGRESS pd = 8 callref = 0x805C Progress Ind i = 0x8188 - In-band info or appropriate now available
配置
默认情况下,ISDN回铃工作可靠,因此无需额外配置。但是,在存在互操作性要求时,存在用于更改行为的命令。
手动更改progress_ind值。
重要说明:
完整命令语法:http://www.cisco.com/c/en/us/td/docs/ios-xml/ios/voice/vcr3/vcr3-cr-book/vcr-p2.html#wp1001337490
! progress_ind { alert | callproc } { enable pi-number | disable | strip [strip-pi-number] } progress_ind { connect | disconnect | progress | setup } { enable pi-number | disable } ! dial-peer voice 1 pots destination-pattern 8675309$ progress_ind alert enable 8 progress_ind callproc enable 8 progress_ind connect enable 8 progress_ind disconnect enable 8 progress_ind progress enable 8 progress_ind progress setup 1 ! dial-peer voice 2 pots destination-pattern 8675309$ progress_ind alert strip 8 progress_ind callproc strip 8 ! dial-peer voice 3 pots destination-pattern 8675309$ progress_ind alert disable progress_ind callproc disable progress_ind connect disable progress_ind disconnect disable progress_ind progress disable progress_ind progress disable !
要求语音网关始终发送警报消息
如果管理员需要语音网关始终在连接之前发送警报消息,则可以在串行接口下配置isdn send-alerting命令。默认情况下禁用此功能
完整命令语法: http://www.cisco.com/c/en/us/td/docs/ios/dial/command/reference/dia-cr-book/dia_i2.html
! interface Serial0/0/0:23 isdn send-alerting !
调试
debug isdn q931 debug voip ccapi inout
H.323,更具体地说,H.225 VOIP信令协议建立在ISDN的Q.931协议之上。因此,它们有许多共同的元素。在H.323/H.225中,存在的许多命令和Q.931回铃后的想法都存在。这包括进度指示器值、消息类型和命令。
Rinback的示例H.225消息
*Jun 22 11:32:52.080: H225.0 INCOMING PDU ::= value H323_UserInformation ::= { h323-uu-pdu { h323-message-body alerting :
配置
H.323和H.225无需配置即用回铃。但是,ISDN Q.931部分中指定的命令也适用于H.323回铃。此外,还有可用于H.323信令的命令。
命令 | 定义 |
语音呼叫发送警报 |
|
voice rtp send-recv | 在两个方向打开RTP音频通道。 |
! dial-peer voice 1 voip tone ringback alert-no-pi ! dial-peer voice 2 pots tone ringback alert-no-pi ! |
|
CUCM配置
CUCM>中存在某些特定的回铃H.323配置
导航路径:CUCM > System > Service Parameters > Pub > CallManager > Send H225 User Info Message > Use ANN For Ringback
价值 | 定义 |
使用ANN进行回铃 | 使用Cisco SCCP信号器播放回铃音(在Cisco CallManager版本4.0及更高版本中提供) |
呼叫进度音的用户信息 | 将H.225用户信息消息发送到IOS网关以播放回铃音或保持音(这是默认设置)。 |
呼叫进度音的H225信息 | 将H.225信息消息发送到IOS网关以播放回铃音或保持音 |
调试
debug voip ccapi inout debug h225 asn1
这也是有关H.323回铃故障排除的重要文档
http://www.cisco.com/c/en/us/support/docs/voice/h323/22983-ringback.html
SIP回铃通常涉及两条消息之一。180和183。RFC 3261规定,在INVITE之后可能收到这些1XX消息中的0、1或以上,因此不违反RFC不接收这些消息。如果未收到任何回铃,则不会回铃。因此,如果呼叫方预期以某种形式回铃,则需要180或183。
180和183都可以包含会话描述协议(SDP),CUBE将其视为早期介质。当SDP存在于18X消息CUBE中时,CUCM将期望发送带SDP的18X的远端设备从SDP中指定的IP播放回铃。在CUCM或CUBE中,没有更改此行为的配置。某些设备在发送回铃之前,需要在18X消息上进行PRACK(rel1xx)交换。
RFC3960深入介绍有关SIP回铃信令的更多详细信息。
请注意,对于SIP到ISDN和SIP到H.323,使用SDP映射到带内进度指示的18X呼叫,而不使用SDP的18X则映射到警报呼叫。
使用SDP的示例183
SIP/2.0 183 Session Progress Via: SIP/2.0/TCP 10.10.10.10:5060;branch=z9hG4bK6350828126b1a From: <sip:8675309@10.10.10.10>;tag=85512413~796a13c3-49d2-74ec-19db-f4258d9eef64-40934478 To: <sip:123456789@10.10.10.1>;tag=BA0FA04C-97B Date: Wed, 22 Jun 2016 11:32:51 GMT Call-ID: 575b0c00-76a177e1-57ea4-2009000a CSeq: 101 INVITE Allow: INVITE, OPTIONS, BYE, CANCEL, ACK, PRACK, UPDATE, REFER, SUBSCRIBE, NOTIFY, INFO, REGISTER Allow-Events: telephone-event Remote-Party-ID: <sip:8675309@10.10.10.10>;party=called;screen=no;privacy=off Contact: <sip:8675309@10.10.10.10:5060;transport=tcp> Supported: sdp-anat Server: Cisco-SIPGateway/IOS-15.4.3.M2 Content-Type: application/sdp Content-Disposition: session;handling=required Content-Length: 250 v=0 o=CiscoSystemsSIP-GW-UserAgent 9474 3602 IN IP4 172.16.37.129 s=SIP Call c=IN IP4 10.10.10.10 t=0 0 m=audio 17606 RTP/AVP 8 101 c=IN IP4 10.10.10.10 a=rtpmap:8 PCMA/8000 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-16 a=ptime:20
示例180,不带SDP
SIP/2.0 180 Ringing Via: SIP/2.0/TCP 10.10.10.10:5060;branch=z9hG4bKd34f2a2080 From: <sip:2002@10.10.10.10>;tag=17170~21823a7a-6ec3-4a2f-9307-df98bca4b011-23314477 To: <sip:3001@10.10.10.1> ;tag=1ADFB1AC-3CB Date: Tue, 26 Jan 2016 22:05:06 GMT Call-ID: d859d700-6a71ed8f-26-a21030e CSeq: 102 INVITE Allow: INVITE, OPTIONS, BYE, CANCEL, ACK, PRACK, UPDATE, REFER, SUBSCRIBE, NOTIFY, INFO, REGISTER Allow-Events: telephone-event Remote-Party-ID: < sip:3001@10.10.10.10> ;party=called;screen=yes;privacy=off Contact: < sip:3001@10.10.10.10:5060;transport=tcp> Server: Cisco-SIPGateway/IOS-12.x Content-Length: 0
配置
命令 | 定义 |
! sip-ua disable-early-media 180 ! |
用于指定为180个响应提供哪种呼叫处理(早期媒体或本地回铃),其中180个响应具有会话描述协议(SDP) |
! 语音服务VOIP SIP 块{180 | 181 | 183} sdp {present |缺席 ! |
阻止与回铃有关的特定消息 |
SIP配置文件,将183会话正在进行中更改为180振铃。
! voice service voip sip sip-profiles inbound ! voice class sip-profiles 777 response 183 sip-header SIP-StatusLine modify "SIP/2.0 183 Session Progress" "SIP/2.0 180 Ringing" ! dial-peer voice 777 voip voice-class sip profile 777 inbound !
在CUCM中启用PRACK(rel1xx)。
系统菜单路径:设备>设备设置> Sip配置文件>选择SIP配置文件> SIP Rel1XX
选项
在网关上启用PRACK(rel1xx)
调试
debug voip ccapi inout debug ccsip messages
MGCP是控制FXS和ISDN T1/E1端口的VOIP端。您可以检查CUCM是否向特定端口发送正确的回铃信令,但无需进行太多配置。
从CUCM到VG224 FXS端口的MGCP回铃消息示例
Apr 29 01:01:38.264: MGCP Packet received from 14.50.244.2:2427---> RQNT 37 AALN/S2/1@vg224 MGCP 0.1 X: 1b R: L/hu S: G/rt Q: process,loop <---
S:=信号事件和g/rt =通用包/回铃音
CUCM 配置
系统菜单路径:系统>服务参数>发布> CallManager>禁用警报进度指示器
网关配置
调试
debug mgcp packet
debug voip ccapi nout
debug vpm signal debug voip vtsp session
对于注册到CUCM或CME的SCCP IP电话,会向IP电话发送“StartToneMessage”,该消息会告知本地电话向呼叫者播放回铃。
所有模拟语音端口的回铃调试:
debug voip ccapi inout debug vpm signal debug voip vtsp session
GATEWAY(config)#voice-port 0/2/0 GATEWAY(config-voiceport)#cptone ? locale 2 letter ISO-3166 country code AR Argentina IN India PA Panama AU Australia ID Indonesia PE Peru AT Austria IE Ireland PH Philippines BE Belgium IL Israel PL Poland BR Brazil IT Italy PT Portugal CA Canada JP Japan RU Russian Federation CL Chile JO Jordan SA Saudi Arabia CN China KE Kenya SG Singapore CO Colombia KR Korea Republic SK Slovakia C1 Custom1 KW Kuwait SI Slovenia C2 Custom2 LB Lebanon ZA South Africa CY Cyprus LU Luxembourg ES Spain CZ Czech Republic MY Malaysia SE Sweden DK Denmark MT Malta CH Switzerland EG Egypt MX Mexico TW Taiwan FI Finland NP Nepal TH Thailand FR France NL Netherlands TR Turkey DE Germany NZ New Zealand AE United Arab Emirates GH Ghana NG Nigeria GB United Kingdom GR Greece NO Norway US United States HK Hong Kong OM Oman VE Venezuela HU Hungary PK Pakistan ZW Zimbabwe IS Iceland
显示回铃的E1 R2呼叫的debug ccapi inout、debug vpm signal和debug voip vtsp会话的输出。
042446: May 12 14:51:15.816 GMT: //2475488/47922BA59254/CCAPI/cc_api_call_alert: Interface=0x3ECE2770, Progress Indication=NULL(0), Signal Indication=SIGNAL RINGBACK(1) 042447: May 12 14:51:15.816 GMT: //2475488/47922BA59254/CCAPI/cc_api_call_alert: Call Entry(Retry Count=0, Responsed=TRUE) 042448: May 12 14:51:15.816 GMT: //2475487/47922BA59254/CCAPI/ccCallAlert: Progress Indication=NULL(0), Signal Indication=SIGNAL RINGBACK(1) 042449: May 12 14:51:15.816 GMT: //2475487/47922BA59254/CCAPI/ccCallAlert: Call Entry(Responsed=TRUE, Alert Sent=TRUE)htsp_alert_notify 042450: May 12 14:51:15.816 GMT: r2_reg_event_proc(0/0/1:1(1)) ALERTING RECEIVED 042451: May 12 14:51:15.816 GMT: R2 Incoming Voice(0/1): DSX (E1 0/0/1:0): STATE: R2_IN_WAIT_REMOTE_ALERT R2 Got Event R2_ALERTING 042452: May 12 14:51:15.816 GMT: rx R2_ALERTING in r2_comp_wait_remote_alert 042453: May 12 14:51:15.816 GMT: r2_reg_generate_digits(0/0/1:1(1)): Tx digit '1' 042454: May 12 14:51:16.672 GMT: //2475487/47922BA59254/VTSP:(0/0/1:1):0:1:1/vtsp_report_cas_digit: End Digit=2, Mode=CC_TONE_R2_MF_BACKWARD_MODE 042455: May 12 14:51:16.672 GMT: htsp_digit_ready(0/0/1:1(1)): Rx digit='#'
CVP将通过发送具有特定号码的INVITE来向VXML网关发出回铃信号。
示例:9191
此邀请的SDP将是我们希望VXML网关发送回铃的位置。
这将匹配配置了回铃服务的拨号对等体。
环回直通的延迟通常是由底层信令的延迟引起的。需要参考特定设备和所使用的协议的调试和日志,以找出信令延迟的原因。
对于拨号对等体和拨号对等体重新查找上的语音网关信令故障,当设备尝试为呼叫找到下一跳时,可能会造成相当大的延迟。
正如您在整个文档中所看到的,收集ccapi调试对于ANY回铃问题非常重要。
呼叫控制API(CCAPI)负责桥接语音网关上呼叫的两端,因此也将从一个呼叫段回铃到另一个呼叫段的回铃拼接在一起。
CCAPI的回铃调试输出示例
Feb 2 21:27:18.884: //22/9285F23E801B/CCAPI/cc_api_call_alert: Interface=0x3AB79E8, Progress Indication=NULL(0), Signal Indication=SIGNAL RINGBACK(1)
Jun 23 13:32:34 EDT: //1204/77232A800001/CCAPI/cc_api_call_cut_progress: Interface=0x7FD5FD1CEE10, Progress Indication=INBAND(8), Signal Indication=INTERCEPT(2), Cause Value=0 Jun 23 13:32:34 EDT: //1203/77232A800001/CCAPI/ccCallCutProgress: Progress Indication=INBAND(8), Signal Indication=INTERCEPT(2), Cause Value=0 Voice Call Send Alert=FALSE, Call Entry(Alert Sent=FALSE)
Jun 22 11:32:52.096: //204706/575B0C000000/CCAPI/ccCallAlert: Progress Indication=INBAND(8), Signal Indication=SIGNAL RINGBACK(1)
Nov 28 21:25:41.748: //43495/0C82F2F380B7/CCAPI/cc_api_call_cut_progress: Interface=0x7F8028B60F90, Progress Indication=INBAND(8), Signal Indication=SIGNAL RINGBACK(1), Cause Value=0 Nov 28 21:25:41.749: //43494/0C82F2F380B7/CCAPI/ccCallCutProgress: Progress Indication=INBAND(8), Signal Indication=SIGNAL RINGBACK(1), Cause Value=0 Voice Call Send Alert=FALSE, Call Entry(Alert Sent=FALSE) Nov 28 21:25:41.749: //43494/0C82F2F380B7/CCAPI/ccGenerateToneInfo: Stop Tone On Digit=FALSE, Tone=Null, Tone Direction=Network, Params=0x0, Call Id=43494
根据您的信号,一切看起来都可能正常。但可能仍没有回击。如果信号表明特定方要向您的设备发送回铃,则有必要从语音端口获取数据包捕获或PCM捕获,以验证回铃是否实际播放。
从源和目的地检查第3层路由也很重要。如果它们无法将RTP数据包发送到您的设备,您将听不到音频。此外,如果无法将数据包发送到特定设备,则它们不会听到您的回铃。
有用的第3层路由命令
show ip route show ip cef <remote_ip> ping a.b.c.d source <interface> traceroute a.b.c.d
PCM捕获文档:
http://www.cisco.com/c/en/us/support/docs/voice/h323/116078-technologies-technote-commandrefe.html