cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
4634
Views
0
Helpful
15
Replies

Fax Detection for SIP on CUBE

tb6854
Level 1
Level 1

I'm trying to configure fax detection on a CUBE 4331 version 15.4(3)S4.  I have a SIP trunk to the provider and a SIP trunk to CUCM.

I have configured a dspfarm profile transcode with the associate app CUBE.  As well as added detect-fax mode local to the main inbound voip dial peer to redirect the call to the DID matching a route pattern on CUCM which points to the fax server.

Am I missing something?  Does anyone have a good working example of what it should all look like?

15 Replies 15

zdesignstudio
Level 4
Level 4

Here you go. I think this should cover you. You also need to add the audio file to the router for the VXML. The way this worked was that they could use the same DIDs for a single reach of fax or voice calls. I have some extreme SIP header modification going on as well too.

voice class sip-profiles 1
request ANY sdp-header Audio-Attribute modify "a=inactive" "a=sendrecv"
response ANY sdp-header Audio-Attribute modify "a=inactive" "a=sendrecv"
request ANY sdp-header Audio-Attribute modify "a=sendonly" "a=sendrecv"
response ANY sdp-header Audio-Attribute modify "a=sendonly" "a=sendrecv"
request ANY sdp-header Audio-Attribute modify "a=inactive" "a=sendrecv"
response ANY sdp-header Audio-Attribute modify "a=inactive" "a=sendrecv"
request ANY sdp-header Audio-Attribute modify "a=sendonly" "a=sendrecv"
response ANY sdp-header Audio-Attribute modify "a=sendonly" "a=sendrecv"
!
voice class sip-profiles 7001
request INVITE peer-header sip SIP-Req-URI copy "sip:(.*)@" u01
request INVITE peer-header sip SIP-Req-URI copy "sip:(.*)@" u01
request INVITE sip-header SIP-Req-URI modify "sip:(.*)" "sip:\u01@SIPSERVERIP:5060 SIP/2.0"
!
voice class sip-profiles 7002
request REINVITE sdp-header Audio-Attribute add "a=silenceSupp:off - - - -"
!
voice class sip-profiles 7003
request ANY sdp-header Audio-Attribute modify "a=silenceSupp:off - - - -" ""
response ANY sdp-header Audio-Attribute modify "a=silenceSupp:off - - - -" ""
request ANY sdp-header Audio-Attribute modify "a=inactive" "a=sendrecv"
response ANY sdp-header Audio-Attribute modify "a=inactive" "a=sendrecv"
request ANY sdp-header Audio-Attribute modify "a=sendonly" "a=sendrecv"
response ANY sdp-header Audio-Attribute modify "a=sendonly" "a=sendrecv"
request ANY sdp-header Audio-Attribute modify "a=inactive" "a=sendrecv"
response ANY sdp-header Audio-Attribute modify "a=inactive" "a=sendrecv"
request ANY sdp-header Audio-Attribute modify "a=sendonly" "a=sendrecv"
response ANY sdp-header Audio-Attribute modify "a=sendonly" "a=sendrecv"
!
!
voice class sip-copylist 2
sip-header SIP-Req-URI

!

voice translation-rule 1001
rule 1 /\(..........\)/ /#\1/
!

voice translation-profile VXML
translate called 1001

!

dspfarm profile 1 transcode universal
codec pass-through
codec g711ulaw
codec g711alaw
codec g729ar8
codec g729abr8
cng-fax-detect
maximum sessions 21
associate application CUBE

!

dial-peer voice 105 voip
description INCOMING DIAL PEER WITH FAX DETECT
translation-profile incoming VXML
session protocol sipv2
session target sip-server
incoming called-number ^...........$
voice-class sip profiles 7003
voice-class sip profiles 1 inbound
voice-class sip copy-list 2
dtmf-relay rtp-nte
codec g711ulaw
fax protocol none
no vad
detect-fax mode local 5001
!
dial-peer voice 106 voip
description "Outgoing to VXML Cube Loop"
destination-pattern #
session protocol sipv2
session target ipv4:ROUTER IP HERE
session transport udp
voice-class sip profiles 1 inbound
dtmf-relay rtp-nte
codec g711ulaw
fax protocol t38 version 0 ls-redundancy 0 hs-redundancy 0 fallback pass-through g711ulaw
no vad
!
dial-peer voice 107 voip
description "Incoming to VXML via Loop"
service fax
session protocol sipv2
session target sip-server
incoming called-number #..........$
voice-class sip profiles 1 inbound
dtmf-relay rtp-nte
codec g711ulaw
fax protocol t38 version 0 ls-redundancy 0 hs-redundancy 0 fallback pass-through g711ulaw
no vad
!
dial-peer voice 5001 voip
description SIP Fax SIP URI Copy to Fax server
destination-pattern 5001
session protocol sipv2
session target ipv4:FAXSERVERIP
voice-class sip profiles 7001
codec g711ulaw
fax protocol pass-through g711ulaw
no vad
!

Please rate useful posts and mark answers as correct if applicable.

Please rate useful posts and mark answers as correct if applicable.

Can you explain the flow of the call from when it first hits the CUBE?  I'm trying to understand what dial peers 106 and 107 are actually doing.  Thanks!

Hey,

105 is the incoming from the provider which has a translation profile to make it match 105/106 to loop the call.

106/107 are incoming/outgoing peers to loop the call back to the Cube (VXML GW). This occurs to playback ringing to the caller while CNG tones are being detected or not. If this didn't occur the caller would hear silence while the Cube decides if the call is a fax or voice call. If teh Cube detects CNG fax tones, it will send it to peer 5001 based on peer's 105 detect-fax mode local 5001 command.

On teh VXML Gateway (Cube) you need to put a tcl script as well as the wav file containing basic ringback.

Also not that this only works with G711 and IOS 15.4(2)T+. LTI based transcoding is only  supported if the carrier is not sending G711.

Please rate useful posts and mark answers as correct if applicable.

Please rate useful posts and mark answers as correct if applicable.

Hey,

That's making things clearer.  Can you explain the tcl script part?  Where did you reference that in your config?

Are the script and wav file just standard that you can download and copy to the flash of the CUBE?

Thanks!

Attached are an .au audio file and a default tcl script. You will need to edit the script to match your call flow. Put them in Flash on the router.

You will need to create an application on the router:

application
service fax flash:fax_detect.vxml

Then under dial-peer 107 you can see where it states "service fax" to invoke the application created above.

You will need to edit the script to match how you are sending the digits in this section:

"phone://1011"

Please rate useful posts and mark answers as correct if applicable.

I'm finally getting back to this.  I think I'm close but I get this error when I put a call inbound.

 *Dec  2 20:37:22.668: %CALL_CONTROL-6-APP_NOT_FOUND: Application fax in dial-peer 501 not found.  Handing callid 131830 to the alternate app

When I created the application it looked good.  I got this response back.

*Dec  2 12:28:13.250: //-1//HIFS:/hifs_ifs_cb: hifs ifs file read succeeded. size=512, url=bootflash:/fax_detect.vxml

Send me your script and a snippit of your router config.

Please rate useful posts and mark answers as correct if applicable.

voice translation-rule 10
 rule 1 /^\+*1\(..........\)/ /#\1/
!
voice translation-profile VXML
 translate called 10
!
application
 service fax bootflash:/fax_detect.vxml
 !
!
dspfarm profile 5 transcode universal  
 codec g711ulaw
 cng-fax-detect
 maximum sessions 5
 associate application CUBE
!
dial-peer voice 100 voip
 description To CUCM
 translation-profile incoming VXML
 session protocol sipv2
 session target sip-server
 incoming called-number .
 voice-class codec 2
 dtmf-relay rtp-nte
 fax protocol none
 no vad
 detect-fax mode local 502
!
dial-peer voice 500 voip
 description Outgoing to VXML Cube Loop
 destination-pattern #
 session protocol sipv2
 session target ipv4:xxx.xxx.xxx.xxx
 session transport udp
 dtmf-relay rtp-nte
 codec g711ulaw
 fax protocol t38 version 0 ls-redundancy 0 hs-redundancy 0 fallback pass-through g711ulaw
 no vad
!
dial-peer voice 501 voip
 description Incoming to VXML via Loop
 service fax
 session protocol sipv2
 session target sip-server
 incoming called-number #..........$
 dtmf-relay rtp-nte
 codec g711ulaw
 fax protocol t38 version 0 ls-redundancy 0 hs-redundancy 0 fallback pass-through g711ulaw
 no vad
!
dial-peer voice 502 voip
 description XMedius Fax Server
 destination-pattern 502
 session protocol sipv2
 session target dns:avnfax1.avn.com
 codec g711ulaw
 fax protocol pass-through g711ulaw
 no vad
!

On your 501 dial-peer you have #..........$ but your application has dest="phone://9494458745.

That is not a match. You need to add a # to the application file.

Please rate useful posts and mark answers as correct if applicable.

That makes sense.  I changed it to add the # in the vxml file and redid the service fax under application so it read the file again, but I still get the same application fax in dial peer 501 not found error when I place a call in.

In the file now is dest="phone://#9494458745" 

Were you able to get this figured out?

If the call isn't a fax, what happens after dialpeer 501?

It fails at the point of trying to run the VXML app.  Produces an error message saying it can't find the or read the file.

I'm trying to get a good answer on whether or not this is supported on the 4331 router platform.  And what hardware it is actually supported on.

Are you working with TAC on it?    

This doc shows it should work as long as the 4300 is on IOS 15.4(2)T+

http://www.cisco.com/c/en/us/td/docs/ios-xml/ios/voice/cube_proto/configuration/15-mt/cube-proto-15-mt-book/voi-cube-fax-detection-vxml.html

dwier
Level 4
Level 4

For anyone looking for an answer to this, since the original thread never reached a conclusion.  I am looking for the same information.

This specific thread will not work, because the ISR 4XXX series does not include VXML services anymore.  I am not sure if there is another way to do fax detection on the new ISR line, but this specific VXML/TCL way will not longer work.