.titleBar { margin-bottom: 5px!important; }

telefon-daemon zu 3PTY anstiften

Dieses Thema im Forum "FRITZ!Box Fon: Modifikationen" wurde erstellt von Chatty, 17 Nov. 2011.

  1. Chatty

    Chatty Aktives Mitglied

    Registriert seit:
    13 März 2006
    Beiträge:
    1,666
    Zustimmungen:
    20
    Punkte für Erfolge:
    38
    #1 Chatty, 17 Nov. 2011
    Zuletzt bearbeitet: 17 Nov. 2011
    Hi,

    man kann über das AVM-WebIF ja einen Anruf auslösen. Hierzu wird z.B. folgende URL abgerufen:
    http://fritz.box/home/home.lua?sid=...=dial&number=08005266625&xhr=1&t12345=nocache

    Als Antwort sendet die FB:
    Code:
    {"html":"empty","dialingport":"Mobilteil 1","dialing":"08005266625"}
    Den Anruf kann das WebIF auch wieder stoppen, so:
    http://fritz.box/home/home.lua?sid=12345&query=dial&action=hangup&xhr=1&t12345=nocache

    Wenn ich jetzt aber unterwegs bin, hätte ich als Dialingport lieber meine "mobile Festnetznr." - in diesem Fall also aus Sicht der FB eine Dreierkonferenz (3PTY, zwei externe Leitungen zusammenschalten). In diesem Fall muss nicht unbedingt jemand z.H. mithören :)

    Um den Gedanken kurz zu Ende zu spinnen: Damit könnte ich dann über die Fernwartung so etwas ähnliches wie Callback auslösen - ob über Favoriten oder ein noch zu strickende Webseite, sei mal dahingestellt.

    Ein "grep -r dialingport /usr/www" wird u.a. in der home.lua fündig. Darin finden sich u.a. die Zeilen:
    Code:
    if (box.get.query=="dial") then
    if (box.get.action=="dial") then
    require("fon_devices")
    require("cmtable")
    general.dbg_out("query dial"..fon_devices.GetFonDeviceName(tostring(box.query("[COLOR="red"]telcfg:settings/DialPort[/COLOR]"))).."\n")
    box.out([["empty",]])
    box.out([["dialingport":"]]..fon_devices.GetFonDeviceName(tostring(box.query("telcfg:settings/DialPort")))..[[",]])
    box.out([["dialing":"]]..tostring(box.get.number)..[["]])
    local saveset = {}
    cmtable.add_var(saveset, "[COLOR="red"]telcfg:command/Dial[/COLOR]", box.get.number)
    local err_code, err_mgs = box.set_config(saveset)
    if err_code ~= 0 then
    dbg.logit("err_code", err_code, "err_msg", err_msg)
    end
    elseif (box.get.action=="hangup") then
    general.dbg_out("query dial Hangup!!\n")
    require("cmtable")
    box.out([["empty",]])
    box.out([["dialingport":"",]])
    box.out([["dialing":"hangup"]])
    local saveset = {}
    cmtable.add_var(saveset, "telcfg:command/Hangup", "")
    local err_code, err_mgs = box.set_config(saveset)
    if err_code ~= 0 then
    dbg.logit("err_code", err_code, "err_msg", err_msg)
    end
    else
    general.dbg_out("query dial unknown!!\n")
    box.out([["empty",]])
    box.out([["dialingport":"",]])
    box.out([["dialing":"unknown"]])
    end
    Jemand eine Idee? ;)

    [EDIT] Habe gerade die vollständige(?) Auflistung der telcfg-Parameter gefunden.
     
  2. Chatty

    Chatty Aktives Mitglied

    Registriert seit:
    13 März 2006
    Beiträge:
    1,666
    Zustimmungen:
    20
    Punkte für Erfolge:
    38
    #2 Chatty, 18 Nov. 2011
    Zuletzt bearbeitet: 18 Nov. 2011
    Hmm... das Interesse ist scheinbar gering - sind wohl wenig Leute mobil unter einer Festnetznr. erreichbar. Aber prinzipiell ließe sich o.g. "scripted callback" (ggü. "dialed callback") auch mit einem UMTS-Stick an der FB lösen, in dem eine SIM-Karte mit Freiminuten steckt. Ist zwar verschwenderisch, die Hälfte seiner Freiminuten für Selbstanrufe (Callback!) zu nutzen, aber bevor man zwei Handys mit sich herumschleppt...

    Weiß jemand, ob die FB über CAPI DTMF-Steuerung erlaubt? Wie "drückt" man "R" an einem CAPI-Telefon? Wenn das ginge, könnte man einen Mini-Server programmieren, der dann über CAPI statt telcfg in etwa folgendes macht:

    ctlmgr_ctl w telcfg command/Dial '030EIGENENR'
    ctlmgr_ctl w telcfg command/Dial 'R040ZIELNR'
    ctlmgr_ctl w telcfg command/Dial 'R4'

    Das schlimme ist, die FB bietet intern bereits alle Funktionen, nur sind manche leider nicht von außen verfügbar.

    EDIT:
    Also CAPI kann ECT... und der Telefon-Daemon hat dafür sogar eine Funktion: DoECT.