Line-Select, CbC, ISDN/SIP, ... eine Beispiel-Konfiguration!

Noch eine Frage!

Ich werde jetzt die Konfiguration von Dir mal testen nachdem ich sie grob angepasst (und wie ich meine in Teilen auch verstanden habe :)

Bei der Definition der User hast Du ja mehrstellige MSN eingetragen (11111, 22222). Ich hänge jedoch mit einer AVM B1 an einem Anlagenanschluss (wobei ich erstmal noch ohne den Anlagenanschluss nur intern testen will) und werte dann nur noch die DDI aus, d.h. auch an der HFC im NT-Mode habe ich nur kurze interne MSN (2 Stellen). Kann ich die in deiner Konfiguration verwendeten MSN einfach mit meinen kurzen MSN ersetzen oder muss ich irgendwo darauf achten, dass bei der Kürzung von Ziffern noch was anderes angepasst werden muss? :)1, oder :2-Kürzungen). Ich denke, soweit ich das überblicke, kann ich einfach meine user mit meinen internene kurzen MSN definieren, und fertig, bin aber nicht ganz sicher.
 
Hmm mit dem Anlagenanschluss kenne ich mich net so aus, aber es hört sich so an, als wäre es einfacher, da Durchwahlen und interne Teilnehmen zusammen fallen.
 
Ja, werde demnächst damit mal testen, muss erst deine Beispielconfigs noch besser verstehen. Immerhin habe ich jetzt Dialtone an der HFC, aber instabil (einmal zuviel ztcfg eingeben nachdem make loadNT schon lief injklusive ztcfg und schon ist es wieder tot).

Ich hättre noch eine Bitte. Könntest Du Deine Konfigurationen am Anfang dieses Thread nochmal durchgehen ob das den aktuellen Stand widerspiegelt.
Z.B. ist dort noch CALLINGNUM eingetragen statt der alternativen Variablen (is mir gerade entfallen _NETWORK_:) Ausserdem sit ein include von "sipphones" enthalten aber ein context "sipphones" exisitiert nicht. Vielleicht kannst Du den noch reineditieren? (Ich nehme an da geht es dann um die lokalen sip-clients, wie man die mit einbaut, etwas was ich auch noch machen muss, aber noch nicht sicher bin wie das in verbindung mit sip.conf aufzubauen ist um über sip-clients auch später dann via sipgate rauszutelefonieren und auch anrufe an lokalen sip-clients anzunehmen). Aber Deine Doku ist mit Abstand bisher das Beste was ich finden konnte um schnell und effektiv zu lernen, zu verstehen und was ans Laufen zu kriegen (ohne mit statischen Einträgen rumzudoktern).

Vielleicht kannst Du Deine neusten Erkenntnisse und auch die Konfigurationen dazu mal veröffentlichen?
Auf jeden Fall erstmal Danke für das was Du hier schon geleistet hat.

Viele Grüße,

Jui
 
So alles auf aktuellem Stand - werde aber demnächst nochmal meine komplette Lösung posten.
 
Supi, danke dir für die Mühen, aber das reduziert Fehlerquellen ungemein und macht das Nachvollziehen einfacher. Das mit der Komplettlösung wäre fast mal einen richtigen Artikel wert, ist echt mustergültig der Dialplan :)

Bin gespannt wie ich das am anlagenanschluss dann umgesetzt kriege ...

Gutes Neues Jahr noch bei der Gelegenheit.
 
kurze verständnisfrage:

es gibt ein Macro wo alle spezifischen sachen definiert werden .. soweit okay ..

aber irgendwie sehen ich nirgendswo nen aufruf des macros .. bin ich blind? seh ich den wald vor lauter bäumen nicht?
 
exten => s,1,Macro(user${PRI_NETWORK_CID})
 
@MAX
VIELEN DANK für Deinen Tipp! - Es lang an falschen Dial-Parametern. Sag mal, gibt es im Netz irgendwo eine nützliche Übersicht über alle brauchbaren Dial-Parametern (CAPI, HFC)?

Welche Dial-PArameter hast Du WO in der extensions.conf angepasst (bezogen auf die Musterkonfiguration von allesOK? Geht es nur um den Parameter "r" (einfach "r" rausnehmen?)
 
Jetzt brauche ich Hilfe!
Ich habe jetzt die extensions.conf weitestgehend angepasst um sie an meinem Anlagenanschluss zu testen. Eine AVM B1 verbindet den Server mit dem Anlagenanschluss, korrekte Firmware ist in /etc/capi.conf für die B1 eingetragen und die Option P2P gesetzt. An der HFC im NET-Mode hängt ein ISDN-Telefon mit der MSN (in meinem Fall würde man dann DID sagen) 51.
Wenn ich nun versuche von dem telefon aus (Freizeichen ist da) eine Rufnummer zu wählen kommt sofort ein besetzt und folgende Ausgabe im CLS:

Code:
CLI>   == Primary D-Channel on span 1 up for TEI 64
    -- Accepting call from '51' to '01755362361' on channel 0/2, span 1
    -- Executing Wait("Zap/2-1", "0.1") in new stack
    -- Executing DigitTimeout("Zap/2-1", "2") in new stack
    -- Set Digit Timeout to 2
    -- Executing SetLanguage("Zap/2-1", "de") in new stack
    -- Executing Macro("Zap/2-1", "user51") in new stack
    -- Executing SetVar("Zap/2-1", "MYNAME=MSN51") in new stack
    -- Executing SetVar("Zap/2-1", "MYMSN=51") in new stack
    -- Executing SetVar("Zap/2-1", "MYSIPGROUP=SIP/11") in new stack
    -- Executing SetVar("Zap/2-1", "MYCALLMACRO=callwithpstn") in new stack
    -- Executing SetVar("Zap/2-1", "MYNUMSIP=1") in new stack
    -- Executing SetVar("Zap/2-1", "MYSIP1=sipgate089") in new stack
    -- Executing SetVar("Zap/2-1", "MYSIP2=stanaphone646") in new stack
    -- Executing Goto("Zap/2-1", "callout|01755362361|1") in new stack
    -- Goto (callout,01755362361,1)
    -- Executing SetVar("Zap/2-1", "CALLMACRO2USE=callwithpstn") in new stack
    -- Executing SetVar("Zap/2-1", "SIP2USE=sipgate089") in new stack
    -- Executing Macro("Zap/2-1", "numbers|01755362361") in new stack
    -- Executing GotoIf("Zap/2-1", "0?2:5") in new stack
    -- Goto (macro-numbers,s,5)
    -- Executing GotoIf("Zap/2-1", "1?6:9") in new stack
    -- Goto (macro-numbers,s,6)
    -- Executing SetVar("Zap/2-1", "EWL=01755362361") in new stack
    -- Executing SetVar("Zap/2-1", "INTL=+491755362361") in new stack
    -- Executing Goto("Zap/2-1", "11") in new stack
    -- Goto (macro-numbers,s,11)
    -- Executing NoOp("Zap/2-1", "") in new stack
    -- Executing Goto("Zap/2-1", "number-preselection|01755362361|1") in new stack
    -- Goto (number-preselection,01755362361,1)
    -- Executing Macro("Zap/2-1", "cbc|01030") in new stack
    -- Executing SetVar("Zap/2-1", "CBC=01030") in new stack
    -- Executing Macro("Zap/2-1", "callwithpstn|51|MSN51|sipgate089") in new stack
    -- Executing SetCIDNum("Zap/2-1", "51") in new stack
    -- Executing SetCIDName("Zap/2-1", "MSN51") in new stack
    -- Executing Dial("Zap/2-1", "CAPI/0103001755362361|60|Tt") in new stack
Jan  3 23:20:02 NOTICE[6771]: chan_capi.c:1173 capi_request: didn't find capi device with outgoing msn = 0103001755362361. you should check your config!
Jan  3 23:20:02 NOTICE[6771]: app_dial.c:759 dial_exec: Unable to create channel of type 'CAPI'
  == Everyone is busy/congested at this time
    -- Executing GotoIf("Zap/2-1", "0?109:110") in new stack
    -- Goto (macro-callwithpstn,s,110)
    -- Executing Hangup("Zap/2-1", "") in new stack
  == Spawn extension (macro-cbc, s, 3) exited non-zero on 'Zap/2-1' in macro 'cbc'
  == Spawn extension (number-preselection, 01755362361, 1) exited non-zero on 'Zap/2-1'
    -- Executing NoOp("Zap/2-1", "") in new stack
    -- Hungup 'Zap/2-1'
  == Primary D-Channel on span 1 down for TEI 64

Die MAkros werden ganz toll durchlaufen und die Entscheidung gefällt über den entsprechenden CBC-Provider 01030 dann über CAPI rauszuwählen (das wäre also über die B1).aber das Problem ist, dass wohl die Zielrufnummer als outgoing msn verwendet wird (und da dürfte eigentlich nur eine meiner DIDs (MSN) drinstehen. Ich hatte in /etc/asterisk/capi.conf die outgoingmsn=0 gesetzt wie in anderen Beispielen für den Anlagenanschluss angegeben. Evtl. muss ich in der extensions.conf irgendwie noch eine korrekte outgoingmsn definieren, kann das sein (die dann bei jedem CAPI-Call mit übergeben wird).

Ich bin jetzt etwas überfordert damit, dass die Zielrufnummer als outgoing msn gesetzt wird und weiss nicht weiter.

Hoffe auf Eure Hilfe (sabersoft kennt sich mit Anlagenanschluss aus, allesOK mit seinem Script und dem Betrieb mit HFC im NT-Mode. Ich betreibe die Kombination die wohl sonst kaum einer hat (AVM/CAPI am anlagenanschluss, HFC bildet einen internen S0).

Gruß,

Jui
 
Also am Script liegt es nicht - es ist nur der Dial-Befehl der nicht ordentlich umgesetzt wird. Die Syntax ist
Dial(CAPI/MSN:Nummer,timeout,options)
also bei dir
Dial(CAPI/51:${EWL},60,Tt) evtl Dial(CAPI/0:${EWL},60,Tt)
weiss nicht, ob man die MSN selbst oder eine ID nutzen muss.

Such mal im CAPI-Teil des Forums oder auf voip-info.org
 
@allesOK

Danke für das erste Feedback. Das Script sieht gut aus, nur warum die falsche outgoing msn gesetzt wird ist nicht klar. Ich werde wohl mal versuchen müssen das statisch mit einer sehr einfachen extensions.conf zu testen. Habe aber zu diesem Problem auch noch nichts gefunden, aber sabrsoft kann da vielleicht weiterhelfen.

Edit: Problem prinzipiell gelöst, extensions.conf entsprechend modifiziert.
Was macht der Parameter "b" eigentlich genau (letzte Zeile im Code)?
Code:
[macro-callwithpstn]
; ARG1 = calleridnum
; ARG2 = calleridname

exten => s,1,SetCIDNum(${ARG1})
exten => s,2,SetCIDName(${ARG2})
exten => s,3,Dial(${TCOM}/${ROOT1}${MYMSN}:b${CBC}${EWL},60,Tt)

Anmerkung: ROOT1 legt die Stammnummer des Anlagenanschlusses fest. Trotz hinzugefügter "MYMSN" wird als Rufnummer die MSN "0" mitgesendet, das ist noch ungelöst.

-> Raustelefonieren geht, derzeit wird aber noch die DDI 0 gesetzt, weiss noch nicht warum. Muss mal sehen wie ich die sendende Rufnummer sauber setzen kann (Stamm + DDI des Teilnehmers)

-> Reintelefonieren geht jetzt endlich auch, vom Anlagenanschluss kommt die gesamte Rufnummer (Stamm + DDI), musste also noch rausfinden wie man in der extension.conf von allesOK die DDI extrahiert damit die Weiterverarbeitung durchläuft. Dank der wirklich hervorragenden und durchdachten Scriptprogrammierung von allesOK war nur eine minimale Änderung erforderlich und die anderen Teile konnte ich unangetastet lassen. Wenn alles läuft poste ich ne Lösung basierend auf dem Script von allesOK die dann für den Anlagenanschluss auch gleich passt!

Vielen Dank für die Hilfe!
 
@allesOK

So, jetzt habe ich eine Frage zu Deinen macros und der extension.conf
Ich weiss nicht ob das sonnvoll ist, aber ich möchte folgendes realisieren.
1) Ich habe einige Accounts bei SIP-Providern wie sipgate.de, etc. und diese auch in sip.conf eingetragen und sie registrieren sich auch brav bei ihren Providern
2) Ich habe ausserdem hier einige lokale SIP-Clients denen ich Nummern (Nebenstellen zwischen 10 und 99) zugeordnet habe, d.h. der username dieser Clients ist eine zweistellige Zahl. Diese Clients haben eigene Nebenstellennummern die nicht mit Nebenstellennummern (DDI) die ich als MSNs angeschlossenen Telefonen zugeordnet habe kollidieren (also z.B. zwei SIP Clients mit 61 und 62 und 2 ISDN-Telefone mit 51 und 52).
3) Ich möchte, wenn ein Anruf über einen meiner SIP-Provider hereinkommt, diese Anrufe beliebig verteilen können (z.B. SIP-Client 61 und Telefon 51 klingeln)

Tja, das kriege ich nicht hin, bzw. komme mit den notwendigen Änderungen an Deiner extensions.conf nicht klar die ich bräuchte.
Muss ich einen context [sip-in] ähnlich [tcom-in] anlegen um das zu machen (wenn ja, auf welche extension muss der dann reagieren?)?
Muss ich dann ein user-Makro für diese "externe" extension des SIP-Providers anlegen und wie muss diese aussehen (die user-macros haben mit incoming calls nicht so viel zu tun, oder?)

Stehe echt auf dem Schlauch, vor allem mit der SIP-Geschichte (also externe SIP-Calls auf interne SIP-Clients (oder Telefone) durchreichen.

Ein sip debug zeigt mir, dass ein Anruf auf meiner sipgate-rufnummer auch bis zu meinem asterisk kommt, aber den output kann ich nicht deuten. es klingelt nichts, es ist einfach tot.
 
Anlagenanschluss + incoming sipgate-Rufe an int. sip-clients

@allesOK

Das obige Problem ist vom Grundsatz her gelöst, aber jetzt komme ich mit ein paar konkreteren Fragen.

Anbei zunächst meine Konfigurationsdateien (Nummern wurden verändert, aber konsistent in allen Files).

sip.conf: Hier verstehe ich nicht ganz, warum ich den von mir in der extensions.conf angelegten context "sip-in" per include dem context "sipphones" hinzufügen muss damit alles klappt.

Ich hatte vorher in der sip.conf den context-verweis bei den SIP-Providern auf "sip-in" gesetzt, das hat aber nicht funktioniert.
Jetzt habe ich den context auf "sipphones" geändert und "sip-in" unverändert per include in "sipphones" mit eingebunden und nun klappt es und der lokale sip-client reagiert (vorher war einfach stille und nix hat sich getan).

Code:
[general]
language=de
context=sipphones               ; Context to be used in extensions
port=5060                       ; Port to bind to
bindaddr=0.0.0.0                ; Address to bind SIP channel to

;srvlookup=yes                  ; Enable DNS SRV lookups on outbound calls
;pedantic=yes                   ; Enable slow, pedantic checking for Pingtel
;tos=lowdelay                   ; IP QoS parameter, either keyword or value
;maxexpirey=3600                ; Max length of incoming registration we allow
;defaultexpirey=120             ; Dflt length of incoming/outoing registration
;defaultexpirey=160
;notifymimetype=text/plain      ; Allow overriding of mime type in NOTIFY
;videosupport=yes               ; Turn on support for SIP video

disallow=all                    ; Disallow all codecs
allow=ulaw
allow=alaw
allow=gsm

localnet = 198.168.178.0/255.255.255.0
externip = my.dyndns.org

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; External Accounts ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;sipgate.de Rufnummer +49.89.420939553 
register => 1939553:[email protected]/1939553

;sipgate.de Rufnummer +49.30.868403575 
register => 8403575:[email protected]/8403575

;1und1-34154599
register => 4999134154599:[email protected]/34154599

;stanaphone.com Rufnummer +1.646.225.7540 
register => 6462257540:[email protected]/6462257540

[sipgate-089]
type=friend
username=1939553
secret=xxxxx
host=sipgate.de
fromuser=1939553
fromdomain=sipgate.de
qualify=yes
nat=no
insecure=very
context=sip-in
canreinvite=no

[sipgate-030]
type=friend
username=8403575
secret=xxxxx
host=sipgate.de
fromuser=8403575
fromdomain=sipgate.de
qualify=yes
nat=no
insecure=very
context=sip-in
canreinvite=no

[1und1-34154599]
type=friend
username=4999134154599
secret=xxxxx
host=sip.1und1.de
fromuser=4999134154599
fromdomain=sip.1und1.de
qualify=yes
nat=no
insecure=very
context=sip-in
canreinvite=no

[stanaphone-646]
type=friend
username=6462257540
secret=xxxxx
host=sip.stanaphone.com
fromuser=6462257540
fromdomain=sip.stanaphone.com
qualify=yes
nat=no
insecure=very
context=sip-in
canreinvite=no



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Internal Accounts ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

[61]
type=friend
username=61
secret=61
host=dynamic
callerid="61" <Teilnehmer 61>
;qualify=yes
;nat=no
;canreinvite=no
;insecure=very
context=sipphones

[62]
type=friend
username=62
secret=62
host=dynamic
callerid="62" <TEilnehmer 62>
;qualify=yes
;nat=no
;canreinvite=no
;insecure=very
context=sipphones

extensions.conf: (komplett obwohl nur Auszüge am Ende und am Anfang angepasst wurden.)

Vielleicht kann jemand sagen ob ich ROOTNUMCOUNT=6 in der hier verwendeten Weise überhaupt eintragen kann (es soll die Stammrufnummer von der Durchwahl getrennt werden. Die Variable kommt gegen Ende der extensions.conf zum Einsatz.

Dan noch die Frage warum die Variable MYSIPGROUP existiert, insbesondere wie "GROUP" zu verstehen ist. Wie erreicht ihr es dass hier ein Wert eingetragen wird und dann eine Gruppe von lokalen SIP-Cleints aber angesprochen wird (daher wird wohl GROUP kommen, sonst könnte man es ja MYSIPCLIENT nennen :)

Auch die Variable MYNUMSIP stellt mich noch vor ein Rätsel.

Das LCR sieht ja echt gut aus, ich möchte aber noch sicherstellen, dass z.B. alle natinalen Gespräche inkl. Ortsgespräche über 1und1 geführt werden (ggf. je nach Teilnehmer (Privat, geschäftlich) über einen anderen 1und1 account). Da sehe ich auch noch kein Land! Werde wohl für den user noch eine Variable "MYGROUP" einführen in der dann "Privat" oder "Geschäftlich" steht um die Benutzereinträge (und damit die jeweiligen MSN) noch zu einer Gruppe zuzuordnen. Bin für Hinweise echt dankbar.

Code:
[general]

static=yes
writeprotect=no

[globals]

VOIPMSN=Zap/g1
TCOM=CAPI
;Stammrufnummer des Anlagenanschlusses
ROOT=341545
;Anzahl der Ziffern der Stammrufnummer
ROOTNUMCOUNT=6

[default]

include => sip2out
include => isdn2out
include => sip-in
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;users ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

[macro-user51]

exten => s,1,SetVar(MYNAME=MSN51)
exten => s,2,SetVar(MYMSN=51)
exten => s,3,SetVar(MYSIPGROUP=SIP/61)
exten => s,4,SetVar(MYCALLMACRO=callwithpstn)
exten => s,5,SetVar(MYNUMSIP=1)
;exten => s,6,SetVar(MYSIP1=1und1-34154599)
exten => s,6,SetVar(MYSIP1=sipgate-089)
exten => s,7,SetVar(MYSIP2=stanaphone-646)

[macro-user99]

exten => s,1,SetVar(MYNAME=MSN99)
exten => s,2,SetVar(MYMSN=99)
exten => s,3,SetVar(MYSIPGROUP=SIP/62)
exten => s,4,SetVar(MYCALLMACRO=callwithpstn)
exten => s,5,SetVar(MYNUMSIP=3)
exten => s,6,SetVar(MYSIP1=sipgate-089)
exten => s,7,SetVar(MYSIP2=stanaphone-646)
exten => s,8,SetVar(MYSIP3=sipgate-030)

[macro-user1959335]

exten => s,1,SetVar(MYNAME=MSN51)
exten => s,2,SetVar(MYMSN=51)
exten => s,3,SetVar(MYSIPGROUP=SIP/61)
exten => s,4,SetVar(MYCALLMACRO=callwithpstn)
exten => s,5,SetVar(MYNUMSIP=1)
;exten => s,6,SetVar(MYSIP1=1und1-34154599)
exten => s,6,SetVar(MYSIP1=sipgate-089)
exten => s,7,SetVar(MYSIP2=stanaphone-646)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; external ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; outgoing calls

[macro-callwithpstn]
; ARG1 = calleridnum
; ARG2 = calleridname

exten => s,1,SetCIDNum(${ARG1})
exten => s,2,SetCIDName(${ARG2})
exten => s,3,Dial(${TCOM}/${ROOT}${MYMSN}:b${CBC}${EWL},60,Tt)
;exten => s,3,Dial(${TCOM}/${CBC}${EWL},60,Tt)
exten => s,104,GotoIf($[${DIALSTATUS} = CONGESTION]?109:110)
;exten => s,105,Dial(${TCOM}/${EWL},60,Tt)
exten => s,105,Dial(${TCOM}/${ROOT}${MYMSN}:b${EWL},60,Tt)
exten => s,106,Playtones(busy);
exten => s,107,Busy

[macro-callwithsip]
; ARG1 = calleridnum
; ARG2 = calleridname
; ARG3 = sipprovider

exten => s,1,SetCIDNum(${ARG1})
exten => s,2,SetCIDName(${ARG2})
exten => s,3,SetVar(NUMBER2DIAL=${EWL})
exten => s,4,GotoIf($[${ARG3:-5} = -intl]?5:6)
exten => s,5,SetVar(NUMBER2DIAL=${INTL})
exten => s,6,Dial(SIP/${NUMBER2DIAL}@${ARG3},60,Tt)
exten => s,107,GotoIf($[${DIALSTATUS} = CONGESTION]?108:109)
exten => s,108,Macro(callwithpstn,${ARG1},${ARG2})
exten => s,109,Playtones(busy);
exten => s,110,Busy

[macro-notallowed]

exten => s,1,Answer
exten => s,2,Wait(0.5)
exten => s,3,Playback(ss-noservice)
exten => s,4,Hangup

[forbidden]

; 019x
exten => _019X.,1,Macro(notallowed)

; 0900
exten => _0900X.,1,Macro(notallowed)

; EMSAT
exten => _0088X.,1,Macro(notallowed)

[emergency]

; re-rewrite emergency call numbers
; Anpassen auf eigene Vorwahl erforderlich

exten => _0991110,1,SetVar(EWL=110)
exten => _0991110,2,Macro(callwithpstn,${MYMSN},${MYNAME})

exten => _0991112,1,SetVar(EWL=112)
exten => _0991112,2,Macro(callwithpstn,${MYMSN},${MYNAME})

exten => _099119222,1,SetVar(EWL=19222)
exten => _099119222,2,Macro(callwithpstn,${MYMSN},${MYNAME})

[preselection]

; dial the following prefixes with a defined method

; university of saarland
; exten => _0681302X.,1,Macro(callwithsip,${MYMSN},${MYNAME},eric-unisaarland-intl)

; freecall

exten => _0800X.,1,Macro(callwithpstn,${MYMSN},${MYNAME})

; user-defined call-by-call

exten => _010X.,1,Macro(callwithpstn,${MYMSN},${MYNAME})

; automatic call-by-call

[macro-cbc]

exten => s,1,SetVar(CBC=${ARG1})
exten => s,2,Macro(${CALLMACRO2USE},${MYMSN},${MYNAME},${SIP2USE})
exten => s,3,Hangup

[cbc-01071-international]

exten => _00ZX.,1,Macro(cbc,01071)

[cbc-01030-cellphones]

exten => _015X.,1,Macro(cbc,01030)
exten => _016X.,1,Macro(cbc,01030)
exten => _017X.,1,Macro(cbc,01030)

[cbc-01071-longdistance]

exten => _0ZX.,1,Macro(cbc,01071)

[cbc-01019-local]
;Anpassen auf eigene Vorwahl erforderlich
exten => _0991X.,1,Macro(cbc,01019)

;[cbc-xxl]
;Nur wenn XXL-Tarif vorhanden
;exten => _0ZX.,1,Macro(cbc,01033)

[nocbc]

exten => _X.,1,Macro(cbc)

[cbc]

;exten => _0991X.,1,Macro(cbc)

;Nur in Verbindung mit Sonntagstarifen wie XXL sinnvoll
;include => cbc-01019-local|*|mon-sat|*|*
include => cbc-01019-local

include => cbc-01071-international

include => cbc-01030-cellphones

;Nur in Verbindung mit Sonntagstarifen wie XXL sinnvoll
;include => cbc-01071-longdistance|*|mon-sat|*|*
include => cbc-01071-longdistance

;Nur in Verbindung mit Sonntagstarifen wie XXL sinnvoll
;include => cbc-xxl|*|sun|*|*

include => nocbc;

[standard]

exten => h,1,NoOp

exten => t,1,Playtones(busy)
exten => t,2,Busy

[number-preselection]

include => emergency

include => forbidden

include => preselection

include => cbc

include => standard


[line-preselection]

include => emergency

include => forbidden

include => cbc

include => standard


[macro-numbers]
; ARG1 number to rewrite
; sets
; EWL (exten with local)
; INTL (international format)

exten => s,1,GotoIf($[${ARG1:0:2} = 00]?2:5)
exten => s,2,SetVar(EWL=${ARG1})
exten => s,3,SetVar(INTL=+${ARG1:2})
exten => s,4,Goto(11)
exten => s,5,GotoIf($[${ARG1:0:1} = 0]?6:9)
exten => s,6,SetVar(EWL=${ARG1})
exten => s,7,SetVar(INTL=+49${ARG1:1})
exten => s,8,Goto(11)
exten => s,9,SetVar(EWL=0991${ARG1})
exten => s,10,SetVar(INTL=+49991${ARG1})
exten => s,11,NoOp


[macro-invalidline]

exten => s,1,Answer
exten => s,2,Wait(0.5)
exten => s,3,Playback(privacy-incorrect)
exten => s,4,Hangup


[callout]

; use pstn line (no sip provider needed)

exten => _1*X.,1,SetVar(CALLMACRO2USE=callwithpstn)
exten => _1*X.,2,Macro(numbers,${EXTEN:2})
exten => _1*X.,3,Goto(line-preselection,${EWL},1)

; use default sipline (MYSIP1)

; forbid CbC over sip
exten => _2*010X.,1,Macro(invalidline)

exten => _2*X.,1,SetVar(CALLMACRO2USE=callwithsip)
exten => _2*X.,2,SetVar(SIP2USE=${MYSIP1})
exten => _2*X.,3,Macro(numbers,${EXTEN:2})
exten => _2*X.,4,Goto(line-preselection,${EWL},1)

; use special sipline (MYSIPx)

;forbid CbC over sip
exten => _2Z*010X.,1,Macro(invalidline)

exten => _2Z*X.,1,SetVar(CALLMACRO2USE=callwithsip)
exten => _2Z*X.,2,GotoIf($[${EXTEN:1:1} <= ${MYNUMSIP}]?3:7)
exten => _2Z*X.,3,SetVar(SIP2USE=${MYSIP${EXTEN:1:1}})
exten => _2Z*X.,4,Macro(numbers,${EXTEN:3})
exten => _2Z*X.,5,Goto(line-preselection,${EWL},1)
exten => _2Z*X.,6,Goto(8)
exten => _2Z*X.,7,Macro(invalidline)
exten => _2Z*X.,8,NoOp

; choose best service by number (fallback is MYCALLMACRO)

exten => _XXX.,1,SetVar(CALLMACRO2USE=${MYCALLMACRO})
exten => _XXX.,2,SetVar(SIP2USE=${MYSIP1})
exten => _XXX.,3,Macro(numbers,${EXTEN})
exten => _XXX.,4,Goto(number-preselection,${EWL},1)

include => sipphones

; if the number does not start with three digits -> invalid
exten => i,1,Macro(invalidline)


[isdn2out]

exten => s,1,Wait(0.1)
exten => s,2,DigitTimeout(2)
exten => s,3,SetLanguage(de)
exten => s,4,Macro(user${PRI_NETWORK_CID})

exten => _X.,1,Wait(0.1)
exten => _X.,2,DigitTimeout(2)
exten => _X.,3,SetLanguage(de)
exten => _X.,4,Macro(user${PRI_NETWORK_CID})
exten => _X.,5,Goto(callout,${EXTEN},1)

[sip2out]

exten => _0X./11,1,Macro(user11111)
exten => _0X./11,2,Goto(callout,${EXTEN:1},1)

exten => _0X./22,1,Macro(user22222)
exten => _0X./22,2,Goto(callout,${EXTEN:1},1)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; in-coming calls (isdn,sip)

[macro-call-tk]

exten => s,1,Wait(0.1)
;exten => s,2,Macro(user${MACRO_EXTEN})
exten => s,2,Macro(user${MACRO_EXTEN:${ROOTNUMCOUNT}})
exten => s,3,SetCIDNum(${CALLERIDNUM})
exten => s,4,Dial(${VOIPMSN}/${MYMSN},60,Tt)
exten => s,105,Busy

[macro-call-sip]

exten => s,1,Wait(0.1)
exten => s,2,Macro(user${MACRO_EXTEN})
exten => s,3,SetCIDNum(0${CALLERIDNUM})
exten => s,4,Dial(${MYSIPGROUP},60,Tt)
exten => s,105,Busy

;Ergänzt, ursprünglich in sip.conf mittels context hierher verwiesen, ging aber nicht
[sip-in]

;exten => 1939553,1,Dial(SIP/62,60)
;exten => 1939553,2,Congestion
;exten => 1939553,102,Busy 
exten => 1939553,1,Macro(call-sip) 

exten => h,1,NoOp

exten => t,1,Busy

[tcom-in]

exten => 34154551,1,Macro(call-tk)

exten => 22222,1,Macro(call-sip)

exten => h,1,NoOp

exten => t,1,Busy

[macro-sip]

exten => s,1,Dial(SIP/${MACRO_EXTEN},60,Tt)
exten => s,2,Goto(s-${DIALSTATUS},1)
exten => s,3,Hangup

exten => s-CANCEL,1,Goto(s,3)
exten => s-ANSWER,1,NoOp
exten => s-NOANSWER,1,Goto(s,3)
exten => s-BUSY,1,Busy
exten => s-BUSY,2,Hangup
exten => s-CONGESTION,1,Congestion
exten => s-CONGESTION,2,Hangup
exten => s-CHANUNAVAIL,1,Playback(vm-theperson)
exten => s-CHANUNAVAIL,2,SayDigits(${MACRO_EXTEN})
exten => s-CHANUNAVAIL,3,Playback(vm-isunavail)
exten => s-CHANUNAVAIL,4,Hangup


[sipphones] 

;wichtig diesen include hier zu machen und auf diesen context in sip.conf zu verweisen
;(warum auch immer, wer kann das erklären)
include => sip-in

exten => 61,1,Macro(sip)
exten => 61,2,Hangup

exten => 62,1,Macro(sip)
exten => 62,2,Hangup

exten => h,1,Hangup

Und hier ein CLI-Auszug wenn ich von meinem normalen Telefon bei der Münchner sipgate-Rufnummer (089) anrufe (signalisierung erfolgt am sip-client mit der 61.

Code:
*CLI>     -- Registered SIP '61' at 192.168.178.210 port 5060 expires 1800
    -- Saved useragent "SIPphone release 1103v" for peer 61
    -- Saved useragent "X-Lite release 1103m" for peer 62
    -- Executing Macro("SIP/8403575-d21b", "call-sip") in new stack
    -- Executing Wait("SIP/8403575-d21b", "0.1") in new stack
    -- Executing Macro("SIP/8403575-d21b", "user1939553") in new stack
    -- Executing SetVar("SIP/8403575-d21b", "MYNAME=MSN51") in new stack
    -- Executing SetVar("SIP/8403575-d21b", "MYMSN=51") in new stack
    -- Executing SetVar("SIP/8403575-d21b", "MYSIPGROUP=SIP/61") in new stack
    -- Executing SetVar("SIP/8403575-d21b", "MYCALLMACRO=callwithpstn") in new stack
    -- Executing SetVar("SIP/8403575-d21b", "MYNUMSIP=1") in new stack
    -- Executing SetVar("SIP/8403575-d21b", "MYSIP1=sipgate-089") in new stack
    -- Executing SetVar("SIP/8403575-d21b", "MYSIP2=stanaphone-646") in new stack
    -- Executing SetCIDNum("SIP/8403575-d21b", "0099134154599") in new stack
    -- Executing Dial("SIP/8403575-d21b", "SIP/61|60|Tt") in new stack
    -- Called 61
    -- SIP/61-8032 is ringing
  == Spawn extension (macro-call-sip, s, 4) exited non-zero on 'SIP/8403575-d21b' in macro 'call-sip'
  == Spawn extension (sip-in, 1939553, 1) exited non-zero on 'SIP/8403575-d21b'
    -- Executing NoOp("SIP/8403575-d21b", "") in new stack

Da wird es jetzt für mich rätselhaft, denn ich rufe ja von einem Telefon mit der Rufnummer 099134154599 bei meiner Münchner sipgate-Rufnummer (user 1939553) an und obwohl alles korrekt läuft (der user-Eintrag wird ja auch korrekt auf "user1939553" gesetzt) kann ich mir nicht erklären weshalb folgende Einträge hier auftauchen "SIP/8403575-d21b", denn "8403575" ist der user eines komplett anderen (des Berliner) sipgate-accounts der mit diesem Ruf an die Münchner sipgate-Nummer ja NICHTS zu tun hat. Wie kommt dieser Eintrag hier rein .... muss irgendwie damit zusammenhängen, dass ich gleichzeitig mit zwei verschiedenen usern bei sipgate.de registriert bin, denn die Rufnummern laufen ja (siehe sip.conf) über getrennte user-Einträge.

Wie kommt 8403575 hier rein????? Ob mir da jemand helfen kann das aufzuklären?

PS: Die extensions.conf wurde minimal modifiziert um an einem Anlagenanschluss ihre Arbeit zu verrichten.

Vielen Dank schonmal an alle die helfen die Fragen zu klären.
 
Ja habe für die sip-incoming einen [voip-in] Kontext. Da jeder Sip-Account bei mir genau einem Benutzer zugeordnet wird rufe ich bei einkomendem sip-Gespräch das entsprechende user-makro auf. Und der Rest ist dann wie bei tcom-in. Also z.B.
Code:
exten => 1939553,1,Macro(user34154551)
exten => 1939553,2,Macro(call-sip)

MYNUMSIP gibt die Anzahl der Sip-Accounts pro user an. Ist wichtig für Sip-Line-Select mittels *2X... dabei muss X zwischen 1 und MYNUMSIP liegen.

MYSIPGROUP gibt an, welche Sip-Clients angerufen werden sollen. Diese könnten mit & verknüpft sein. Daher GROUP.
 
@allesOK

Danke für das Feedback, der [voip-in] Kontext war ja in Deinem geposteten extensions.conf File nicht vorhanden, ist dann aber wohl exakt das was ich mit meinem [sip-in] Kontext gemacht habe, nehme an es sieht bei Dir dann genauso aus im produktiven extensions.conf. Danch geht es auch über das user-makro ... passt also soweit.

MYSIPGROUP gibt an, welche Sip-Clients angerufen werden sollen. Diese könnten mit & verknüpft sein. Daher GROUP.

Das bedeutet ich kann hier bei der Variablendefinition auch MYSIPGROUP=62&61 als Wert angeben? Das klingt sehr gut ;-)

Zu dem Problem mit den kommenden SIP-Anrufen von Providern und der eigenartigerweise falschen Account-Kennung (Kennung des 030-Accounts von SIPGATE, obwohl der Ruf über den 089-Account reinkommt) fällt Dir auch nichts ein nehme ich an. Solange es korrekt abgearbeitet wird ist das ja auch ok, aber dennoch merkwürdig.

Bin auch schon auf Deine neue LCR-Version gespannt. Aber telefonsparbuch.de hat ja nur eine begrenzte Auswahl an Anbietern im Portfolio, vor allem bei VoIP fehlt 1&1 mit seinen 1ct für alle nationalen Gespräche. aber wenn man ein LCR bauen kann das sowohl die SIP-Accounts und deren Kosten als auch die 010xx-Anbieter berücksichtigt, das wäre ja dann ziemlich genial. Schwierig dürfte es aber werden das dann noch für unterschiedliche Endgeräte (Telefon MSN51, Telefon MSN99, SIP-Client 61, etc.) anzupassen, sodass diese zmindest über andere SIP-Accounts rausgehen wenn ein SIP-Anbieter der günstigste ist. Bin wirklich gespannt!
 
ja, hab ja noch mehr gimmicks in meiner extensions.conf, die aber nicht in den thread passen (zum beispiel die "schöne callback-lösung" die im Skripte Forum zu finden ist).

besser ist aber MYSIPGROUP=SIP/61&SIP/62

Sip-Account Problem hab ich ehrlich gesagt nicht analysiert, sry.

Telefonsparbuch.de Anmailen, dann wirds evtl. aufgenommen. Mein Prototyp-LCR mit tsb.de kann 010xx, aber in Kürze kann er auch VoIP. Nee ich kann für jeden user ne eigene LCR-Tabelle nutzen *g*
 
@allesOK

Ist beabsichtigt, dass Du Deine Gesamtlösung mal "veröffentlichst"?
Ich habe bis jetzt mit Abstand am Meisten durch Deine extensions.conf und Deine Beiträge hier gelernt, insbesondere was SIP und HFC angeht.
Bisher fehlen ja so Sachen wie Voicebox, Voice-Menü-Optionen, etc. Ich weiss nicht ob Du da Sachen in deinem produktiven System eingebaut hast. Insbesondere in Verbindung mit Macros stelel ich mir das mit Voicemenüs nicht so einfach vor. Ich will ja nicht "schnorren", aber ich habe echt Durch Deine Sachen brutal viel in kürzester Zeit dazugelernt. Dafür erstmal ein Dankeschön!

Gruß,

Jui
 
@allesOK

Ist beabsichtigt, dass Du Deine Gesamtlösung mal "veröffentlichst"?
Ich habe bis jetzt mit Abstand am Meisten durch Deine extensions.conf und Deine Beiträge hier gelernt, insbesondere was SIP und HFC angeht.
Bisher fehlen ja so Sachen wie Voicebox, Voice-Menü-Optionen, etc. Ich weiss nicht ob Du da Sachen in deinem produktiven System eingebaut hast. Insbesondere in Verbindung mit Macros stelel ich mir das mit Voicemenüs nicht so einfach vor. Ich will ja nicht "schnorren", aber ich habe echt Durch Deine Sachen brutal viel in kürzester Zeit dazugelernt. Dafür erstmal ein Dankeschön!

Gruß,

Jui
 
Danke, dafür habe ich die Konfig auch gepostet, weil einfach viele ein sehr ähnliches Setup fahren, bzw. diese leicht an ihre Anforderungen anpassen können. Voicemail hab ich aber nicht am laufen, witzig, gell. Sollte aber leicht über die User Macros und die tcom-in realisiert werden können.
 
@allesOK

So, ich hänge mal wieder fest. Ich versuche jetzt gerade über einen lokalen SIP-Client (in [sipphones] konfiguriert) einen PSTN-Rufnummer anzurufen und will dabei über meinen sipgate-Account rausgehen. Aber sobald ich ne Rufnummer an meinem lokalen SIP-Client wähle die nicht ebenfalls ein lokaler SIP-Client ist (das funktioniert intern), erhalte ich gleich ein tut-tut-tut am Sip-Client. Laut CLI wird nichtmal in ein Macro gesprungen, denn das CLI schweigt zu dieser sache. Ein sip-debug zeigt, dass was passiert, aber das ist noch zu hoch für mich um es zu deuten.
Irgendwie schaffe ich den Einsprung in die Makros nicht wenn ich eine Nummer mit einer "0" beginne, obwohl die Makros für mich logisch klingen und ich den Weg den es gehen sollte nachvollziehen kann. Meine Konfigurationsdateien habe ich ja in einem meiner letzten Beiträge in diesem Thread mal gepostet. Wo kann das hängen?

Gruß,

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