Rerouting - eine Nummer zwei Anschlüße - wie am besten?

boelkstoff

Neuer User
Mitglied seit
8 Mai 2007
Beiträge
130
Punkte für Reaktionen
0
Punkte
0
Hallo an alle,

ich habe folgendes Problem:
Ich habe eine Rufnummer unter der zwei Personen telefonieren.

Zur Zeit wird die Rufnummer nicht übertragen, da bei einem Rückruf unklar ist, welcher der beiden Teilnehmer angerufen werden soll.

Dabei hatte ich schon immer die Idee im Hinterkopf, dass der ASterisk ja merken kann welchen Anschluss Teilnehmer A oder B anruft. Und wenn der angerufe zurückruft, schaut Asterisk, welcher Anschluss diese Nummer zuvor gewählt hatte und verbindet mit der richtigen Nummer.

In diesem Beitrag wurde solch eine Lösung, nebenbei mit erklärt.

beim anrufen
Code:
exten => callout,1,Set(DB(gsmgatewayrouting/${Rufnummer:1})=${CALLERID(number)})
exten => callout,n,Dial(...) ;gateway01 = Channel, ${Rufnummer} = zu wählende Rufnummer
exten => callout,n,Hangup()

Code:
;Ankommende Anrufe
[in_sip_gateway]
exten => 01,1,Set(CALLERID(num)=${CALLERID(name)}) ;Wegen Bug im Gateway
exten => 01,n,NoOp(in_sip_gateway, CALLERIDNUMBER = "${CALLERID(num)}", CALLERIDNAME = "${CALLERID(name)}")
exten => 01,n,GotoIf(${DB_EXISTS(gsmgatewayrouting/${CALLERID(num):1})}?routeexists,1:noroute,1)
exten => routeexists,1,Dial(…) ;${DB_RESULT} = Extension des Teilnehmers, der zuletzt mit der angeführten Nummer telefoniert hat, also die zu wählende Nummer
exten => routeexists,n,Hangup()
exten => noroute,1,Dial( … ) ;Hier sollte die vermittlung oder ein Auswahmenü stehen
exten =_ noroute,n,Hangup()

Sind die DB Einträge nach einem Asterisk neustart noch vorhanden.
Was passiert, wenn sowohl Anschluss A, als auch B eine Nummer angerufen haben und diese Nummer nun zurückruft ? Wir dann der zuletzt gewählte Anschluss angerufen?

Kann mir jemand helfen?

Vielen Dank
 
Sind die DB Einträge nach einem Asterisk neustart noch vorhanden.

Ja

Was passiert, wenn sowohl Anschluss A, als auch B eine Nummer angerufen haben und diese Nummer nun zurückruft ? Wir dann der zuletzt gewählte Anschluss angerufen?

Der letzte (zeitlich neueste) gewinnt:

exten => callout,1,Set(DB(gsmgatewayrouting/${Rufnummer:1})=${CALLERID(number)})

sorgt ja dafür, dass A oder B in die DB eingetragen werden. Ist bereits ein Eintrag vorhanden (mit dem Schlüssel gsmgatewayrouting/${Rufnummer:1}), wird dieser überschrieben.
Du kannst das ganze tracken, wenn Du auf der cli nach entsprechenden Anrufen mal

Code:
database show

eingibst.

Im übrigen kannst Du das Verhalten bezüglich des Anrufs von A und B zur selben Zielnummer vor Rückruf durch diese leider nicht eindeutig (richtig) lösen, also entweder, wie im Dialplan vorgesehen, "gewinnt" der zeitlich aktuellere Anrufer oder Du drehst es um (nach dem Motto: Wenn es den Eintrag schon gibt, trage nichts ein), dann gewinnt der zeitlich ältere. Du könntest das ganze dann höchstens noch über eine IVR lösen, nach dem Motto: Ich weiß, dass A und B angerufen haben (indem beispielsweise bei Zweitanruf zur selben Zielnummer ein entsprechender DB-Eintrag gemacht wurde), der Rückruf kann also für A oder B sein, der Anrufende soll mir sagen, ob er mit A oder B sprechen will.
 
Hallo abw1oim,

vielen Dank für Deine Informationen.

Ich glaube ich werde das ganze mal in Angriff nehmen und realisieren.

Vielen Dank für Deine Hilfe.

Eine Frage noch: Kann man die Datenbank auch exportieren und wieder importieren?
Hintergrund: ich habe zwei VW mit ASterisk. Eine davon als Backup/Experimental. Ab und zu muss ich umswitchen. Dabei wäre es gut, wenn ich die Daten der DB mitnehmen könnte.

Achso ich verwendet Asterisk 1.2. Da ist die DB Funktionen auch schon vorhanden?

Vielen vielen Dank
 
Ja, gibts auch in 1.2, Syntax ist identisch.
Zum Thema backup/restore siehe hier (mit mehreren Möglichhkeiten):

voip-info.org
 
Kostenlos!

Statistik des Forums

Themen
248,872
Beiträge
2,303,451
Mitglieder
378,532
Neuestes Mitglied
Nik320