[Asterisk-Users] Not can call to PSTN

diego.ramirez at acodin.com.co diego.ramirez at acodin.com.co
Thu Sep 8 11:50:07 MST 2005


hi

I have installed asterisk 1.0.9, zaptel 1.0.9 in the linux debian sarge
with kernel 2.6.8 and have installed AMP

this is my zapata.conf
----------------------------------------
zapata.conf
*************************************
[trunkgroups]

[channels]
context=from-pstn
signalling=fxs_ks
rxwink=300              ; Atlas seems to use long (250ms) winks
usecallerid=yes
callwaiting=yes
usecallingpres=yes
threewaycalling=yes
transfer=yes
callreturn=yes
echocancel=yes
echotraining=yes
relaxdtmf=yes
rxgain=0.0
txgain=0.0
group=1
immediate=yes
busydetect=no
faxdetect=both
faxdetect=incoming
faxdetect=outgoing
;faxdetect=no
musiconhold=default
callerid=asreceived
channel => 1
------------------------
ztcfg -vvvvv
-------------------------
Zaptel Configuration
======================


Channel map:

Channel 01: FXS Kewlstart (Default) (Slaves: 01)

1 channels configured.
------------------------
This is the CLI trace when call to PSTN
---------------------------
Verbosity is at least 5
    -- Executing Dial("SIP/22176-0cef", "Zap/1/6806934") in new stack
  == Everyone is busy/congested at this time
    -- Executing Macro("SIP/22176-0cef", "outisbusy") in new stack
    -- Executing Playback("SIP/22176-0cef",
"allison7/all-circuits-busy-now") in new stack
    -- Playing 'allison7/all-circuits-busy-now' (language 'en')
    -- Executing Playback("SIP/22176-0cef", "allison7/pls-try-call-later")
in new stack
    -- Playing 'allison7/pls-try-call-later' (language 'en')
    -- Executing Macro("SIP/22176-0cef", "hangupcall") in new stack
    -- Executing ResetCDR("SIP/22176-0cef", "w") in new stack
    -- Executing NoCDR("SIP/22176-0cef", "") in new stack
    -- Executing Wait("SIP/22176-0cef", "5") in new stack
    -- Executing Hangup("SIP/22176-0cef", "") in new stack
  == Spawn extension (macro-hangupcall, s, 4) exited non-zero on
'SIP/22176-0cef' in macro 'hangupcall'
  == Spawn extension (macro-outisbusy, s, 3) exited non-zero on
'SIP/22176-0cef' in macro 'outisbusy'
  == Spawn extension (completo, 96806934, 2) exited non-zero on
'SIP/22176-0cef'
    -- Executing Macro("SIP/22176-0cef", "hangupcall") in new stack
    -- Executing ResetCDR("SIP/22176-0cef", "w") in new stack
    -- Executing NoCDR("SIP/22176-0cef", "") in new stack
    -- Executing Wait("SIP/22176-0cef", "5") in new stack
    -- Executing Hangup("SIP/22176-0cef", "") in new stack
  == Spawn extension (macro-hangupcall, s, 4) exited non-zero on
'SIP/22176-0cef' in macro 'hangupcall'
  == Spawn extension (completo, h, 1) exited non-zero on 'SIP/22176-0cef'
----------------------------------------
this is my extension.conf (build for AMP)
-----------------------------------------
Extension.conf
**********************
; include extension contexts generated from AMP
#include extensions_additional.conf

; Customizations to this dialplan should be made in extensions_custom.conf
; See extensions_custom.conf.sample for an example
#include extensions_custom.conf

[from-trunk]                                                    ; just an
alias since VoIP shouldn't be called PSTN
include => from-pstn

[from-pstn]
include => from-pstn-custom                     ; create this context in
extensions_custom.conf to include customizations
include => ext-did
include => from-pstn-timecheck          ; this has to be included
otherwise it overrides ext-did

[from-pstn-timecheck]
exten => .,1,Goto(s,1)          ; catch-all matching for calls that have
DID info (if a DID route hasn't matched them)
exten => s,1,GotoIf($[${IN_OVERRIDE} =
forcereghours]?from-pstn-reghours,s,1:)
exten => s,2,GotoIf($[${IN_OVERRIDE} =
forceafthours]?from-pstn-afthours,s,1:)
exten => s,3,GotoIfTime(${REGTIME}|${REGDAYS}|*|*?from-pstn-reghours,s,1:)
exten => s,4,Goto(from-pstn-afthours,s,1)

[from-pstn-reghours]
exten => s,1,GotoIf($[${FAX_RX} = disabled]?from-pstn-reghours-nofax,s,1:2)
; if fax detection is disabled, then jump to from-pstn-nofax - else continue
exten => s,2,Answer
exten => s,3,Wait(1)
exten => s,5,Cut(intype=intype,-,1)
exten => s,6,GotoIf($[${intype} = EXT]?7:9)             ; If INCOMING
starts with EXT, then assume its an extension
exten => s,7,Wait(3)                                    ;wait 3 more
second to make sure this isn't a fax before dialing someone
exten => s,8,Goto(ext-local,${INCOMING:4},1)
exten => s,9,GotoIf($[${intype} = GRP]?10:12)   ; If INCOMING starts with
GRP, then assume its a ring group
exten => s,10,Wait(3)
exten => s,11,Goto(ext-group,${INCOMING:4},1)
exten => s,12,GotoIf($[${intype} = QUE]?13:15)
exten => s,13,Wait(3)
exten => s,14,Goto(ext-queues,${INCOMING:4},1)
exten => s,15,Goto(${INCOMING},s,1)                     ; not EXT or GR1 -
it'san auto attendant
exten => fax,1,Goto(ext-fax,in_fax,1)
exten => h,1,Hangup

[from-pstn-reghours-nofax]
exten => s,1,SetVar(intype=${INCOMING})
exten => s,2,Cut(intype=intype,-,1)
exten => s,3,GotoIf($[${intype} = EXT]?4:5)
exten => s,4,Goto(ext-local,${INCOMING:4},1)
exten => s,5,GotoIf($[${intype} = GRP]?6:7)
exten => s,6,Goto(ext-group,${INCOMING:4},1)
exten => s,7,GotoIf($[${intype} = QUE]?8:11) ;queue
exten => s,8,Answer
exten => s,9,Wait(1)
exten => s,10,Goto(ext-queues,${INCOMING:4},1)
exten => s,11,Answer                            ;answer call before auto
attendant
exten => s,12,Wait(1)
exten => s,13,Goto(${INCOMING},s,1)            ; not EXT or GR1 - it's an
 auto attendant
exten => fax,1,Goto(ext-fax,in_fax,1)
exten => h,1,Hangup

[from-pstn-afthours]
exten => s,1,GotoIf($[${FAX_RX} =
disabled]?from-pstn-afthours-nofax,s,1:2)     ; if fax detection is
disabled, then jump to from-pstn-nofax - else continue
exten => s,2,Answer
exten => s,3,Wait(1)
exten => s,4,SetVar(intype=${AFTER_INCOMING})
exten => s,5,Cut(intype=intype,-,1)
exten => s,6,GotoIf($[${intype} = EXT]?7:9)             ; If INCOMING
starts with EXT, then assume its an extension
exten => s,7,Wait(3)                              ;wait 3 more second to
make sure this isn't a fax before dialing someone
exten => s,8,Goto(ext-local,${AFTER_INCOMING:4},1)
exten => s,9,GotoIf($[${intype} = GRP]?10:12)   ; If INCOMING starts with
GRP, then assume its a ring group
exten => s,10,Wait(3)
exten => s,11,Goto(ext-group,${AFTER_INCOMING:4},1)
exten => s,12,GotoIf($[${intype} = QUE]?13:15)
exten => s,13,Wait(3)
exten => s,14,Goto(ext-queues,${AFTER_INCOMING:4},1)
exten => s,15,Goto(${AFTER_INCOMING},s,1)        ; not EXT or GR1 - it's an
 auto attendant
exten => fax,1,Goto(ext-fax,in_fax,1)
exten => h,1,Hangup

[from-pstn-afthours-nofax]
exten => s,1,SetVar(intype=${AFTER_INCOMING})
exten => s,2,Cut(intype=intype,-,1)
exten => s,3,GotoIf($[${intype} = EXT]?4:5)             ; If INCOMING
starts with EXT, then assume its an extension
exten => s,4,Goto(ext-local,${AFTER_INCOMING:4},1)
exten => s,5,GotoIf($[${intype} = GRP]?6:7)     ; If INCOMING starts with
GRP, then assume its a ring group
exten => s,6,Goto(ext-group,${AFTER_INCOMING:4},1)
exten => s,7,GotoIf($[${intype} = QUE]?8:11) ;queue
exten => s,8,Answer                             ; answer call before queue
exten => s,9,Wait(1)
exten => s,10,Goto(ext-queues,${AFTER_INCOMING:4},1)
exten => s,11,Answer                            ; answer call befo
re auto attendant
exten => s,12,Wait(1)
exten => s,13,Goto(${AFTER_INCOMING},s,1)      ; not EXT or GR1 - it's an
auto attendant
exten => fax,1,Goto(ext-fax,in_fax,1)
exten => h,1,Hangup

;
############################################################################
; Macros [macro]
;
############################################################################

; Rings one or more extensions.  Handles things like call forwarding and DND
; We don't call dial directly for anything internal anymore.
; ARGS: $TIMER, $OPTIONS, $EXT1, $EXT2, $EXT3, ...
; Use a Macro call such as the following:
;  Macro(dial,$DIAL_TIMER,$DIAL_OPTIONS,$EXT1,$EXT2,$EXT3,...)
[macro-dial]
exten => s,1,GotoIf($[ "${MACRO_CONTEXT}" = "macro-rg-group" ]?4:2)  ; if
this is from rg-group, don't strip prefix
exten => s,2,GotoIf($[${CALLERIDNAME:0:${LEN(${RGPREFIX})}} !=
${RGPREFIX}]?4:3)  ; checkfor ring-group prefix
exten => s,3,SetCIDName(${CALLERIDNAME:${LEN(${RGPREFIX})}}) ; strip off
prefix
exten => s,4,AGI,dialparties.agi
exten => s,5,NoOp(Returned from dialparties with no extensions to call)
exten => s,6,SetVar(DIALSTATUS=BUSY)
exten => s,10,Dial(${ds})                ; dialparties will set the priorit
y to 10 if $ds is not null

; Ring an extension, if the extension is busy or there is no answer send it
; to voicemail
; ARGS: $VMBOX, $EXT
[macro-exten-vm]
exten => s,1,Setvar(FROMCONTEXT=exten-vm)
exten => s,2,Macro(record-enable,${ARG2},IN)
exten => s,3,Macro(dial,${RINGTIMER},${DIAL_OPTIONS},${ARG2})
exten => s,4,GotoIf($[${CHANNEL:0:5} = Local]?s-${DIALSTATUS},1) ; if the
channel is Local, then do not go to voicemail.  This is primarily to avoid
vm for call-forwarded extensions in ring groups
exten => s,5,GotoIf($[${ARG1} = novm]?s-${DIALSTATUS},1) ; no voicemail in
use for this extension
exten => s,6,NoOp(Sending to Voicemail box ${ARG1})
exten => s,7,Macro(vm,${ARG1},${DIALSTATUS})
exten => s-BUSY,1,NoOp(Extension is reporting BUSY and has no Voicemail)
exten => s-BUSY,2,Busy()
exten => s-BUSY,3,Wait(60)
exten => s-BUSY,4,NoOp()
exten => _s-.,1,Congestion()

[macro-vm]
exten => s,1,Goto(s-${ARG2},1)
exten => s-BUSY,1,Voicemail(b${ARG1})   ; Voicemail Busy message
exten => s-BUSY,2,Hangup()
exten => _s-.,1,Voicemail(u${ARG1})     ; Voicemail Unavailable message
exten => _s-.,2,Hangup()
exten => o,1,Background(one-moment-please)   ; 0 during vm message will
hangup
exten => o,2,GotoIf($["foo${FROM_DID}" =
"foo"]?from-pstn,s,1:from-pstn,${FROM_DID},1)
exten => a,1,VoiceMailMain(${ARG1})
exten => a,2,Hangup

; For some reason, if I don't run setCIDname, CALLERIDNAME will be blank
in my AGI
; ARGS: none
[macro-fixcid]
exten => s,1,SetCIDName(${CALLERIDNAME})

; Ring groups of phones
; ARGS: comma separated extension list
; 1 - ringtimer
; 2 - preifx
; 3 - extension list
[macro-rg-group]
exten => s,1,GotoIf($[${CALLERIDNAME:0:${LEN(${RGPREFIX})}} !=
${RGPREFIX}]?3:2)  ; check for old prefix
exten => s,2,SetCIDName(${CALLERIDNAME:${LEN(${RGPREFIX})}}) ; strip off
old prefix
exten => s,3,Setvar(RGPREFIX=${ARG2})  ; set new prefix
exten => s,4,SetCIDName(${RGPREFIX}${CALLERIDNAME})  ; add prefix to
callerid name
exten => s,5,Setvar(RecordMethod=Group)  ; set new prefix
exten => s,6,Macro(record-enable,${MACRO_EXTEN},${RecordMethod})
exten => s,7,Macro(dial,${ARG1},${DIAL_OPTIONS},${ARG3})


;exten => s,1,GotoIf($[${CALLERIDNAME:0:${LEN(${RGPREFIX})}} !=
${RGPREFIX}]?3:2)  ; check for old prefix
;exten => s,2,SetCIDName(${CALLERIDNAME:${LEN(${RGPREFIX})}}) ; strip off
old prefix
;exten => s,3,Setvar(RGPREFIX=${ARG2})  ; set new prefix
;;exten => s,4,Noop(${RGPREFIX}  ${CALLERIDNAME})
;exten => s,4,SetCIDName(${RGPREFIX}${CALLERIDNAME})  ; add prefix to
callerid name
;;exten => s,6,Noop(Dial group ${ARG3})
;exten => s,5,Macro(dial,${ARG1},${DIAL_OPTIONS},${ARG3})

;exten => s,1,Setvar(GRP=${GRP})   ;my original choice of variable GROUP
is now overwritten by SetGroup.  Copy contents to GRP
;exten => s,2,SetGroup(${CALLERIDNUM})
;exten => s,3,Setvar(FROMCONTEXT=rg-group)
;exten => s,4,SetCIDName(${PRE}${CALLERIDNAME})
;exten => s,5,Macro(dial,${RINGTIMER},${DIAL_OPTIONS},${GRP})

;
; Outgoing channel(s) are busy ... inform the client
;
[macro-outisbusy]
exten => s,1,Playback(allison7/all-circuits-busy-now)
exten => s,2,Playback(allison7/pls-try-call-later)
exten => s,3,Macro(hangupcall)

; What to do on hangup.
[macro-hangupcall]
exten => s,1,ResetCDR(w)
exten => s,3,Wait(5)
exten => s,4,Hangup

[macro-faxreceive]
exten => s,1,SetVar(FAXFILE=/var/spool/asterisk/fax/${UNIQUEID}.tif)
exten => s,2,SetVar(EMAILADDR=${FAX_RX_EMAIL})
exten => s,3,rxfax(${FAXFILE})
exten => s,103,SetVar(EMAILADDR=${FAX_RX_EMAIL})
exten => s,104,Goto(3)

; dialout and strip the prefix
[macro-dialout]
exten => s,1,GotoIf($[foo${ECID${CALLERIDNUM}} = foo]?4)        ;check for
CID override for exten
exten => s,2,SetCallerID(${ECID${CALLERIDNUM}})
exten => s,3,Goto(6)
exten => s,4,GotoIf($[foo${OUTCID_${ARG1}} = foo]?6)            ;check for
CID override for trunk
exten => s,5,SetCallerID(${OUTCID_${ARG1}})
exten => s,6,SetVar(length=${LEN(${DIAL_OUT_${ARG1}})})
exten => s,7,Dial(${OUT_${ARG1}}/${ARG2:${length}})
exten => s,8,Congestion
exten => s,108,Macro(outisbusy)


; dialout using default OUT trunk - no prefix
[macro-dialout-default]
exten => s,1,Macro(record-enable,${CALLERIDNUM},OUT)
exten => s,2,GotoIf($[foo${ECID${CALLERIDNUM}} = foo]?5)        ;check for
CID override for exten
exten => s,3,SetCallerID(${ECID${CALLERIDNUM}})
exten => s,4,Goto(7)
exten => s,5,GotoIf($[foo${OUTCID} = foo]?7)    ;check for CID override
for trunk
exten => s,6,SetCallerID(${OUTCID})
exten => s,7,Dial(${OUT}/${ARG1})
exten => s,8,Congestion
exten => s,108,Macro(outisbusy)

; dialout using a trunk, using pattern matching (don't strip any prefix)
; arg1 = trunk number, arg2 = number, arg3 = route password
[macro-dialout-trunk]
exten => s,1,GotoIf($[foo${ARG3} = foo]?3:2))   ; arg3 is pattern password
exten => s,2,Authenticate(${ARG3})
exten => s,3,Macro(record-enable,${CALLERIDNUM},OUT)
exten => s,4,GotoIf($[foo${ECID${CALLERIDNUM}} = foo]?7)  ;check for CID
override for exten
exten => s,5,SetCallerID(${ECID${CALLERIDNUM}})
exten => s,6,Goto(9)
exten => s,7,GotoIf($[foo${OUTCID_${ARG1}} = foo]?9)  ;check for CID
override for trunk
exten => s,8,SetCallerID(${OUTCID_${ARG1}})
exten => s,9,SetGroup(OUT_${ARG1})
exten => s,10,CheckGroup(${OUTMAXCHANS_${ARG1}})
; if we've used up the max channels, continue at 109 (n+101)
exten => s,11,SetVar(DIAL_NUMBER=${ARG2})
exten => s,12,SetVar(DIAL_TRUNK=${ARG1})
exten => s,13,AGI(fixlocalprefix) ; this sets DIAL_NUMBER to the proper
dial string for this trunk
exten => s,14,SetVar(OUTNUM=${OUTPREFIX_${ARG1}}${DIAL_NUMBER})  ; OUTNUM
is the final dial number
exten => s,15,Cut(custom=OUT_${ARG1},:,1)  ; Custom trunks are prefixed
with "AMP:"
exten => s,16,GotoIf($[${custom} = AMP]?19)
exten => s,17,Dial(${OUT_${ARG1}}/${OUTNUM})  ; Regular Trunk Dial
exten => s,18,Goto(s-${DIALSTATUS},1)

; This is a custom trunk.  Substitute $OUTNUM$ with the actual number and
rebuild the dialstring
; example trunks: "AMP:CAPI/XXXXXXXX:b$OUTNUM$,30,r",
"AMP:OH323/$OUTNUM$@XX.XX.XX.XX:XXXX"
exten => s,19,Cut(pre_num=OUT_${ARG1},$,1)
exten => s,20,Cut(the_num=OUT_${ARG1},$,2)  ; this is where we expect to
find string OUTNUM
exten => s,21,Cut(post_num=OUT_${ARG1},$,3)
exten => s,22,GotoIf($[${the_num} = OUTNUM]?23:24) ; if we didn't find
"OUTNUM", then skip to Dial
exten => s,23,SetVar(the_num=${OUTNUM}) ; replace "OUTNUM" with the actual
number to dial
exten => s,24,Dial(${pre_num:4}${the_num}${post_num})
exten => s,25,Goto(s-${DIALSTATUS},1)

exten => s,111,Noop(max channels used up)
exten => s-BUSY,1,NoOp(Trunk is reporting BUSY)
exten => s-BUSY,2,Busy()
exten => s-BUSY,3,Wait(60)
exten => s-BUSY,4,NoOp()

exten => _s-.,1,NoOp(Dial failed due to ${DIALSTATUS})

; Adds a dynamic agent/member to a Queue
; Prompts for call-back number - in not entered, uses CIDNum
[macro-agent-add]
exten => s,1,Wait(1)
exten => s,2,NoOp
exten => s,3,Read(CALLBACKNUM,agent-user)       ; get callback number from
user
exten => s,4,GotoIf($[foo${CALLBACKNUM} = foo]?5:7))    ; if user just
pressed # or timed out, use cidnum
exten => s,5,SetVar(CALLBACKNUM=${CALLERIDNUM})
exten => s,6,GotoIf($[foo${CALLBACKNUM} = foo]?2))      ; if still no
number, start over
exten => s,7,GotoIf($[foo${ARG2} = foo]?9:8))   ; arg2 is queue password
exten => s,8,Authenticate(${ARG2})
exten => s,9,AddQueueMember(${ARG1}|Local/${CALLBACKNUM}@from-internal) ;
using chan_local allows us to have agents over trunks
exten => s,10,Wait(1)
exten => s,11,Playback(agent-loginok)
exten => s,12,Hangup()

; Removes a dynamic agent/member from a Queue
; Prompts for call-back number - in not entered, uses CIDNum
[macro-agent-del]
exten => s,1,Wait(1)
exten => s,2,NoOp
exten => s,3,Read(CALLBACKNUM,agent-user)       ; get callback number from
user
exten => s,4,GotoIf($[foo${CALLBACKNUM} = foo]?5:7))    ; if user just
pressed # or timed out, use cidnum
exten => s,5,SetVar(CALLBACKNUM=${CALLERIDNUM})
exten => s,6,GotoIf($[foo${CALLBACKNUM} = foo]?2))      ; if still no
number, start over
exten => s,7,RemoveQueueMember(${ARG1}|Local/${CALLBACKNUM}@from-internal)
exten => s,8,Wait(1)
exten => s,9,Playback(agent-loggedoff)
exten => s,10,Hangup()

; arg1 = trunk number, arg2 = number
[macro-dialout-enum]
exten => s,1,Macro(record-enable,${CALLERIDNUM},OUT)
exten => s,2,GotoIf($[foo${ECID${CALLERIDNUM}} = foo]?3)        ;check for
CID override for exten
exten => s,3,SetCallerID(${ECID${CALLERIDNUM}})
exten => s,4,Goto(7)
exten => s,5,GotoIf($[foo${OUTCID_${ARG1}} = foo]?7)            ;check for
CID override for trunk
exten => s,6,SetCallerID(${OUTCID_${ARG1}})
exten => s,7,SetGroup(OUT_${ARG1})
exten => s,8,CheckGroup(${OUTMAXCHANS_${ARG1}})         ; if we've used up
the max channels, continue at 108 (n+101)
exten => s,9,SetVar(DIAL_NUMBER=${ARG2})
exten => s,10,SetVar(DIAL_TRUNK=${ARG1})
exten => s,11,AGI(fixlocalprefix)                                   ; this
sets DIAL_NUMBER to the proper dial string for this trunk
exten => s,12,EnumLookup(${DIAL_NUMBER})
exten => s,13,GotoIf($[$[${ENUM:0:3} = SIP] | $[${ENUM:0:3} = IAX]]?14:63)
exten => s,14,Dial(${ENUM})
exten => s,15,Goto(s-${DIALSTATUS},1)
; if dial fails (ie, all channels are busy), continue at 116 (n+101)

; exit points for macro
exten => s,63,NoOp(EnumLookup failed)
exten => s,109,NoOp(max channels used up)

exten => s-BUSY,1,NoOp(Trunk is reporting BUSY)
exten => s-BUSY,2,Busy()
exten => s-BUSY,3,Wait(60)
exten => s-BUSY,4,NoOp()

exten => _s-.,1,NoOp(Dial failed due to ${DIALSTATUS})

[macro-record-enable]
exten => s,1,GotoIf(${LEN(${BLINDTRANSFER})} > 0?2:4)
exten => s,2,ResetCDR(w)
exten => s,3,StopMonitor()
exten => s,4,GotoIf($["${ARG2}" = "OUT"]?5:8)
exten => s,5,DBGet(RecEnable=RECORD-OUT/${ARG1})
exten => s,6,SetVar(CALLFILENAME=OUT${ARG1}-${TIMESTAMP}-${UNIQUEID})
exten => s,7,Goto(s,14)
exten => s,8,GotoIf($["${ARG2}" = "Group"]?9:12)
exten => s,9,AGI(recordingcheck)
exten => s,10,SetVar(CALLFILENAME=g${ARG1}-${TIMESTAMP}-${UNIQUEID})
exten => s,11,Goto(s,14)
exten => s,12,DBGet(RecEnable=RECORD-IN/${ARG1})
exten => s,13,SetVar(CALLFILENAME=${TIMESTAMP}-${UNIQUEID})
exten => s,14,GotoIf($["${RecEnable}" = "ENABLED"]?15:99)
exten => s,15,Monitor(wav49,${CALLFILENAME}, mb)
exten => s,99,Noop(NO RECORDING NEEDED)
;exten => s,3,BackGround(for-quality-purposes)
;exten => s,4,BackGround(this-call-may-be)
;exten => s,5,BackGround(recorded)

; This macro is for dev purposes and just dumps channel/app variables. 
Useful when design
ing new contexts.
[macro-dumpvars]
exten => s,1,Noop(ACCOUNTCODE=${ACCOUNTCODE})
exten => s,2,Noop(ANSWEREDTIME=${ANSWEREDTIME})
exten => s,3,Noop(BLINDTRANSFER=${BLINDTRANSFER})
exten => s,4,Noop(CALLERID=${CALLERID})
exten => s,5,Noop(CALLERIDNAME=${CALLERIDNAME})
exten => s,6,Noop(CALLERIDNUM=${CALLERIDNUM})
exten => s,7,Noop(CALLINGPRES=${CALLINGPRES})
exten => s,8,Noop(CHANNEL=${CHANNEL})
exten => s,9,Noop(CONTEXT=${CONTEXT})
exten => s,10,Noop(DATETIME=${DATETIME})
exten => s,11,Noop(DIALEDPEERNAME=${DIALEDPEERNAME})
exten => s,12,Noop(DIALEDPEERNUMBER=${DIALEDPEERNUMBER})
exten => s,13,Noop(DIALEDTIME=${DIALEDTIME})
exten => s,14,Noop(DIALSTATUS=${DIALSTATUS})
exten => s,15,Noop(DNID=${DNID})
exten => s,16,Noop(EPOCH=${EPOCH})
exten => s,17,Noop(EXTEN=${EXTEN})
exten => s,18,Noop(HANGUPCAUSE=${HANGUPCAUSE})
exten => s,19,Noop(INVALID_EXTEN=${INVALID_EXTEN})
exten => s,20,Noop(LANGUAGE=${LANGUAGE})
exten => s,21,Noop(MEETMESECS=${MEETMESECS})
exten => s,22,Noop(PRIORITY=${PRIORITY})
exten => s,23,Noop(RDNIS=${RDNIS})
exten => s,24,Noop(SIPDOMAIN=${SIPDOMAIN})
exten => s,25,Noop(SIP_CODEC=${SIP_CODEC})
exten => s,26,Noop(SIPCALLID=${SIPCALLID})
exten => s,27,Noop(SIPUSERAGENT=${SIPUSERAGENT})
exten => s,28,Noop(TIMESTAMP=${TIMESTAMP})
exten => s,29,Noop(TXTCIDNAME=${TXTCIDNAME})
exten => s,30,Noop(UNIQUEID=${UNIQUEID})
exten => s,31,Noop(TOUCH_MONITOR=${TOUCH_MONITOR})
exten => s,32,Noop(MACRO_CONTEXT=${MACRO_CONTEXT})
exten => s,33,Noop(MACRO_EXTEN=${MACRO_EXTEN})
exten => s,34,Noop(MACRO_PRIORITY=${MACRO_PRIORITY})


;
############################################################################
; Applications [app]
;
############################################################################
;
;
[app-directory]
;DIR-CONTEXT set in Digital Receptionist
exten => #,1,Wait(1)
exten =>
#,2,AGI(directory,${DIR-CONTEXT},ext-local,${DIRECTORY:0:1}${DIRECTORY_OPTS}o)
exten => #,3,Playback(vm-goodbye)
exten => #,4,Hangup
; *411 will access the entire directory (not just a single context)
exten => *411,1,Answer
exten => *411,2,Wait(1)
exten =>
*411,3,AGI(directory,general,ext-local,${DIRECTORY:0:1}${DIRECTORY_OPTS})
exten => *411,4,Playback(vm-goodbye)
exten => *411,5,Hangup
exten => h,1,Hangup
exten => o,1,GotoIf($["foo${FROM_DID}" =
"foo"]?from-pstn,s,1:from-pstn,${FROM_DID},1)

[app-dnd]
exten => *78,1,Answer
exten => *78,2,Wait(1)
exten => *78,3,DBput(DND/${CALLERIDNUM}=YES)
exten => *78,4,Playback(allison7/do-not-disturb)
exten => *78,5,Playback(activated)
exten => *78,6,Macro(hangupcall)
exten => *79,1,Answer
exten => *79,2,Wait(1)
exten => *79,3,DBdel(DND/${CALLERIDNUM})
exten => *79,4,Playback(allison7/do-not-disturb)
exten => *79,5,Playback(de-activated)
exten => *79,6,Macro(hangupcall)

[app-messagecenter]
exten => *98,1,Answer
exten => *98,2,Wait(1)
exten => *98,3,VoiceMailMain(default)
exten => *98,4,Macro(hangupcall)
exten => _*98X.,1,Answer                        ; can dial *98<exten> to
skip 'mailbox' pr
ompt.  Useful for speedial.
exten => _*98X.,2,Wait(1)
exten => _*98X.,3,VoiceMailMain(${EXTEN:3}@default)
exten => _*98X.,4,Macro(hangupcall)
exten => *97,1,Answer
exten => *97,2,Wait(1)
exten => *97,3,VoicemailMain(${CALLERIDNUM}@default)
exten => *97,4,Macro(hangupcall)

[app-callwaiting]
exten => *70,1,Answer
exten => *70,2,Wait(1)
exten => *70,3,DBput(CW/${CALLERIDNUM}=ENABLED)
exten => *70,4,Playback(callwaiting)
exten => *70,5,Playback(activated)
exten => *70,6,Macro(hangupcall)
exten => *71,1,Answer
exten => *71,2,Wait(1)
exten => *71,3,DBdel(CW/${CALLERIDNUM})
exten => *71,4,Playback(callwaiting)
exten => *71,5,Playback(de-activated)
exten => *71,6,Macro(hangupcall)

[app-callforward]
; dialed call forward app - forwards calling extension
exten => _*72.,1,DBput(CF/${CALLERIDNUM}=${EXTEN:3})
exten => _*72.,2,Answer
exten => _*72.,3,Wait(1)
exten => _*72.,4,Playback(loligo/call-fwd-unconditional)
exten => _*72.,5,Playback(loligo/for)
exten => _*72.,6,Playback(loligo/extension)
exten => _*72.,7,SayDigits(${CALLERIDNUM})
exten => _*72.,8,Playback(loligo/is-set-to)
exten => _*72.,9,SayDigits(${EXTEN:3})
exten => _*72.,10,Macro(hangupcall)
; prompting call forward app - forwards entered extension
exten => *72,1,Answer
exten => *72,2,Wait(1)
exten => *72,3,BackGround(allison7/please-enter-your)
exten => *72,4,Playback(extension)
exten => *72,5,Read(fromext,then-press-pound)
exten => *72,6,Wait(1)
exten => *72,7,BackGround(ent-target-attendant)
exten => *72,8,Read(toext,then-press-pound)
exten => *72,9,Wait(1)
exten => *72,10,DBput(CF/${fromext}=${toext})
exten => *72,11,Playback(call-fwd-unconditional)
exten => *72,12,Playback(for)
exten => *72,13,Playback(extension)
exten => *72,14,SayDigits(${fromext})
exten => *72,15,Playback(is-set-to)
exten => *72,16,SayDigits(${toext})
exten => *72,17,Macro(hangupcall)
; cancels dialed extension call forward
exten => _*73.,1,DBdel(CF/${EXTEN:3})
exten => _*73.,2,Answer
exten => _*73.,3,Wait(1)
exten => _*73.,4,SayDigits(${EXTEN:3})
exten => _*73.,5,Playback(call-fwd-cancelled)
exten => _*73.,6,Macro(hangupcall)
; cancels call forward for calling extension
exten => *73,1,DBdel(CF/${CALLERIDNUM})
exten => *73,2,Answer
exten => *73,3,Wait(1)
exten => *73,4,Playback(loligo/call-fwd-cancelled)
exten => *73,5,Macro(hangupcall)
; dialed call forward on busy app - forwards calling extension when busy
exten => _*90.,1,DBput(CFB/${CALLERIDNUM}=${EXTEN:3})
exten => _*90.,2,Answer
exten => _*90.,3,Wait(1)
exten => _*90.,4,Playback(loligo/call-fwd-on-busy)
exten => _*90.,5,Playback(loligo/for)
exten => _*90.,6,Playback(loligo/extension)
exten => _*90.,7,SayDigits(${CALLERIDNUM})
exten => _*90.,8,Playback(loligo/is-set-to)
exten => _*90.,9,SayDigits(${EXTEN:3})
exten => _*90.,10,Macro(hangupcall)
; cancels call forward on busy for calling extension
exten => *91,1,DBdel(CFB/${CALLERIDNUM})
exten => *91,2,Answer
exten => *91,3,Wait(1)
exten => *91,4,Playback(call-fwd-on-busy)
exten => *91,5,Playback(de-activated)
exten => *91,6,Macro(hangupcall)
exten => h,1,Hangup

[app-calltrace]
; We can't have our timeouts or dial digits collide with other applications
; or extensions, so we build the app in pieces
exten => *69,1,Goto(app-calltrace-perform,s,1)

[app-calltrace-perform]
exten => s,1,Answer
exten => s,2,Wait(1)
exten => s,3,Background(allison7/info-about-last-call)
exten => s,4,Background(allison7/telephone-number)
exten => s,5,Dbget(lastcaller=CALLTRACE/${CALLERIDNUM})
exten => s,6,GotoIf($[${lastcaller}]?7:13)
exten => s,7,SayDigits(${lastcaller})
exten => s,8,DigitTimeout(3)
exten => s,9,ResponseTimeout(7)
exten => s,10,Background(loligo/to-call-this-number)
exten => s,11,Background(allison7/press-1)
exten => s,12,Goto(15)
exten => s,13,Playback(loligo/from-unknown-caller)
exten => s,14,Macro(hangupcall)
exten => s,15,NoOp
exten => 1,1,Goto(from-internal,${lastcaller},1);
exten => i,1,Playback(vm-goodbye)
exten => i,2,Macro(hangupcall)
exten => t,1,Playback(vm-goodbye)
exten => t,2,Macro(hangupcall)


;
############################################################################
; Inbound Contexts [from]
;
############################################################################

[from-sip-external]
;give external sip users congestion and hangup
exten => _.,1,AbsoluteTimeout(15)
exten => _.,2,Congestion
exten => _.,3,Hangup

[from-internal]
;allow phones to use applications
include => app-directory
include => app-dnd
include => app-callforward
include => app-callwaiting
include => app-messagecenter
include => app-calltrace
include => parkedcalls
include => from-internal-custom
;allow phones to dial other extensions
include => ext-fax
include => ext-local
include => ext-group
include => ext-queues
include => ext-zapbarge
include => ext-meetme
include => ext-record
include => ext-test
;allow phones to access trunks
include => outbound-allroutes
exten => s,1,Macro(hangupcall)
exten => h,1,Macro(hangupcall)

;
############################################################################
; Extension Contexts [ext]
;
############################################################################

[ext-zapbarge]
exten => 888,1,SetGroup(${CALLERIDNUM})
exten => 888,2,Answer
exten => 888,3,Wait(1)
exten => 888,4,ZapBarge
exten => 888,5,Hangup

[ext-meetme]
exten => _8X,1,Answer
exten => _8X,2,Wait(1)
exten => _8X,3,GotoIf($[${CALLERIDNUM} = ${EXTEN:1}]?5:4)
exten => _8X,4,MeetMe(${EXTEN}|sM)
exten => _8X,5,MeetMe(${EXTEN}|asM)

exten => _8XX,1,Answer
exten => _8XX,2,Wait(1)
exten => _8XX,3,GotoIf($[${CALLERIDNUM} = ${EXTEN:1}]?5:4)
exten => _8XX,4,MeetMe(${EXTEN}|sM)
exten => _8XX,5,MeetMe(${EXTEN}|asM)

exten => _8XXX,1,Answer
exten => _8XXX,2,Wait(1)
exten => _8XXX,3,GotoIf($[${CALLERIDNUM} = ${EXTEN:1}]?5:4)
exten => _8XXX,4,MeetMe(${EXTEN}|sM)
exten => _8XXX,5,MeetMe(${EXTEN}|asM)

exten => _8XXXX,1,Answer
exten => _8XXXX,2,Wait(1)
exten => _8XXXX,3,GotoIf($[${CALLERIDNUM} = ${EXTEN:1}]?5:4)
exten => _8XXXX,4,MeetMe(${EXTEN}|sM)
exten => _8XXXX,5,MeetMe(${EXTEN}|asM)


[ext-fax]
exten => s,1,Answer
exten => s,2,Goto(in_fax,1)
exten => in_fax,1,GotoIf($[${FAX_RX} = system]?2:analog_fax,1)
exten => in_fax,2,Macro(faxreceive)
exten => in_fax,3,system(tiff2ps -2eaz -w 8.5 -h 11 ${FAXFILE} | ps2pdf -
${FAXFILE}.pdf)
exten => in_fax,4,system(mime-construct --to ${EMAILADDR} --subject "Fax
from ${CALLERIDNU
M} ${CALLERIDNAME}" --attachment ${CALLERIDNUM}.pdf --type application/pdf
--file ${FAXFIL
E}.pdf)
exten => in_fax,5,system(rm ${FAXFILE} ${FAXFILE}.pdf)
exten => in_fax,6,Hangup
exten => analog_fax,1,GotoIf($[${FAX_RX} = disabled]?3:2)  ;if fax is
disabled, just hang
up
exten => analog_fax,2,Dial(${FAX_RX},20,d)
exten => analog_fax,3,Hangup
;exten => out_fax,1,wait(7)
exten => out_fax,1,txfax(${TXFAX_NAME}|caller)
exten => out_fax,2,Hangup
exten => h,1,Hangup()

[ext-record]
exten => *77,1,Wait(2)
exten => *77,2,Record(${CALLERIDNUM}ivrrecording:wav)
exten => *77,3,Wait(2)
exten => *77,4,Hangup
exten => *99,1,Playback(${CALLERIDNUM}ivrrecording)
exten => *99,2,Wait(2)
exten => *99,3,Hangup

;this is where parked calls go if they time-out.  Should probably re-ring
[default]
include => ext-local
exten => s,1,Playback(vm-goodbye)
exten => s,2,Macro(hangupcall)

[ext-test]
exten => 7777,1,Goto(from-pstn,s,1)
exten => 666,1,Goto(ext-fax,in_fax,1)
exten => h,1,Macro(hangupcall)

;echo test
exten => *43,1,Answer
exten => *43,2,Wait(2)
exten => *43,3,Playback(demo-echotest)
exten => *43,4,Echo
exten => *43,5,Playback(demo-echodone)
exten => *43,6,Hangup
----------------------------------------
the end extension.conf
--------------------------------------------
this is extension_additional.conf
-------------------------------------
Extension_additional.conf
***************************
[globals]
VM_PREFIX = *
RINGTIMER = 15
REGTIME = 7:55-17:05
REGDAYS = mon-fri
RECORDEXTEN = ""
PARKNOTIFY = SIP/200
OUT_2 = IAX2/carval_empor
OUT_1 = ZAP/g1
OUTPREFIX_2 =
OUTPREFIX_1 =
OUTMAXCHANS_2 = 2
OUTMAXCHANS_1 = 1
OUTCID_2 = emporio
OUTCID_1 = 4491647
OPERATOR =
NULL = ""
IN_OVERRIDE = forcereghours
INCOMING = group-all
FAX_RX_EMAIL = diego.ramirez at carval.com.co
FAX_RX = SIP/22001
FAX =
E22192 = SIP
E22187 = SIP
E22176 = SIP
E22172 = SIP
E22170 = SIP
E22168 = SIP
E22165 = SIP
E22164 = SIP
E22161 = SIP
E22157 = SIP
E22151 = SIP
E22147 = SIP
E22141 = SIP
E22135 = SIP
E22134 = SIP
E22132 = SIP
E22131 = SIP
E22001 = SIP
DIRECTORY_OPTS =
DIRECTORY = last
DIAL_OUT = 9
DIAL_OPTIONS = tr
DIALOUTIDS = 1/2/
CALLFILENAME = ""
AFTER_INCOMING =

[ext-local]
include => ext-local-custom
exten => 22001,1,Macro(exten-vm,novm,22001)
exten => 22131,1,Macro(exten-vm,22131 at default,22131)
exten => ${VM_PREFIX}22131,1,Macro(vm,22131)
exten => 22132,1,Macro(exten-vm,22132 at default,22132)
exten => ${VM_PREFIX}22132,1,Macro(vm,22132)
exten => 22134,1,Macro(exten-vm,novm,22134)
exten => 22135,1,Macro(exten-vm,22135 at default,22135)
exten => ${VM_PREFIX}22135,1,Macro(vm,22135)
exten => 22141,1,Macro(exten-vm,novm,22141)
exten => 22147,1,Macro(exten-vm,22147 at default,22147)
exten => ${VM_PREFIX}22147,1,Macro(vm,22147)
exten => 22151,1,Macro(exten-vm,novm,22151)
exten => 22157,1,Macro(exten-vm,22157 at default,22157)
exten => ${VM_PREFIX}22157,1,Macro(vm,22157)
exten => 22161,1,Macro(exten-vm,22161 at default,22161)
exten => ${VM_PREFIX}22161,1,Macro(vm,22161)
exten => 22164,1,Macro(exten-vm,novm,22164)
exten => 22165,1,Macro(exten-vm,22165 at default,22165)
exten => ${VM_PREFIX}22165,1,Macro(vm,22165)
exten => 22168,1,Macro(exten-vm,novm,22168)
exten => 22170,1,Macro(exten-vm,novm,22170)
exten => 22172,1,Macro(exten-vm,22172 at default,22172)
exten => ${VM_PREFIX}22172,1,Macro(vm,22172)
exten => 22176,1,Macro(exten-vm,novm,22176)
exten => 22187,1,Macro(exten-vm,novm,22187)
exten => 22192,1,Macro(exten-vm,novm,22192)

[outbound-allroutes]
include => outbound-allroutes-custom
include => outrt-001-PSTN
include => outrt-002-emporio

[outrt-001-PSTN]
include => outrt-001-PSTN-custom
exten => _9.,1,Macro(dialout-trunk,1,${EXTEN:1},)
exten => _9.,2,Macro(outisbusy) ; No available circuits

[outrt-002-emporio]
include => outrt-002-emporio-custom
exten => _21XXX,1,Macro(dialout-trunk,2,${EXTEN},)
exten => _21XXX,2,Macro(outisbusy)      ; No available circuits
-----------------------------
this is build for AMP
--------------------------------
this is my extension_custom.conf
-------------------------------------------
Extension_custom.conf
************************
; This file contains example extensions_custom.conf entries.
; extensions_custom.conf should be used to include customizations
; to AMP's Asterisk dialplan.

; All custom context should contain the string 'custom' in it's name

; Extensions in AMP have access to the 'from-internal' context.
; The context 'from-internal-custom' is included in 'from-internal' by
default


[completo]
ignorepat => 9
include => trunklocal
include => ext-local
include => outbound-allroutes-custom
include => outrt-001-9_outside
include => outrt-002-emporio
include => from-internal

[from-internal-custom]
exten => 1234,1,Playback(demo-congrats)         ; extensions can dial 1234
exten => 1234,2,Hangup()
exten => h,1,Hangup()
include => custom-recordme                      ; extensions can also dial
5678

; custom-count2four,s,1 can be used as a custom target for
; a Digital Receptionist menu or a Ring Group
[custom-count2four]
exten => s,1,SayDigits(1234)
exten => s,2,Hangup

; custom-recordme,5678,1 can be used as a custom target for
; a Digital Receptionist menu or a Ring Group
[custom-recordme]
exten => 5678,1,Wait(2)
exten => 5678,2,Record(/tmp/asterisk-recording:gsm)
exten => 5678,3,Wait(2)
exten => 5678,4,Playback(/tmp/asterisk-recording)
exten => 5678,5,Wait(2)
exten => 5678,6,Hangup

[from-pstn-custom]
include => ext-local
include => fax
exten => s,1,Wait(1)
exten => s,2,Answer
exten => s.3,DigitTimeout,5
exten => s,3,Background(Bienvenida_Carval)
exten => 0,1,Dial(SIP/21000)
exten => 22001,1,Goto(fax,22001,1)
;exten => s,5,Wait(2)
;exten => s,6,Hangup

[fax]
exten => 22001,1,Macro(faxreceive)
exten => 22001,2,SetVar(EMAILADDR=carlos.vacca at carval.com.co)
exten => h,1,System(/usr/local/sbin/mailfax ${FAXFILE} ${EMAILADDR}
"${CALLERIDNUM} ${CALLERIDNAME}")

[trunklocal]
;
; Local seven-digit dialing accessed through trunk interface
;
exten => _9NXXXXXX,1,Dial(Zap/1/${EXTEN:1})
;exten => _9NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
;exten => _9NXXXXXX,2,Congestion
-----------------------------------------
this file is create by I


thanks for your help

Diego




> On Wed, Sep 07, 2005 at 10:38:20PM -0500, diego.ramirez at acodin.com.co
> wrote:
>> Hello
>> I have installed asterisk with a card X100P. receives calls but when
>> doing
>> the call to the PSTN. says that there are circuits no available... I
>> have
>> given to many returns but profit not to make work it I need that they
>> help
>> me with ideas by where to look for. Thanks
>
> What are the relevant lines from extensions.conf?
>
> Can you provide a CLI trace?
>
> What version of Asterisk and Zaptel? What kernel?
>
> --
> Tzafrir Cohen         | tzafrir at jbr.cohens.org.il | VIM is
> http://tzafrir.org.il |                           | a Mutt's
> tzafrir at cohens.org.il |                           |  best
> ICQ# 16849755         |                           | friend
> _______________________________________________
> --Bandwidth and Colocation sponsored by Easynews.com --
>
> Asterisk-Users mailing list
> Asterisk-Users at lists.digium.com
> http://lists.digium.com/mailman/listinfo/asterisk-users
> To UNSUBSCRIBE or update options visit:
>    http://lists.digium.com/mailman/listinfo/asterisk-users
>


-- 
Diego Ramirez D.
ACODIN



More information about the asterisk-users mailing list