NEWS
IoBroker und VOIP / SIP Calls mit Asterisk + Fritzbox
-
Ging doch unerwartet etwas schneller.
Nachfolgend ein frisches Blockly-Demo. Einfach in einem leeren neuen Script importieren, dann die beiden Nummern (ziel- und quellnr "number" und "callerid") anpassen, das ist alles.
<xml xmlns="http://www.w3.org/1999/xhtml"> <block type="comment" id="iQk[*%#vV)/#GSZr%wCu" x="-662" y="-437"> <field name="COMMENT">ASTERISK-Blockly-Demo</field> <next> <block type="comment" id="CdBGv/twUt|*^x0(Z`0}"> <field name="COMMENT">Rel 1 2019-02-14 / gw (TheDoctor / bb61)</field> <next> <block type="comment" id="Anv#=F5PT*U8WeFd?p%l"> <field name="COMMENT"></field> <next> <block type="comment" id=")jiDC@fb~x!5.]6etF/u"> <field name="COMMENT">The initialisation (or: input definition)</field> <next> <block type="variables_set" id="yHrxb?yJJ6;e-4TY%NQA" disabled="true"> <field name="VAR">text</field> <value name="VALUE"> <block type="text" id="t?.~W)KsIld^pq*qUA]h"> <field name="TEXT">Hello World. This is your programmers night ending waking call.</field> </block> </value> <next> <block type="variables_set" id="{!kdzMn+F8qItV8Zn;/P"> <field name="VAR">text</field> <value name="VALUE"> <block type="text" id="Ai1)QSgP-`u-5[7,-oDt"> <field name="TEXT">Tach. Post.</field> </block> </value> <next> <block type="variables_set" id="-|@a_X4vv*[,su?Fsc2%"> <field name="VAR">number</field> <value name="VALUE"> <block type="text" id=".:i_Wbv,R.s@o|P-xlBS"> <field name="TEXT">0123 / 456-789</field> </block> </value> <next> <block type="variables_set" id="O8wCGuQaE73NK5x)dWQZ"> <field name="VAR">callerid</field> <value name="VALUE"> <block type="text" id="lr[9d1YKX8t_;WW+qBC%"> <field name="TEXT">0123 / 456-780</field> </block> </value> <next> <block type="variables_set" id="d%TndOTur7*4`l4Np;m^"> <field name="VAR">repeat</field> <value name="VALUE"> <block type="math_number" id="4SaGzyJ)oSt3[,95:6Fb"> <field name="NUM">5</field> </block> </value> <next> <block type="variables_set" id="=JBIH,:sBB+PRV:g9]1|"> <field name="VAR">priority</field> <value name="VALUE"> <block type="math_number" id="e4fB,U{R.~zmey`wib,]"> <field name="NUM">1</field> </block> </value> <next> <block type="variables_set" id=")x~*qF!eX`(EHx,!ZSV?"> <field name="VAR">timeout</field> <value name="VALUE"> <block type="math_number" id="W`OtfSa2W(v^WN+_h)V="> <field name="NUM">60000</field> </block> </value> <next> <block type="variables_set" id="#+c~MSYJJNnb@vjq?o_}" disabled="true"> <field name="VAR">language</field> <value name="VALUE"> <block type="text" id="KYUiVH=wSRt#^OMb.dQ*"> <field name="TEXT">en</field> </block> </value> <next> <block type="variables_set" id="fFtZc8kQKWn)40Pr`sr`"> <field name="VAR">language</field> <value name="VALUE"> <block type="text" id="mS2QWE(TTaSK4%Z|bMeM"> <field name="TEXT">de</field> </block> </value> <next> <block type="variables_set" id="kTMsGQ[J4v?O*rx,*ggH"> <field name="VAR">async</field> <value name="VALUE"> <block type="logic_boolean" id="].:2h04Jf,AXFxl7:t7k"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="variables_set" id="aCLu97fteG+tqgF`tr6["> <field name="VAR">audiofile</field> <value name="VALUE"> <block type="text" id="J6C/jF+/1[@7E#y2!M:z"> <field name="TEXT"></field> </block> </value> <next> <block type="comment" id="]G2HqcW*R}?FisL4FBZ+"> <field name="COMMENT">...some code...</field> <next> <block type="comment" id="|Q}NQ`kDAQ?F4:7:}n71"> <field name="COMMENT">The output:</field> <next> <block type="sendto_custom" id="~{xFT|#IM5~3(KVlOI1C"> <mutation items="text,telnr,callerid,repeat,priority,timeout,language,async,audiofile" with_statement="true"></mutation> <field name="INSTANCE">asterisk.0</field> <field name="COMMAND">dial</field> <field name="WITH_STATEMENT">TRUE</field> <field name="LOG"></field> <value name="ARG0"> <shadow type="text" id="?P|yZqU;J/P51dZ=]0~0"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="Y?.3E)^k:#9E~=vpYkk:"> <field name="VAR">text</field> </block> </value> <value name="ARG1"> <shadow type="text" id="Q+X~VRg9.JK~+ae*S:`("> <field name="TEXT"></field> </shadow> <block type="variables_get" id="`9`/4G+-x?`.VkKHWo51"> <field name="VAR">number</field> </block> </value> <value name="ARG2"> <shadow type="text" id="~7OP`9Il(?JWX3dR7134"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="_-c)3-Zh^R^I+@2jIP]R"> <field name="VAR">callerid</field> </block> </value> <value name="ARG3"> <shadow type="text" id="wt8VyUGOy6.WaGTj!Ae)"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="57fYTEI1+a,1=EdO@]TI"> <field name="VAR">repeat</field> </block> </value> <value name="ARG4"> <shadow type="text" id="jKKv8ctfZeuK`B4[D-l%"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="k.7HR)oIjRWGmE@6UY`H"> <field name="VAR">priority</field> </block> </value> <value name="ARG5"> <shadow type="text" id="K^aSRDKX|UL=H[ik0495"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="9Jv@HJzOH,Kg8gPGGOgc"> <field name="VAR">timeout</field> </block> </value> <value name="ARG6"> <shadow type="text" id="W+#VKhnJ%T1_b|lD7w-h"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="[Cohr1.,bHSF=IMs_n0:"> <field name="VAR">language</field> </block> </value> <value name="ARG7"> <shadow type="text" id="^=xQ{Azr#kgvrOAT?i,8"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="yLUavn=dTttr%.yo|~]|"> <field name="VAR">async</field> </block> </value> <value name="ARG8"> <shadow type="text" id="a(eJ50,[r`#auRFF!JQa"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="DhIsb(~E,%1tpwz~3GnC"> <field name="VAR">audiofile</field> </block> </value> <statement name="STATEMENT"> <block type="comment" id="CzlEMqMFo:NC3CxdTJ0M"> <field name="COMMENT">The feedback:</field> <next> <block type="comment" id="c!LZ5@a4PeUj{;ZU*4B]"> <field name="COMMENT"> V1: (embedded function)</field> <next> <block type="debug" id="4S22Ag(aYa[1_1,TgZv8"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="XKX-#GFD4HX5c5tKgkla"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="olKx{f~7W%}anV@!7ZGo"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="6#V|Tu0X^SROz#eVfIO^"> <field name="TEXT">Result V1:</field> </block> </value> <value name="ADD1"> <block type="convert_object2json" id="@71%(iKA*TEvYuo/K@I2"> <field name="PRETTIFY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="d%m~mCV!STYZtV_c2GIR"> <field name="VAR">result</field> </block> </value> </block> </value> </block> </value> <next> <block type="comment" id="^QF%e}~kI#NG8}cWV?yQ"> <field name="COMMENT"> V2:(local function /w ability for modification)</field> <next> <block type="debug" id="l~|`?4TRuX7#a[s{BW1~"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="XKX-#GFD4HX5c5tKgkla"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="Og]}wvu.V(rK`T!?SkHB"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="u#b@4Hh}Rg2D]hH=P0zo"> <field name="TEXT">Result V2:</field> </block> </value> <value name="ADD1"> <block type="procedures_callcustomreturn" id="S.T~95tpH6K=PgT({!pS"> <mutation name="fl_stringifyWoJoin"> <arg name="inp"></arg> </mutation> <value name="ARG0"> <block type="variables_get" id="qIlwo_X(Z(iWU,RJ_`tx"> <field name="VAR">result</field> </block> </value> </block> </value> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> <block type="procedures_defcustomreturn" id="FK-`e`q2wN;WHVhQR+b1" x="-13" y="-337"> <mutation statements="false"> <arg name="inp"></arg> </mutation> <field name="NAME">fl_stringifyWoJoin</field> <field name="SCRIPT">Ly8gSlNPTi5zdHJpbmdpZnkgd2l0aG91dCAiam9pbigpIiIKLy8gUmVsLjEgICAgMjAxOS0wMi0xNCAvIGd3IChUaGVEb2N0b3IgLyBiYjYxKQoKcmV0dXJuIEpTT04uc3RyaW5naWZ5KGlucCk7</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> <block type="comment" id="OplW|CVD9,UV{JYEF,M7" x="-288" y="-287"> <field name="COMMENT"><< DEMO (modify this number!)</field> <next> <block type="comment" id="t|70wz8P.*:o7IULt3.D"> <field name="COMMENT"><< DEMO (modify this number!)</field> </block> </next> </block> </xml>
Es gibt zwei alternative Feedback-Objekte: Eins mit der embedded function, ein zweites mit einer lokalen Funktion, um ggf. die Feedback-Werte dort individuell weiter zu verarbeiten.
Gruß von der Küste /gerd
-
VIELEN DANK für das Script.
Könntest du das ganze Script mal etwas erklären. Ist auf den 1. Blick doch etwas kompliziert. -
Hallo zusammen,
ich habe gerade versucht den Adapter bei mir einzurichten.
ich habe bei mir im Netz eine Fritzbox 7290 hängen, die eigentlich nur als Anruferliste und Accesspoint rennt.
Auf dieser habe ich wie in der Doku beschrieben einen neuen Teilnehmer angelegt und dann die beschrieben Dateien inhaltlich geleert und durch den Code aus der Doku ersetzt und entsprechend angepasst.
Mit dem iPhone kann ich diesen Teilnehmer für die abgehende und ankommende Wahl nutzen.Aber irgendwie reagiert Asterisk darauf gar nicht.
die Abfrage astersik -rvvvvvv ergibt folgendes..
root@mh-iobroker-00:~# asterisk -rvvvvvv Asterisk 11.13.1~dfsg-2+deb8u6, Copyright (C) 1999 - 2013 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 11.13.1~dfsg-2+deb8u6 currently running on mh-iobroker-00 (pid = 6044)
Der Adapter als solches scheint aus meiner Sicht auch zu laufen.
Das Log gibt folgendes beim Start aus..asterisk.0 2019-02-21 13:47:59.310 debug system.adapter.admin.0: logging true asterisk.0 2019-02-21 13:47:59.310 debug redis pmessage io.*.logging io.system.adapter.admin.0.logging {"val":true,"ack":true,"ts":1550753279287,"q":0,"from":"system.adapter.admin.0","lc":1550753279287} asterisk.0 2019-02-21 13:47:33.434 debug stateChange asterisk.0.dialout.call {"val":true,"ack":false,"ts":1550753253431,"q":0,"from":"system.adapter.admin.0","user":"system.user.admin","lc":1550749651332} asterisk.0 2019-02-21 13:47:33.433 debug redis pmessage io.asterisk.0.* io.asterisk.0.dialout.call {"val":true,"ack":false,"ts":1550753253431,"q":0,"from":"system.adapter.admin.0","user":"system.user.admin","lc":1550749651332} asterisk.0 2019-02-21 13:47:30.500 debug system.adapter.admin.0: logging false asterisk.0 2019-02-21 13:47:30.500 debug redis pmessage io.*.logging io.system.adapter.admin.0.logging {"val":false,"ack":true,"ts":1550753250488,"q":0,"from":"system.adapter.admin.0","lc":1550753250488} asterisk.0 2019-02-21 13:47:28.130 debug stateChange asterisk.0.dialout.call {"val":true,"ack":false,"ts":1550753248128,"q":0,"from":"system.adapter.admin.0","user":"system.user.admin","lc":1550749651332} asterisk.0 2019-02-21 13:47:28.129 debug redis pmessage io.asterisk.0.* io.asterisk.0.dialout.call {"val":true,"ack":false,"ts":1550753248128,"q":0,"from":"system.adapter.admin.0","user":"system.user.admin","lc":1550749651332} asterisk.0 2019-02-21 13:47:23.283 debug stateChange asterisk.0.dialout.call {"val":true,"ack":false,"ts":1550753243280,"q":0,"from":"system.adapter.admin.0","user":"system.user.admin","lc":1550749651332} asterisk.0 2019-02-21 13:47:23.282 debug redis pmessage io.asterisk.0.* io.asterisk.0.dialout.call {"val":true,"ack":false,"ts":1550753243280,"q":0,"from":"system.adapter.admin.0","user":"system.user.admin","lc":1550749651332} asterisk.0 2019-02-21 13:47:16.881 debug Listing vor Dial In Event asterisk.0 2019-02-21 13:47:16.880 debug Converting completed. Result: {"fileNameMP3":"/tmp/asterisk_dtmf.mp3","fileNameGSM":"/tmp/asterisk_dtmf.gsm","code":0,"signal":null} asterisk.0 2019-02-21 13:47:16.319 debug redis pmessage io.asterisk.0.* io.asterisk.0.dialin.callerid {"val":"","ack":true,"ts":1550753236303,"q":0,"from":"system.adapter.asterisk.0","user":"system.user.admin","lc":1550746841829} asterisk.0 2019-02-21 13:47:16.316 debug redis pmessage io.asterisk.0.* io.asterisk.0.dialin.dtmf {"val":"","ack":true,"ts":1550753236301,"q":0,"from":"system.adapter.asterisk.0","user":"system.user.admin","lc":1550746841825} asterisk.0 2019-02-21 13:47:16.308 info Connected to Asterisk Manager asterisk.0 2019-02-21 13:47:16.297 debug Started function keepConnected() asterisk.0 2019-02-21 13:47:16.291 info Starting Adapter asterisk.0 in version 1.0.3with transcoder sox and language DE asterisk.0 2019-02-21 13:47:16.225 info starting. Version 1.0.3 in /opt/iobroker/node_modules/iobroker.asterisk, node: v8.15.0 asterisk.0 2019-02-21 13:47:16.095 info States connected to redis: 0.0.0.0:6379 asterisk.0 2019-02-21 13:47:16.091 debug statesDB connected asterisk.0 2019-02-21 13:47:16.068 debug objectDB connected
Fehlt mir noch irgendwas oder woran könnte es liegen, dass es nicht funktioniert?
Gruss
Silvio -
So ganz habe ich das noch nicht verstanden. Ist die Fritzbox mit einem VoiP Provider wie Telekom, Vodafone, 1und1, ... verbunden. Das ist Voraussetzung. D.h. die Fritzbox muss in der Lage sein Anrufe entgegen zunehmen und zu initiieren. Das ist erst einmal unabhängig von Asterisk u. ioBroker.
In einem zweiten Schritt installierst und konfigurierst Du Astersik und den Asterisk ioBroker Adapter. Das ist aber geschehen, wenn ich es richtig verstehe.
Starte einmal Asterisk (z.B. über sudo /etc/init.d/asterisk start) und rufe dann asterisk -rvvvvvv auf. Warte ein wenig bis Asterisk die Konfigurationen geladen hat. Dann startetst Du in ioBroker den Asterisk Adapter neu. Nun solltest in der Ausgabe von asterisk -rvvvvvv sehen das sich ioBroker verbunden hat. Da steht etwas mit manger und connected. Wenn das geschehen ist. stimmt die manager.conf Einstellung und die ioBroker Einstellung dazu.
Nun schreibst Du bei den dialout Objekten bei telnr, text etwas rein und drückst auf den Button dial. Nun solltest Du etwas in der Anzeige unter asterisk -rvvvvvv sehen.
Den Output und den Log Ouput in ioBroker würde mich interessieren.VG
-
Hallo,
da mit asterix ein Anruf durchgeführt werden kann, wäre es denn dann auch möglich die Wählhilfe zu nutzen?
Beispielsweise:
"Alexa, wähle die Rufnummer meiner Frau"
der Ruf wird aufgebaut und an des Fritzphone übergeben?
Richtig gut wäre, wenn das Gespräch komplett über das Echo geführt werden könnte, aber eins nach dem anderen -
@Muchul sagte in IoBroker und VOIP / SIP Calls mit Asterisk + Fritzbox:
Hallo,
da mit asterix ein Anruf durchgeführt werden kann, wäre es denn dann auch möglich die Wählhilfe zu nutzen?
Beispielsweise:
"Alexa, wähle die Rufnummer meiner Frau"
der Ruf wird aufgebaut und an des Fritzphone übergeben?Nein das geht leider nicht. Du kannst über Alexa in Verbindung mit Asterisk Deine Frau Anrufen lassen und einen Text vorspielen.
Richtig gut wäre, wenn das Gespräch komplett über das Echo geführt werden könnte, aber eins nach dem anderen
Auch das geht leider nicht.
-
ja, die Fritzbox hat eine Verbindung über T-Com. Wie beschreiben, kann ich mit FritzPhone auf dem Iphone diese auch ganz normal nutzen.
Inzwischen bin ich auch einen kleinen Schritt weiter.
Ich hatte alles nocheinmal deinstalliert (Adapter und Asterisk). Nach der Neuinstallation von Asterik war jedoch der Ordner /etc/asterisk bis aus ein Verzeichnis /manager.d komplett leer.
Später fiel mir auf, dass bei der Installation von asterisk-config alle config-Files als z.B sip.conf.dpkg.new kurz da sind und während der Installation dann verschwinden.
Ich habe sie dann kurzerhand in der Zeit inder sie da waren gesichert, dann umbenannt und nach der Installation zurück kopiert.nachdem alles wieder konfiguriert war, hat ein core reload und ein core restart geholfen.
Seit dem ist iobroker mit dem Manager verbunden.Eingehende Anrufe bekommen jetzt eine engl. Ansage bzgl Pineingabe oder so ähnlich.
Um einen abgehenden Anruf zu initialisieren muss ich die callerid mit angeben, dann wird der Anruf ausgelöst.Ich versteh zwar noch nicht so wirklich, was bei der Installation hier immer wieder schief läuft, aber zumindest ist die Funktion jetzt schon mal gegeben.
Lieben dank
Gruss
Silvio -
@Stuebi mennooo
Schade, das wäre ja echt gut gewesen. -
@Muchul Dafür gibt es doch den Echo Connect. Mit dem geht das.
-
@martin
Danke für die Information.
Das kannte ich noch gar nicht.
Aber auf die schnelle sieht es nicht so toll aus.
Werde mich aber Mal etwas mehr damit beschäftigen. -
Du kannst mit dem Echo Connect über Alexa Anrufe tätigen und annehmen.
Übergabe auf FritzFon etc. geht allerdings nicht - zumindest habe ich es noch nicht geschafft. -
Kann mir jetzt noch jemand mit dem Script helfen?
Das kriege ich noch nicht zum laufen.
Ich habe es an mein 3D-Drucker Script anhängt das mir eine Telegram-Nachricht sendet wenn der 3D-Drucker fertig ist. Aber Anruf kommt leider keiner.
-
@martin
Fehlt da nicht ein Trigger? -
Ich habe keine Ahnung was da fehlt oder nicht stimmt.
-
@martin
Wie soll das Blockly erkennen das der Drucker fertig ist?
Irgend ein Ereignis muss ja dazu führen, also angetriggert werden. -
ich versuche derzeit den Adapter auf einem Raspberry zum Laufen zu bekommen. Die Verbindung zum Manager klappt laut log. Leider bekomme ich danach Fehlermeldungen:
javascript.0 error script.js.Klingel-Telefon: Result: {"result":null,"error":{}}
asterisk.0 error Error while dialing (2). Error: {}
asterisk.0 error Error while Converting File: {}Kann es daran liegen, weil ich die CLI von Asterisk als sudo aufrufen muss?
-
@Michael85117 , nein an sudo liegt es nicht. Es muss ein anderes Problem sein.
Rufe sudo asrerisk -rvvvvvvv auf und starte einen call über ioBroker. Was steht in asterisk -rvvvvvv ? -
@martin , der Trigger fehlt. Du musst einmal dual auf true setzen
-
@Michael85117 , hast du ffmpeg oder sox installiert?
-
ich habe ffmpeg installiert. Die Audiofiles werden im tmp auch angelegt.
beim öffnen der CLI bekomme ich die MeldungAsterisk 13.14.1~dfsg-2+deb9u4, Copyright (C) 1999 - 2014, 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 13.14.1~dfsg-2+deb9u4 currently running on iobroker (pid = 11732) == Manager 'manager' logged on from
Im Message-Log von Asterisk sich ich nur eine Errormeldung:
chan_oss.c: Unable to register channel type 'OSS'