dtmfbox (AB/CB/CT VoIP/ISDN/Analog)

zur busybox: die 1.5er kann man sich ja auch zusätzlich auf nen usb stick laden, dann braucht man kein fw-mod. wenn ich was brauchbares dazu hab, dann poste ich es mal. evtl. kannst du es in die usb version der dtmfbox gleich integrieren.

zu der sache mit *# und resets: die sache wird immer interssanter:
schau mal in der fbox bedienungsanleitung nach, da steht dann drin, dass um ein T-net merkmal zu benutzen, dass nicht vom Telefon unterstützt wird, man *# wählen soll und danch die codes für das merkmal!!!
soweit so gut, bei voip gibt es das nicht. ich hatte meine ausgehende nummer <mymsn> als voip nr. konfiguriert (und nur isdn für incoming). dort hat es jetzt gereicht (dtmfbox lief NICHT), wenn ich *# als blockwahl eingebe, dann ist die box weg (muss wohl ein fehler im voipd/telefond sein in neueren fws in kombination mit meiner anlage, irgendwie check da irgendwer nicht dass voip und t-net merkmal sich nicht ganz verträgt.....). wenn ich hingegen *# nach abheben wähle passiert nix, wenn ich danach noch 001# wähle kommt eine ansage von 1und1 "die gewählte nr. ist nicht verfügbar..." (ist ja normal).

wenn ich jetzt meine nummer bei voipd deaktiviere (also nur isdn account auf der fbox), dann sieht die sache ganz anders aus. die box macht keine resets mehr. ich höre daurnd ein freizeichen, *# hat keinen sichtabren effekt mehr machmal wenn ich danach noch was eingebe ist das freizeichen weg, manchmal wird die verbindung gekappt, je nach eingabe (wahrscheinlich hab ich schon meien ganzen anschluss umprogrammiert ;-) )
mit dtmfbox wird es interessant (in den logs). Es ist nicht mehr möglich (in meiner config, also nur isdn, anlage davor..) in das AB Menü von intern zu kommen. Aber es tauchen nur CAPI_FACILITY messages auf! (war da nicht was mit T-net merkmalen....?) Siehe hier:

Blockwahl von *#001# (am tel. zu hören... kurz freizeichen, dann "kein anschl - tut tut tut")
Code:
11:29:57.366  capi_events.c (IND, CTRL 3, PLCI: 3843) - CAPI_CONNECT (Acc#: unknown (0), Target#: <mymsn>)
 11:29:57.367 script_funcs.c Run script: "/var/stick/dtmfbox/dtmfbox-0.4.0-beta2/script/script_main.sh" "CONNECT" "CAPI" "OUTGOING" "0" "-1" "<mymsn>" "unknown" "1" &amp;
 11:29:57.461  capi_events.c (IND, CTRL 3, PLCI: 3843) - CAPI_INFO (0x800d) - SETUP ACK
 11:29:57.481  capi_events.c (IND, CTRL 3, PLCI: 3843) - CAPI_INFO (0x001e) - PROGRESS INDICATOR (0x02)
 11:29:57.486  capi_events.c (IND, CTRL 3, PLCI: 3843) - CAPI_INFO (0xc000) - UNKNOWN INFO
 11:29:57.488  capi_events.c (IND, CTRL 3, PLCI: 3843) - CAPI_INFO (0x002c) - UNKNOWN INFO
 11:29:57.489  capi_events.c (IND, CTRL 3, PLCI: 3843) - DIALED (*) (3)
 11:29:57.490   capi_funcs.c DTMF RECEIVED: *
 11:29:57.491  capi_events.c (IND, CTRL 3, PLCI: 3843) - DIALED (#) (3)
 11:29:57.493   capi_funcs.c DTMF RECEIVED: #
 11:29:57.494 script_funcs.c Run script: "/var/stick/dtmfbox/dtmfbox-0.4.0-beta2/script/script_main.sh" "DTMF" "CAPI" "OUTGOING" "0" "-1" "<mymsn>" "*#0" "1" "*" &amp;
 11:29:57.556  capi_events.c (IND, CTRL 3, PLCI: 3843) - DIALED (0) (3)
 11:29:57.557   capi_funcs.c DTMF RECEIVED: 0
 11:29:57.558  capi_events.c (IND, CTRL 3, PLCI: 3843) - CAPI_INFO (0xc000) - UNKNOWN INFO
 11:29:57.560  capi_events.c (IND, CTRL 3, PLCI: 3843) - CAPI_INFO (0x002c) - UNKNOWN INFO
 11:29:57.561  capi_events.c (IND, CTRL 3, PLCI: 3843) - DIALING (0) (1)
 11:29:57.564   capi_funcs.c DTMF RECEIVED: 0
 11:29:57.565  capi_events.c (IND, CTRL 3, PLCI: 3843) - CAPI_INFO (0xc000) - UNKNOWN INFO
 11:29:57.567  capi_events.c (IND, CTRL 3, PLCI: 3843) - CAPI_INFO (0x002c) - UNKNOWN INFO
 11:29:57.567  capi_events.c (IND, CTRL 3, PLCI: 3843) - DIALING (1) (1)
 11:29:57.569   capi_funcs.c DTMF RECEIVED: 1
 11:29:57.571  capi_events.c (IND, CTRL 3, PLCI: 3843) - CAPI_INFO (0xc000) - UNKNOWN INFO
 11:29:57.598  capi_events.c (IND, CTRL 3, PLCI: 3843) - CAPI_INFO (0x002c) - UNKNOWN INFO
 11:29:57.598  capi_events.c (IND, CTRL 3, PLCI: 3843) - DIALING (#) (1)
 11:29:57.599   capi_funcs.c DTMF RECEIVED: #
 11:29:57.600 script_funcs.c Run script: "/var/stick/dtmfbox/dtmfbox-0.4.0-beta2/script/script_main.sh" "DTMF" "CAPI" "OUTGOING" "0" "-1" "<mymsn>" "*#001#" "1" "001" &amp;
 11:29:57.786  capi_events.c (IND, CTRL 3, PLCI: 3843) - CAPI_INFO (0xc000) - UNKNOWN INFO
 11:29:59.435  capi_events.c (IND, CTRL 3, PLCI: 3843) - CAPI_INFO (0x8003) - PROGRESS
 11:29:59.436  capi_events.c (IND, CTRL 3, PLCI: 3843) - CAPI_INFO (0xc000) - UNKNOWN INFO
 11:29:59.987 script_funcs.c [0] - hook up!
 11:29:59.989  capi_events.c (IND, CTRL 3, PLCI: 3843) - CAPI_CONNECT_ACTIVE
 11:29:59.992 script_funcs.c Run script: "/var/stick/dtmfbox/dtmfbox-0.4.0-beta2/script/script_main.sh" "CONFIRMED" "CAPI" "OUTGOING" "0" "-1" "<mymsn>" "*#001#" "1" &amp;
 11:30:00.076  capi_events.c (IND, CTRL 3, PLCI: 3843, NCCI: 69379) - CAPI_CONNECT_B3
 11:30:00.077  capi_events.c (IND, CTRL 3, PLCI: 3843, NCCI: 69379) - CAPI_CONNECT_B3_ACTIVE
 11:30:00.079   capi_funcs.c Enable DTMF for NCCI 69379
 11:30:00.080    capi_ctrl.c (CNF, CTRL 3, PLCI: 3843, NCCI: 69379) - [B]CAPI_FACILITY[/B]
11:30:02.455 script_funcs.c [0] - hook down!
 11:30:02.456  capi_events.c (IND, CTRL 3, PLCI: 3843) - CAPI_INFO (0x001e) - PROGRESS INDICATOR (0x02)
 11:30:02.458  capi_events.c (IND, CTRL 3, PLCI: 3843) - CAPI_INFO (0xc000) - UNKNOWN INFO
 11:30:02.459  capi_events.c (IND, CTRL 3, PLCI: 3843, NCCI: 69379) - CAPI_DISCONNECT_B3
 11:30:02.461 script_funcs.c Run script: "/var/stick/dtmfbox/dtmfbox-0.4.0-beta2/script/script_main.sh" "DISCONNECT" "CAPI" "OUTGOING" "0" "-1" "<mymsn>" "*#001#" "1" &amp;
 11:30:04.228  capi_events.c (IND, CTRL 3, PLCI: 3843) - CAPI_INFO (0xc000) - UNKNOWN INFO
 11:30:04.229  capi_events.c (IND, CTRL 3, PLCI: 3843) - CAPI_DISCONNECT
 11:30:04.231   capi_funcs.c CAPI 0x349f - Normal, unspecified

ohne blockwahl sieht es so aus (sieht man auch an den DIALLING...):
Code:
11:13:09.429  capi_events.c (IND, CTRL 3, PLCI: 1795) - CAPI_CONNECT (Acc#: unknown (0), Target#: <mymsn>)
 11:13:09.430 script_funcs.c Run script: "/var/stick/dtmfbox/dtmfbox-0.4.0-beta2/script/script_main.sh" "CONNECT" "CAPI" "OUTGOING" "0" "-1" "<mymsn>" "unknown" "1" &amp;
 11:13:09.516  capi_events.c (IND, CTRL 3, PLCI: 1795) - CAPI_INFO (0x800d) - SETUP ACK
 11:13:09.517  capi_events.c (IND, CTRL 3, PLCI: 1795) - CAPI_INFO (0x001e) - PROGRESS INDICATOR (0x02)
 11:13:09.519  capi_events.c (IND, CTRL 3, PLCI: 1795) - CAPI_INFO (0xc000) - UNKNOWN INFO
 11:13:14.169  capi_events.c (IND, CTRL 3, PLCI: 1795) - CAPI_INFO (0x002c) - UNKNOWN INFO
 11:13:14.169  capi_events.c (IND, CTRL 3, PLCI: 1795) - DIALING (*) (1)
 11:13:14.171   capi_funcs.c DTMF RECEIVED: *
 11:13:14.174  capi_events.c (IND, CTRL 3, PLCI: 1795) - CAPI_INFO (0xc000) - UNKNOWN INFO
 11:13:14.617  capi_events.c (IND, CTRL 3, PLCI: 1795) - CAPI_INFO (0x002c) - UNKNOWN INFO
 11:13:14.619  capi_events.c (IND, CTRL 3, PLCI: 1795) - DIALING (#) (1)
 11:13:14.620   capi_funcs.c DTMF RECEIVED: #
 11:13:14.621 script_funcs.c Run script: "/var/stick/dtmfbox/dtmfbox-0.4.0-beta2/script/script_main.sh" "DTMF" "CAPI" "OUTGOING" "0" "-1" "<mymsn>" "*#" "1" "*" &amp;
 11:13:14.676  capi_events.c (IND, CTRL 3, PLCI: 1795) - CAPI_INFO (0xc000) - UNKNOWN INFO
 11:13:15.616 script_funcs.c [0] - hook up!
 11:13:15.625  capi_events.c (IND, CTRL 3, PLCI: 1795) - CAPI_CONNECT_ACTIVE
 11:13:15.627 script_funcs.c Run script: "/var/stick/dtmfbox/dtmfbox-0.4.0-beta2/script/script_main.sh" "CONFIRMED" "CAPI" "OUTGOING" "0" "-1" "<mymsn>" "*#" "1" &amp;
 11:13:15.716  capi_events.c (IND, CTRL 3, PLCI: 1795, NCCI: 67331) - CAPI_CONNECT_B3
 11:13:15.718  capi_events.c (IND, CTRL 3, PLCI: 1795, NCCI: 67331) - CAPI_CONNECT_B3_ACTIVE
 11:13:15.719   capi_funcs.c Enable DTMF for NCCI 67331
 11:13:15.721    capi_ctrl.c (CNF, CTRL 3, PLCI: 1795, NCCI: 67331) - [B]CAPI_FACILITY[/B]
 11:13:16.220  capi_events.c (IND, CTRL 3, PLCI: 1795, NCCI: 1795) - [B]CAPI_FACILITY[/B]
 11:13:16.221   capi_funcs.c DTMF RECEIVED: 0
 11:13:16.572  capi_events.c (IND, CTRL 3, PLCI: 1795, NCCI: 1795) - CAPI_FACILITY
 11:13:16.573   capi_funcs.c DTMF RECEIVED: 0
 11:13:16.972  capi_events.c (IND, CTRL 3, PLCI: 1795, NCCI: 1795) - CAPI_FACILITY
 11:13:16.974   capi_funcs.c DTMF RECEIVED: 1
 11:13:17.815 script_funcs.c [0] - hook down!
 11:13:17.817  capi_events.c (IND, CTRL 3, PLCI: 1795) - CAPI_INFO (0x001e) - PROGRESS INDICATOR (0x02)
 11:13:17.819  capi_events.c (IND, CTRL 3, PLCI: 1795) - CAPI_INFO (0xc000) - UNKNOWN INFO
 11:13:17.820  capi_events.c (IND, CTRL 3, PLCI: 1795, NCCI: 67331) - CAPI_DISCONNECT_B3
 11:13:17.821 script_funcs.c Run script: "/var/stick/dtmfbox/dtmfbox-0.4.0-beta2/script/script_main.sh" "DISCONNECT" "CAPI" "OUTGOING" "0" "-1" "<mymsn>" "*#" "1" &amp;
 11:13:21.446  capi_events.c (IND, CTRL 3, PLCI: 1795) - CAPI_INFO (0xc000) - UNKNOWN INFO
 11:13:21.447  capi_events.c (IND, CTRL 3, PLCI: 1795) - CAPI_DISCONNECT
 11:13:21.448   capi_funcs.c CAPI 0x349f - Normal, unspecified

egal wie gewählt wird, ins menü komme ich so nicht. wenn ich mehr zeit habe probiere ich diese situation (also ohne voip account) mal ohne anlage dazwischen.

da scheint wohl der telefond ein ernstes Wörtchen mitzureden zu haben.... wenn man es mit voip macht, dann wird es eben ignoriert oder führt zu box resets (wenn man eine anlage davor hat, die die capi messages noch etwas "erweitert...")

EDIT:
bodega schrieb:
@florixyz:
Ich hatte gestern abend nochmal ein paar Tastencodes probiert. Das merkwürdige ist, '#' wird von der FB irgendwie interpretiert. Nach '#' springt die INFO-Message um, so als ob jemand den Telefonhörer abhebt. Ohne '#' gibt es keine derartigen Probleme. z.B.

aus *#001#1# wird *#001##1 (??)
aus **001*1# wird **001*1# (ok!)
aus **001*1* wird **001*1* (ok!)

Führen bei dir Eingaben mit '*' auch zum Absturz?
** Kann ich nicht testen, weil genau diese Kombination auch bei meiner Anlage sehr beliebt ist ;-) ** kommt also bei der box nicht an, und ich bekomme den int. wählton der anlage.
Dass die Box * und # interpretiert ist ja eig. klar, weil du die Box ziemlich gut über viele viele Tastencodes der Form #xx*x* *xx# oder *xx*x#, etc. steuern kannst....

am einfachsten wäre es doch, das ganze so zu gestalten , dass man vor und NACH abheben (da treten die probleme ja nicht auf mit dem absturz) wählen kann, es wird ja immer der komplette gewählte string in einem Parameter übertragen (DST_NO? oder irgendwo da halt), egal wie gewählt wird. könnte man den nicht einfach parsen? IF parameter = "*#001#" then account = 1 , irgendwie sowas. klar bedarf es mehr dazu, aber so die richtung.
 
Zuletzt bearbeitet:
florixyz schrieb:
am einfachsten wäre es doch, das ganze so zu gestalten , dass man vor und NACH abheben (da treten die probleme ja nicht auf mit dem absturz) wählen kann, es wird ja immer der komplette gewählte string in einem Parameter übertragen (DST_NO? oder irgendwo da halt), egal wie gewählt wird. könnte man den nicht einfach parsen? IF parameter = "*#001#" then account = 1 , irgendwie sowas. klar bedarf es mehr dazu, aber so die richtung
Das überlege ich gerade. Das ganze passiert im script_main.sh in der Funktion "internal_dial".

Das Skript wird immer beim auftreten eines Delimiters aufgerufen (also bei *#001# = 2x).
Wenn das Skript den * erkennt, nimmt es den Anruf entgegen. Danach wird der String '001' für Acc1 in der DST_NO geprüft.
Jetzt wird bei dir die Blockwahl nicht komplett durchgeführt (nur bis *#, danach geht es ohne Blockwahl weiter). Im Event erkennt man, das DST_NO nicht komplett ist ("*#0" anstelle von "*#001#"). Beim zweiten Aufruf vom DTMF-Event ist DST_NO wieder richtig, aber da ist die überprüfung schon Fehlgeschlagen --> dtmfbox legt auf...

Im Post #714 erkennt man, das ohne Anlage die komplette Blockwahl erfolgt.

Also müsste die Überprüfung erst ab einer bestimmten Anzahl an Zeichen erfolgen.

Zum FACILITY:
Das FACILITY_CNF bezieht sich darauf, das DTMF-Signalerkennung eingeschaltet wurde (völlig normal nach abheben). Die FACILITY_INDs entstehen dadurch, das DTMF-Signale empfangen wurde.

CAPI_INFO bekommt man vor abheben. Das sind sozusagen DDI Ziffern, die ich nur mit dem internen Controller empfangen kann. Nach Abheben springt das um auf Facility (wie bei anderen Controllern auch).

Eventuell wäre es hier besser, beide Fälle unter zwei unterschiedlichen Events zu verwalten ("DTMF" für CAPI_FACILITY und "DDI" für CAPI_INFO).

Es müsste auch ohne Blockwahl gehen, wenn man (wie oben erwähnt), eine bestimmte Anzahl Zeichen abwartet und nicht direkt beim * abhebt. Ich werde das heute abend mal ein wenig weiter fortführen.
 
bodega schrieb:
Im Post #714 erkennt man, das ohne Anlage die komplette Blockwahl erfolgt.

Es scheint als ob meine Anlage "*#0" als Blockwahl weiterleitet, dann irgendwie eingreift und den Rest des Strings als einzel Ziffern weiterleitet... mal die Anlagendoku lesen

EDIT: Ich hab auf meiner TK-Anlage ein Frimware Update gemacht. Jetzt ist das Problem mit den reboots der Fbox weg.... aber nur weil die Anlage jetzt so gut wie gar nix mehr an den externen s0 weiterleitet. wenn ich wähle wird erst nach der 2. ziffer übertragen (also ich wähle 1234 , dann kommt erst wenn ich die 3 wähle 2xDIALED für 1 und 2 und dann mit DIALLING 3 und 4)
*# geht gleich gar nicht. ** ist für intern gespräche *xxx# würde gehen, wird dann aber von der box abgefangen.
leider scheint meine TK-Anlage (Auerswald COMPact 4410 USB) keine "Keypad-Sequenz" zu haben. Laut AVM ist das bei ihren Anlagen eben das "*#" und danach wird eben alles was kommt einfach zum Amt weitergeleitet (das war das was ich mit den T-Net Merkmalen gelesen hatte und etwas falsch verstanden hatte, denn wenn wir nach "*#" abheben, dann geht ja eh nix weiter... naja). Hab mal das pdf meiner auerswald bedienungsanleitung nach "keypad" durchsuch .. 0 Treffer. finde ich schwach für solche schon nahezu professionellen Anlagen....... hat jemand ne idee wie ich die tastencodes durch die anlage durchbringe?

EDIT2:
Ein "dirty hack" auf den ich gerade gestossen bin:
Ich muss bei mir folgendes wählen um durch die TK-Anlage zu kommen:
0 (fürs Amt) 00 (damit extern verb. aufgebaut wird CAPI_CONNECT zur Box) * xxxxxx
Das 00 wird dann von der dtmfbox als DIALED empfangen und beim connect an den script übergeben. Den * empfängt er als DIALLING und übergibt erstmal noch nix (würde er ja erst bei # , nur da macht jetzt die Box schluss, wenn ich 00*# gewählt habe) Deswegen müsste nach dem 00* die dtmfbox einen hook up machen, dann kann per dtmf gesendet werden was man mag :)
mit blockwahl siehts aber wieder ganz anders aus, also man müsste sich da für die dtmf variante entscheiden. aber deswegen die ganze dtmfbox umstellen das lohnt sich nicht :)

was ich noch interessant fand: nach einer weile beginnt ja der voipd mal zu wählen (mein 00*#) dann kommen folgende Meldungen:
Code:
Sep 18 23:37:18 voipd[635]: message from UDP:212.227.15.231:5060 is illegal (Illegal Proxy-Authenticate header (6)).
scheint wohl bei AVM einer unsauber programmiert zu haben was "illegal characters" angeht ;-)
 
Zuletzt bearbeitet:
play bei outgoing auf ctrl1 nicht möglich...?

bin jetzt ein bisschen am scripten und spielen ;) hab gerade folgendes gemacht:

# dtmfbox -call <mymsn> 01092<handynr> 1
(gibt 0 zurück)

dann nachdem im log der script mit "CONFIRMED" aufgerufen wird, starte ich auf der console
# dtmfbox 0 -play play/test.wav ; dtmfbox 0 -hook down
problem: das wave file (ca.15sec. lang) wird nicht abgespielt, wie auch im log zu sehen ist, fehlermeldung gibt es keine.
der script floscript.sh ist hat keine funktion, er enthält im prinzip nur "return 1;"
[EDIT: geht übrigens auch nicht wenn ich eine festnetz nummer auf meinem 2. b-kanal anrufe und die handynummer mit einer anderen vorwahl oder gar ohne vorwahl anrufe]

meine TK-Anlage kanns diesmal auch nicht sein, die ist nicht im Weg (die box is ja davor, d.h. direkt am amt)

Code:
10:29:56.128  capi_events.c (IND, CTRL 1, PLCI: 3585) - CAPI_INFO (0x8001) - ALERTING
 10:29:56.130  capi_events.c (IND, CTRL 1, PLCI: 3585) - CAPI_INFO (0x001e) - PROGRESS INDICATOR (0x02)
 10:29:56.133  capi_events.c (IND, CTRL 1, PLCI: 3585) - CAPI_INFO (0xc000) - UNKNOWN INFO
 10:30:02.842  capi_events.c (IND, CTRL 1, PLCI: 3585) - CAPI_INFO (0x8007) - CONNECT
 10:30:02.844  capi_events.c (IND, CTRL 1, PLCI: 3585) - CAPI_INFO (0x0029) - DATE/TIME (05/07/09 19:10)
 10:30:02.845  capi_events.c (IND, CTRL 1, PLCI: 3585) - CAPI_INFO (0xc000) - UNKNOWN INFO
 10:30:02.848  capi_events.c (IND, CTRL 1, PLCI: 3585) - CAPI_CONNECT_ACTIVE
 10:30:02.849 script_funcs.c Run script: "/var/stick/dtmfbox/dtmfbox-0.4.0-beta2/floscript.sh" "CONFIRMED" "CAPI" "OUTGOING" "0" "-1" "<mymsn>" "01092<handynr>" "2" &
 10:30:08.973 script_funcs.c [0] - hook down!
 10:30:09.329  capi_events.c (IND, CTRL 1, PLCI: 3585) - CAPI_DISCONNECT
 10:30:09.332 script_funcs.c Run script: "/var/stick/dtmfbox/dtmfbox-0.4.0-beta2/floscript.sh" "DISCONNECT" "CAPI" "OUTGOING" "0" "-1" "<mymsn>" "01092<handynr>" "2" &
da fehlt wohl der CONNECT_B3 ...

EDIT4:
@bodega: mit der 0.3.9er version geht es, da kommt der connect_b3 .. nur so zur info um die fehlersuche zu erleichtern. aber vllt. ist dir das problem ja eh schon bekannt.
die sache tritt in der beta2 nämlich bei allen ausgehenden capi gesprächen auf, auch auf dem internen controller. bei allen eingehenden gesprächen (auch intern) geht es.


EDIT2: Ich bin enttäuscht von AVM....
Code:
Sep 19 23:12:26 voipd[646]: 23:12:26(1) [Segmentation fault] voipd(646) CRASHED at 00000055 (?) accessing 00000000 (?)
.. und die box macht einen reboot. dtmfbox ist unschuldig :) hab lediglich im WebIf von AVM den registrar einer voip nummer geändert (von dtmfbox auf 1und1) und die Änderungen gespeichert... ;-)

EDIT3: noch ein bug in der beta2...
Code:
./dtmfbox: capi20.c: 310: return_buffer: Assertion `validapplid(applid)' failed.
Aborted
Ich habe dtmfbox (server) mit Ctrl-C beendet. Also da scheint nicht nur am ende mit dem deregistern was nicht zu stimmen, sonder auch da (mehr als diese Meldung gibt es nicht, ausser die normaln isdn/voip sachen beim telefonieren von paar minuten davor). Manchmal friert die dtmfbox auch einfach ein wenn ich ctrl-c drücke...

Aber: alles nicht so wild :) muss mal zwischendurch sagen, dass die dtmfbox echt super ist. das programm ist schon ganz schön komplex geworden mit dem ganzen psjip teil & dafür läuft es schon echt super! respekt bodega!
 
Zuletzt bearbeitet:
Hallo florixyz,

sorry, dass ich mich jetzt erst melde.

florixyz schrieb:
Deswegen müsste nach dem 00* die dtmfbox einen hook up machen, dann kann per dtmf gesendet werden was man mag
mit blockwahl siehts aber wieder ganz anders aus, also man müsste sich da für die dtmf variante entscheiden. aber deswegen die ganze dtmfbox umstellen das lohnt sich nicht
Das würde eigentlich nur die Skripte betreffen. Am besten beide Fälle abbilden (DIALED/DIALING) :). Oder sollte ich das Präfix zum abheben mit in die Konfig aufnehmen? Dann hätte man es dynamisch und könnte es einstellen.

florixyz schrieb:
mit der 0.3.9er version geht es, da kommt der connect_b3 .. nur so zur info um die fehlersuche zu erleichtern. aber vllt. ist dir das problem ja eh schon bekannt.
die sache tritt in der beta2 nämlich bei allen ausgehenden capi gesprächen auf, auch auf dem internen controller. bei allen eingehenden gesprächen (auch intern) geht es.

Outch. Stimmt. Connect_B3_REQ hatte ich bei ausgehenden Gesprächen mitausgebaut. Q&D um mal festzustellen, ob es am NCCI-Fehler lag. Ich baue es heute abend wieder ein (ohne out-of-ncci ;)). Dann geht es auch mit der Beta. Danke!

florixyz schrieb:
EDIT3: noch ein bug in der beta2...

Code:
./dtmfbox: capi20.c: 310: return_buffer: Assertion `validapplid(applid)' failed.
Aborted
Ahh.. wahrscheinlich war die AppID nicht richtig initialisiert und dann gibt es einen assert. Die verdächtigten Stellen werden weniger. Sehr gut!
CTRL+C bleibt bei mir oft bei "Destroy Endpoint" hängen. PJSIP scheint sich nicht so ganz von seinen "Objekten" lösen zu wollen. Irgendwas muss ich noch übersehen haben.

florixyz schrieb:
Aber: alles nicht so wild muss mal zwischendurch sagen, dass die dtmfbox echt super ist. das programm ist schon ganz schön komplex geworden mit dem ganzen psjip teil & dafür läuft es schon echt super! respekt bodega!
Danke das du das so siehst. Es ist wirklich nicht einfach CAPI und SIP in einem Programm zu verwalten (und auch untereinander zu bridgen).
Zumal es bei SIP Fälle gibt, die man nur schwer testen kann. Ich erinnere mich an 1&1. Ohne so manche Hilfe hier im Forum hätte ich das nicht rausgefunden.
 
ich weiss wie schwer es ist soetwas zu programmieren. hab ja auch schonmal bisschen was mit capi gemacht (siehe fax sache...). und wenn man dann anfängt eine riesen library einzubinden, sei es spandsp oder eben bei dir pjsip.. dann wird sehr schnell sehr unübersichtlich, wenn dann noch viele verschiedene konfigs dazukommen... naja, du kennst es ;)

Noch ne Spielerei: Ich hab jetzt mal madplay (mp3 decoder) für die fbox compiliert. Man könnte so per wget einen mp3 stream über http holen (webradio) an madplay pipen und madplay einen 8khz mono 16-bit raw-stream ausgeben lassen auf stdout (das funktioniert auch schon :) ). wenn jetzt dtmfbox -play - funktioniert oder funktionieren würde (? tut es das schon.. glaub nicht, oder? müsste doch dann noch ne möglichkeit das format festzulegen, ausser man geht immer von 8khz mono 16bit aus, was eig. reicht), dann könnte man auf seinem internen tel über den lautsprecher webradio hören ohne einen pc anzuhaben :)

später kann man es ja noch ausbauen, so dass wenn ein anruf reinkommt das radio unterbrochen wird und eine ansage über den anruf kommt, inkl. rufnummer per espeak z.B. und dann "drücke 0 um abzuheben.. usw" ;)
 
hier ist madplay für die box :)

man muss das tar entpacken. das erzeugt ein "dist" verzeichnis, darin muss man die beiden libraries noch umbenennen in .so.0 (anstatt .so.0.2... usw..) sonst findet sie madplay nicht. war ein fehler von mir. (achso, vllt. geht es auch, wenn man es in /var/tmp extrahiert, weil dort symlinks gehen, hatte es bei mir auf nem fat stick ohne symlinks)
mit "export LD_LIBRARY_PATH=/var/tmp/dist" (z.B.) bindet man die libs ein (oder mit der "mount -o bind" lösung kann man sie direkt in /lib mounten.
dann ./madplay --help sollte die hilfe ausgeben, die ziemlich gut ist. wenn man als file - angibt liest er von <stdin>. "wget URL -O -" gibt auf stdout aus ;) und "-o raw:-" als madplay option gibt den output auch auf stdout
EDIT: "-R 8000 -m" stellt das format 8khz mono für die ausgabe ein.
 

Anhänge

  • madplay.tar
    470 KB · Aufrufe: 22
florixyz schrieb:
wenn jetzt dtmfbox -play - funktioniert oder funktionieren würde (? tut es das schon.. glaub nicht, oder? müsste doch dann noch ne möglichkeit das format festzulegen, ausser man geht immer von 8khz mono 16bit aus, was eig. reicht), dann könnte man auf seinem internen tel über den lautsprecher webradio hören ohne einen pc anzuhaben

STDIN pipen ist eine verdammt coole Idee (das geht leider noch nicht, aber ich will das haben). Dann würde auch espeak viel schneller abspielen, anstatt erst die Wav auf USB zu packen und dann abzuspielen... Man bräuchte dann ja nichtmal eine wav :).

Ich probiere madplay heute abend aus...

-play und -playthread sollten gehen Es muss halt irgendwo eine wav abgelegt sein (nur bei Beta muss ich nochmal ran, wegen dem CONNECT_B3_REQ, siehe oben).

Ich werde den neuen Parameter dann -playstdin oder -playstream taufen. Eventuell auch noch ein -recstdout oder -recstream hinzu, damit es rund ist.
 
-playstream :)
klingt cool, damit könnten auch mp3 files als ansagen abgespielt werden :)

es müsste aber auch kein eigener parameter her. du könntest einfach nach dem filename "-" parsen und dann stdout/stdin funktion aktivieren. je nachdem wie es einfacher zu implementieren ist.

du müsstest allerdings vom client dtmfbox einen stream zum server dtmfbox aufbauen, denn sonst würde der server sein stdin und stdout lesen/schreiben, was wenig sinn hätte.
 
Moin Jungens,

wäre da eine "named pipe" nicht Sinnvolles für?!? STDIN und -OUT ist "so allgemein" ;-)

Jörg
 
MaxMuster schrieb:
Moin Jungens,

wäre da eine "named pipe" nicht Sinnvolles für?!? STDIN und -OUT ist "so allgemein" ;-)

Jörg

named pipe ist sicherlich sinnvoll für die kommunikation zwischen client und server instanz.
aber für die skript seite?
wenn du uns sagst, wie man z.b. vom madplayer der ein 8khz pcm-strom auf STDOUT ausgibt , diesen strom in einem busybox skript in eine named pipe von der dtmfbox zu schreiben..... okay :)
EDIT: oder kann man in named pipes wie in normales datein schreiben? also kann ich dann sowas wie "-o raw:namedpipe.file" als ausgabe option beim madplayer angeben?
 
Ja, verhält sich halt wie eine "normale Pipe", die aber als "Datei" angesprochen wird, und deshalb flexibler ist:

Code:
# Statt
echo "lalalllalala" | grep la

mkfifo /tmp/mp3fifo
#
# die eine Seite: 
#
echo "lalalllalala"  > /tmp/mp3fifo

#
# die andere Seite
#
grep la /tmp/mp3fifo

Jörg
 
[ mkfifo kann die busybox auf der fritzbox? wenn nicht, dann müsste man es halt extra bereitstellen, wäre aber möglich. ]
EDIT: mkfifo ist in original fw nicht drin, könnte ich aber als eigenständiges applet, oder vllt. zusammen mit shell (für die skripte) kompilieren (busybox v1.5). wenn man die 1.5er bb verwendet dann laufen die skripte laut bodega auch schneller. mal schaun zu was ich am wochenende so komm.

hört sich nach einer guten idee an, vor allem weil dann theoretisch gar kein dtmfbox code geändert werden müsste, wenn das klappt :)

@bodega:
Das würde eigentlich nur die Skripte betreffen. Am besten beide Fälle abbilden (DIALED/DIALING) . Oder sollte ich das Präfix zum abheben mit in die Konfig aufnehmen? Dann hätte man es dynamisch und könnte es einstellen.

Am besten wäre es das Präfix in die Config aufzunehmen, ist ja sicher bei jedem verschieden. Dann kann jeder eine eigene Zeichenkette, meinetwegen auch 0900 ( ;-) ) einstellen, nach der die dtmfbox am internen controller abhebt und ihm das menü oder eine ansage präsentiert.
 
Zuletzt bearbeitet:
Jo. mkfifo ist nicht dabei, hört sich aber gut an. Ich kompilier meine busybox gleich nochmal neu :)

florixyz schrieb:
Dann kann jeder eine eigene Zeichenkette, meinetwegen auch 0900 ( ;) ) einstellen
gefährlich :) ... die nehm ich als default ;)

EDIT:
Gerade mal mkfifo getestet.
Code:
mkfifo /var/dtmfboxpipe
espeak --stdout "Das ist ein Test" > /var/dtmfboxpipe &
dtmfbox 0 -play /var/dtmfboxpipe

Dabei bekomme ich leider "(220180) Unable to open /var/dtmfboxpipe".
cat /var/dtmfboxpipe gibt aber alles korrekt aus.

Jetzt gibt es leider ein Problem: ich verwende pjsip Routinen um wave-Files zu öffnen. Dateien werden damit wahrscheinlich mittels fopen geöffnet (müsste ich nachschauen). Ohne Änderung geht es dann wohl nicht.

busybox 1.5.1 mit mkfifo

EDIT2:
mhh.. das sollte auch mit fopen funktionieren. Seek-Problem?

EDIT3:
Habe jetzt einen media port erstellt, der ohne seek arbeitet und was soll man sagen - es geht!
Espeak startet sofort und beendet sich sogar vor dem Streamende. Insgesamt eine riesen Zeitersparnis.
Ich müsste allerdings noch viel mehr machen. Es fehlt der Resampler, so dass nur 8khz, 16bit, mono waves ordnungsgemäß abgespielt werden. Ich habe es auch noch nicht mit VoIP getestet...

EDIT4:
v0.4-beta3
Viel ist nicht geändert, aber das Streamen über Named Pipe ist drin, Beenden sollte besser funktionieren (CTRL+C) und ausgehende Gespräche kann man nun auch wieder hören.
Den Stream-Parameter habe ich weggelassen. Den Named Pipe einfach an -play oder -playthread übergeben. Geht erstmal nur mit CAPI und 8khz, 16bit Dateien.
 
Zuletzt bearbeitet:
hast du madplay mal probiert? ich kann die wavs die er ausgibt nicht mit dtmfbox abspielen, obwohl das format passt... winamp spielt sie... egal ob named pipe oder offline als file gespeichert.

werde die neue beta dann mal testen, vllt. gehts da?
muss ein wave-header in der pipe sein? oder kann ich auch als raw format ausgeben?
 
Ich habe madplay gerade probiert. Auch mal mit normaler MP3.
Code:
# Konsole 1:
./dtmfbox 0 -play /var/dtmfboxfifo

# Konsole 2:
./madplay -R 8000 -o wave:- | cat /var/media/ftp/usb/1.mp3 > /var/dtmfboxfifo

Leider rauscht das nur :( - auch raw geht nicht. Mit einer wave-Datei funktioniert es. Wenn ich das Pipe andersrum setze, gibt das ein Broken pipe.

EDIT1:
Ich trottel. Jetzt geht es:
Code:
./madplay -R 8000 -m -o raw:- /var/media/ftp/usb/1.mp3 > /var/dtmfboxfifo

Aber wie könnte das nun mit Stream funktionieren?
 
Zuletzt bearbeitet:
hehe, das webradio geht :=) echt coole sache, danke bodega für den pipe support!!!!!

Trotz:
Code:
 22:16:58.313  capi_events.c (IND, CTRL 3, PLCI: 4867, NCCI: 70403) - CAPI_CONNECT_B3_ACTIVE
 22:16:58.313   capi_funcs.c Enable DTMF for NCCI 70403
 22:16:58.314    capi_ctrl.c (CNF, CTRL 3, PLCI: 4867, NCCI: 70403) - CAPI_FACILITY
 22:16:58.351 script_funcs.c [0] - playing /var/tmp/mp3fifo...
 22:16:58.352    alaw_ulaw.c (220180) Unable to open /var/tmp/mp3fifo
funktioniert es, ich höre zumindest grade radio.... (zwar nix für audiophile, aber trotzdem cool)

hier mein skript um radio-gong zu hören:
Code:
export LD_LIBRARY_PATH=/var/stick/dist ;
mkfifo /var/tmp/mp3fifo ;
D="/var/stick/dtmfbox/dtmfbox-0.4.0-beta3";
$D/dtmfbox 0 -hook up ;
wget http://radiator.nci.de:8000/live -O - | ./madplay -R 8000 -m -o wave:/var/tmp/mp3fifo - & $D/dtmfbox 0 -play /var/tmp/mp3fifo
 
Ihr seid ja verrückt, was ihr da macht, das gefällt mir echt prima ;-) ;-) (ich probiere das die nächsten Tage auch mal)

Jörg
 
@bodega:
kann es sein, dass in der dtmfbox beim lesen vom stream ein paar sleeps fehlen? die dtmfbox hat auf jeden fall 80% cpu nutzung während madplay die anderen 20% nimmt. scheint aber kein problem zu sein, sieht eher so aus, als ob die dtmfbox einfach alles nimmt was übrig ist, also eben beim warten auf einen read() vom stream kein non-blocking mit sleep
 
Super... Radio geht :)

Da bräuchte man die Ansagen auch nicht mehr auf USB ablegen. Bei den Aufnahmen bin ich mir nicht sicher, dürfte aber auch nicht so schwer zu lösen sein. Ähnliches Prinzip.

EDIT:
@florixyz:
Oh.. sehr merkwürdig. Hatte gerade eine 44khz MP3 abgespielt, da waren es ca. 20% (dachte es wäre halb so wild). Beim Stream sind es jetzt auch bei mir 70-80%.
Eigentlich sollte da kein Sleep fehlen (CAPI_WAIT_FOR_SIGNAL). Die unterschieden Auslastungen geben mir etwas zu denken.

EDIT2:
Ahh. schon rausgefunden. Ich hatte testweise eine Schleife um den Message-Block der CAPI gebaut (wegen Soundkarte), ändere das gleich. Dann ist die Auslastung wieder niedriger.

Wohl doch nicht... habe schonwieder 70%
 
Zuletzt bearbeitet:
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.