NEWS
Asterisk bringt "Error while dialing (2). Error: {}"
-
Ich bekomme es leider nicht hin.
Kann jemand vielleicht über mein Fehlerbild drüber schauen und mir noch einen Tipp geben.asterisk.0
2021-06-26 09:29:49.389 error Error while dialing (1). Error: {"response":"Error","actionid":"d4032cc3-b84e-5573-5779-f676c768a050","message":"Originate failed"}, Result: {"parameter":{"telnr":"**611","callerid":"**621","audiofile":"/tmp/ttsdatei","extension":"15041965"},"options":{"action":"originate","channel":"SIP/15041965/**611","context":"ael-ansage","exten":"**611","priority":1,"timeout":60000,"variable":{"repeat":5,"file":"/tmp/ttsdatei","del":""},"callerid":"**621"},"guid":"d4032cc3-b84e-5573-5779-f676c768a050","result":{"response":"Error","actionid":"d4032cc3-b84e-5573-5779-f676c768a050","message":"Originate failed"}}**621 und **611 sind die internen Telefonfonnummer der Telephoniegeräte der Fritzbox. Diese habe ich im Script in Hochkommas gesetzt. ohne Hochkommas geht das Script in einen Error, mit den Sternchen vor der Nummer.
-
@crazyfloyd
funktionieren denn andere Rufnummern oder gar keine?
werden eingehende Anrufe vom asterisk/iobroker beantwortet?
zeig doch mal das Script... -
@boeskij sagte in Asterisk bringt "Error while dialing (2). Error: {}":
@crazyfloyd
funktionieren denn andere Rufnummern oder gar keine?
werden eingehende Anrufe vom asterisk/iobroker beantwortet?
zeig doch mal das Script...Hier mein script:
on({id: 'asterisk.0.dialout.call'}, function (obj) {
let msg = getState('asterisk.0.dialout.text').val;
let tnr = getState('asterisk.0.dialout.telnr').val;
let cid = getState('asterisk.0.dialout.callerid').val;exec('pico2wave -w /tmp/ttsdatei.wav -l it-IT "' + 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: '**611' , callerid: '**621', 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'); }); */ }); }); }); }); });
});
-
@crazyfloyd
das sieht jetzt erstmal nicht so verkehrt aus...
funktionieren denn andere Rufnummern oder gar keine?
werden eingehende Anrufe vom asterisk/iobroker beantwortet?
verbindet sich die asterisk-instanz mit dem asterisk?
verbindet sich asterisk mit der fritzbox? -
@varg habe gerade eine chat anfrage erhalten und poste nochmals hier die vorgehensweise die (dank der jungs hier) bei mir funktioniert hat.
wget -q https://ftp-master.debian.org/keys/release-10.asc -O- | sudo apt-key add -
echo "deb http://deb.debian.org/debian buster non-free" | sudo tee -a /etc/apt/sources.list
sudo apt update
sudo apt install libttspico-utilssudo apt-get install libttspico-utils lame
in asterisk transcoder auf sox gestellt.
asterisk config nach githubon({id: 'asterisk.0.dialout.call'}, function (obj) { let msg = getState('asterisk.0.dialout.text').val; let tnr = getState('asterisk.0.dialout.telnr').val; let cid = getState('asterisk.0.dialout.callerid').val; 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: tnr , callerid: cid, 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'); }); */ }); }); }); }); }); });
bei instanzstart kommt zwar nach wie vor error while converting file aber das wird ja dann vom script und tts übernommen.
mit folgendem blockly trigger ich dann die datenpunkte
<xml xmlns="https://developers.google.com/blockly/xml"> <block type="on" id="kKge@_%+BDw6n!K(/^X(" x="63" y="1163"> <field name="OID">0_userdata.0.notfall.asterisk_04</field> <field name="CONDITION">true</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="control" id="Zma!K=;5A|U@oRsH4[0s"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">asterisk.0.dialout.text</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="{d.,gn^x-!O3Mf%OFwu;"> <field name="TEXT">Rauchmelder zu Hause ausgelöst</field> </block> </value> <next> <block type="control" id="j}/Ii|hS}Tm=mI8[ah[Y"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">asterisk.0.dialout.telnr</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="jGY8`[Q9`0u#J+]CWWmc"> <field name="TEXT">00000000000</field> </block> </value> <next> <block type="control" id="7vVeDp2(HKA^yDV..=`M"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">asterisk.0.dialout.callerid</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id=".PKJzB615hu)o|v.ns7)"> <field name="TEXT">0</field> </block> </value> <next> <block type="control" id="#gb%Wc4:m]{xk1W|KxyX"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation> <field name="OID">asterisk.0.dialout.call</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">2000</field> <field name="UNIT">ms</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="E8SqluH0+3,i.U;2GT+2"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="control" id="jpO:t6;=~p9o[/]KMr?A"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation> <field name="OID">0_userdata.0.notfall.asterisk_04</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">60</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="`s`R94Iz^9G|2Sh/.jsq"> <field name="BOOL">FALSE</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </xml>
-
@boeskij sagte in Asterisk bringt "Error while dialing (2). Error: {}":
@crazyfloyd
das sieht jetzt erstmal nicht so verkehrt aus...
funktionieren denn andere Rufnummern oder gar keine?
werden eingehende Anrufe vom asterisk/iobroker beantwortet?
verbindet sich die asterisk-instanz mit dem asterisk?
verbindet sich asterisk mit der fritzbox?ja und nein. ich habe festgestellt das ich von der asterix istanz folgende fehlermeldung bekomme:
sudo asterisk -rvvvvvvv
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 rasp-iobroker (pid = 29625)
rasp-iobroker*CLI> sip show registry
Host dnsmgr Username Refresh State Reg.Time
192.168.2.1:5060 N 123456789 120 Request Sent
1 SIP registrations.
[Jun 27 17:28:13] ERROR[29927]: chan_sip.c:4321 __sip_reliable_xmit: Serious Network Trouble; __sip_xmit returns error for pkt data
[Jun 27 17:28:13] NOTICE[29927]: chan_sip.c:15981 sip_reg_timeout: -- Registration for '123456789@192.168.2.1' timed out, trying again (Attempt #2)ich bin mir aber sicher das das telefoniegerät an der fritzbox und der user in der sip.conf richtig sind. werde langsam wahnsinnig.
kann das evtl an der neuen fritz soft liegen version 7.27 auf einer 7530.? -
@crazyfloyd sagte in Asterisk bringt "Error while dialing (2). Error: {}":
@boeskij sagte in Asterisk bringt "Error while dialing (2). Error: {}":
@crazyfloyd
das sieht jetzt erstmal nicht so verkehrt aus...
funktionieren denn andere Rufnummern oder gar keine?
werden eingehende Anrufe vom asterisk/iobroker beantwortet?
verbindet sich die asterisk-instanz mit dem asterisk?
verbindet sich asterisk mit der fritzbox?ja und nein. ich habe festgestellt das ich von der asterix istanz folgende fehlermeldung bekomme:
sudo asterisk -rvvvvvvv
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 rasp-iobroker (pid = 29625)
rasp-iobroker*CLI> sip show registry
Host dnsmgr Username Refresh State Reg.Time
192.168.2.1:5060 N 123456789 120 Request Sent
1 SIP registrations.
[Jun 27 17:28:13] ERROR[29927]: chan_sip.c:4321 __sip_reliable_xmit: Serious Network Trouble; __sip_xmit returns error for pkt data
[Jun 27 17:28:13] NOTICE[29927]: chan_sip.c:15981 sip_reg_timeout: -- Registration for '123456789@192.168.2.1' timed out, trying again (Attempt #2)ich bin mir aber sicher das das telefoniegerät an der fritzbox und der user in der sip.conf richtig sind. werde langsam wahnsinnig.
kann das evtl an der neuen fritz soft liegen version 7.27 auf einer 7530.?Ich hab es jetzt hin bekommen. Kann aber nicht genau sagen woran es letzt-endlich gelegen hat. Danke für alles..... Von Herzen..
-
doppelt, sorry.
-
@boeskij said in 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...
Wo finde ich denn die Datei asterisk.js. zum auskommentieren? Im iobroker-data finde ich sie nicht.
Danke! -
@zaggul sagte in Asterisk bringt "Error while dialing (2). Error: {}":
Wo finde ich denn die Datei asterisk.js. zum auskommentieren? Im iobroker-data finde ich sie nicht.
Warum lässt du es nicht so wie es ist.
Es kommt Fehlermeldung, aber mehr auch nicht.Beim nächsten update würde dies sowieso wieder überschrieben werden.
js findest du in node-modules.
-
@zaggul
bei mir liegt die Datei unter/opt/iobroker/node_modules/iobroker.asterisk/asterisk.js
@bahnuhr said in Asterisk bringt "Error while dialing (2). Error: {}":
Warum lässt du es nicht so wie es ist.
Es kommt Fehlermeldung, aber mehr auch nicht.Beim nächsten update würde dies sowieso wieder überschrieben werden.
Ja, die Datei würde beim nächsten Update überschrieben (aber im Moment gibt es ja keine Updates...)
Es kommt die Fehlermeldung und es sind keine DTMF-Befehle mehr möglich!
Wenn nur ein Text vorgelesen werden soll ist das OK, wenn aber Befehle durch eine Zahlenkombination ausgeführt werden sollen, funktioniert das nicht... -
This will not work:
$ wget "https://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&q=hallo%20du&tl=de&total=1&idx=0&textlen=10" --2021-07-16 22:49:43-- https://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&q=hallo%20du&tl=de&total=1&idx=0&textlen=10 Auflösen des Hostnamens translate.google.com (translate.google.com)… 142.250.185.238, 2a00:1450:4005:80b::200e Verbindungsaufbau zu translate.google.com (translate.google.com)|142.250.185.238|:443 … verbunden. HTTP-Anforderung gesendet, auf Antwort wird gewartet … 403 Forbidden 2021-07-16 22:49:44 FEHLER 403: Forbidden.
This will work:
$ wget --user-agent='Mozilla/5.0 (Windows NT 6.3; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0' "https://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&q=hallo%20du&tl=de&total=1&idx=0&textlen=10" --2021-07-16 22:51:58-- https://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&q=hallo%20du&tl=de&total=1&idx=0&textlen=10 Auflösen des Hostnamens translate.google.com (translate.google.com)… 142.250.184.206, 2a00:1450:4001:802::200e Verbindungsaufbau zu translate.google.com (translate.google.com)|142.250.184.206|:443 … verbunden. HTTP-Anforderung gesendet, auf Antwort wird gewartet … 200 OK Länge: nicht spezifiziert [audio/mpeg] Wird in »translate_tts?ie=UTF-8&client=tw-ob&q=hallo du&tl=de&total=1&idx=0&textlen=10« gespeichert. translate_tts?ie=UTF-8&client=tw-ob&q=hallo du&tl=de&total= [ <=> ] 5,16K --.-KB/s in 0s 2021-07-16 22:51:58 (10,8 MB/s) - »translate_tts?ie=UTF-8&client=tw-ob&q=hallo du&tl=de&total=1&idx=0&textlen=10« gespeichert [5280]
So we can change in lib/transcode.js line 100 - 105
// https://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&q=%D0%BE%D1%82%D0%B2%D0%B5%D1%82%D0%B8%D1%82%D1%8C%207&tl=ru&total=1&idx=0&textlen=10 const options = { host: 'translate.google.com', //port: 443, path: '/translate_tts?ie=UTF-8&client=tw-ob&q=' + encodeURI(text) + '&tl=' + language + '&total=1&idx=0&textlen=' + text.length // };
to
// https://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&q=%D0%BE%D1%82%D0%B2%D0%B5%D1%82%D0%B8%D1%82%D1%8C%207&tl=ru&total=1&idx=0&textlen=10 const options = { host: 'translate.google.com', //port: 443, path: '/translate_tts?ie=UTF-8&client=tw-ob&q=' + encodeURI(text) + '&tl=' + language + '&total=1&idx=0&textlen=' + text.length, // headers: {'user-agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0'} };
The API will only talk to firefox
-
Kann mir noch einmal jemand helfen.
Ich möchte gerne die Anrufzeit begrenzen die versucht werden soll wie lange ein Anrufversuch stattfinden soll. Möchte das gerne für einen Anrufversuch auf z.B. 15 Sekunden begrenzen. Falls der Anruf nicht angenommen wird soll der Anrufversuch beendet werden.
Danke schon mal...