Zu wählende Rufnummer bearbeiten

schogge

Mitglied
Mitglied seit
11 Aug 2005
Beiträge
211
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen,

ich möchte beim Raustelefonieren die zu wählende Rufnummer in einem eigene Kontext bearbeiten.

Beispiel:

Code:
[zielnummer_bearbeiten]
exten => _0049X.,1,0049 abschneiden und 0 für ortsvorwahl voranstellen
exten => _+49X.,1,+49 abschneiden und 0 für ortsvorwahl voranstellen

[rauswaehlen]
exten => _X.,1,DIAL(bearbeitete nummber)@provider

[default]
include => zielnummer_bearbeiten
include => rauswaehlen

Ich suche diesen Teil: "0049 abschneiden und 0 für ortsvorwahl voranstellen"

Danke,

schogge
 
guckst Du hier

Speziell in Lektion 5 wird das ausführlich erklärt.
 
Ich habs so probiert:

Code:
[zielnummer_bearbeiten]
exten => _0049X.,1,Set(${EXTEN}=0${EXTEN:4});

die Wählen-Zeile sieht so aus:
Code:
exten => _X.,1,Dial,SIP/${EXTEN}@strato|45|r

Leider funktioniert das nicht. Wenn ich 0049123456789 anrufe, zeigt die CLI folgendes:

Code:
    -- Executing Set("SIP/102-249c", "0049123456789=0123456789") in new stack
    -- Executing Dial("SIP/102-249c", "SIP/0049123456789@strato|45|r") in new stack
    -- Called 0049123456789@strato
    -- SIP/strato-275d is making progress passing it to SIP/102-249c

Ideen?

schogge
 
schogge schrieb:
Ich habs so probiert:

Code:
[zielnummer_bearbeiten]
exten => _0049X.,1,Set(${EXTEN}=0${EXTEN:4});

die Wählen-Zeile sieht so aus:
Code:
exten => _X.,1,Dial,SIP/${EXTEN}@strato|45|r
Wie wäre es mit einer zeile Code für alles?:
Code:
exten => _0049X.,1,Dial,(SIP/0${EXTEN:4}@strato|45|r);
Eventuell noch anders klammern oder ganz weg lassen..

Edit: Siehe betateilchen Lösung. Das X muss natürlich weg und die Klammern werden nicht benötigt.
 
Warum hast Du den angebenen Link nicht gelesen :?:

Die Lösung ist sowas von trivial: exten => _0049.,1,Dial,SIP/0${EXTEN:4}@strato|45|r
 
Wie wäre es mit einer zeile Code für alles?
Die Lösung ist sowas von trivial: exten => _0049.,1,Dial,SIP/0${EXTEN:4}@strato|45|r

So würde es sicher gehen, aber ich möchte die Bearbeitung in einem eigenen Kontext abwickeln.

Da ich bei Strato drei Leitungen habe, werte ich den Dialstatus nach dem Wählen aus, um zu prüfen ob auf dieser Leitung bereits telefoniert wird. Ist die Leitung besetzt, wähle ich über die nächste. Bearbeite ich die Nummer also erst beim Wählen, sprengt das meinen Kontext.

Hier mein Kontext zum Raustelefonieren:

Code:
[strato_out]
exten => _X.,1,SetCallerID(${CALLERIDNUM})
exten => _X.,2,Dial,SIP/${EXTEN}@strato|45|r

exten => _X.,3,GotoIf($["${DIALSTATUS}" = "CONGESTION"]?5)
exten => _X.,4,GotoIf($["${DIALSTATUS}" = "BUSY"]?13)

exten => _X.,5,Dial,SIP/${EXTEN}@strato_2|45|r

exten => _X.,6,GotoIf($["${DIALSTATUS}" = "CONGESTION"]?8)
exten => _X.,7,GotoIf($["${DIALSTATUS}" = "BUSY"]?13)

exten => _X.,8,Dial,SIP/${EXTEN}@strato_3|45|r

exten => _X.,9,GotoIf($["${DIALSTATUS}" = "CONGESTION"]?11)
exten => _X.,10,GotoIf($["${DIALSTATUS}" = "BUSY"]?13)

exten => _X.,11,Dial,SIP/${EXTEN}@dus|45|r

exten => _X.,12,GotoIf($["${DIALSTATUS}" = "BUSY"]?13)

exten => _X.,13,congestion()
 
Zuletzt bearbeitet:
Code:
exten => _0049X.,1,Set(${EXTEN}=0${EXTEN:4});

Das kann nicht gehen. EXTEN ist read only, nimm einfach einen anderen Namen.
 
EXTEN ist read only

Das wirft meine Pläne über den Haufen. Ich habe mich wahrscheinlich bisher etwas ungeschickt ausgedrückt.

Ich betreibe diesen Aufwand aus zwei Gründen:

1. Ich möchte in der CDR nationale Gespräche einheitlich, ohne Vorwahl für Deutschland eingetragen haben.

2. Ich verbiete Sonderrufnummern mit einem eigenen Kontext. Dabei prüfe ich ob die Nummber z. B. mit 0900 anfängt und wähle dann nicht.

Der dazugehörige Kontext sieht so aus:

Code:
[verboten]
exten => _09[00-05]X.,1,Goto(i,1)
exten => _012X.,1,Goto(i,1)
exten => _019X.,1,Goto(i,1)
exten => _01033X.,1,Goto(i,1) ;netzkennzahl der telekom
exten => _008[7-8]X.,1,Goto(i,1)
exten => _118X.,1,Goto(i,1)

exten => i,1,NoCDR()
exten => i,2,PlayBack(invalid)
exten => i,3,Hangup

Nur leider greift der Kontext nicht wenn ich z. B. 0049900123456 wähle.

Hat jemand einen Tipp für mich?

schogge
 
Warum wählst du überhaupt 00499001234567 oder 004912345677 und nicht 0900 oder 01223456? Dann ist deine exten do sofort korrekt. Hat das einen besonderen Grund?
 
Warum wählst du überhaupt 00499001234567 oder 004912345677 und nicht 0900 oder 01223456?

Der Asterisk läuft bei uns in der Firma. Es soll verhindert werden, dass ein Mitarbeiter versehentlich oder absichtlich z. B. eine 0900er Nummer wählt und extrem hohe Kosten verursacht.
Außerdem soll anhand der CDR ausgewertet werden, wer wieviel telefoniert.

Wählt nun jemand die Landesvorwahl von Deutschland, fällt er, mit meiner jetzigen Lösung, durchs Raster.

schogge
 
Wo ist dein Problem?
Anstatt
Code:
exten => _0049X.,1,Set(${EXTEN}=0${EXTEN:4});
machst du
Code:
exten => _0049X.,1,Set(${MYEXTEN}=0${EXTEN:4});

und änderst das bei den Dial Befehlen auf
Code:
exten => _X.,2,Dial,SIP/${MYEXTEN}@strato|45|r
 
Wo ist dein Problem?
Anstatt
Code:

exten => _0049X.,1,Set(${EXTEN}=0${EXTEN:4});

machst du
Code:

exten => _0049X.,1,Set(${MYEXTEN}=0${EXTEN:4});


und änderst das bei den Dial Befehlen auf
Code:

exten => _X.,2,Dial,SIP/${MYEXTEN}@strato|45|r

Das löst mein Problem nicht. Es wird zwar laut CLI ohne 0049 gewählt, aber in der CDR steht die Nummer nach wie vor mit 0049 am Anfang.

Mein [verboten] Kontext (siehe oben) greift auch nicht, weil ja auf die Variable EXTEN geprüft wird.

schogge
 
schogge schrieb:
Das löst mein Problem nicht. Es wird zwar laut CLI ohne 0049 gewählt, aber in der CDR steht die Nummer nach wie vor mit 0049 am Anfang.

Logisch - was in die CDR geschrieben wird, ist immer die ${EXTEN} die ursprünglich gewählt wurde :!: Die kannst Du nicht manipulieren - sie dient ja ausdrücklich Dokumentationszwecken. Du hast aber die Möglichkeit, die "manipulierte" Rufnummer in das Feld "userfield" im CDR Datensatz zu schreiben - dann mußt Du eben Deine CDR nach diesem Feld auswerten.
 
betateilchen schrieb:
Du hast aber die Möglichkeit, die "manipulierte" Rufnummer in das Feld "userfield" im CDR Datensatz zu schreiben - dann mußt Du eben Deine CDR nach diesem Feld auswerten.

Ja, werd ich wohl so machen. Meinen [verboten] Kontext erweitere ich einfach um die gleichen Regeln mit 0049 und +49 vorne dran.

Danke an alle Beteiligten!!!

schogge
 
Zuletzt bearbeitet:
Hallo Forum,
Der Thread ist zwar etwas alt, aber der Threadtitel passt genau zu meinem Problem.
Ich möchte auch von der Exten ein paar Zahlen abschneiden. Aber etwas anders.
Mir ist klar, dass z.B.
Code:
exten => _00493623.,1,Dial,(SIP/0${EXTEN:4}@strato|45|r)
wegen dem "${EXTEN:4}" die ersten 4 Zahlen abschneidet, abschneidet und wegen der "0" vor dem "${EXTEN:4}" eine "0" hinzugefügt wird, so dass letzendlich "03623." gewählt wird.

Wie man also eine Nummer am Anfang manipuliert und damit rauswählt, ist mir bekannt. Aber wie manipuliere ich die Nummer am Ende? :confused:

Sprich Asterisk soll mir die ersten sagen wir mal zum Beispiel 6 Ziffern abschneiden und nur mit den letzen 9 rauswählen. Wie kriege ich das hin?
 
Danke wichard.
Das ist mir jetzt echt peinlich. Warum habe ich bloß nicht gleich da rein geschaut. Die Lösung steht tatsächlich dort drin:
Code:
${123456789:1}    : ergibt den Teilstring 23456789
${123456789:-4}   : ergibt den Teilstring 6789
${123456789:0:3}  : ergibt den Teilstring 123
${123456789:2:3}  : ergibt den Teilstring 345
${123456789:-4:3} : ergibt den Teilstring 678

Nachtrag: Das ist nicht schlecht, reicht mir aber noch nicht aus.

Ich suche noch so was: ${1234#5667789:blabla}: ergibt das, was nach dem # kommt (also 5667789).
 
Ich suche noch so was: ${1234#5667789:blabla}: ergibt das, was nach dem # kommt (also 5667789).

Das klappt so:

Code:
exten => s,1,Set(MYNUM=${CUT(EXTEN,#,2)});
exten => s,n,NoOp(${MYNUM});
 
Danke. Das habe ich gebraucht, um mit DISA über Sipgate anzurufen und vorher noch eine CallerID zu setzen. Nun ist das in nur 2 Zeilen gelöst (erste Zeile CallerID setzen, zweite Zeile anrufen):
Code:
exten => _12344.,1,Set(CALLERID(name)=${CUT(EXTEN,#,1):4})
exten => _12344.,n,Dial(SIP/${CUT(EXTEN,#,2)}@sipgate,60)

Nach dem der Freiton kommt (DISA) muss man einfach eine vierstellige PIN eingeben (in diesem Beispiel "1234"), dann die CallerID, die übermittelt werden soll, so wie die von sipgate verlangt wird (z.B. 493623303400), dann die Raute Taste und schließlich die Nummer, die angerufen werden soll. Alles in einem z.B. 1234493623303400#01745832951 und schon wird das Handy angerufen und die gesetzte CallerID erscheint auf dem Handydisplay.
 
Kostenlos!

Statistik des Forums

Themen
247,201
Beiträge
2,263,704
Mitglieder
375,687
Neuestes Mitglied
tilll