Enum Abfrage

Timmbo

Aktives Mitglied
Mitglied seit
6 Nov 2005
Beiträge
1,935
Punkte für Reaktionen
0
Punkte
0
Hi,


mal ganz eine allgemeine Frage.

Es gibt doch die Möglichkeit, dass Asterisk eine Enum-Abfrage durchführt, oder?
Also e164.arpa und e164.org usw.

Wie bringe ich Asterisk dazu dies zu tun?


Thx

Timm
 
Hi,


dank Euch werde mir das mal reinziehen.


Timm
 
Hi,


hab jetzt noch ein Problem, da es sich um eine "fertige Anlage" handelt, komme ich nicht auf die Console, habe aber trotzdem gewisse Möglichkeiten Befehler auszuführen. Muss denn damit Enum funzt ein Daemon gestartet werden? Wenn ja, wie ist der Befehl, denn in meinem enum.conf ist alles richtig eingestellt, aber er macht es nicht.


Thx


Timm
 
Enum.conf reicht nicht, der Dialplan (extensions.conf) muss angepasst werden. Was ist denn eine "fertige Anlage"? Frag den Hersteller dieser Anlage :)
 
Hi Stefanwillmerot,


mit "fertige" Anlage" meine ich kein PC mit Asterisk, sondern eine Anlage wo alles schon installiert ist.
Im Detail meine ich die accessVoIP von Vlines.


Timm
 
Hier ein Auszug aus der Produktbeschreibung:

...
Zusätzlich zu der automatischen Asterisk-Konfiguration über die Weboberfläche, können individuelle Dialplankontexte über den Webbasierten *.conf-Editor fest hinzugefügt werden. Damit sind spezielle Dialplan-Kostrukte und einfache Web-Konfiguration für den User miteinader vereinbar.
...
 
Hi,


was ich nicht verstehe ist warum man verschiedene Dialplans benötigt?
Ich will einfach das alle Nummern die ich wähle einen Enum-Check unterliegen.

Muss denn da soviel eingetragen werden?


Thx


Timm
 
Hi,


ich bekomms einfach nicht gebacken.


Hier mal ein Teil meiner extensions.conf
Code:
#include /etc/asterisk/extensions_custom.conf
[general]
static=yes
writeprotect=no
priorityjumping=yes

[zeitsteuerung]
exten => s,1,GoToIfTime(09:00-18:15|mon|*|*?${context},${target},8)
exten => s,2,GoToIfTime(09:00-18:15|tue|*|*?${context},${target},8)
exten => s,3,GoToIfTime(09:00-18:15|wed|*|*?${context},${target},8)
exten => s,4,GoToIfTime(09:00-18:15|thu|*|*?${context},${target},8)
exten => s,5,GoToIfTime(09:00-18:00|fri|*|*?${context},${target},8)
exten => s,6,Playback(/mnt/kd/accessvoip/sounds/timeabrec)
exten => s,7,voicemail(s2@default)

[BLF_Group_1]
exten => 2,hint,SIP/2
exten => 3,hint,SIP/3
exten => 5,hint,SIP/5
exten => 30,hint,SIP/30
exten => 31,hint,SIP/31
exten => 32,hint,SIP/32
exten => 33,hint,SIP/33
exten => 34,hint,SIP/34
exten => 35,hint,SIP/35
exten => 36,hint,SIP/36
exten => 60,hint,SIP/60
exten => 6,hint,SIP/6
exten => 7,hint,SIP/7
exten => 0,hint,SIP/0



[Gruppencall]
exten => Gruppe1,1,Dial(SIP/2&SIP/3&iax2/4&SIP/5&SIP/6,60,t)
exten => Gruppe2,1,Dial(SIP/3iax2/4SIP/5,60,t)
exten => Gruppe3,1,Dial(SIP/2SIP/3iax2/4SIP/5,60,t)
exten => Gruppe4,1,Dial(,60,t)
exten => Gruppe5,1,Dial(,60,t)
exten => Gruppe6,1,Dial(,60,t)
exten => Gruppe7,1,Dial(,60,t)
exten => Gruppe8,1,Dial(,60,t)
exten => Gruppe9,1,Dial(,60,t)
exten => Gruppe10,1,Dial(,60,t)

[default]
include => default-custom
exten => _**X.,1,Pickup(${EXTEN:2})
exten => _**X.,2,Hangup

exten => 10,1,Dial(iax2/TMS/10,60)
exten => 12,1,Dial(iax2/TMS2/12,60)
exten => 20,1,Dial(iax2/TMS2/20,60)
exten => 11,1,Dial(iax2/TMS2/11,60)
exten => 14,1,Dial(iax2/TMS2/14,60)
exten => 15,1,Dial(iax2/TMS2/15,60)
exten => 1802,1,Dial(iax2/TMS3/1802,60)
exten => 2303,1,Dial(iax2/TMS3/2303,60)
exten => 1607,1,Dial(iax2/TMS3/1607,60)
exten => Fax1,1,GoTo(Faxbox1,s,1)
exten => Gruppe1,1,GoTo(Gruppencall,Gruppe1,1)
exten => menue,1,GoTo(menue,s,1)
exten => 99,1,Answer
exten => 99,2,VoiceMailMain(s${CALLERIDNUM}@default)
exten => 99,3,Hangup

exten => 90,1,Playback(/mnt/kd/accessvoip/sounds/kv-aufnahme)
exten => 90,2,Set(dafile=${TIMESTAMP})
exten => 90,3,Record(/mnt/kd/accessvoip/sounds/${dafile}:wav)
exten => 90,4,Wait(1)
exten => 90,5,Playback(/mnt/kd/accessvoip/sounds/${dafile})
exten => 90,6,Wait(1)
exten => 90,7,Hangup

exten => 6601,1,Answer
exten => 6601,2,WaitMusicOnHold(30)
exten => 6601,3,Hangup

exten => 6602,1,Answer
exten => 6602,2,SetMusicOnHold(schleife)
exten => 6602,3,WaitMusicOnHold(30)
exten => 6602,4,Hangup

exten => 663,1,Answer
exten => 663,2,Playback(beep)
exten => 663,3,Echo
exten => 663,4,Playback(demo-echodone)
exten => 663,5,Hangup

exten => 444,1,NoOp
exten => 444,2,Conference(444/MTV)


exten => 2,1,Dial(SIP/2,25,t)
exten => 2,2,Voicemail(su2@default)

exten => 3,1,Dial(SIP/3,60,tw)
exten => 3,2,Hangup

exten => 4,1,Dial(iax2/4,60,tw)
exten => 4,2,Hangup

exten => 5,1,Dial(SIP/5,60,tw)
exten => 5,2,Hangup

exten => 30,1,goto(default,moo.wav,1)

exten => 31,1,Dial(SIP/31,60,t)
exten => 31,2,Hangup

exten => 32,1,Dial(SIP/32,60,t)
exten => 32,2,Hangup

exten => 33,1,Dial(SIP/33,60,t)
exten => 33,2,Hangup

exten => 34,1,Dial(SIP/34,60,t)
exten => 34,2,Hangup

exten => 35,1,Dial(SIP/35,60,t)
exten => 35,2,Hangup

exten => 36,1,Dial(SIP/36,60,t)
exten => 36,2,Hangup

exten => 60,1,goto(outgoingsipgate.de32241,87049,1)

exten => 6,1,Dial(SIP/6,60,tw)
exten => 6,2,Hangup

exten => 7,1,goto(default,Fax1,1)

exten => 0,1,goto(default,2,1)


Dies ist eine Vlines Anlage.

Habe den Hersteller schon gefragt, aber die haben i.M. keine Zeit für Enum.


Habe das mal in meine extension-custom.conf eingetragen:

[international-custom]
exten => _0Z.,1,Goto(enum,4372072${EXTEN:1})
exten => _00Z.,1,Goto(enum,43${EXTEN:1})
exten => _000Z.,1,Goto(enum,${EXTEN})

[enum]
exten => _Z.,1,EnumLookup(${EXTEN})
exten => _Z.,2,Goto(1000)
exten => _Z.,52,Goto(2000)
exten => _Z.,102,Goto(2000)
exten => _Z.,1000,SetCIDNum(+43720720262${CALLERIDNUM})
exten => _Z.,1001,Dial(${ENUM})
exten => _Z.,1002,Goto(1102)
exten => _Z.,1102,SetCIDNum(${CALLERIDNUM:2})
exten => _Z.,1103,Goto(2000)
exten => _Z.,2000,Goto(dialout,${EXTEN},1)

wie sage ich der Anlage das sie direkt rausgehen soll, also den Call nicht an einem Provider schicken soll?


Thx

Timm
 
Zuletzt bearbeitet:
Ich weiß nicht genau, was das ENUM-Makro zurückliefert, aber müsste nicht statt
exten => _Z.,1001,Dial(${ENUM})
dort ein
exten => _Z.,1001,Dial(SIP/${ENUM})
stehen?


Gruß,
Wichard
 
Hi,

hm das weis ich nicht genau, da ich die einzelnen Befehle nicht kenne.
Normalerweise müsste der Vorgang doch so sein:

Anlage bekommt von der Nebenstelle eine Nummer übermittelt, setzt diese in das internationale Format um, sendet das dann an e164.arpa und org und die Info die dann zurückkommt mit dieser setzt sie dann den Call direkt, d.h. ohne Provider ab, oder?

Was ich mich noch frage, welcher header muss denn dabei verwendet werden .z B. (enum) natürlich eckige Klammern.



Update:
Hab das mal geändert und trotzdem geht der Call immer an einem Provider.
Beim Test verwende ich die Rufnummer 07200101011 und die ist ja nur per Enum erreichbar.

Wenn ich das ganze unter default setze, dann kommt das:

Channel Location State Application(Data)
SIP/5-b7501418 00437200101011@5:1 Up EnumLookup(37200101011)
1 active channel
1 active call

Thx

Timm
 
Zuletzt bearbeitet:
Fangen wir hiermit an:

[international-custom]
exten => _0Z.,1,Goto(enum,4372072${EXTEN:1})
exten => _00Z.,1,Goto(enum,43${EXTEN:1})
exten => _000Z.,1,Goto(enum,${EXTEN})

Erstens: Goto(priority), Goto(exten,priority), oder Goto(context,exten,priority)
oben steht "(context, priority)", wird aber als "(exten,priority)" von Asterisk gesehen, und dann geht alles schief. Bitte in jedem fall ein ",1" dazufügen.

Zweitens: ist es wirklich erwünscht, daß wann 02345678 (also ein Teilnehmer außerhalb der PBX im eigenen Ortsnetz mit der Rufnummer 234 5678 ) gewählt wird, wir gehen weiter zu [enum] mit der Rufnummer 43720722345678? Das ist die Wirkung (bzw wäre die Wirkung, wenn ",1" da wäre) von dem ersten Satz. Der Satz ist nur richtig, wenn das lokale Ortsnetz wirklich 072072 ist.

Hat ein Teilnehmer in Ö mit der Rufnummer 01/2345678 einen e164 Eintrag, dann ist er grundsätzlich einfach 4312345678. Sind sie in Wien, dann muß der Satz _0Z.,1,Goto(enum,431${EXTEN:1}). Im Ortsnetz Graz, Goto(enum,43316${EXTEN:1}), usw.

Drittens: Der zweite Satz hat (bzw. mit ",1" hätte) die Wirkung, wenn man 00485264444 wählt -- Hotel Traube, Lienz, Werbung :), [enum] bekommt 430485264444. ${EXTEN:1} verschluckt nur eine Null, und da sind zweier wegzunehmen.

Viertens: Der letzte Satz sendet 000 an [enum] weiter. Die Nulls sind unerwünscht.

Ich schlage folgendes vor: [nächster Eintrag]
 
Hi,

dank Dir.


Du schreibst oben:

Erstens: Goto(priority), Goto(exten,priority), oder Goto(context,exten,priority)
oben steht "(context, priority)",

aber ich sehe kein "(context, priority)", ich sehe nur

exten => _0Z.,1,Goto(enum,4372072${EXTEN:1})
exten => _00Z.,1,Goto(enum,43${EXTEN:1})
exten => _000Z.,1,Goto(enum,${EXTEN})

was bedeuten die einzelnen befehle?

Das Z steht doch glaube ich für Zahl?
D.h. 0Z bedeutet 0 und dann zahlen (0720usw)?
Und "EXTEN:1" die 1 heist doch das die erste Zahl weggenommen wird, oder?
Dann haben wir nur die Zahl 720usw.
Was bedeutet das: (enum,4372072$ ?

In der Praxis schaut doch das so aus:
wähle ich 07200101011 also eine Inlandsnummer muss die 0 weggenommen werden und dafür 43 davor.
Wähle ich aber eine Auslandsnummer 0049...., dann müssen die ersten 2 stellen weg und die Nummer bleibt dann so, oder?


Was ich nicht ganz verstehe, was hat das ganze mit dem Ortsnetz zutun?
Ich verwende kein Festnetz.

Da ich kein Festnetz habe, sondern nur VoIP was muss dann als Ortsvorwahl eingegeben werden?

Ich weis ich habe Basis Fragen, hoffentlich macht es nicht zuviel mühe.


Thx

Timm
 
Zuletzt bearbeitet:
EnumLookup ist veraltet. ${ENUMLOOKUP()} ist seit Asterisk 1.2 zu benutzen.
Code:
[globals]
MeinOrtsnetz=316   ; Ich bin in Graz  (1 für Wien, usw.)

[international-custom]
; 0->lokales Ortsnetz, 00->Österreich, 000->Ausland
exten => _0Z.,1,Goto(enum,43${MeinOrtsnetz}${EXTEN:1},1)
exten => _00Z.,1,Goto(enum,43${EXTEN:2},1)
exten => _000Z.,1,Goto(enum,${EXTEN:3},1)

[enum]
exten => _Z.,1,Set(enumlist=e164.org e164.arpa|tree=0)
exten => _Z.,n,While($["${SET(e164=${CUT(enumlist, ,${SET(tree=$[${tree} + 1])})})}" != ""])
exten => _Z.,n,Set(sipcount=${ENUMLOOKUP(+${EXTEN},sip,c,${e164})}|counter=0)
exten => _Z.,n,While($[${counter}<0${sipcount}])
exten => _Z.,n,Set(counter=$[${counter}+1])
exten => _Z.,n,Gotoif($["${SET(e=${ENUMLOOKUP(+${EXTEN},sip,${counter},${e164})})}"=""]?ew)
exten => _Z.,n,Dial(SIP/${e},120)
exten => _Z.,n(ew),EndWhile
exten => _Z.,n,EndWhile
exten => _Z.,n,GotoIf($["${DIALSTATUS}"=""]?ef)
exten => _Z.,n,Noop(${DIALSTATUS})
exten => _Z.,n,Congestion()
exten => _Z.,n,Hangup
exten => _Z.,n(ef),Goto(00${EXTEN},1)

; Enum lookup failed
; Annahme: Der Provider will 0nnn/nnnnn in Österreich, sonst 00xxx/xxxxx

exten => _0043.,1,Dial(SIP/0${EXTEN:4}@provider,120)

exten => _00Z.,1,Dial(SIP/${EXTEN}@provider,120)
 
Hi,

hab gerade oben noch etwas dazu geschrieben.
In der Zwischenzeit hast Du Dir die ganze Mühe gemacht.

In welche conf kommt das ganze und unter welcher Rubrik?

extension.conf?



Danke.

Timm
 
Zuletzt bearbeitet:
Mein Beispiel oben ist nicht nur theoretisch, sondern funktioniert. Ich habe gerade den Beispiel in meiner PBX ausprobiert (mit MeinOrtsnetz=1, also Wien), und habe festgestellt

1. Wähle ich 00485264444 (Hotel Traube ist nicht in ENUM) dann wird ein Dial(SIP/0485264444@provider,120) ausgeführt
2. Wähle ich 0588010, (TU-Wien, in e164.arpa) dann wird ein Dial(SIP/[email protected],120) ausgeführt
3. Wähle ich 0001NPANXXXXXX (meine Privatnummer, in e164.org), dann wird ein Dial(SIP/sipaddresse@meinasterisk,120) gewählt
4. Wähle ich 00012024561414 (das Weiße Haus, nicht in enum), dann wird ein Dial(SIP/0012024561414@provider,120) ausgeführt.
 
Hi,

hast Du das ganze in der extension.conf drin?
Mit den o.g. content wörtern?

Ich weis nicht welches enum meine Vlines Anlage verwendet.

Ich habe eine enum.conf welches die beiden e164 Organisationen beinhaltet.

Thx

Timm
 
Zu den Fragen:

>ich sehe kein "(context, priority)", ich sehe nur...

Der Dialplan von Asterisk in extensions.conf ist eine Programmiersprache.
Goto had argumente (context, extension, priority) wenn 3 angegeben sind, (extension, priority) bei 2, und (priority) bei 1.

In extensions.conf, das was in []-klammern steht (ausgenommen [globals]) ist ein context. Man definiert "extensions", und "priority" ist wie ein ProgrammCounter in einem Rechner.

>Das Z steht doch glaube ich für Zahl?

Eine Zahl zwischen 1-9, also eine Zahl außer 0.

"Wildcard Matching" beginnt immer mit "_".
Explizite Zahlen (und sogar Buchstaben) darf man angeben.
X ist 0-9
N ist 2-9
Z ist 1-9
[135] ist 1, 3, oder 5
[3-6] ist 3,4,5, oder 6
. erscheint nur am Ende, und bedeutet 1 oder mehr Ziffer oder Buchstaben.

>Und "EXTEN:1" die 1 heist doch das die erste Zahl weggenommen wird, oder?

${VariableName:n} nimmt die ersten n Zeichen weg.

>Was bedeutet das: (enum,4372072$ ?

Fehler. Aber Goto(enum,4372072${EXTEN:1},1) bedeutet
1. ${EXTEN} bekommt das neue Wert 4372072bcde (wo abcde) das alte war
2. Der nächste Befehl kommt von context [enum], und wir fangen an mit dem neuen Wert von ${EXTEN} bei Priority 1.

>Was ich nicht ganz verstehe, was hat das ganze mit dem Ortsnetz zutun?
>Ich verwende kein Festnetz.
>
>Da ich kein Festnetz habe, sondern nur VoIP was muss dann als Ortsvorwahl eingegeben werden?

Auch mit VoIP, muß ein Telefon einigermaßen wie ein Telefon funktionieren.

Wenn man ein Telefon aufhebt, muß man die Rufnummer andere Telefone wählen. Man konnte immer nur die komplette E.164 number für jedes Telefon in der Welt wählen, ohne irgend einer Beziehung auf den Standort des Wählers. Immer einfach 431580100 oder 4930345676 oder 12024561414, usw.

Aber das wollen Leute nicht. Der Nachbar in Wien mit der Rufnummer 431580101 will man ja einfach mit 580101 erreichen. Aber der VoIP Provider nimmt den Anruf aus ganz Österreich an, und braucht ein Ortsnetz. Deswegen programmiert man das lokale Ortsnetz in den Dialplan ein. Gleich so mit dem eigenen Landeskennzahl.

Man kann auch Nebenstellen haben (sagt man in Ö wirklich "Klappen" -- das ist toll, weil ganz alte Telefonschaltshränke hatten wirklich Klappen die beim drehen des Magnetos fallen, siehe http://www.covert.org/BryantPond/ ); diese sind normal 1, 2, 3, 4, oder 5 Stellen je nach größe der NstA. Die müssen dann von Rufnummern außerhalb der Nebenstellenanlage unterschieden werden. Typischerweise in D und A benutzt man "0" als Zugang zum Amt. (In anderen Ländern ist "9" üblich, in meinem Haus, da alle Nummer die ich durch das Amt wählen wurde mit 978, 351, 1, oder 0 anfangen, habe ich meine Nst als 2x, 3[0-24-9] bezeichnet, und brauche kein Amtzugang.

Zurück zum Beispiel oben, aber. "0" bedeutet "Amt", und dann wählt man, wie üblich in D und A, wie bei irdendeinem anderen Festanschluß in dem ansässigem Ortsnetz. So ist mein Ortsnetz Graz, dann wahle ich andere Grazer Nummer z.B das Verkehrsamt 8075-0 einfach 080750. Für enum lookup muß ich 43316 haben; für einen Anruf per Provider muß ich wahrscheinlich "0316" haben.

Und so funktioniert mein Beispiel.

>hast Du das ganze in der extension.conf drin?
>Ich weis nicht welches enum meine Vlines Anlage verwendet.
>Ich habe eine enum.conf welches die beiden e164 Organisationen beinhaltet.

In extensions.conf. [enum] ist neu. [international-custom] ist HOFFENTLICH etwas das diese Vlines Anlage verwendet in der richtigen Stelle. Aber ohne weitere Information zur GANZEN konfig von Vlines kann ich nicht sicher sein, daß es überhaupt möglich ist, IRGENDETWAS daran zu ändern.

>Ich weis nicht welches enum meine Vlines Anlage verwendet.
>Ich habe eine enum.conf welches die beiden e164 Organisationen beinhaltet.

Die "Application" EnumLookup" ist veraltet, hat viele Probleme, und soll nicht mehr benutzt werden. enum.conf ist auch veraltet. Die Application is in 1.2 durch eine Funktion ${ENUMLOOKUP()} ersetzt.

bei CLI> show version
eingeben.

in meinem Beispiel werden e164.org und e164.arpa verwendet, in der Reihenfolge angegeben in dem Beispiel.
 
Zuletzt bearbeitet:
Hi John,


kann ich das unter international-custom eben auch unter enum eingeben?
Wie ist das bei Dir?

Thx

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