Freizeichenton tauschen

  • Ich sehe nicht, dass linphone etwas falsch macht. Das wäre eher ein Feature Request. Es gibt einige Systeme (wie z.B. Skype) die grundsätzlich erst mal einen eigenen Ringback abspielen, noch bevor überhaupt ein TRYING/RINGING kommt. Damit gaukelt man einen schnellen Verbindungsaufbau vor. Den Ringback Ton "vom Amt" gibt es da z.B. nur bei Anrufen ins öffentliche Telefonnetz und dann auch erst, wenn es auf der anderen Seite klingelt. Die Frage ist nur, ob die Entwickler so etwas machen würden.


    Aus Sicht der FB ist das auch nicht wirklich falsch. Die Entwickler wollen in jedem Fall verhindern, dass die ersten Silben verloren gehen (Early Media) und in jedem Fall den Rufton vom Amt einspielen. Damit hat die FB auch nix mehr mit den Tönen vom Amt zu tun. Eigentlich pfiffig, muss auch niemand darauf achte die Länderspezifischen Töne zu senden etc. Bis von dort etwas kommt ist eben Stille im Hörer. Bleibt der Fb nur der Ton bei internen Anrufen.


    Ich kann das auch gut verstehen. Die FB ist ein Consumer Produkt. Das Teil muss funktionieren. Wenn da plötzlich durch einen Schalter wie Early Media deaktivieren bei tausenden von Kunden die ersten Sekunden der Telefongespräche verloren gehen, dann haben die ein echtes Problem. Und verglichen mit den Boxen von der Telekom oder anderen Anbietern, kann man mit der FB noch echt viel anstellen.


    Ich fürchte fast, dieses Verhalten werden die FB Besitzer erst mal so hinnehmen müssen. Da würde ich andere Baustellen wie das Echo wesentlich höhere priorisieren. Das wäre auch einen Support Request bei linphone wert. Die Funktionen sind ja sehr dürftig dokumentiert. Vielleicht kann uns da ein Entwickler mal aufschlauen....

    • Offizieller Beitrag

    Ich bin nicht so tief in der Materie wie Du - deshalb mein minimalisierter Ansatz:
    - in Liblinphone gebe ich vor, welcher Sound beim Klingeln ausgegeben werden soll.
    - dieser Sound wird beim Klingeln nicht ausgegeben.
    - aus meiner Sicht ist das nicht das gewünschte / geforderte Verhalten.
    Ob dieses Verhalten an der FB oder an linphone oder an sonst was liegt, wäre mir als Endanwender egal.


    Deshalb kann ich @RaspiEHU (und andere) verstehen, wenn dieses Feature funktionieren soll. Ich glaube auch, dass Du zwischen internen und externen Anrufen kaum Unterschiede machst - vermutlich weil es die nicht gibt. Aber genau dort würde ich ansetzen. Denn für mich ist es ein Unterschied, ob der Anruf intern (DoorPi <-> FritzBox mit entsprechend niedrigen Signallaufzeiten im lokalen Netzwerk) oder extern ist.



    andere Baustellen wie das Echo wesentlich höhere priorisieren

    Das eine schließt das andere nicht aus. Mit Dir haben wir aber gerade einen Fachkundigen in der Runde und das muss ich (müssen wir) ausnutzen. Sorry :P

  • Also, ich verstehe die Anforderung. Allerdings verhält sich der SIP Client absolut RFC Konform. Die Fritzbox verhält sich auch nicht wirklich falsch. Damit kann man das nicht als Fehler deklarieren.


    SIP ist ein nicht so wirklich standardisierter Standard, wie man sieht :) Jeder Hersteller kocht da gerne ein eigenes Süppchen.


    Ich würde das mal als Feature Request an das linphone Team schicken. Vielleicht gibt es ja schon eine Möglichkeit, nur wir kennen die noch nicht. Wenn wir den Client dazu bringen, alles zu ignorieren was vom Sever kommt und Ringback lokal einzuspielen, dann haben wir gewonnen. Und es ist völlig egal welche PBX in Zukunft angeschlossen wird. Auch könnte Early Media aufgebaut werden. Hauptsache bis zum OK/ACK wird das lokale File abgespielt.

  • So kam endlich dazu....
    Banana PI
    Doorpi als Sip-Client an einer HiPath TK. ES wird als Klingelton jeder Ton abgespielt, den ich in der INI eintrage. Allerdings hab ich festgestellt, das der Parameter Dialtone_Volume keinerlei auswirkung hat. Zumindest bei mir.....


    Gruß Peter

  • Ich habe mal den Workaround eingebaut. Also Verstärker nur kurz ein und wieder aus. Funktioniert leider nicht ganz so wie ich mir das dachte.


    So sieht bei mir aktuell das Event aus, wenn die Klingel gedrückt wird.

    Code
    #Klingel
    [EVENT_OnKeyUp_onboardpins.7]
    10=take_snapshot:http://localhost:9000/?action=snapshot
    30=os_execute:/usr/local/etc/DoorPi/scripts/LoxoneDoorBellSignal.py
    40=os_execute:/usr/local/etc/DoorPi/scripts/DoorbellPushMessage.sh
    50=out:Amp,1
    70=os_execute:aplay !BASEPATH!/media/Dingdong-35db.wav -D sysdefault:CARD=1
    80=out:Amp,0
    80=file_call_value:!BASEPATH!/callTarget.txt



    Vorher noch ein

    Code
    [EVENT_OnStartup]
    10 = sleep:1
    20 = Amp,0

    und ansonsten


    Der Verstärker schaltet ein (braucht ca eine Sekunde bis er da ist) und dann kommt auch das DingDong. 2 Sekunden später tutet es dann wieder wie gehabt. Lösche ich alle anderen Events raus, dann geht's wie erwarte und es tutet nichts. Also so:


    Code
    #Klingel
    [EVENT_OnKeyUp_onboardpins.7]
    10=take_snapshot:http://localhost:9000/?action=snapshot
    50=out:Amp,1
    70=os_execute:aplay !BASEPATH!/media/Dingdong-35db.wav -D sysdefault:CARD=1
    80=out:Amp,0


    Hat jemand spontan eine Idee warum das so sein könnte? Liegt das an dem letzten Event, also dem 80=file_call_value:!BASEPATH!/callTarget.txt? Wird dadurch eventuell das OnMediaRequired ausgelöst, was den Verstärker wieder einschaltet? Bin grad nicht zu Hause und kann daher nicht testen sondern sitze Am Flughafen und habe ein wenig Zeit :)


    Viele Grüße
    Marcus

  • Damit es hier im Forum auch da ist: Die Lösung (ich würde es eher Workaround nennen) beruht darauf über OS-Befehl einen Ton auszugeben und dann den Verstärker auszuschalten und erst bei Telefonverbindung wieder anzuschalten.
    Ich mach das sogar parallel, um den Anruf nicht zu verzögern. Beispiel:


    [onboardpins_OutputPins]
    12 = Ton


    [EVENT_OnKeyPressed_onboardpins.10]
    10 = call:11


    [EVENT_OnKeyDown_onboardpins.10]
    10 = out:Ton,1
    20 = os_execute:aplay -D plughw:1 /usr/local/etc/DoorPi/media/ShortDialTone.wav
    30 = out:Ton,0


    [EVENT_OnCallStateConnect]
    10 = out:Ton,1


    [EVENT_AfterCallStateConnect]
    10 = out:Ton,0