简体   繁体   English

带有SIPP测试的DTMF数字

[英]DTMF digit with SIPP test

I am trying to send the DTMF digits through sipp to IVR application 我正在尝试通过Sipp将DTMF数字发送到IVR应用程序

This is my sip xml and works good except action part... 这是我的sip xml,除了操作部分外效果很好。

Call is successful but DTMF digit 1 is not received. 呼叫成功,但未接收到DTMF数字1。 It is showing that digit received as null..not getting the actual problem is there any configuration for this pcap ?or anytthing problem with the script? 这表明接收到的数字为null ..没有得到实际的问题这个pcap是否有任何配置?或者脚本是否有任何问题?

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE scenario SYSTEM "sipp.dtd">
<scenario name="UAC with media">
    <send retrans="500">
<![CDATA[

  INVITE sip:[field0]@[remote_ip]:[remote_port] SIP/2.0
  Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
  From: sipp <sip:[field1]@[local_ip]:[local_port]>;tag=[call_number]
  To: sut <sip:[field0]@[remote_ip]:[remote_port]>
  Call-ID: [call_id]
  CSeq: 1 INVITE
  Contact: sip:[field1]@[local_ip]:[local_port]
  Max-Forwards: 70
  Subject: Performance Test
  Content-Type: application/sdp
  Content-Length: [len]

  v=0
  o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]
  s=-
  c=IN IP[local_ip_type] [local_port]
  t=0 0
  m=audio [auto_media_port] RTP/AVP 96 0 9 8 101 13
  a=rtpmap:8 PCMA/8000
  a=rtpmap:101 telephone-event/8000
  a=fmtp:101 0-1
]]>
</send>

    <recv response="100" optional="true">
    </recv>

    <recv response="183" optional="true">
    </recv>
<recv response="200">
    </recv>

<![CDATA[

  ACK sip:[field0]@[remote_ip]:[remote_port] SIP/2.0
  Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
  From: sipp <sip:[field1]@[local_ip]:[local_port]>;tag=[call_number]
  To: sut <sip:[field0]@[remote_ip]:[remote_port]>[peer_tag_param]
  Call-ID: [call_id]
  CSeq: 1 ACK
  Contact: sip:sipp@[local_ip]:[local_port]
  Max-Forwards: 70
  Subject: Performance Test
  Content-Length: 0
]]>
    </send>
<pause milliseconds="5000"/>
<nop>
        <action>
        <exec play_pcap_audio="pcap/dtmf_2833_1.pcap"/>
        </action>
</nop>
<pause milliseconds="2000"/>
<recv request="BYE"> </recv>
<send>
    <![CDATA[

      SIP/2.0 200 OK sip:[service]@[remote_ip]:[remote_port] SIP/2.0
      Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
      From: sipp <sip:[field]@[local_ip]:[local_port]>;tag=[call_number]
      To: sut <sip:[service]@[remote_ip]:[remote_port]>[peer_tag_param]
      Call-ID: [call_id]
      CSeq: 1 INVITE
      Contact: sip:sipp[call_number]@[local_ip]:[local_port]
      Max-Forwards: 70
      Subject: Performance Test
      Content-Length: 0

    ]]>
  </send>
<ResponseTimeRepartition value="10, 20, 30, 40, 50, 100, 150, 200"/>

You have multiple ways of sending DTMF 您有多种发送DTMF的方式

  1. In-band: where the tone is sent mixed in the audio stream (what you are trying to do) 带内:在音频流中混合发送声音的位置(您要尝试执行的操作)
  2. Out-of-band: in a separate SIP message like SIP INFO or SIP NOTIFY, which are basically messages saying "DTMF 1 was pressed" without putting it in the audio stream. 带外:在单独的SIP消息(如SIP INFO或SIP NOTIFY)中,基本上是说“按下了DTMF 1”的消息,而没有将其放入音频流。 Much easier for an IVR programmer, and more reliable. 对于IVR程序员而言,这要容易得多,并且更可靠。

The out-of-band method has become so commonplace, that many vendors will not bother turning on their in-band detectors by default. 带外方法已经变得司空见惯,以至于许多供应商默认都不会打扰他们的带内检测器。 You may want to search for a configuration setting named like "In-band DTMF detection" or "DTMF recognizer" ... 您可能要搜索名为“带内DTMF检测”或“ DTMF识别器”的配置设置...

Of course, I don't know the system you are using so "digit received as null" may mean: 当然,我不知道您使用的系统,因此“数字接收为空”可能意味着:

  1. "nothing received", possibly meaning the in-band detector is not enabled “什么都没有收到”,可能意味着未启用带内检测器
  2. "something received but could not understand it", possibly meaning something wrong with your audio file content OR transmission of that content “收到但无法理解的内容”,可能表示您的音频文件内容或该内容的传输有问题

Since it's SIP-to-SIP I would recommend switching to an out-of-band dtmf message. 由于它是SIP到SIP,因此建议您切换到带外dtmf消息。

Actually you have in your script an explicit request to negotiate dtmf in-band using RTP events : 实际上,您的脚本中有一个明确的请求,要求使用RTP事件在带内协商dtmf:

  m=audio [auto_media_port] RTP/AVP 96 0 9 8 101 13
  a=rtpmap:8 PCMA/8000
  a=rtpmap:101 telephone-event/8000
  a=fmtp:101 0-1

The peer has accepted you offer I assume and is waiting dtmf as a rtp event packet; 对方接受了我提供的您提供的信息,并且正在等待dtmf作为rtp事件包; you should be able to send a pcap with an rtp event or if not switch to sip notify or info. 您应该能够发送带有rtp事件的pcap,或者如果没有切换到sip notify或info。

This mode is documented in RFC 2833 first and updated by rfc5244. 此模式首先在RFC 2833中记录,然后由rfc5244更新。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM