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

ziererk

Neuer User
Mitglied seit
25 Mai 2005
Beiträge
14
Punkte für Reaktionen
0
Punkte
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
 
ziererk schrieb:
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?


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.
 
kombjuder schrieb:
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.

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
 
ziererk schrieb:
Aber geht das auch mit GROUP()=capi.


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.
 
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
 
Ach, sorry. Hab' ich übersehen.
 
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
 
ChanIsAvail funktioniert super! Danke an alle für die Hilfe.

Grüße,
Klaus
 
@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?
 
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.
 
isenberg schrieb:
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.

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.
 
Hupe schrieb:
@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?

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
 
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:[email protected]/${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
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.