sip callback.php

Jetzt im Moment nur noch die GMX-Variante:
Rückruf annehmen -> 20 Sekunden bis Freizeichen -> 10 Sekunden Freizeichen -> besetzt.

Ist für meine Begriffe etwas verkehrt herum, sollte besser so sein:
Rückruf annehmen -> 5 Sekunden bis Freizeichen -> 30 Sekunden Freizeichen (oder länger) -> besetzt

Oder denke ich da etwas falsches? In den 20 Sekunden bis zum Freizeichen kann man doch ganz schön was tippen bzw. im Menü suchen, dann noch 10 Sekunden Freizeichen, das sollte doch schon reichen.
Oder sagen wir mal so: ICH käme damit schon fast zurecht, aber meine FRAU???
Gute Nacht und man sieht sich morgen (hoffentlich) wieder hier.
 
Verdammt nochmal, die 60 muss in den anderen Context, das könnte klappen! Nicht in dialout_now, sondern in dialout!!
 
Wahe wohl doch nichts, da komt nach 60 Sekunden noch kein Freizeichen.
Na gut, morgen ist auch noch ein Tag.
 
ploieel schrieb:
Jetzt im Moment nur noch die GMX-Variante:
Rückruf annehmen -> 20 Sekunden bis Freizeichen -> 10 Sekunden Freizeichen -> besetzt.

Was heißt "nur noch die GMX Variante" ? Bei ISDN-Variante hast Du jetzt genug Zeit zum wählen durch das neue wait ??

Ich hatte Dir vorhin schonmal geschrieben das =andere= Wait, Wait(15) zu kürzen auf Wait(10) oder Wait(5), vielleicht auch mal ganz wegnehmen und sehen was passiert. Ich hatte das damals eingebaut weil bei mir der Rückruf nie schnell genug kam, bei Dir verzögert es evtl. das Freizeichen...


Gruß,
Tin
 
Hallo Tin,
Ich habe das Dial über ISDN auskommentiert und versuche im Moment nur noch die Variante mit GMX.
Ich werde heute abend mal mit dem anderen Wait herumexperimentieren, so wie Du geschrieben hast.
 
Hallo Tin;
meine Experimente gehen weiter. Ich poste hier mal meinen derzeitigen Stand:

[dialout]
exten => _.,1,ResponseTimeout(90)
exten => _.,2,Answer
exten => _.,3,Wait(5)
exten => _.,4,DISA,no-password|dialout_now
exten => _.,5, Hangup
exten =>_.,102,Busy
exten => h,1,Hangup

[dialout_now]
exten => _.,1,ResponseTimeout,90
; exten => _.,1,SetCallerID(50530)
exten => _.,2,SetCallerID(50534)
; exten => _.,2,Dial(Capi/25:${EXTEN},,Tt)
exten => _.,3,Dial(SIP/${EXTEN}@gmx,60,tr)
exten => _.,4,Wait(5)
exten => _.,5,Congestion

Das Ergebnis: das Freizeichen kommt nach 5 Sekunden, bleibt 10 Sekunden da und dann wird besetzt. Jetzt folgt ein Test, wo ich das Wait ganz auskommentiere, ich melde mich dann nochmal.

Grüße
Günter
 
Jetzt beide Wait(5) auskommentiert, Ergebnis:
Freizeichen kommt sofort, bleibt 10 Sekunden und dann wird besetzt.

Schlußfolgerung: das ResponseTimeout hat nichts gebracht, sollte man denken. Aber was viel wichtiger ist: man kann VOR das Freizeichen eine beliebig lange Pause setzen, sagen wir mal 30 Sekunden, dann kommt 10 Sekunden Freizeichen, in dieser Zeit muss man dann den Tonruf absetzen. Ist zwar immer noch nicht optimal, aber damit könnte man leben.
Ich habe aber etwas die Übersicht verloren, welches Wait für die Pause verantwortlich ist. Ich glaube, es war das Wait im Context dialout.

Und noch eine kleine Unklarheit bei mir:
im context dialout hast Du die 90 hinter ResponseTimeout in Klammern geschrieben, im context dialout_now nach einem Komma. Ist das richtig so?
 
Ergebnis meiner heutigen Tests:
wird im context dialout_now ein Wait-Wert eingefügt oder nicht, das Resultat ist das Gleiche: keinerlei Veränderung.
Im context dialout bewirkt der Wait-Wert eine Verzögerung der Bereitstellung des Freizeichens; Wait(20) 20 Sekunden Verzögerung, entsprechend dann 30 Sekunden bei Wait(30) usw.
In allen Fällen bleibt das Freizeichen 10 Sekunden bestehen, bevor es in ein Besetzt-Zeichen wechselt.
Über das ResponseTimeout sollte man nochmals reden, ob es in Klammern oder hinter ein Komma geschrieben werden muss, oder ob beide Varianten gleichermaßen richtig sind.

Mein heutiges Fazit:
bis hierhin eine Variante, mit der es sich leben lässt. Aber soweit waren wir weiter vorn schon einmal.
 
Hallo Günter,

Ich habe jetzt mal in den Quellcode von DISA geschaut, der liegt in /usr/src/asterisk/asterisk/apps/app_disa.c , die Timeouts sind dort hardgecoded drin, deswegen nutzt auch kein ResponseTimeout und/oder DigitTimeout etwas im context. Die 2 Werte sind:

-int firstdigittimeout = 20000; /* 20 seconds first digit timeout */
-int digittimeout = 10000; /* 10 seconds subsequent digit timeout */
+static int firstdigittimeout = 20000; /* 20 seconds first digit timeout */
+static int digittimeout = 10000; /* 10 seconds subsequent digit timeout */

Was soviel heißt wie: Zur Eingabe der ersten Zahl hast Du theoretisch 20 Sekunden Zeit, danach, zwischen den einzelnen Zahlen der Rufnummer immer 10 Sekunden. Man könnte jetzt hingehen und den Wert für firstdigittimeout auf z.b. 60000 (enstrpicht 60 Sekunden) setzen in app_disa.c und dann Asterisk neu kompilieren, dann hättest Du zukünftig 60 Sekunden Zeit bis zur Eingabe der ersten Zahl.

Als ich das erste Mal DISA zwecks callthrough benutzte, fiel mir auch auf, dass die Zeit für die Eingabe der ersten Ziffer zu kurz bemessen war, das kam bei mir dadurch, dass DISA schon ausgeführt wurde, bevor ich den Rückruf auf das Handy überhaupt erhalten hatte - die Zeit (20 Sekunden bis zum timeout) also schon tickte, bevor ich überhaupt verbunden war.

Durch Einbau des ersten Wait(15) in [dialout] habe ich das verhindert. Er springt also erst nach 15 Sekunden in DISA, was ungefähr der Zeit entspricht bis der Rückruf auf mein Handy erfolgt ist und die Verbindung steht. So habe ich immer ungefähr 20 Sekunden bis ich die erste Zahl eingeben muß. Zwischen den weiteren Zahlen dann aber natürlich nur immer 10 Sekunden.

Ohne Änderung des Quellcodes und Neukompilierung von Asterisk läßt sich das nicht ändern. Wenn Du die 10 Sekunden Eingabemöglichkeit zwischen den einzelnen Zahlen der Nummer auch erhöhst auf z.B. 20 Sekunden (digittimeout = 20000), dann wird es allerdings auch 20 Sekunden dauern, bis Asterisk loswählt, weil er natürlich 20 Sekunden wartet, ob da evtl. noch eine Zahl von Dir kommt.

So, jetzt aber zu einer anderen möglichen Lösung. Statt mit DISA kann man auch mit der Funktion WaitExten arbeiten, dann könnte [dialout] folgendermassen aussehen:

Code:
[dialout]

exten => 666,1,Answer
exten => 666,2,SetVar(NR=) 
exten => 666,3,ResponseTimeout(60) 
exten => 666,4,WaitExten 

exten => _X,1,SetVar(NR=${NR}${EXTEN}) 
exten => _X,2,Goto(666,3) 

exten => *,1,Goto(666,2) 

exten => #,1,Dial(SIP/${NR}@gmx,60,tr) 

exten => t,1,Hangup
exten => h,1,Hangup

ACHTUNG: Das Verhalten ist hier anders als bei der DISA Methode, Du mußt nach Eingabe aller Zahlen der Rufnummer die # Taste drücken, erst dann wählt Asterisk los. Die * Taste kannst Du nutzen um alle bisherigen Zahlen Eingaben zu löschen und die Nummer von vorne einzugeben.

Wenn diese Methode klappt, dann ist der context [dialout_now] überflüssig.

Gruß,
Tin
 
Bitte entschuldige, das ich mich jetzt erst melde. Hier hat der Blitz ein DSL-Modem und noch einiges anderes ruiniert, deshalb habe ich fürs erste einen ISDN-"Not"-Zugang eingerichtet.
Ich werde jetzt mir das Ganze, was Du gepostet hast, mal verinnerlichen, und melde mich dann wieder, wenn DSL wieder geht.

Danke vielmals für Deine Mühe.

Grüße
Günter
 
Oh, Mann - Du Ärmster :( Das gleiche hab' ich auch schon (sogar zweimal) durchmachen müssen - seitdem zieh ich immer alles raus, wenn ein Gewitter im Anmarsch ist .... Die Versicherung hat zwar alles bezahlt, aber trotzdem ist es ärgerlich.

Du brauchst den ganzen "Kram" den ich geposted habe auch nicht verinnerlichen, reicht wenn Du den neuen [dialout] context mal ausprobierst :)

Gruß,
Tin
 
Hallo Tin;
da bin ich wieder.
Habe jetzt neues Modem, die Allianz hat es bezahlt (Teledat 431 LAN). Und neuen Splitter von der Telekom; jetzt ist nur noch mein Stand-Alone-Faxgerät defekt, aber auch das wird noch wieder gut.

Zum Thema zurück:
Dein neuer dialout-context funktioniert nicht so recht. Mal gehts so leidlich, dann haut er alle Funktionen durcheinander, ich komme nicht zurecht, was das Teil eigentlich so macht.
Kannst Du bitte mit wenigen Worten die neue Funktionsweise einmal erläutern, sodass ich das Ganze etwas nachvollziehen kann? Vor allem die Länge der nunmehr veränderten Wartezeiten würden mich interessieren. Denn am Anfang höre ich nur Stille, nach einigen Sekunden (ca.20 sec.)
kommt dann ein paarmal piep piep piep, dann ein Freizeichen (ca. 10 sec.) und dann besetzt.

Um es noch einmal zu erläutern:
Ich rufe vom Handy die Callback-MSN an. Es kommt KEIN neuer Ruf rein, sondern die Verbindung bleibt bestehen, obwohl "Verbindung beendet" im Display steht, gleichzeitig höre ich ein 10 Sekunden langes Freizeichen. Danach "besetzt". Das Freizeichen wird auch manchmal von einem zweifachen Tüt Tüt überlagert, ist doch irgendwie merkwürdig. Da hat mir die erste Variante doch fast besser gefallen, weil überschaubarer.

Grüße
Günter
 
Hallo Tin,
kannst Du Dich bitte nochmals melden?
Der neue dialout-context geht doch im Beispiel auf http://voip-info.org/wiki-Asterisk+tips+call+through

noch weiter mit den Zeilen
exten => #,1,Dial(${TRUNK}/${NR},30,H|g)
exten => #,2,GotoIf($[${DIALSTATUS} = NOANSWER]?4)
exten => #,3,GotoIf($[${DIALSTATUS} = CONGESTION]?4:5)
exten => #,4,Playback(vm-nobodyavail)
exten => #,5,Goto(s,1)
exten => #,102,Playback(tt-allbusy)

exten => t,1,Playback(vm-goodbye)
exten => t,2,HangUp

Habe die Zeile
exten => #,5,Goto(s,1)

modifiziert in
exten => #,5,Goto(666,2)

Hat das schon mal jemand ausprobiert?

Grüße
Günter
 
sip.conf

hallo,

ich habe einmal ausgiebig euren Thread gelesen und wollte das ganze nachbauen. Der Rückruf (also das mit dem File kopieren) funktioniert. Leider erhalte ich ( trotz Übernahme der extension.conf) keinen Dial Ton. Da ich mir nicht sicher bin, ob meine sip.conf für gmx richtig ist, wäre ich sehr dankbar, wenn einer von Euch seine Version posten könnte. Dann könnte ich die Sache mal vergleichen.

Vielen Dank

Ullrich
 
ach hier kommt noch das debugging, dass ich mit asterisk -vvvvgc ermittelt habe.

*CLI> -- Attempting call on SIP/0xxxxx@gmx for s@dialout:1 (Retry 1)
> Channel SIP/gmx-2204 was answered.
-- Executing Answer("SIP/gmx-2204", "") in new stack
-- Executing Wait("SIP/gmx-2204", "2") in new stack
-- Executing DISA("SIP/gmx-2204", "no-password|dialout_now") in new stack
== Spawn extension (dialout, s, 3) exited non-zero on 'SIP/gmx-2204'
-- Executing Hangup("SIP/gmx-2204", "") in new stack
== Spawn extension (dialout, h, 1) exited non-zero on 'SIP/gmx-2204'

vielen dank für eure tips.

ullrich
 
Hallo Ullrich;
ich kann dazu leider nur wenig sagen, weil ich ja das Ganze auch nur nachgebaut habe. vielleicht nur soviel:
abhängig vom Wert, der hinter dem Wait in Klammern steht,wartest Du eine dadurch bestimmte Zeit auf den Dial-Ton.
Bei mir

[dialout]
exten => _.,1,Answer
exten => _.,2,Wait(30)
exten => _.,3,DISA,no-password|dialout_now

zur Zeit 30 Sekunden. Das reicht mir gerade so, nach Annahme des Rückrufs auf dem Handy in dessen Menü "Tonfolge senden" auszuwählen und danach noch im Telefonbuch des Handys den Anzurufenden auszusuchen und den Tonruf abzusenden. Manchmal muss ich, wenn ich mit der Auswählerei etwas schneller bin, noch auf den Dialton warten, manchmal bin ich zu langsam; der Dialton bleibt leider nur genau 10 Sekunden stehen. Wenn Du es in dieser Zeit nicht schaffst, den Tonruf abzusetzen, kommt besetzt.
Poste mal bitte Deine Ergebnisse hier, es kann nur noch besser werden.

Grüße
Günter
 
Hi Günter,

das Problem bei mir ist, ich erhalte nicht einmal ein Freizeichen und GMX trennt nach ca. 15 Sekunden die Verbindung. Daher vermute ich stimmt etwas mit meiner sip.conf nicht. Könntest Du mir Deine mal Posten? Solltest allerdings die Benutzerkennung raus xxx :)

Grüße

Ullrich
 
Hallo ullrich,
hier meine sip.conf für GMX:

register => 4937600xxxxx:Dein [email protected]/037600xxxxx
Bei Dein secret kommt Dein Passwort für GMX-NetPhone rein, NICHT das für den GMX-Login!

Code:
[gmx]
context=external-GMX_eingehend
type=friend
username=4937600xxxxx     ; Deine vom GMX registrierte Telefon-Nummer
secret=xxxxxxx                   ; Dein Passwort für GMX-NetPhone
host=sip-gmx.net
fromuser=4937600xxxxx      ; nochmal die Telefonnummer
fromdomain=sip-gmx.net
qualify=yes
allow=gsm
allow=g726
allow=g729
allow=gsm
allow=ilbc
allow=speex
allow=g723.1
insecure=very
caninvite=no
canreinvite=no
nat=yes
maxexpirey=3600
defaultexpirey=240

Ich sagte schon, dass ich auch alles nur hier abgeschrieben habe, nähere Erläuterungen kann ich Dir leider nicht geben.
Grüße
Günter
 
Danke für Deine Hilfe. Leider funktioniert's bei mir immer noch nicht, selbst wenn ich das WAIT(30) setze, so sendet gmx mir ein BYE und die Verbindung wird unterbrochen.
Für weitere Tips & Tricks bin ich natürlich sehr dankbar.

Gruß

Ullrich
 
Poste doch mal den output vom CLI:> sip show registry
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
244,832
Beiträge
2,219,107
Mitglieder
371,534
Neuestes Mitglied
vignajeanniegolabek
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.