Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Anbindung an die Auerswald 5020 VoIP

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

    - √ - Anbindung an die Auerswald 5020 VoIP

    Hallo
    Irgendwie scheint die Anbindung an meine Auerswald TK 5020 VoIP nicht richtig zu funktionieren. Ich erhalte immer wieder den Fehler "Login failed". Wie erfolgt die Abfrage an die TK von SmartVisu aus? Wird hier auch immer wieder der Benutzer abgemeldet, da ja ein erneutes Anmelden immer zum Fehler führt weil ein Benutzer nur einmal gleichzeitig angemeldet sein darf.
    Dass eine Anbindung an meine TK generell funktioniert, habe ich mit der App PBX Control von Auerswald sowie mittels manuellen curl Befehlen verifizieren können (vgl. Gesprächsdatenliste automatisch downloaden - Seite 3 - JaCoTec Community). Kann den Fehler jemand bestätigen, der auch eine Auerswald besitzt?

    #2
    Hallo,

    Habe genau die gleiche Anlage, und anfangs auch probleme mit dem login gehabt.

    Du mußt bei der SmartVisu unbedingt das "admin" Konto verwenden, mit einem Teilnehmer oder Subadmin klappt der login nicht.
    bzw - nach dem ich das auerswald.php script angepaßt hab klappt es auch mit einem Teilnehmer, allerdings hab ich das problem, daß der Teilnehmer nicht abgemeldet wird, wodurch es dann auch wieder zum error kommt.

    ich häng das script mal an, evtl. hat ja jemand noch eine Idee, wie man einen Teilnehmer richtig an/abmeldet an der Auerswald.
    Es wär nämlich bei der Auerswald Anlage oft besser, wenn man die Teilnehmeranrufliste auswerten könnte, anstatt die globale Anrufliste.
    Zumindest wär es mir lieber.

    das Script ist im unterverzeichnis /var/www/smartvisu/lib/phone/service/auerswald.php gespeichert.

    Code:
    <?php
    /**
     * -----------------------------------------------------------------------------
     * @package     smartVISU
     * @author      Martin Gleiß
     * @copyright   2012
     * @license     GPL [http://www.gnu.de]
     *              To get the phonelist from Auerswald VoiP 5010 or VoiP 5020 or
     *              COMmander Basic.2 it is necessary to login into the telephone system.
     *              You should create a new account only for this service, because only one
     *              session allowed per user. After logged in successfully the cookie must be
     *              stored and used for all further calls.
     * -----------------------------------------------------------------------------
     */
    
    
    require_once '../../../lib/includes.php';
    require_once const_path_system.'phone/phone.php';
    
    
    /**
     * This class reads the phonelist of an auerswald phonesystem
     */
    class phone_auerswald extends phone
    {
    
        /**
         * Check if the cache-file exists
         */
        public function run()
        {
            // 1. login
            $url = 'http://'.$this->server.'/login_json?LOGIN_NAME='.$this->user.'&LOGIN_PASS='.$this->pass.'&LOGIN_NOW=';
            $context = stream_context_create(array('http' => array('method' => "POST")));
    
            // ---> response
            $login = json_decode(file_get_contents($url, false, $context));
            $this->debug($login, "login");
    
            if ($login->login == 491)
            {
                /*
                ---> response-header
                [0] => HTTP/1.1 200 OK
                [1] => Server: GoAhead-Webs
                [2] => Expires: 0
                [3] => Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
                [4] => Pragma: no-cache
                [5] => Content-Type: text/html; charset=iso-8859-1;
                [6] => Set-Cookie: AUERSessionID=GQYVFDYIGHQVGND
                [7] => Set-Cookie: AUERWEB_COOKIE=20
                */
    
                foreach ($http_response_header as $response)
                {
                    if (substr($response, 0, 11) == "Set-Cookie:")
                        $cookie[] = substr($response, 12);
                }
    
                // 2. data
                $url = 'http://'.$this->server.'/page_listgespr_state';
                $context = stream_context_create(array('http' => array('method' => 'GET', 'header' => 'Cookie: '.implode('; ', $cookie))));
    
                $data = json_decode(mb_convert_encoding(file_get_contents($url, false, $context), "UTF-8", "ISO-8859-1"));
                $this->debug($data, "data");
    
                foreach ($data as $ds)
                {
                    $dir = "";
                    if (trim($ds[15]) == 'vergebl.')
                        $dir = "0";
                    elseif (trim($ds[14]) == 'gehend')
                        $dir = "-1";
                    elseif (trim($ds[14]) == 'kommend')
                        $dir = "1";
    
                    $this->data[] = array('pos' => $ds[19], 'dir' => $dir, 'date' => $ds[1].' '.$ds[2], 'number' => $ds[5], 'name' => $ds[6],
                        'duration' => $ds[3]);
                }
            }
            else
                $this->error('Phone: Auerswald', 'Login failed!');
    
            // 3. logout
            $url = 'http://'.$this->server.'/appclose';
            file_get_contents($url);
        }
    }
    
    // -----------------------------------------------------------------------------
    // call the service
    // -----------------------------------------------------------------------------
    
    $service = new phone_auerswald(array_merge($_GET, $_POST));
    echo $service->json();
    
    ?>
    Gruß, Mike

    Kommentar


      #3
      Ich habs bei mir nur mit dem "admin" Account laufen, und der wird sauber abgemeldet.

      Gruss
      Join smartVISU on facebook. Web: smartvisu.de.
      Dir gefällt smartVISU? Bitte spenden für die Weiterentwicklung.

      Kommentar


        #4
        Kann das bestätigen: Nur mit dem "admin" läuft es! Nur wer will schon einen admin Account inkl. Passwort auf einer App hinterlegen... Und da in der Config ja das Feld "User" zum Eingeben existiert, sollte man hier jeden geeigneten User eintragen können.
        Die Abmelde-Zeile mit unlogAdmin ist hier tatsächlich adminspezifisch. Das angepasste Skript von Mike1 ist beim mir nur lauffähig, wenn ich bei der Zeile
        Code:
         if ($login->login == 491)
        das 491 auf 1 abändere. Dann kann ich mit meinem User "41" (subadmin) einloggen. Gehe davon aus, dass das ein Flag (1 oder 0) ist und nicht eine User-Nummer. Aber:
        Das funktioniert nur auf dem ersten PC. Bei einem weiter PC oder iPhone kommt dann die Login Failed Meldung, weil ja nur einmal eingeloggt werden darf. Somit stimmt immer noch was nicht mit der Abmeldung.
        Mit dem Admin User und der Originalversion des Skripts besteht dieses Problem nicht. Somit ist meine Schlussfolgerung, dass diese Anbindung ausschliesslich (leider) nur mit dem Admin Account funktionieren kann, solange das Abmelde-Problem nicht gelöst ist. Dann müsste man aber konsequenterweise im Config das Feld User auf "admin" blockieren, resp. nicht anzeigen und hardcodieren.

        Kommentar


          #5
          @devau
          Kannst du bitte mal prüfen, ob das bei deiner 5020 auch so ist:
          Wenn ich mich als Admin im Web-IF anmelde, sehe ich nur die vergeblichen Anrufe aufgelistet, wenn ich mich als Teilnehmer anmelde bekomme ich auch zus. die an/abgehend geführten Gespräche aufgelistet.

          @all
          Die login=491 ist bei mir die Nummer, die von der Anlage zurückgegeben wird, wenn ich mich über die Parameterzeile als User "20" einlogge.

          Beim Webbrowser funktionier es z.B. wenn ich mich mit dem folgenden Befehl als User "20" anmelde:
          Code:
          http://192.168.0.240/login_json?LOGIN_NAME=20&LOGIN_PASS=333333&LOGIN_NOW=
          Dann wird auch user = 491 zurückgegeben.

          Wenn ich dann im Browser den Befehl
          eingebe, wird der User auch erfolgreich wieder abgemeldet, nur beim script klappts nicht.

          Kommentar


            #6
            Habe noch etwas festgestellt:
            Auf der Gesprächsliste (via Macro "list" in phone.html) stimmen bei mir das Datum und die Zeit nicht:
            Es steht bei jedem Eintrag die Zeit, als diese Anfrage gestartet worden ist (3.8.13,20:35) und nicht die Anrufzeit. Der Fehler besteht nicht auf der Auerswald-App im iPhone.
            Er besteht auch nicht auf der "Verpasste Anrufe" Liste (missedlist).
            @mike01:Benutze jetzt nur noch den admin User, weil das Skript zu sehr darauf ausgerichtet ist. Hast Du diesen Zeitfehler auch?
            Angehängte Dateien

            Kommentar


              #7
              Hab das grad kontrolliert, das stimmt da scheint sich ein Bug eingeschlichen zu haben.

              Schau ich mir an.

              Gruss
              Join smartVISU on facebook. Web: smartvisu.de.
              Dir gefällt smartVISU? Bitte spenden für die Weiterentwicklung.

              Kommentar


                #8
                Gefixed, wird mit der nächsten Version ausgerollt.

                Gruss
                Join smartVISU on facebook. Web: smartvisu.de.
                Dir gefällt smartVISU? Bitte spenden für die Weiterentwicklung.

                Kommentar


                  #9
                  So, nun ist auch der Auerswald-Treiber soweit aktualisiert, das er auch mit Sub-Admins kann und sauber ausgeloggt wird.

                  Es ist aber schon klar, das wenn man sich mit einer Nebenstelle einloggt auch nur dessen Gespräche bekommt. Mit dem admin bekommt man alle Gespräche.

                  Gruss
                  Join smartVISU on facebook. Web: smartvisu.de.
                  Dir gefällt smartVISU? Bitte spenden für die Weiterentwicklung.

                  Kommentar


                    #10
                    Habs gerade getestet, funktioniert super.
                    es geht sogar als normaler user, nicht nur als subadmin.
                    Auch die Zeitangabe paßt jetzt.

                    Super sache.

                    Hab die ganze Zeit selbst versucht auf eine Lösung zu kommen, aber bin immer an der abmeldung gescheitert.
                    Aber bin auch nicht so der Fachmann für php-Scripte.

                    Gute Arbeit,

                    Gruß, Mike

                    Kommentar


                      #11
                      Hallo
                      Schön, das das so schnell ging. Da ich nicht im Development Team bin und gerne mitgeholfen habe: Wäre es möglich, mir den korrigierten Skript (via PN) zuzustellen?

                      Kommentar


                        #12
                        Du kannst dir das Script direkt aus dem /trunk/ Ordner von google kopieren.

                        Link

                        Gruß, Mike

                        Kommentar


                          #13
                          Danke. Aber: jetzt spielt das Datum total verrückt: Ich lebe in den Jahren 2003, 2030 2029, 2028, überall der 13.Sept. oder Aug., etc, siehe Bild...
                          Könnt ihr das auch feststellen? Ich habe nur die Datei auerswald.php ersetzt. Sind da noch andere Files von der Modifikation betroffen?
                          Angehängte Dateien

                          Kommentar


                            #14
                            Stimmt, die Jahreszahl steht jetzt am anfang, das kannst du aber beheben, indem du Zeile 77 im auerswald-scipt änderst.

                            Original:
                            Code:
                            $this->data[] = array('pos' => $ds[19], 'dir' => $dir, 'date' => str_replace('.', '-', $ds[1]).' '.$ds[2], 'number' => $ds[5], 'name' => $ds[6],
                            Änderung:
                            Code:
                            $this->data[] = array('pos' => $ds[19], 'dir' => $dir, 'date' => str_replace('.', '-', $ds[2]).' '.$ds[1], 'number' => $ds[5], 'name' => $ds[6],
                            Gruß, Mike

                            Kommentar


                              #15
                              OK, habe das angepasst. Nur sind wir jetzt wieder beim gleichen Problem angelangt wie im Post #6 (https://knx-user-forum.de/338420-post6.html); ich benutze den admin user. Es wird überall das Abfragedatum in der Geprächsdatenliste angezeigt; siehe Bild hier. Möglicherweise besteht da eine Unverträglichkeit mit dem Macro "list" in phone.html?
                              Angehängte Dateien

                              Kommentar

                              Lädt...
                              X