Bei DISA fehleingabe wieder zurück

awo

Neuer User
Mitglied seit
8 Mai 2007
Beiträge
123
Punkte für Reaktionen
0
Punkte
0
Hi

ich würde gerne wissen ob folgendes möglich ist!


wenn ich mich in einem DISA befinde zum nachwählen und mich ausversehen verwähle würde ich gerne mit der * taste wieder einen freiton bekommen um nochmals von vorne zu beginnen!

ist das möglich?


mfg

awo
 
Hi, das ist lustig. Wenn ich diese Seite bis nach unten scrolle, kommt unten unter "Ähnliche Themen", gleich als erstes ein Beitrag zu deiner Frage. Also wäre die Forensuche wohl auch erfolgreich gewesen ;) . Für den Fall das die Liste bei dir anders zusammengestellt ist, hier der Link.
 
Hi

bei mir sah die liste echt anders aus :roll: .

Aber danke für den hinweis.

Wenn ich das richtig verstehe geht es aber in dem Thema um callback aber ich brauche calltrought.

Willst du mir nicht mal den context zeigen wo du mit der Sterntase weider zurück zum Disa kommst?


mfg

awo
 
Ähhh, hast du dir meinen Betrag überhaupt durchgelesen? :confused: Calltrough und Sternchentaste sind doch da erwähnt worden, die nötigen Contexte als Code beigefügt, was fehlt denn jetzt noch?
 
sry mein fehler dachte das bezieht sich alles auf callback mein fehler.


mfg

awo
 
hi

ich habe mir jetzt die lösung mit meinem disa problem mehrmals durch gelesen aber kein plan wo ich das in meinen disa einfügen soll.

Kannst du mir vieleicht dabei helfen?

so sieht mein disa context aus:

[disa]

exten => s,1,Wait(1)
exten => s,n,BackGround(DIALTONE)
exten => s,n,WaitExten(10)


include => voxtream



mfg

awo
 
Hmmm, was dein Context macht, ist mir nicht ganz klar. Da kommt ja nichtmal DISA drin vor. Disa ist eine Dialplan Application. Hier der Infotext aus Asterisk:

Code:
[Synopsis]
DISA (Direct Inward System Access)

[Description]
DISA(<numeric passcode>[|<context>]) or DISA(<filename>)
The DISA, Direct Inward System Access, application allows someone from
outside the telephone switch (PBX) to obtain an "internal" system
dialtone and to place calls from it as if they were placing a call from
within the switch.
DISA plays a dialtone. The user enters their numeric passcode, followed by
the pound sign (#). If the passcode is correct, the user is then given
system dialtone on which a call may be placed. Obviously, this type
of access has SERIOUS security implications, and GREAT care must be
taken NOT to compromise your security.

There is a possibility of accessing DISA without password. Simply
exchange your password with "no-password".

Wenn du, wie gesagt Calltrough brauchst, sollte das hier in deinem Kontext stehen, in dem dein Calltrough Anruf ankommt(wie der bei dir heisst, weiß ich nicht). 49401234567 ist die Nummer die du anrufst um auf deinem Asterisk zu landen. Das kann auch eine interne Nummer sein. In diesem Beispiel habe ich DISA nicht mit einem Passwort gesichert. Das ist natürlich gefährlich. Ich schicke nur Anrufe von meinem Handy in diesen Kontext. Das macht man, indem man hinter die 49401234567 ein /4917123456 setzt. Wobei 4917123456 natürlich deine Handynummer sein muß ;) Das sieht dann so aus: 49401234567/4917123456 und lässt nur noch Anrufe dieser Handynummer zu. Auf diese Art kannst du dir dein DISA auf deine normale VOIPNummer legen, ohne das die normalen Anrufer das merken/gestört werden. Wenn du der Callerid als alleiniges Sicherheitmerkmal nicht traust, trägst du bei dem DISA aufruf statt "no-password" deine Wunschpin ein (z.B.4711) Das Wort "disaout" ist der Kontext in dem DISA dann den Anruf aufbaut.

Code:
exten => 49401234567,1,Dumpchan ;Das hier kannst du weglassen, es wirft nur Infos über den Anruf auf der Konsole aus.
exten => 49401234567,n,Set(TIMEOUT(response)=60) ; Setzt die Wartezeit für eine Eingabe auf 60 Sekunden. Solange wartet DISA auf die Eingabe .
exten => 49401234567,n,Disa(no-password,disaout) ; Schickt den Anruf nach dem Wählen (ohne #) in den disaout Kontext.

Dann kommt in deine extensions.conf noch dieser Kontext.
Code:
[disaout]
exten => _X.,1,Dial(Local/${EXTEN}@myoutgoingcontext,120,gHT) ;Hier wird
exten => _X.,n,Goto(deinincomingkontext,49401234567,1)

Statt "myoutgoingcontext" setzt du deinen Eintrag aus der z.B. sip.conf (wenn du über SIP raustelefonierst) über den du deine Gespräche aufbaust. Wichtig sind hinten am Dialbefehl das "g" und das "H". Das "g" verhindert, das bei Gesprächsende der Channel beendet wird, und es in der nächsten Zeile weitergeht. Das "H" sorgt dafür, das man mit der * Taste auflegen kann.
In der nächsten Zeile sendest du deinen Anruf wieder zum Anfang des eingehenden Kontext zurück. Hier schließt sich der Kreis, du bekommst wieder einen Wählton.
Nachteil bei diesem Dialplan ist, wenn du eine ungültige oder besetzte Nummer anrufst, hörst du immer wieder sofort ein neues Freizeichen.
Wenn dich das stört, mußt du mit "Dialstatus" den Grund abfragen, und dann entsprechend signalisieren. Das macht man dann z.B. mit "Playtones" oder einer eigenen Ansage.

Wenn man häufig die selben Nummern per Calltrough oder Callback erreichen will, sollte man eine Einwahlnummer verwenden, bei der man angehängte Ziffern auswerten kann. Dann kann man sich das zweistufige Wählen ersparen, und hat bei Calltrough den Vorteil, das erfolglose Anrufe einen nicht auf der Strecke zum Asterisk berechnet werden. Da könnte ich, wenn Interesse besteht, auch noch etwas zu erzählen.
 
hi

ich glaub ich poste mal meine ganze extensions.conf für ein besseres verständnis!

für eingehende gespräche über GSM wird mit hilfe einer Datenbank nummern verglichen diese sollen in den DISA um nach zuwählen!

und genau für dieses zenario benötige ich das abbrechen der wahl mit stern um nochmals von vorne anzufangen.

Code:
[from-comsat]

exten => s,1,AGI(extension_by_mobile.php|${CALLERID(num)})
exten => s,n(go_disa),Set(CALLERID(num)=${EXTENSION})
exten => s,n,Goto(disa,s,1)
exten => s,n,Hangup()
exten => s,n(go_pbx),Macro(dial-sip,,${EXTENSION},VOXTREAM,${CALLERID(num)})
exten => s,n,Hangup()

include => voxtream

[from-telegate-br]

exten => _XX,1,Macro(dial-sip,,${EXTEN},VOXTREAM,${CALLERID(num)})

[voxtream]

exten => _1Z,1,Macro(dial-sip,,${EXTEN},VOXTREAM,${CALLERID(num)})        #calls intern new
exten => _2X,1,Macro(dial-sip,,${EXTEN},VOXTREAM,${CALLERID(num)})        #calls intern new
exten => _3[0-24-7],1,Macro(dial-sip,,${EXTEN},VOXTREAM,${CALLERID(num)}) #calls intern new
exten => _0.,1,Macro(dial-sip,,0${EXTEN},VOXTREAM,${CALLERID(num)})       #calls to pstn new
exten => _01[5-7],1,Macro(dial-gsm,,${EXTEN},VODAFONE)                    #calls to GSM-Network


[from-telegate-de]

exten => 38,1,Goto(disa,s,1)

exten => 39,1,Macro(dial-gsm,,0170xxxxxxx,VODAFONE)
exten => 21,1,Macro(dial-gsm,,0175xxxxxxx,VODAFONE)

Include => voxtream



[disa]

exten => s,1,Wait(1)
exten => s,n,BackGround(DIALTONE)
exten => s,n,WaitExten(10)


include => voxtream

[macro-dial-sip]

exten => s,1,Set(CALLERID(num)=${ARG4})
exten => s,n,Dial(SIP/${ARG3}/${ARG2},60,t)
exten => s,n,Hangup()

[macro-dial-gsm]

exten => s,1,Dial(COMSAT/${ARG3}/${ARG2},60,Tt)
exten => s,n,Hangup()

da das meine erste schritte mit disa sind bin ich halt etwas aufgeschmissen :)
Aber ich gehe mal stark davon aus das ich meinen disa context umschreiben muss!

mfg

awo
 
Zuletzt bearbeitet:
Hmmm, deine Extensions.conf durchschaue ich so nicht. Aber hier ein paar Tipps:

1. Du verwendest bisher kein DISA in dem Dialplan!
2. Ich vermute du willst über [Voxtream] rauswählen, daher muß an den Dialstring das "g" und "H" als Option angefügt werden. Du mußt in der nächsten Priorität wieder auf den Kontext mit DISA zurückverzweigen.
3. Ein Dialbefehl besteht aus: "Dial(Tech/Resource,Timeout,Optionen)". Ist COMSAT ein Asterisk Channel wie z.B. SIP oder IAX2? (in [macro-dial-gsm])
4. Da du Variablen verwendest, die in neu erzeugten Channels verwendet werden sollen, solltest du dich eventuell mit der Vererbung von Channel-Variablen beschäftigen.
 
Hi

1. das ist natürlich blöd ich dachte das wäre ein richtiger!
2. Richtig da in [Voxtream] die dial regeln hinterlegt sind!
3. Ja comsat ist ein asterisk channel!
4. werde ich mir direkt mal durchlesen und bei fragen hier nachhacken.

mfg

awo
 
Hi

kurze frage wenn ich meinen disa conext so schreibe!

Code:
[disa]
exten => _X.,1,Dial(Local/${EXTEN}@voxtream,60,gHT)
exten => _X.,n,Goto(disa,1)

geht das dann?


mfg

awo
 
Der Dialbefehl ist OK so. Du musst jetzt diesen Kontext aus der DISA Application aufrufen. Der Aufruf sieht zum Beispiel so aus:

Code:
exten => s,1,DISA(no-password,disa)

Und du mußt natürlich auf diesen Eintrag springen aus der zweiten Zeile deines Beispiels. Im Moment loopt der ja wieder auf den Dialbefehl zurück, du rufst also immer wieder den selben Teilnehmer an. Hier nochmal die Reihenfolge im Dialplan:
Eingehender Kontext => Kontext mit DISA => Kontext mit Dialstring und "gH" als Option => zurück in Kontext mit DISA..... und ab hier beisst sich die Sache in den Schwanz.
 
Hi

wenn ich meinen context [from-comsat] wo er nach check der datenbank in den disa gehen soll so umbaue geht das?

Code:
exten => s,1,AGI(extension_by_mobile.php|${CALLERID(num)})
exten => s,n(go_disa),Set(CALLERID(num)=${EXTENSION})
[COLOR="Red"]exten => s,n,DISA(no-password,disa)[/COLOR]
exten => s,n,Hangup()
exten => s,n(go_pbx),Macro(dial-sip,,${EXTENSION},VOXTREAM,${CALLERID(num)})
exten => s,n,Hangup()

habe die geänderte stelle mal rot makiert.

Was ich noch nicht ganz verstehe wie findet er den DISA context?
und wenn ich ihn dann wieder von [DISA] in the Context [from-comsat] schicke check er natürlich anfangs wieder die datenbank da lieg ich ja richtig oder?

mfg

awo
 
Schau dir nochmal die Reihenfolge an, die ich dir vorgegeben habe. Der Anruf vom GSM Gateway landet in [from-comsat]. Von dort schickst du den Anruf, nach der Authentifizierung mit deiner Datenbank, in den Kontext in dem du die Application DISA aufrufst(für den musst du dir einen Namen ausdenken, ich nenne den mal [robert]). DISA ruft deinen [disa] Kontext auf("DISA(no-password,disa)"), der wählt über [voxtream] raus. Ist der Anruf zu Ende, wird der Sprungbefehl in der zweiten Priorität von [disa] aufgerufen, und springt zu [robert], also "Goto(robert,s,1)"
Vielleicht solltest du deinen Kontext nicht "disa" nennen, das führt zu Verwirrungen mit der Application "DISA". Wenn du deinen DISA Aufruf wie in deinem Beispiel in den [from-comsat] Kontext direkt einbauen willst, musst du den in der zweiten Priorität von [disa] mit "Goto(from-comsat,s,3) anspringen. Ehrlich gesagt habe ich aber noch nicht ganz verstanden was du in diesem Kontext sonst noch machst.
 
Hi

ok jetzt wird das doch bisserl verständlicher für mich!

Also in dem context [from-comsat] wird in einer datenbank eingehende nummern abgefragt!
Ist diese NR in der Datenbank darf sie nachwählen inter oder extern ist egal!
Also direkt in den DISA context geleitet werden ohne warten

Nummern die nicht in der datenbank sind sollen direkt an eine nebenstelle der
DETEWE PBX gesendet werden!

Für mich stellt sich das so da das ich eigendlich den [from-comsat] context so lassen kann und nur meinen "disa" context anpassen muss!

sehe ich das richtig oder stehe ich imemr noch aufem schlauch!



mfg

awo
 
Zuletzt bearbeitet:
Hi

kleiner nachtrag:

Ich bin da jetzt mit einem Kollegen dran um das richtig umzusetzen.

wenn ich ein ergebnis habe poste ich es hier!


mfg

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