PDA

Voir la version complète : Sip Fax lot of error



jayse
04/10/2011, 18h02
Bonjour

J'utilise Asterisk pour envoyer et recevoir des faxs.
La solution marche, mais je rencontre un grand nombre d'erreur :
- (Incoming et outgoing) The call dropped prematurely
- (Incoming et outgoing) Unexpected message received
- (Incoming) Disconnected after permitted retries
- (Outgoing) Invalid response after sending a page

Asterisk 1.6.2.17.2
J'utilise T.38 sur le SIP
Je suis sur un kernel 2.6.18-194.el5 x86_64

Voila ma config
sip.conf


[general]
# sipdebug=yes
context=default
allowoverlap=no
bindport=5060
bindaddr=0.0.0.0
srvlookup=no
language=fr

tos_sip=cs3
tos_audio=ef
tos_video=af41

;videosupport=yes
t38pt_udptl=yes,redundancy,maxdatagram=400
t38pt_rtp=no
t38pt_tcp=no

notifyringing=yes
notifyhold=yes
limitonpeers=yes

rtcachefriends=yes
rtsavesysname=yes
rtupdate=yes
rtautoclear=no
ignoreregexpire=yes

[authentication]

#include <sip_trunks.conf>


sip_trunks.conf


[basic-opts](!)
type=friend
insecure=port,invite
canreinvite=no
disallow=all
allow=alaw
dtmfmode=rfc2833
nat=no

[sbc1](basic-opts)
context=inbound
disallow=all
allow=ulaw
host=10.8.254.20
dtmfmode=rfc2833


extensions.conf


[general]
static=no
writeprotect=yes
clearglobalvars=yes
language=fr

[globals]

[default]

;[tdmin]
;switch =>Realtime/inbound@inbounddid
;exten => _X.,1,Goto(fax2mail,${EXTEN},1)

;exten =>i,1,Verbose("ERROR: CALL FOR ${INVALID_EXTEN} FROM ${CALLERID(all)} RECEIVED BUT NUMBER IS NOT ASSIGNED.")
;exten =>i,n,Congestion(3)

[inbound]
;exten =>_XX.,1,Set(GROUP()=SBC1_IN)
;exten =>_XX.,n,Verbose("PROCESSING INCOMING CALL FROM ${CALLERID(all)} TO ${EXTEN}")
;exten =>_XX.,n,Goto(tdmin,${EXTEN},1)
exten => _XXX!,1,Set(GROUP()=SBC1_IN)
exten => _XXX!,n,Set(MYSRCFROM=${EXTEN})
exten => _XXX!,n,Verbose("PROCESSING INCOMING CALL FROM ${CALLERID(all)} TO ${EXTEN}")
exten => _XXX!,n,NoOp(Processing incoming fax for ${EXTEN} from ${CALLERID(all)}.)
exten => _XXX!,n,Set(ARRAY(EMAILS,ACCTCODE)=${ODBC_GETFROMD ID(${EXTEN})})
exten => _XXX!,n,Answer()
exten => _XXX!,n,GotoIf($["${ACCTCODE}" != ""]?exists)
exten => _XXX!,n,Set(ARRAY(FAXSTATUS,FAXERROR,FAXMODE)=FAIL ED,No fax entry for ${EXTEN},none)
exten => _XXX!,n,Goto(end)
exten => _XXX!,n(exists),Set(CDR(accountcode)=${ACCTCODE})
exten => _XXX!,n,Set(FAXFILE=/var/spool/asterisk/fax/${UNIQUEID}.tiff)
;exten => _XXX!,n,Wait(3)
exten => _XXX!,n,ReceiveFAX(${FAXFILE})
exten => _XXX!,n(end),Hangup()

exten => h,1,NoOp(Incoming fax result: ${FAXSTATUS}. Error (if any): ${FAXERROR}. Mode: ${FAXMODE}. Localstationid: ${LOCALSTATIONID} Remotestationid: ${REMOTESTATIONID})
exten => h,n,Set(CDR(pages_number)=${FAXPAGES})
exten => h,n,Set(CDR(extid)=${MYEXTID})
exten => h,n,Set(CDR(fax_status)=${FAXSTATUS})
exten => h,n,Set(CDR(fax_error)=${FAXERROR})
exten => h,n,Set(CDR(src_from)=${REMOTESTATIONID})
exten => h,n,GotoIf($["${FAXSTATUS}" != "SUCCESS"]?end)
exten => h,n,GotoIf($["${EMAILS}" = ""]?end)
exten => h,n,Set(PDFFILE=/tmp/${UNIQUEID}.pdf) ; fax2mail
exten => h,n,System(tiff2pdf -o ${PDFFILE} ${FAXFILE}) ; fax2mail
exten => h,n,System(/usr/bin/python ) ; fax2mail
exten => h,n(end),NoOp()




[outbound]
;SEB

exten =>_XX.,1,Set(GROUP()=SBC1_OUT)
exten =>_XX.,n,Verbose("**** SENDING FAX : ${MYFILE} ****")
exten =>_XX.,n,Set(LOCALHEADERINFO=${MYHEADER})
exten =>_XX.,n,Set(LOCALSTATIONID=${MYNUMBER})
exten =>_XX.,n,Set(MYSRCFROM=${MYNUMBER})
exten =>_XX.,n,SendFax(${MYFILE})
exten =>_XX.,n,Hangup()

exten => failed,1,Set(FAXSTATUS=FAILED)
exten => failed,n,Set(FAXPAGES=0)
exten => failed,n,Set(MYSRCFROM=${MYNUMBER})
exten => failed,n,Hangup()

exten => h,1,Verbose("FAX SENT WITH ${FAXPAGES} PAGES, FAXSTATUS: ${FAXSTATUS} , FAXERROR: ${FAXERROR}, FROM ${MYNUMBER} TO ${EXTEN}")
exten => h,n,Set(CDR(pages_number)=${FAXPAGES})
exten => h,n,Set(CDR(extid)=${MYEXTID})
exten => h,n,Set(CDR(fax_status)=${FAXSTATUS})
exten => h,n,Set(CDR(src_from)=${MYSRCFROM})
exten => h,n,GotoIf($["${FAXERROR}" != ""]?xchanger)
exten => h,n,Set(CDR(fax_error)=${CDR(disposition)})
exten => h,n,Goto(end)
exten => h,n(xchanger),Set(CDR(fax_error)=${FAXERROR})
exten => h,n(end),NoOp


Je trouve ceci dans mes logs :


[Sep 15 16:10:57] VERBOSE[31928] chan_sip.c:
<--- SIP read from UDP:10.8.254.20:5060 --->
BYE sip:**********@10.249.10.66 SIP/2.0
Via: SIP/2.0/UDP 10.8.254.20:5060;branch=z9hG4bKtojgh596ra9seaprjnl 8lrvvb4-1sa
Max-Forwards: 69
From: <sip:**********@10.8.254.20>;tag=1c497186327
To: "**********" <sip:**********@10.249.10.66>;tag=as412577bc
Call-ID: 6ab846bf44b946a91e6aa4ee446357df@10.249.10.66
CSeq: 2 BYE
Supported: em,timer,replaces,path,resource-priority
Allow: REGISTER,OPTIONS,INVITE,ACK,CANCEL,BYE,NOTIFY,PRAC K,REFER,INFO,SUBSCRIBE,UPDATE
User-Agent: Audiocodes-Sip-Gateway-/v.5.80A.035.004
Reason: Q.850 ;cause=16 ;text="local"
Content-Length: 0


<------------->


et sur un appel en échec je joinds un fichier de log.

J'ai une autre plate-forme avec un autre trunk_sip
Il y a très peu de différence :
t38pt_udptl=yes,redundancy
sans ,maxdatagram=400
et
allow=alaw,ulaw
et inversement pour l'incoming

Je ne suis pas sur de la configuration des trunks car se ne sont pas les miens

jayse
06/10/2011, 11h34
J'ai remarqué dans les logs autres choses, j'ai énormément de :
WARNING[6746] app_fax.c: Transmission error

Faut il que je vérifie et modifie des réglages sur Asterisk ou le trunk_sip comme la gestion d'erreur ecm, les INVITE/REINVITE ? le FaxMode Pass-Through ou autres ?

Merci de vos réponses ou éclaircissement.

Reaper
06/10/2011, 13h43
Le module que tu utilise est celui de digium ?
Est ce que tu est certain que ton fournisseur est sur redundancy et non sur FEC ?

jayse
06/10/2011, 14h22
Non, si je ne me trompe pas la réponse à ta question est que j'utilise le module spandsp.
Si mon fournisseur n'est pas sur redundancy (conseiller en cas de problème réseau, il me semble), c'est lui qui prend en dernier la décision dans les échanges ? Je vais vérifier.

Reaper
06/10/2011, 14h33
C'est conseillé mais en réalité FEC fonctionne mieux +ecm, asterisk est capable d'effectuer un failback sur reduncancy. Je vous conseille vivement d'utiliser le module de digium, il est gratuit pour une communication simultané, autre moment il est simple de voir les paramètres de votre fournisseur parce que c'est lui qui doit faire reinvite de la communication en T.38 lorsque le fax passe, effectue un debug sip et capte son reinvite, colle le ici.

jayse
06/10/2011, 14h45
<--- SIP read from UDP:10.8.254.20:5060 --->
SIP/2.0 183 Session Progress
Via: SIP/2.0/UDP 10.249.10.162:5060;received=10.249.10.162;branch=z 9hG4bK27075cf4;rport=5060
From: "**********" <sip:**********@10.249.10.162>;tag=as3dee4028
To: <sip:**********@10.8.254.20>;tag=1c870885245
Call-ID: 6feafcc012e52a7f47c3ade8730ce5d9@10.249.10.162
CSeq: 102 INVITE
Contact: <sip:10.8.254.20:5060;transport=udp>
Supported: em,timer,replaces,path,resource-priority
Allow: REGISTER,OPTIONS,INVITE,ACK,CANCEL,BYE,NOTIFY,PRAC K,REFER,INFO,SUBSCRIBE,UPDATE
Server: Audiocodes-Sip-Gateway-/v.5.80A.035.004
Content-Type: application/sdp
Content-Length: 258

v=0
o=AudiocodesGW 870962719 870962453 IN IP4 10.8.254.20
s=Phone-Call
c=IN IP4 10.8.254.20
t=0 0
m=audio 6436 RTP/AVP 0 105 101
a=rtpmap:0 PCMU/8000
a=rtpmap:105 X-NSE/8000
a=ptime:20
a=sendrecv
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16

<------------->
--- (12 headers 12 lines) ---
Found RTP audio format 0
Found RTP audio format 105
Found RTP audio format 101
Found audio description format PCMU for ID 0
Found audio description format X-NSE for ID 105
Found audio description format telephone-event for ID 101
Capabilities: us - 0x4 (ulaw), peer - audio=0x4000004 (ulaw|red)/video=0x0 (nothing)/text=0x0 (nothing), combined - 0x4 (ulaw)
Non-codec capabilities (dtmf): us - 0x1 (telephone-event), peer - 0x1 (telephone-event), combined - 0x1 (telephone-event)
Peer audio RTP is at port 10.8.254.20:6436

<--- SIP read from UDP:10.8.254.20:5060 --->
SIP/2.0 200 OK
Via: SIP/2.0/UDP 10.249.10.162:5060;received=10.249.10.162;branch=z 9hG4bK27075cf4;rport=5060
From: "**********" <sip:**********@10.249.10.162>;tag=as3dee4028
To: <sip:**********@10.8.254.20>;tag=1c870885245
Call-ID: 6feafcc012e52a7f47c3ade8730ce5d9@10.249.10.162
CSeq: 102 INVITE
Contact: <sip:10.8.254.20:5060;transport=udp>
Supported: em,timer,replaces,path,resource-priority
Allow: REGISTER,OPTIONS,INVITE,ACK,CANCEL,BYE,NOTIFY,PRAC K,REFER,INFO,SUBSCRIBE,UPDATE
Server: Audiocodes-Sip-Gateway-/v.5.80A.035.004
Content-Type: application/sdp
Content-Length: 258

v=0
o=AudiocodesGW 870962719 870962453 IN IP4 10.8.254.20
s=Phone-Call
c=IN IP4 10.8.254.20
t=0 0
m=audio 6436 RTP/AVP 0 105 101
a=rtpmap:0 PCMU/8000
a=rtpmap:105 X-NSE/8000
a=ptime:20
a=sendrecv
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16

<------------->
--- (12 headers 12 lines) ---

Reaper
06/10/2011, 14h49
Et il est ou invite ? je t'explique lorsque tu va envoyer un fax avec t.38 tu doit avoir:

INVITE vers ton fournisseur, detection de CNG
et RE INVITE de ton fournisseur vers toi en T.38 et la tu vas négocier T.38

Regarde la page 4 de call flow:

http://tools.ietf.org/html/draft-mule-sip-t38callflows-00

Reaper
06/10/2011, 14h54
Exemple invite T.38


INVITE sip:+1-650-555-2222@ss1.wcom.com;user=phone SIP/2.0
Via: SIP/2.0/UDP iftgw.there.com:5060
From: sip:+1-303-555-1111@ift.here.com;user=phone
To: sip:+1-650-555-2222@ss1.wcom.com;user=phone
Call-ID: 1717@ift.here.com
CSeq: 56 INVITE
Content-Type: application/sdp
Content-Length: 320

v=0
o=faxgw1 2890844527 2890844527 IN IP4 iftgw.there.com
s=Session SDP
c=IN IP4 iftmg.there.com
t=0 0
m=image 49172 udptl t38
a=T38FaxVersion:0
a=T38maxBitRate:14400
a=T38FaxFillBitRemoval:0
a=T38FaxTranscodingMMR:0
a=T38FaxTranscodingJBIG:0
a=T38FaxRateManagement:transferredTCF
a=T38FaxMaxBuffer:260
a=T38FaxUdpEC:t38UDPRedundancy

jayse
06/10/2011, 16h06
Pardon ca devrait être mieux

<--- SIP read from UDP:10.8.254.20:5060 --->
INVITE sip:**********@10.249.10.162 SIP/2.0
Via: SIP/2.0/UDP 10.8.254.20:5060;branch=z9hG4bKh0a4n293oh7vv7d3drj uo1lfs0-g0ka
Max-Forwards: 69
From: <sip:**********@10.8.254.20>;tag=1c870885245
To: "**********" <sip:**********@10.249.10.162>;tag=as3dee4028
Call-ID: 6feafcc012e52a7f47c3ade8730ce5d9@10.249.10.162
CSeq: 1 INVITE
Contact: <sip:10.8.254.20:5060;transport=udp>
Supported: em,timer,replaces,path,resource-priority
Allow: REGISTER,OPTIONS,INVITE,ACK,CANCEL,BYE,NOTIFY,PRAC K,REFER,INFO,SUBSCRIBE,UPDATE
User-Agent: Audiocodes-Sip-Gateway-/v.5.80A.035.004
Content-Type: application/sdp
Content-Length: 289

v=0
o=AudiocodesGW 870962719 870962454 IN IP4 10.8.254.20
s=Phone-Call
c=IN IP4 10.8.254.20
t=0 0
m=image 6436 udptl t38
a=T38FaxVersion:0
a=T38MaxBitRate:14400
a=T38FaxMaxBuffer:1024
a=T38FaxMaxDatagram:122
a=T38FaxRateManagement:transferredTCF
a=T38FaxUdpEC:t38UDPRedundancy

<------------->
--- (13 headers 12 lines) ---
Sending to 10.8.254.20 : 5060 (no NAT)
Got T.38 offer in SDP in dialog 6feafcc012e52a7f47c3ade8730ce5d9@10.249.10.162
Capabilities: us - 0x4 (ulaw), peer - audio=0x0 (nothing)/video=0x0 (nothing)/text=0x0 (nothing), combined - 0x0 (nothing)
Non-codec capabilities (dtmf): us - 0x1 (telephone-event), peer - 0x0 (nothing), combined - 0x0 (nothing)
Got T.38 Re-invite without audio. Keeping RTP active during T.38 session.

<--- Transmitting (no NAT) to 10.8.254.20:5060 --->
SIP/2.0 100 Trying
Via: SIP/2.0/UDP 10.8.254.20:5060;branch=z9hG4bKh0a4n293oh7vv7d3drj uo1lfs0-g0ka;received=10.8.254.20
From: <sip:**********@10.8.254.20>;tag=1c870885245
To: "**********" <sip:**********@10.249.10.162>;tag=as3dee4028
Call-ID: 6feafcc012e52a7f47c3ade8730ce5d9@10.249.10.162
CSeq: 1 INVITE
Server: Asterisk PBX 1.6.2.17.2
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO
Supported: replaces, timer
Contact: <sip:**********@10.249.10.162>
Content-Length: 0


<------------>

<--- Reliably Transmitting (no NAT) to 10.8.254.20:5060 --->
SIP/2.0 200 OK
Via: SIP/2.0/UDP 10.8.254.20:5060;branch=z9hG4bKh0a4n293oh7vv7d3drj uo1lfs0-g0ka;received=10.8.254.20
From: <sip:**********@10.8.254.20>;tag=1c870885245
To: "**********" <sip:**********@10.249.10.162>;tag=as3dee4028
Call-ID: 6feafcc012e52a7f47c3ade8730ce5d9@10.249.10.162
CSeq: 1 INVITE
Server: Asterisk PBX 1.6.2.17.2
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO
Supported: replaces, timer
Contact: <sip:**********@10.249.10.162>
Content-Type: application/sdp
Content-Length: 275

v=0
o=root 838049699 838049700 IN IP4 10.249.10.162
s=Asterisk PBX 1.6.2.17.2
c=IN IP4 10.249.10.162
t=0 0
m=image 4556 udptl t38
a=T38FaxVersion:0
a=T38MaxBitRate:14400
a=T38FaxRateManagement:transferredTCF
a=T38FaxMaxDatagram:1400
a=T38FaxUdpEC:t38UDPRedundancy

<------------>

Reaper
06/10/2011, 17h11
Donc ton ordre de préférence est T38FaxUdpEC et après en t38UDPRedundancy.
Dans ce cas enlève T38FaxUdpEC de ton offre et test. Tu pourra le voir lorsque dans OK qui tu renvoie "a=t38UDPRedundancy"

ECM est activé je suppose ?

jayse
07/10/2011, 10h00
Merci beaucoup de tes éclairssissement.
Je vais me renseigner sur FEC.
Je cherche pour indiquer seulement du redundancy.
Ou est ce que je peux voir pour ecm sur mon asterisk et sur le trunk ?

Reaper
07/10/2011, 12h14
regarde dans udptl.conf et sur le wiki http://www.voip-info.org/ sur le T.38

jayse
07/10/2011, 15h30
Le paramétrage de udptl se fait à priori maintenant dans sip.conf
t38pt_udptl=yes,redundancy,maxdatagram=400
Je ne trouve pas d'exemple ou explication sur les paramètre disponible.

Ayant compilé Asterisk avec spandsp afin d'avoir le module app_fax, je n'ai pas beaucoup d'option disponible ou de fichier de configuration. ECM est le plus souvent activé par défaut, mais je n'en suis pas sûr.

Reaper
07/10/2011, 16h40
J'ai du utiliser le module de digium, je me rappelle pas exactement comment le faire avec res fax natif. Franchement si il te faut un channel c'est gratuit et fonctionne mieux.