Rufnummernplan mit LCR und Block-File

hahni

Neuer User
Mitglied seit
26 Mai 2007
Beiträge
52
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen!

Es geht sich hier um folgendes, nicht dass ich nicht schon danach gesucht habe:

Wenn jemand von Intern rauswählt, soll er, abhängig von der Vorwahl der Zielnummer über einen bestimmten 010x-Provider geroutet werden. Beispiel: 010aa für 0171,0175,0160... oder 010bb für 0172,0162,0174.... Wenn die Handy-Netze durch sind muss alles andere dann wohl Festnetz sein und über 010cc rausgehen.

Die LCR-Daten für die entsprechenden Netze soll der erste Mitarbeiter, der morgens ins Büro kommt von einer Telefontarif-Internetseite aus über ein Web-Interface direkt in meinen Asterisk eintragen.

Nun zum Problem: Kann ich irgendwie, am besten durch eine Datei (mit einer 1 oder 0 drin), erreichen, dass Asterisk sich weigert, Anrufe rauszusenden, wenn in der Datei eine 1 oder 0 steht? (Hintergrund: Ich lasse in der Nacht per CRON einfach eine 0 in setzen, damit der erste Mitarbeiter morgens in jedem Fall gezwungen ist, aktuelle Tarifdaten einzutragen, ehe er telefonieren kann und das auf diese Weise nicht vergessen KANN). Man kennt ja die Arbeitnehmer, die vergessen sowas dann gerne mal, wenn es nicht aufgezwungen wird... :mad:

Sicher ginge das alles doch auch mit AsteriskRealTime und ner MySQL-DB, oder?

Danke,

euer Hahni
 
Natürlich kannst Du das auch über ein File lösen, allerdings:

Wenn Du die Daten ohnehin per Webinterface erheben willst. bietet sich doch mysql an. Die Auswertung der 0 oder 1 nebst der Bewertung der Route kannst Du über AGI oder mit app_addon_mysql aus den Addons machen.
Einen Ansatz zum LCR (filebased) liefert das Forum, das Prinzip ist per Datenbank aber nicht anders (die Erweiterung bei Dir ist eigentlich nur: Code erlaubt (Ja/Nein)).

im Grundsatz also etwa:

Code:
select provider from table where valid=1 and exten=${EXTEN:0:4} order by rank

Dabei wäre dann ${EXTEN:0:4} 015x 016x bzw. 017x, rank die Rangreihung der Anbieter, valid die Gültigkeit und provider der CBC-Code.
anschließend werden die Provider in eine Liste sortiert, zum Beispiel getrennt mit ^. Die Liste, nennen wir sie PLIST enthält nichts, wenn kein gültiger Wert gefunden wurde.

Im Diaplan würde man dann machen:

Code:
[mobil]
exten => _01[567]X.,1,Set(MNUM=${EXTEN})
exten => _01[567]X.,2,AGI(mobilelcr.agi|${MNUM:0:4})
exten => _01[567]X.,3,GotoIf($["${PLIST}" = ""]?80:4)
exten => _01[567]X.,4,Set(IT=0)
exten => _01[567]X.,5,Set(IT=$[${IT} + 1])
exten => _01[567]X.,6,Set(CBC=${CUT(PLIST,^,${IT})})
exten => _01[567]X.,7,GotoIf($["${CBC}" = ""]?80:8)
exten => _01[567]X.,8,Dial(TRUNC/${CBC}${EXTEN))
exten => _01[567]X.,9,goto ds-${DIALSTATUS}
exten => _01[567]X.,80,NoOp(Keine Route gefunden)
exten => _01[567]X.,81,Answer()
exten => _01[567]X.,82,Wait(0.1)
exten => _01[567]X.,83,Playback(ss-noservice)
exten => _01[567]X.,84,Congestion

exten => ds-ANSWER,1,Hangup
exten => ds-BUSY,1,Busy
exten => ds-CANCEL,1,Hangup
exten => ds-NOANSWER,1,Hangup
exten => ds-CONGESTION,1,Goto(${MNUM},4)
exten => ds-CHANUNAVAIL,1,Goto(${MNUM},4)

PS: Der Dialplanausschnitt ist nur als Prinzip zu verstehen und impliziert nicht die vollständige Lösung Deiner Anforderung: Außerdem kann er Fehler enthalten (auf die Schnelle ohne Test für die Veranschaulichung getippt ;))
 
Kostenlos!

Neueste Beiträge

Statistik des Forums

Themen
248,857
Beiträge
2,302,987
Mitglieder
378,504
Neuestes Mitglied
Hallo61Hallo