Caller Service - günstiger gehts nicht :-)

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Gast

    Caller Service - günstiger gehts nicht :-)

    Grüß euch,

    nachdem ich von Loxone heute informiert wurde, dass mein Caller Service in Kürze abläuft habe ich mich auf die Suche nach einer günstigeren Lösung gemacht, denn 60€ für ein paar Anrufe im Jahr finde ich deutlich zu viel.
    Nach einiger Zeit recherchieren ist mir dann Twilio ins Auge gestochen. Mit nur wenig Implementierungsaufwand kann man sich damit den kompletten Caller Service von Loxone sparen.

    Kosten / Features:
    - keine Grundgebühr
    - Gebühr pro Minute (getestet mit österreichischem Mobilnetz) = 0.045 $ = 0.042 €
    - Text zu Sprache
    - man kann die eigene Rufnummer als Caller-ID wählen (nett wenn man auf seinem eigenen Handy mit seiner eigenen Nummer angerufen wird ;-)
    - Musik abspielen
    - meiner Ansicht nach ist die Qualität der Stimme besser als bei Loxone
    - usw

    Verrechnet wird nur, wenn die angerufene Person den Anruf auch annimmt. Das heißt, wenn man sich täglich morgens aufwecken lässt ohne das Gespräch anzunehmen ist es völlig gratis :-)
    Ansonsten: wenn man den Minutenpreis umrechnet und man weniger als 1428 Minuten im Jahr mit dem Loxone Caller Service telefoniert ist die Lösung von Twilio günstiger.

    Guthaben kauft man sich bequem per Paypal oder Kreditkarte. Man kann (muss aber nicht) auch einstellen, dass automatisch aufgeladen wird wenn das Guthaben unter einem gewissen Betrag ist.

    Was wird benötigt:
    Ein Webserver (z.B. Raspberry PI) zum Ablegen des PHP Scripts

    Wie wirds gemacht:
    1.) Account bei www.twilio.com anlegen.
    2.) Guthaben aufladen
    3.) Im Menü auf der rechten Seite auf die "#" (Phone Numbers) klicken. Anschließend unter Verified Caller ID's eure Rufnummer freischalten.
    4.) Im Menü auf der rechten Seite auf die 3 Punkte (All Products and Services) klicken. Anschließend auf "Development Center" klicken
    5.) TwiML Bins auswählen und auf das rote "+" klicken
    6.) Irgendeinen Friendly Name vergeben und folgendes eintragen:

    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <Response>
        <Pause length="1"/>
        <Say voice="alice" language="de-DE">{{Text}}</Say>
        <Pause length="1"/>
    </Response>
    7.) Die Adresse die im Feld URL angezeigt wird kopieren bzw notieren (z.B. https://handler.twilio.com/twiml/xxxxxxxxxx) und auf speichern drücken.
    8.) Script im Anhang runterladen und den kompletten Ordner "Callerservice" auf einen Webserver (z.B. Raspberry Pi) laden.
    9.) Die Datei makecall.php mit einem Editor öffnen und die markierten Einträge anpassen
    Die Werte für "sid" und "token" stehen bei Twilio auf eurem Dashboard
    Bei YourNumber muss die Telefonnummer stehen die ihr unter Punkt 3 freigeschaltet habt (unbedingt im internationalen Format "+436761234567")
    Bei TwiMLBinUrl müsst ihr die Adresse von Punkt 7 reinkopieren und hinten noch den Zusatz ?Text= dranhängen
    Bei Timeout gebt ihr an nach wievielen Sekunden aufgelegt werden soll wenn niemand abhebt. Hier würde ich eine Zeit knapp bevor sich die Mailbox einschaltet einstellen damit keine Kosten anfallen wenn niemand abhebt.
    10.) In Loxone einen virtuellen Ausgang erstellen und bei Adresse euren Webserver angeben (z.B. http://192.168.1.50)
    11.) Für den virtuellen Ausgang noch einen virtuellen Ausgangs Befehl anlegen und unter "Befehl bei EIN" folgendes eintragen:
    Code:
    /callerservice/makecall.php?number=[B]+436641234567[/B]&text=[B]Das ist ein Beispiel.[/B]
    Dabei müsst ihr natürlich noch die Nummer ändern die ihr anrufen möchtet und den Text der gesprochen werden soll.
    Auf diese Weise könnt ihr so viele Ausgänge mit verschiedenen Texten und Nummern anlegen wie ihr wollt.

    Viel Spaß
    Angehängte Dateien
    Zuletzt geändert von Gast; 20.11.2016, 21:40.
  • Prof.Mobilux
    Supermoderator
    • 25.08.2015
    • 4682

    #2
    Oder hier für den LoxBerry: https://www.loxforum.com/forum/germa...5980#post65980
    🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine


    LoxBerry - Beyond the Limits

    Kommentar


    • Prof.Mobilux
      Prof.Mobilux kommentierte
      Kommentar bearbeiten
      Das Problem war/ist bekannt. Bin mir nur nicht sicher, ob Wörsty das behoben hatte. Trat wohl nur bei einigen auf..

    • hismastersvoice
      hismastersvoice kommentierte
      Kommentar bearbeiten
      Hab es nochmal versucht, geht nicht.

    • Wörsty
      Wörsty kommentierte
      Kommentar bearbeiten
      Kann man nicht beheben. Ist ein Problem im "Framework" welches ich benutze. Da komme ich nicht ran. Das "Tool" erkennt ein PROGRESS schon als abheben und legt los. Müsste aber nur auf ein CONNECT reagieren...
  • mapchen
    Smart Home'r
    • 07.09.2015
    • 87

    #3
    Hallo,

    irgendwie bekomme ich das mit PHP nicht hin. Wenn ich den Curl Code am Raspberry ausführe geht es. Bei PHP bekomm ich einen http 500. Mir scheint, dass der Fehler beim Laden der Libraries liegt. Also sobald ich die Zeile mit $client= drinnen habe.

    require_once '/twilio-php-master/Twilio/autoload.php';
    use Twilio\Rest\Client;

    $client = new Client($sid, $token);

    PHP-Code:
    <?php
    
    // Diese Werte müssen angepasst werden -----------------------------------------------------
    $sid = "xxxxxxxxxxx";
    $token = "xxxxxxxxxxxxx";
    $YourNumber = "+43664..........";
    $TwiMLBinUrl = "https://handler.twilio.com/twiml/xxxxxxxxxxx?Text=";
    $timeout = "19";
    //------------------------------------------------------------------------------------------
    
    
    require_once '/twilio-php-master/Twilio/autoload.php';
    use Twilio\Rest\Client;
    
    $client = new Client($sid, $token);
    
    //$text = urlencode($_GET["text"]);
    //$NumberToCall = $_GET["number"];
    
    //$urltext = $TwiMLBinUrl . $text;
    
    /*$call = $client->calls->create(
        $NumberToCall, $YourNumber,
        array("url" => $urltext,
              "timeout" => $timeout)
    );
              */
    
    
    //echo $call->sid;        
    
    echo "The time is " . date("h:i:sa");
    ?>
    Jemand eine Idee?

    lg
    Matthias

    Kommentar


    • Wörsty
      Wörsty kommentierte
      Kommentar bearbeiten
      Was steht denn im Apache error log?

    • mapchen
      mapchen kommentierte
      Kommentar bearbeiten
      danke für den Tipp. Das Problem war, dass CURL PHP nicht geladen war. Jetzt gehts.
  • hismastersvoice
    Supermoderator
    • 25.08.2015
    • 7238

    #4
    Code:
    [U][B]Kosten / Features:[/B][/U]
    - Gebühr pro Minute (getestet mit österreichischem Mobilnetz) = 0.045 $ = [B]0.042 € [/B]
    [COLOR=#FF0000]  (in Deuschland Mobilfunk+Festnetz 5.75 €-Cent somit 59,40/0,0575€ = 1033Min Loxone CallService)[/COLOR]
    - man kann die eigene Rufnummer als Caller-ID wählen... [COLOR=#FF0000]Das geht bei mir nicht![/COLOR]
    Alles in allem gefällt mir der Service alleine schon deswegen das ich nur zahle wenn ich ihn nutze. Bei Loxone zahle ich die Jahresgebühr selbst wenn ich ihn nicht oft nutze.
    Hab schon ein einiges versucht und es funktioniert schnell und zuverlässige.
    Kein Support per PN!

    Kommentar

    • Steiny
      Dumb Home'r
      • 11.07.2016
      • 28

      #5
      Tolle Sache - danke dafür!

      Habs bei mir auch zum laufen gebracht, musste aber zusätzlich noch "Austria" bei den Geo-Permissions für Voice auf twilio.com freischalten:
      Programmable-Voice -> Settings -> Geo Permissions

      Kommentar

      • baumandr
        Dumb Home'r
        • 09.04.2016
        • 28

        #6
        Hi,
        bei mir funktionierts nicht,
        wo muss ich den Ordner Callerservice genau auf den Rasp. speichern

        freundliche Grüße,
        Andreas

        Kommentar

        • baumandr
          Dumb Home'r
          • 09.04.2016
          • 28

          #7
          Hi,

          Hab es gelöst....

          der Ordner "callerservice" kommt in "/var/www/html/" und in der Datei makecall.php lautet die Zeile 12 "require_once '/var/www/html/callerservice/twilio-php-master/Twilio/autoload.php';"
          dann geht´s

          Freundliche Grüße,
          Andreas
          Zuletzt geändert von baumandr; 24.09.2017, 22:39.

          Kommentar


          • Gast
            Gast kommentierte
            Kommentar bearbeiten
            also wenn du den Ordner Callerservice nicht unter "/var/www/html/" packst sondern direkt unter "/var/www/" (das ist das Root-Verzeichnis vom Apache Webserver am Raspi) musst du das Script auch nicht anpassen ;-)
            Freut mich, dass ansonsten alles geklappt hat :-)

          • baumandr
            baumandr kommentierte
            Kommentar bearbeiten
            hat bei mir nicht geklappt, die makecall.php wurde dort nicht gefunden... läuft bei mir unter RASPBIAN STRETCH LITE....

          • baumandr
            baumandr kommentierte
            Kommentar bearbeiten
            bei Apache2 ist standard root f. Dateien jetzt /var/www/html...
            ist richtig, früher war es /var/www/...
        • baumandr
          Dumb Home'r
          • 09.04.2016
          • 28

          #8
          Hallo an alle,

          oft kommt es vor dass es bei mir nicht läutet, obwohl der call Befehl korrekt bei twilio ankommt.

          Im log bei twilio wird zuerst ringing angezeigt und dann no answer.
          Bei mir zu hause läutet es aber nicht.

          Dann wieder geht es ohne an den Einstellung etwas verändert zu haben.
          Im log steht dann ringing-answered-completed.

          Time out ist auf 28 Sekunden eingestellt, mobilbox bei mir auf 30 Sekunden.
          Geo permission ist korrekt eingestellt,
          Guthaben ist aufgeladen
          Beider Nummern sind Österreichische Mobilfunk Nummern.
          Anruf von Hot nach Drei (portiert von A1)

          hat wer eine Ahnung was das sein kann, oder hatvwer die selben Erfahrungen gemacht?

          Grüsse,
          Andreas
          Zuletzt geändert von baumandr; 13.01.2018, 20:02.

          Kommentar

          • baumandr
            Dumb Home'r
            • 09.04.2016
            • 28

            #9
            keiner eine Idee...

            Kommentar

            • baumandr
              Dumb Home'r
              • 09.04.2016
              • 28

              #10
              hab das Problem nun gelöst...

              Es hat definitiv mit dem Provider "Drei" zu tun.
              Rufe nun von einer alten "bob" Nummer zu "HoT" und nun wird jeder Anruf korrekt getätigt...

              Andreas

              Kommentar

              • jo_21
                Dumb Home'r
                • 31.05.2018
                • 17

                #11
                Hallo,

                sehr gute Idee, diesen Dienst zu nehmen. Der ist ja wirklich total mächtig.

                Im Detail ist die Durchführung ein bisschen umständlich. Man braucht keinen PHP-Server, es reicht einfach ein HTTP Ausgang von Loxone direkt mit den richtigen Post-Parametern, fertig.

                Was habe ich gemacht?

                Unter https://www.twilio.com/console/runtime/twiml-bins ein bin angelegt:

                <?xml version="1.0" encoding="UTF-8"?>
                <Response>
                <Pause length="1"/>
                <Say voice="alice" language="de-DE">Achtung. Dein Haus brennt oder steht unter Wasser. Bitte Loxone Meldungen checken</Say>
                <Pause length="1"/>
                </Response>

                Dort erhält man eine URL, oben unter handler. Unter dieser kann Twilio intern dann darauf zugreifen.

                Danach kann man einfach den Caller Server per POST ansprechen, wie in den Tutorials unter CURL angegeben (den ganzen Twilio-Client braucht man für dieses einfache Szenario überhaupt nicht, letztlich bastelt der auch nur irgendwelche Rest-Calls zusammen).
                Also siehe Beispiele https://www.twilio.com/docs/voice/make-calls . Dort gibt man eine Url an (mit dem Parameter Url), der die Twin-ML enthält. Diese URL dann am besten mit Curl mal testen.

                Beispiel:

                curl -XPOST https://api.twilio.com/2010-04-01/Accounts/<username>/Calls.json \
                --data-urlencode "Url=https://handler.twilio.com/twiml/<My-Twin-ML-URL>" \
                --data-urlencode "To=+49179XXX" \
                --data-urlencode "From=+4989XXX" \
                -u 'usernameassword'

                Leider hab ich es nicht geschafft, den Text per Parameter zu übergeben, aber das brauche ich zumindest für mich nicht. Ich habe mir einfach pro Alarm einen Text. So viele habe ich nicht.


                In Loxone dann einfach einen Virtuellen Ausgang anlegen:
                Adresse: https://<username>:<password>@api.twilio.com

                Dann einen neuen Befehl anlegen. Wichtig: Man muss die Telefonnummer und die Twin-Url encoden (macht Curl automatisch bei data-urlencode)

                Befehl bei Ein: /2010-04-01/Accounts/<username>/Calls.json
                Http-Erweiterung bei Ein: Content-Type: application/x-www-form-urlencoded
                Http-Post-Befehl bei Ein: To=<Url-Encoded-Zielnummer>&From=<Url-Encoded-Von-Nummer>&Url=<Url-Encoded-Twin-ML-Url>

                Http-Methode Post

                Test kann man das ganze mit einem Loxone Monitor, dort sieht man auch etwaige Fehler in Reqest/response



                Kommentar


                • Steiny
                  Steiny kommentierte
                  Kommentar bearbeiten
                  Hi,
                  hatte deine Variante mit dem HTTP-Ausgang problemlos seit längerer Zeit am Laufen. Neuerderings, seit ca. 1 Monat, funktioniert der Aufruf direkt über Loxone an Twilio aber nicht mehr. Über die PHP API funktioniert es.
                  Funktioniert die Variante bei dir noch ?

                  Thx, Steiny

                • LoxWilli
                  LoxWilli kommentierte
                  Kommentar bearbeiten
                  Hallo,
                  leider auch bei mir das von Steiny beschriebene Problem: Nutzung des HTTP-Ausgangs für den Twilio-Call funktioniert seit kurzem nicht mehr; im Loxone-Monitor gibt es einen "HTC SSL Write Error". Hat jemand eine Lösung gefunden? Danke Euch vorab.

                • Christian Fenzl
                  Christian Fenzl kommentierte
                  Kommentar bearbeiten
                  Vermutlich wurden die unsicheren SSL-Varianten bei Twilio deaktiviert.
              • jo_21
                Dumb Home'r
                • 31.05.2018
                • 17

                #12
                Nummer kannst du dynamisch setzen. Detail Text brauche ich nicht, lasse mir eh noch eine push Nachricht schicken. Vermutlich geht auch das. Die PHP Lösung baut auch nur einen http Request zusammen.

                Kommentar

                • Steiny
                  Dumb Home'r
                  • 11.07.2016
                  • 28

                  #13
                  Und so funktionierts mit dynamischen Text:

                  Twin-ML-Bin analog aus Post #1 verwenden/anlegen:
                  Code:
                  <?xml version="1.0" encoding="UTF-8"?>
                  <Response> <Pause length="1"/>
                  <Say voice="alice" language="de-DE">{{Text}}</Say>
                  <Pause length="1"/> </Response>
                  Der ensprechende CURL Befehl:
                  Code:
                  curl -XPOST https://api.twilio.com/2010-04-01/Accounts/<SID>/Calls.json \
                  --data-urlencode "Url=https://handler.twilio.com/twiml/<My-Twin-ML-URL>[COLOR=#000000][B]?Text=Achtung. Dein Haus brennt oder steht unter Wasser. Bitte Loxone Meldungen checken[/B][/COLOR]" \
                  --data-urlencode "To=+49179XXX" \
                  --data-urlencode "From=+4989XXX" \
                  -u 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:your_auth_token'
                  In Loxone:
                  Code:
                  Http-Post-Befehl bei Ein: To=[I]<Url-Encoded-Zielnummer>[/I]&From=[I]<Url-Encoded-Von-Nummer>[/I]&Url=[I]<Url-Encoded-Twin-ML-Url>[/I][B]%3FText%3DAchtung.%20Dein%20Haus%20brennt%20oder%20steht%20unter%20Wasser.%20Bitte%20Loxone%20Meldungen%20checken[/B]
                  Bzgl. Twilio Anmeldeinformationen sei noch erwähnt, dass statt Username/Password bevorzugt SID und Token verwendet werden soll.
                  Zuletzt geändert von Steiny; 22.08.2018, 13:47.

                  Kommentar

                  • marc756
                    Dumb Home'r
                    • 01.08.2018
                    • 13

                    #14
                    Leider klappte es mit den Informationen von Steyni bei mir nicht. Ich hab etwas rumprobiert und habe es folgendermassen zum laufen gebracht:

                    Adresse
                    Code:
                    https://AC4cccbc094ffc835d6ced67c4d9b75164:xxxxxxxxx@api.twilio.com
                    HTTP-Post-Befehl bei EIN
                    Code:
                    /2010-04-01/Accounts/AC4cccbc094ffc835d6ced67c4d9b75164/Calls.json
                    HTTP-Erweiterung bei EIN
                    Code:
                    Content-Type: application/x-www-form-urlencoded
                    HTTP-Post-Befehl bei EIN
                    Code:
                    To=+4179xxxxxxx&From=+1xxxxxxxxx&Url=https://handler.twilio.com/twiml/xxxxxxxxxxxxxx?Text=Achtung,JemandistinihremHaus,Siehaben30SekundenZeit,umdieAlarmanlageauszuschalten
                    HTTP-Methode bei EIN
                    POST

                    Ich hoffe, das bringt anderen auch was.

                    Lg, Marc

                    Kommentar


                    • marc756
                      marc756 kommentierte
                      Kommentar bearbeiten
                      Das stimmt, bei mir geht's auch nicht mehr. Der folgende Curl Befehl über die Powershell funktioniert aber noch:

                      curl.exe -X POST https://api.twilio.com/2010-04-01/Ac...xxx/Calls.json --data-urlencode "Url=https://handler.twilio.com/twiml/EHyyyyyyyyyyyyy?Text=Achtung,JemandistinihremHaus, Siehaben30SekundenZeit,umdieAlarmanlageauszuschalt en&Timeout=17" --data-urlencode "To=+41xxxxxx" --data-urlencode "From=+1yyyyyyyy" -u 'ACxxxxxxxxxxxxxxx:zzzzzzzzzzzzzzzzzz'

                      Scheint wirklich, als dass die SSL Cipher, die der Miniserver benutzt, von Twilio nicht mehr unterstützt werden.
                      Zuletzt geändert von marc756; 17.01.2021, 16:58.

                    • Frynn
                      Frynn kommentierte
                      Kommentar bearbeiten
                      Hallo Miteinander,
                      hat inzwischen jemand eine Lösung gefunden?
                      Danke!

                    • Christian Fenzl
                      Christian Fenzl kommentierte
                      Kommentar bearbeiten
                      MSv2 oder via LoxBerry
                  • bentt82
                    Dumb Home'r
                    • 26.12.2019
                    • 11

                    #15
                    Hallo,
                    bin Neuling und würde gern den Callerservice implementieren, aber wo muss ich das Verzeichnis am Loxberry speichern?
                    - direkt hier einen neuen Ordner anlegen (siehe Bild)?
                    Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Verzeichnis.JPG
Ansichten: 3377
Größe: 144,6 KB
ID: 227286

                    Bitte um Hilfe, danke!

                    Kommentar

                    Lädt...