NEWBIE HELP asterisk@home + Broadvoice setup

Discussion in 'VOIP' started by estropelic, Jul 11, 2005.

  1. estropelic

    estropelic Guest

    Hello Guys

    I'm somewhat of a newbie and am desperately seeking for some help..

    I've managed to get asterisk up and running on my server, and signe
    up with a broadvoice account..

    I'm having no problem dialing and communicating between extensions
    but whenever anyone tries to call my broadvoice account, they ar
    greeted by no ring or anything, but rather simply a direct t
    voicemail..

    Also, the most annoying is when I try to place an outside call..

    At that point, if the call is to a regular phone number, I'll get
    message asking me to enter my password... followed by pound..

    Any idea, how I can resolve this issue? I feel like i'm very close t
    getting this thing working, but I'm pretty frustrated because I don'
    know what to edit or change at this point..

    Below is my configurational files.
    ++++++++++++++++++++++++++++++++++++

    ; Note: If your SIP devices are behind a NAT and your Asteris
    ; server isn't, try adding "nat=1" to each peer definition t
    ; solve translation problems

    [general
    externip=69.165.XXX.XX
    localnet=192.168.1.105/255.255.255.

    port = 5060 ; Port to bind to (SIP is 5060
    bindaddr = 0.0.0.0 ; Address to bind to (all addresses on machine
    disallow=al
    allow=ula
    allow=ala
    context = from-sip-external ; Send unknown SIP callers to thi
    contex
    callerid = Unknow

    register =
    :MYSECRETPASS:/20

    [sip.broadvoice.com
    type=pee
    ;Enter your closest proxy serve
    host=proxy.mia.broadvoice.co
    fromdomain=sip.broadvoice.co
    fromuser=305574142
    secret=MYSECRETPAS
    context=from-broadvoic
    ;Disable canreinvite if you are behind a NA
    canreinvite=n
    ;Don't try to authenticate on incoming call
    insecure=ver

    #include sip_nat.con
    #include sip_custom.con
    #include sip_additional.con

    +++++ EXTENSIONS+++++ EXTENSIONS+++++ EXTENSIONS+++++ EXTENSIONS++++
    EXTENSIONS+++++ EXTENSIONS+++++ EXTENSIONS+++++ EXTENSIONS++++
    EXTENSIONS+++++ EXTENSIONS+++++ EXTENSIONS+++++ EXTENSIONS++++
    EXTENSIONS+++++ EXTENSIONS+++++ EXTENSIONS+++++ EXTENSIONS++++
    EXTENSIONS+++++ EXTENSIONS+++++ EXTENSIONS+++++ EXTENSIONS++++
    EXTENSIONS+++++ EXTENSIONS+++++ EXTENSIONS+++++ EXTENSIONS++++
    EXTENSIONS+++++ EXTENSIONS+++++ EXTENSIONS+++++ EXTENSIONS++++
    EXTENSION


    ; Asterisk Management Portal (AMP
    ; Copyright (C) 2004 Coalescent Systems In

    ; dialparties.agi (http://www.sprackett.com/asterisk/
    ; Asterisk::AGI (http://asterisk.gnuinter.net/
    ; gs
    (http://www.ibiblio.org/pub/Linux/utils/compress/!INDEX.short.html
    ; loligo sounds (http://www.loligo.com/asterisk/sounds/
    ; mpg123 (http://voip-info.org/wiki-Asterisk config musiconhold.conf

    ; include extension contexts generated from AM
    #include extensions_additional.con

    ; Customizations to this dialplan should be made i
    extensions_custom.con
    ; See extensions_custom.conf.sample for an exampl
    #include extensions_custom.con

    [from-trunk] ; just an alias since VoIP shouldn't be calle
    PST
    include => from-pst

    [from-pstn
    include => from-pstn-custom ; create thi
    context in extensions_custom.conf to include customization
    include => ext-di
    include => from-pstn-timecheck ; this has to be include
    otherwise it overrides ext-di

    [from-pstn-timecheck
    exten => .,1,Goto(s,1) ; catch-all matching for calls that hav
    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 i
    disabled, then jump to from-pstn-nofax - else continu
    exten => s,2,Answer
    exten => s,3,Wait(1
    exten => s,4,SetVar(intype=${INCOMING}
    exten => s,5,Cut(intype=intype,-,1)
    exten => s,6,GotoIf($[${intype} = EXT]?7:9) ; If INCOMING start
    with EXT, then assume its an extensio
    exten => s,7,Wait(3) ;wait 3 more second to make sure thi
    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's an
    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) ; If INCOMING starts
    with EXT, then assume its an extension
    exten => s,4,Goto(ext-local,${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,${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,${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 before 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) ; check for 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 priority 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,2,NoCDR()
    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 Dia
    exten => s,23,SetVar(the_num=${OUTNUM}) ; replace "OUTNUM" with th
    actual number to dia
    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 Queu
    ; Prompts for call-back number - in not entered, uses CIDNu
    [macro-agent-add
    exten => s,1,Wait(1
    exten => s,2,NoO
    exten => s,3,Read(CALLBACKNUM,agent-user) ; get callback numbe
    from use
    exten => s,4,GotoIf($[foo${CALLBACKNUM} = foo]?5:7)) ; if user jus
    pressed # or timed out, use cidnu
    exten => s,5,SetVar(CALLBACKNUM=${CALLERIDNUM}
    exten => s,6,GotoIf($[foo${CALLBACKNUM} = foo]?2)) ; if still n
    number, start ove
    exten => s,7,GotoIf($[foo${ARG2} = foo]?9:8)) ; arg2 is queu
    passwor
    exten => s,8,Authenticate(${ARG2}
    exten =
    s,9,AddQueueMember(${ARG1}|Local/${CALLBACKNUM}@from-internal)
    using chan_local allows us to have agents over trunk
    exten => s,10,Wait(1
    exten => s,11,Playback(agent-loginok
    exten => s,12,Hangup(

    ; Removes a dynamic agent/member from a Queu
    ; Prompts for call-back number - in not entered, uses CIDNu
    [macro-agent-del
    exten => s,1,Wait(1
    exten => s,2,NoO
    exten => s,3,Read(CALLBACKNUM,agent-user) ; get callback numbe
    from use
    exten => s,4,GotoIf($[foo${CALLBACKNUM} = foo]?5:7)) ; if user jus
    pressed # or timed out, use cidnu
    exten => s,5,SetVar(CALLBACKNUM=${CALLERIDNUM}
    exten => s,6,GotoIf($[foo${CALLBACKNUM} = foo]?2)) ; if still n
    number, start ove
    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 = numbe
    [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 exte
    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 trun
    exten => s,6,SetCallerID(${OUTCID_${ARG1}}
    exten => s,7,SetGroup(OUT_${ARG1}
    exten => s,8,CheckGroup(${OUTMAXCHANS_${ARG1}}) ; if we've used u
    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 t
    the proper dial string for this trun
    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 macr
    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 designing 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' prompt. 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 ${CALLERIDNUM} ${CALLERIDNAME}" --attachment
    ${CALLERIDNUM}.pdf --type application/pdf --file ${FAXFILE}.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
     
    estropelic, Jul 11, 2005
    #1
    1. Advertising

  2. estropelic wrote:
    > Hello Guys,
    >
    > I'm somewhat of a newbie and am desperately seeking for some help...
    >
    > I've managed to get asterisk up and running on my server, and signed
    > up with a broadvoice account...
    >
    > I'm having no problem dialing and communicating between extensions,
    > but whenever anyone tries to call my broadvoice account, they are
    > greeted by no ring or anything, but rather simply a direct to
    > voicemail...
    >
    > Also, the most annoying is when I try to place an outside call...
    >
    > At that point, if the call is to a regular phone number, I'll get a
    > message asking me to enter my password... followed by pound...


    Hmm, perhaps your registration with sip.broadvoice.com fails, so that
    callers see you as offline and when you try to place a call you are
    asked to authenticate yourself. What is displayed if from the CLI
    (started from the command line prompt with "asterisk -rvvvv") you enter
    "sip show registry"?

    Also, the syntax of your "register" line in sip.conf looks weird:

    register =>
    :MYSECRETPASS:/200

    I would have used (assuming that "3055741..." is your broadvoice
    number):

    register => 3055741...:/200

    Enzo
     
    Enzo Michelangeli, Jul 14, 2005
    #2
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Kyler Laird

    my BroadVoice experience

    Kyler Laird, Aug 23, 2004, in forum: VOIP
    Replies:
    8
    Views:
    2,572
    Kyler Laird
    Sep 22, 2004
  2. Rein
    Replies:
    2
    Views:
    487
  3. paul123
    Replies:
    4
    Views:
    2,497
    maxcappa
    Mar 8, 2010
  4. Replies:
    0
    Views:
    886
  5. phpguy
    Replies:
    5
    Views:
    1,395
    phpguy
    Jan 3, 2008
Loading...

Share This Page