.titleBar { margin-bottom: 5px!important; }

Wenn 2 CAPI-Leitungen belegt sind, über SIP wählen

Dieses Thema im Forum "Asterisk ISDN Allgemein" wurde erstellt von ziererk, 19 Okt. 2006.

  1. ziererk

    ziererk Neuer User

    Registriert seit:
    25 Mai 2005
    Beiträge:
    14
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo zusammen,
    wie würdet ihr es einrichten, dass Asterisk automatisch eine ausgehende Verbindung über SIP verstellt, wenn beide CAPI-Leitungen belegt sind?

    Momentan benutze ich die Option "j" beim Dial-Kommando, allerdings kann diese nicht unterscheiden, ob die Leitung bei mir belegt ist, oder bei der Gegenstelle. Wenn also mein Gesprächspartner telefoniert, denkt Asterisk, dass beide Leitungen belegt sind und versucht nochmal, das Gespräch über SIP herzustellen. Das ganze führt dazu, dass ich im Telefon 2x das Läutzeichen höre, und danach die Verbindung getrennt wird, was unsere Leute natürlich verwirrt (O-Ton: Das scheiss Telefon geht schon wieder nicht).

    Wie würdet ihr das machen? Gibts eine Möglichkeit, in der extensions.conf zu entscheiden, wieviele Leitungen auf CAPI schon belegt sind, um dann die Verbindung über SIP herzustellen?

    Danke.
    Klaus
     
  2. Hupe

    Hupe Aktives Mitglied

    Registriert seit:
    8 Apr. 2004
    Beiträge:
    2,586
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
  3. kombjuder

    kombjuder IPPF-Promi

    Registriert seit:
    2 Nov. 2004
    Beiträge:
    3,086
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Weil am Rhein

    exten => _X.,1,Set(GROUP()=zap)
    exten => _X.,2,GotoIf($["${GROUP_COUNT(zap)}">"2"]?5:3)
    exten => _X.,3,Dial(...
    exten => _X.,4,Hangup
    exten => _X.,5,Goto(belegt,${EXTEN},1)

    oder in Zeile 5 direkt Dial(SIP/...

    Nicht vergessen im Kontext für eingehende ISDN-Verbindungen muß auch die Zeile mit Set(GROUP()=zap) rein, sonst werden eingehende Gespräche nicht erfasst.
     
  4. ziererk

    ziererk Neuer User

    Registriert seit:
    25 Mai 2005
    Beiträge:
    14
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Danke. Das klingt ja schon mal interessant. Aber geht das auch mit GROUP()=capi. Wir haben nach intern ein paar Zap-Telefone und ein paar SIP-Telefone, und nach extern 2 CAPI-Leitungen und einen SIP-Account. Der Flaschenhals sind die beiden externen CAPI-Leitungen. Ich werd das auf jeden Fall mal ausprobieren.

    Klaus
     
  5. kombjuder

    kombjuder IPPF-Promi

    Registriert seit:
    2 Nov. 2004
    Beiträge:
    3,086
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Weil am Rhein

    Du kannst jeden Namen wählen.

    Wobei Variablen- oder Befehlsnamen von asterisk sind nicht die beste Lösung, also vielleich statt zap zap-in oder statt capi capi-1.
     
  6. isenberg

    isenberg Neuer User

    Registriert seit:
    8 Okt. 2005
    Beiträge:
    86
    Zustimmungen:
    0
    Punkte für Erfolge:
    6
    Ich hab's so bei mir gelöst:
    Code:
    [DialOut]
    exten => _X.,1,ChanIsAvail(Zap/g2)
    exten => _X.,2,Goto(DialOut-PSTN,${EXTEN},1)
    exten => _X.,102,Goto(DialOut-SIP,${EXTEN},1)
    
    [DialOut-PSTN]
    exten => _X.,1,Dial(Zap/g2/${EXTEN},120)
    include => DialOut-Indication
    
    [DialOut-SIP]
    exten => _X.,1,Dial(SIP/${EXTEN}@sip-out,120)
    include => DialOut-Indication
    
    [DialOut-Indication]
    exten => _X.,2,Congestion
    exten => _X.,3,Hangup
    exten => _X.,102,Busy
    exten => _X.,103,Hangup
    exten => h,1,Hangup
    exten => i,1,Playback(pbx-invalid)
    exten => i,2,Hangup
    exten => t,1,Hangup
    
     
  7. Hupe

    Hupe Aktives Mitglied

    Registriert seit:
    8 Apr. 2004
    Beiträge:
    2,586
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
  8. isenberg

    isenberg Neuer User

    Registriert seit:
    8 Okt. 2005
    Beiträge:
    86
    Zustimmungen:
    0
    Punkte für Erfolge:
    6
    Ach, sorry. Hab' ich übersehen.
     
  9. armincm

    armincm Aktives Mitglied

    Registriert seit:
    3 Aug. 2005
    Beiträge:
    1,006
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    chanisavail sollte funktionieren, aber nur wenn alle Verbindungen ueber chan-capi laufen.
    Andere Verbindungen (z.b. andere CAPI Applikationen) werden nicht durch chan-capi registriert.

    Armin
     
  10. ziererk

    ziererk Neuer User

    Registriert seit:
    25 Mai 2005
    Beiträge:
    14
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    ChanIsAvail funktioniert super! Danke an alle für die Hilfe.

    Grüße,
    Klaus
     
  11. Hupe

    Hupe Aktives Mitglied

    Registriert seit:
    8 Apr. 2004
    Beiträge:
    2,586
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    @armincm: Wo wir gerade dabei sind: Könnte man durch das Auswerten der Variablen "PRI_CAUSE" bzw. "HANGUPCAUSE" feststellen, ob wirklich bei der Gegenstelle "Besetzt" ist oder ob gerade kein B-Kanal frei ist, weil diese von einer anderen Applikation benutzt werden?
     
  12. isenberg

    isenberg Neuer User

    Registriert seit:
    8 Okt. 2005
    Beiträge:
    86
    Zustimmungen:
    0
    Punkte für Erfolge:
    6
    Eigentlich müsste doch auch Folgendes funktionieren:
    Code:
    [DialOut]
    exten => _X.,1,Dial(Zap/g2/${EXTEN},120)
    exten => _X.,2,Dial(SIP/${EXTEN}@sip-out,120)
    exten => _X.,3,Congestion()
    exten => _X.,4,Hangup()
    exten => _X.,102,NoOp()
    exten => _X.,103,Busy()
    exten => _X.,104,Hangup()
    
    Soweit ich verstehe wird nach erfolgreichem Dial die Extension nicht mehr weiter ausgeführt. Jedoch bei einem Gassenbesetzt nach dem ersten Dial, wird die Extension weiter fortgeführt.
     
  13. kombjuder

    kombjuder IPPF-Promi

    Registriert seit:
    2 Nov. 2004
    Beiträge:
    3,086
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Weil am Rhein
    Das stimmt nur, wenn du nicht Asterisk 1.2 oder neuer benutzt. Wenn du das im 1.2 haben willst musst du das explizit einschalten.
     
  14. armincm

    armincm Aktives Mitglied

    Registriert seit:
    3 Aug. 2005
    Beiträge:
    1,006
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ja, eigentlich schon. Bei keinem verfuegbaren B-Kanal sollte cause ueber CAPI 0x34A2 ("No circuit / channel available") sein. Dies entspricht einem Asterisk cause 0x22 (34), also nur die unteren 7bit bei 0x34xx.

    Armin
     
  15. fridiy

    fridiy Neuer User

    Registriert seit:
    8 Okt. 2006
    Beiträge:
    57
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    hallo alle
    ich habe zwei Asterisk Server und sie kommunitzieren sich gegen seitig gut
    aber im asterisk eins ist zwie sip-telefone und zwei isdn-telefone angebunden
    und wenn ich die zwie sip telefone von den zwei ISDN-tel (geleichzeitig) anrufen geht das gut aber umgekehrt geht das nicht ich meine eine sip klinglt schon aber der zweite nicht

    zweite problem ist wie kann ich eine rufumleitung dirkt und nach zeit machen
    d.h wenn ich 2000 anrufe soll bei 2001 klingeln ein mal dirkt und zwiete möglichkeit nach zeit Z.B 10 sekunden

    dritte problem ist wie kann ich eine anruf aufbaue von 3000,oder 3001 nach 62 oder 11 (62und 11 sind die ISDN-Telefone)
    und mein konfigurationen schauen so aus

    exte.config
    [general]
    static=yes
    writeprotect=no

    [default]
    include => 2000
    include => 2001
    include => capi_in
    include => capi_out
    include => iax_out

    [2000]
    exten => 2000,1,Dial(SIP/2000,50,tT)
    exten => 2000,2,VoiceMail(u2000)
    exten => 2000,102,VoiceMail(b2000)

    [2001]
    exten => 2001,1,Dial(SIP/2001,50,tT)
    exten => 2001,2,VoiceMail(u2001)
    exten => 2001,102,VoiceMail(b2001)

    exten => 2999,1,VoiceMailMain(${CALLERIDNUM}

    [capi_in]
    exten => 13,1,Dial(SIP/2000,50,tT)
    exten => 13,2,Congestion
    exten => 13,3,Busy()
    exten => 13,4,Hangup()

    exten => 14,1,Dial(SIP/2001,50,tT)
    exten => 14,2,Congestion
    exten => 14,3,Busy()
    exten => 14,4,Hangup()

    [capi_out]
    exten => _[1-9]X,1,Dial(CAPI/contr1/13:${EXTEN},50,tT)
    exten => _[1-9]X,2,Congestion
    exten => _[1-9]X,3,Busy()
    exten => _[1-9]X,4,Hangup()

    [iax_out]
    exten => _6XXXX,1,Dial(IAX2/Asterisk1:1234@192.168.4.15/${EXTEN:1})
    exten => _6XXXX,2,Hangup



    sip .config in Asterisk 1

    [2000]
    type=friend
    context=default
    username=2000
    secret=1234
    host=dynamic
    pickupgroup=1

    [2001]
    type=friend
    context=default
    username=2001
    secret=1234
    host=dynamic
    pickupgroup=1



    capi-config
    ;
    ; CAPI config
    ;
    ;

    ; general section

    [general]
    nationalprefix=0
    internationalprefix=00
    rxgain=0.8
    txgain=0.8
    language=de ;set default language
    ;ulaw=yes ;set this, if you live in u-law world instead of a-law

    ; interface sections ...

    [ISDN1] ;this example interface gets name 'ISDN1' and may be any
    ;name not starting with 'g' or 'contr'.
    ;ntmode=yes ;if isdn card operates in nt mode, set this to yes
    isdnmode=msn ;'MSN' (point-to-multipoint) or 'DID' (direct inward dial)
    ;when using NT-mode, 'DID' should be set in any case
    incomingmsn=13,14 ;allow incoming calls to this list of MSNs/DIDs, * = any
    ;defaultcid=123 ;set a default caller id to that interface for dial-out,
    ;this caller id will be used when dial option 'd' is set.
    ;controller=0 ;ISDN4BSD default
    ;controller=7 ;ISDN4BSD USB default
    controller=1 ;capi controller number to use
    group=1 ;dialout group
    ;prefix=0 ;set a prefix to calling number on incoming calls
    softdtmf=on ;enable/disable software dtmf detection, recommended for AVM cards
    relaxdtmf=on ;in addition to softdtmf, you can use relaxed dtmf detection
    accountcode= ;Asterisk accountcode to use in CDRs
    context=capi_in ;context for incoming calls
    ;holdtype=hold ;when Asterisk puts the call on hold, ISDN HOLD will be used. If
    ;set to 'local' (default value), no hold is done and Asterisk may
    ;play MOH.
    ;immediate=yes ;DID: immediate start of pbx with extension 's' if no digits were
    ; received on incoming call (no destination number yet)
    ;MSN: start pbx on CONNECT_IND and don't wait for SETUP/SENDING-COMPLETE.
    ; info like REDIRECTINGNUMBER may be lost, but this is necessary for
    ; drivers/pbx/telco which does not send SETUP or SENDING-COMPLETE.
    ;echosquelch=1 ;_VERY_PRIMITIVE_ echo suppression
    ;echocancel=yes ;EICON DIVA SERVER (CAPI) echo cancelation
    ;(possible values: 'no', 'yes', 'force', 'g164', 'g165')
    echocancelold=yes;use facility selector 6 instead of correct 8 (necessary for older eicon drivers)
    ;echotail=64 ;echo cancel tail setting
    ;bridge=yes ;native bridging (CAPI line interconnect) if available
    ;callgroup=1 ;Asterisk call group
    ;language=de ;set language for this device (overwrites default language)
    devices=2 ;number of concurrent calls on this controller
    ;(2 makes sense for single BRI, 30 for PRI)


    iax.config
    [Asterisk2]
    type=user
    secret=1234
    auth=md5
    host=192.168.4.15
    context=default


    asterisk 2


    sipconfig

    [3000]
    type=friend
    context=default
    username=3000
    secret=1234
    host=dynamic
    pickupgroup=1

    [3001]
    type=friend
    context=default
    username=3001
    secret=1234
    host=dynamic
    pickupgroup=1

    exte.config

    [general]
    static=yes
    writeprotect=no

    [default]
    include => 3000
    include => 3001
    include => iax_out

    [3000]
    exten => 3000,1,Dial(SIP/3000,50,tT)
    exten => 3000,2,VoiceMail(u3000)
    exten => 3000,102,VoiceMail(b3000)

    [3001]
    exten => 3001,1,Dial(SIP/3001,50,tT)
    exten => 3001,2,VoiceMail(u3001)
    exten => 3001,102,VoiceMail(b3001)

    exten => 2999,1,VoiceMailMain(${CALLERIDNUM}

    iax.config

    [Asterisk1]
    type=user
    secret=1234
    auth=md5
    host=192.168.1.150
    context=default



    ich bin sher dank bar für jede helfe