NEWS
Asterisk bringt "Error while dialing (2). Error: {}"
-
Hallo zusammen,
ich vermute Google hat etwas an der verwendeten Text-To-Speech API verändert, sodass nur noch eine bestimmte Anzahl Wandlungen in einem Zeitraum möglich sind (wenn überhaupt noch)...
Ich habe es jetzt so gelöst, dass im Skript "umzu" mit lokalem PicoTTS wav-Dateien erzeugt und mit sox zur gsm konvertiert werden.Problem ist, dass beim Starten des Adapters der Dial-In-Text an Google geschickt wird und natürlich nicht gewandelt wird...
Als Konsequenz daraus startet dann der Adapter nicht korrekt (kein DTMF mehr möglich)
Um dies quick and dirty zu beheben habe ich in der asterisk.js die Zeilen 757 und 788 auskommentiert...
Der Teil dazwischen wurde sonst nicht ausgeführt...757: /* convertDialInFile(parameter, () => { */ ..... 788: /* }); */
Wäre natürlich toll, wenn jemand den Adapter so umbauen könnte, dass eine andere TTS-Engine genutzt wird...
-
@boeskij sagte in Asterisk bringt "Error while dialing (2). Error: {}":
Ich habe es jetzt so gelöst, dass im Skript "umzu" mit lokalem PicoTTS wav-Dateien erzeugt und mit sox zur gsm konvertiert werden.
Könntest du dies mal näher erläutern.
-
@bahnuhr
Hoffe das hier hilft:let msg = "Dieser Text wird vorgelesen." exec('pico2wave -w /tmp/ttsdatei.wav -l de-DE "' + msg + '"', function (error, stdout, stderr) { /* wav erstellt */ exec('sox /tmp/ttsdatei.wav -r 8000 -c 1 /tmp/ttsdatei.gsm', function (error, stdout, stderr) { /* gsm erstellt */ exec('rm /tmp/ttsdatei.wav', function (error, stdout, stderr) { /* wav gelöscht, sonst wurde beim folgenden Anruf ggf. die falsche Datei aufgerufen... */ sendTo('asterisk.0', "dial", { telnr: callNumber, callerid: callerId, audiofile: '/tmp/ttsdatei.gsm'}, (res) => { console.log('Result: ' + JSON.stringify(res)); exec('cp /tmp/ttsdatei.gsm /tmp/asterisk_dtmf.gsm', function (error, stdout, stderr) { /* Die asterisk_dtmf.gsm wird für Dial-In Anrufe verwendet... Hier wird dann einfach der letzte Anruf nochmal wiedergegeben */ /* Das folgende Löschen führte bei mir zu Problemen, also bleibt die Datei liegen.. wird ja eh überschrieben */ /* exec('rm /tmp/ttsdatei.gsm', function (error, stdout, stderr) { console.log('Telefonalamierung: gsm gelöscht'); }); */ }); }); }); }); });
-
@boeskij sagte in Asterisk bringt "Error while dialing (2). Error: {}":
pico2wave
Kenn ich bisher nicht.
Muss man dies installieren? -
@bahnuhr
ja, wird auch im sayit-Adapter verwendet:PicoTTS (linux only): English, German, Italian, Spanish, French For PicoTTS it is necessary to install the following packages: libttspico-utils and lame. Installation command: 'sudo apt-get install libttspico-utils lame'
-
Habe mal das Script gekürzt um zu sehen ob eine wav erzeugt wird.
let msg = "Dieser Text wird vorgelesen." exec('pico2wave -w /tmp/ttsifixalarm.wav -l de-DE "' + msg + '"', function (error, stdout, stderr) { log (error); log (stdout); log (stderr); });
Datei wird nicht erzeugt. Und im log steht:
Pico wird nicht gefunden. Muss ich doch etwas installieren. Habe auch mal "pico2wave" eingegeben in der JS instanz. Da kamen dann aber nur Fehlermeldungen.
-
pico TTS muss noch nachinstalliert werden. Ist etwas komplexer, je nach vorhandenem System:
-
@boeskij sagte in Asterisk bringt "Error while dialing (2). Error: {}":
wird auch im sayit-Adapter verwendet:
oben stand, dass pico bei sayit dabei ist.
Dem ist dann nicht so ?
-
@bahnuhr
es wird dort verwendet... ist aber nicht dabei...
wie oben im Zitat geschrieben:Installation command: 'sudo apt-get install libttspico-utils lame'
-
@boeskij sagte in Asterisk bringt "Error while dialing (2). Error: {}":
es wird dort verwendet... ist aber nicht dabei...
tut mir leid, aber diesen Satz verstehe ich nicht.
Wenn es verwendet wird, muss es doch auch installiert sein.
Denn wenn nicht installiert, dann kann es auch nicht verwendet werden.Ist aber auch egal, ich probier dies einmal.
Melde mich dann wieder. -
das:
sudo apt-get install libttspico-utils lamefunktioniert nicht.
Benutze debian auf proxmox in einer VM
Und da kommt:
root@VM-iobroker:/opt/iobroker# sudo apt-get install libttspico-utils lame Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut. Statusinformationen werden eingelesen.... Fertig Paket libttspico-utils ist nicht verfügbar, wird aber von einem anderen Paket referenziert. Das kann heißen, dass das Paket fehlt, dass es abgelöst wurde oder nur aus einer anderen Quelle verfügbar ist. E: Für Paket »libttspico-utils« existiert kein Installationskandidat.
-
-
@boeskij
Lol, wusste gar nicht das ich mich damit schon mal beschäftigt hatte. -
So, Installation hat geklappt.
Dann das Script von @boeskij laufen gelassen.
Und es kommt:javascript.0 (1132) script.js.Scripte.test6: Result: {"result":{"parameter":{"telnr":"017647101234","callerid":"066512345","audiofile":"/tmp/ttsifixalarm","extension":"123456789"},"options":{"action":"originate","channel":"SIP/123456789/017647112324","context":"ael-ansage","exten":"017647103713","priority":1,"timeout":60000,"variable":{"repeat":5,"file":"/tmp/ttsifixalarm","del":""},"callerid":"0665123543"},"guid":"0d47baf8-3fad-b4c3-4ec1-86f81a5d8ad6","result":{"response":"Error","actionid":"0d47baf8-3fad-b4c3-4ec1-86f81a5d8ad6","message":"Originate failed"}},"error":{"response":"Error","actionid":"0d47baf8-3fad-b4c3-4ec1-86f81a5d8ad6","message":"Originate failed"}}
Anruf erfolgte nicht.
Tel. habe ich geändert.Muss ich jetzt noch deine Auskommentierung machen ?
-
So, habe auch mal die Zeilen auskommentiert.
Aber gleiches Ergebnis.Test "Originate failed"
-> was immer das zu sagen hat.Tel. wurde nicht getätigt.
-
@bahnuhr
Der Anruf sollte normalerweise trotzdem rausgehen.
Was nicht funktionierte waren nur die DTMF-Reaktionen. -
-
Im debug kommt:
asterisk.0 2021-06-09 20:23:57.572 debug (11448) sendTo "dial" to system.adapter.javascript.0 from system.adapter.asterisk.0 asterisk.0 2021-06-09 20:23:57.571 debug (11448) Calling callback function: (res, err) => { adapter.sendTo(msg.from, msg.command, { result: res, error: err }, msg.callback); } asterisk.0 2021-06-09 20:23:57.570 error (11448) Error while dialing (1). Error: {"response":"Error","actionid":"9ef349c2-d53f-ca4e-1a24-caa343e23b19","message":"Originate failed"}, Result: {"parameter":{"telnr":"0176471123123","callerid":"06 asterisk.0 2021-06-09 20:23:56.563 info (11448) Start dialing asterisk.0 2021-06-09 20:23:56.563 debug (11448) Got GSM audio file /tmp/ttsifixalarm.gsm asterisk.0 2021-06-09 20:23:56.562 debug (11448) Parameter: {"telnr":"017sdfsdf","callerid":"066512313","audiofile":"/tmp/ttsifixalarm","extension":"123456789"} asterisk.0 2021-06-09 20:23:56.561 debug (11448) Dial Command asterisk.0 2021-06-09 20:23:56.560 debug (11448) Message: {"telnr":"017sdfsdfsdf","callerid":"0665123123","audiofile":"/tmp/ttsifixalarm.gsm"} asterisk.0 2021-06-09 20:23:56.558 debug (11448) Connected to Asterisk
Tel.Nr. wieder geändert.
-
Über putty kam dies:
root@VM-iobroker:/opt/iobroker# asterisk -rvvvvvv Asterisk 16.2.1~dfsg-1+deb10u2, Copyright (C) 1999 - 2018, Digium, Inc. and others. Created by Mark Spencer <markster@digium.com> Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details. This is free software, with components licensed under the GNU General Public License version 2 and other licenses; you are welcome to redistribute it under certain conditions. Type 'core show license' for details. ========================================================================= Connected to Asterisk 16.2.1~dfsg-1+deb10u2 currently running on VM-iobroker (pid = 402) == Manager 'manager' logged off from 192.168.243.12 == Manager 'manager' logged on from 192.168.243.12 [Jun 9 20:23:56] WARNING[11463]: chan_sip.c:6331 create_addr: Purely numeric hostname (123456789), and not a peer--rejecting! -- Executing [failed@ael-ansage:1] Answer("OutgoingSpoolFailed", "") in new stack -- Executing [failed@ael-ansage:2] Wait("OutgoingSpoolFailed", "1") in new stack -- Executing [failed@ael-ansage:3] Read("OutgoingSpoolFailed", "dtmf,/tmp/ttsifixalarm&beep,0,s,5,1") in new stack -- Executing [failed@ael-ansage:4] GotoIf("OutgoingSpoolFailed", "0?5:6") in new stack -- Goto (ael-ansage,failed,6) -- Executing [failed@ael-ansage:6] NoOp("OutgoingSpoolFailed", "Finish if_ael-ansage_1") in new stack -- Executing [failed@ael-ansage:7] Hangup("OutgoingSpoolFailed", "") in new stack == Spawn extension (ael-ansage, failed, 7) exited non-zero on 'OutgoingSpoolFailed' -- Executing [h@ael-ansage:1] GotoIf("OutgoingSpoolFailed", "0?2:4") in new stack -- Goto (ael-ansage,h,4) -- Executing [h@ael-ansage:4] NoOp("OutgoingSpoolFailed", "Finish if_ael-ansage_2") in new stack -- Executing [h@ael-ansage:5] SayDigits("OutgoingSpoolFailed", "") in new stack -- Executing [h@ael-ansage:6] NoOp("OutgoingSpoolFailed", "Finish if_ael-ansage_1") in new stack -- Executing [h@ael-ansage:7] Hangup("OutgoingSpoolFailed", "") in new stack == Spawn extension (ael-ansage, h, 7) exited non-zero on 'OutgoingSpoolFailed' VM-iobroker*CLI>
-
@bahnuhr
Du solltest keine root shell offen haben.