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
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