Kein Zugriff auf Remote Phonebook

PomTom

Neuer User
Mitglied seit
4 Sep 2006
Beiträge
5
Punkte für Reaktionen
0
Punkte
0
Ich habe Probleme beim Zugriff auf ein zentrales Telefon-Verzeichnis - das meldet "Service unavailable", und zwar scheinbar immer dann, wenn das XML-Ergebnis erst über ein PHP- oder CGI-Skript erstellt werden muß. Die Abfrage klappt also auch mit dem "PHP Phonebook"-Skript nicht, auf das auf der Thomson-Seite verwiesen wird.

Wird die Abfrage über einen Web-Browser vorgenommen, wird das richtige Ergebnis als XML zurückgegeben. Wenn ich nun diesen XML-Code per Copy'n'Paste in einer XML-Datei abspeichere und diese XML-Datei statisch als Phonebook-URL im Gerät einstelle, werden die Einträge auch im Gerät angezeigt (was natürlich recht sinnlos ist).

Die Ausgangslage ist wie folgt:

  • HW-Version 3, Boot Version: V1.01, DSP Version: V1.00, APP Version: V1.47
  • Apache ist korrekt eingerichtet.
  • XML dynamisch generiert bringt "Service unavailable", statisch funktionierts.

Hat jemand eine Idee, woran das liegen könnte?
 
Gelöst!

PomTom schrieb:
XML dynamisch generiert bringt "Service unavailable", statisch funktionierts.
Seit heute (gestern ... Guten Morgen) habe ich mein ST2030 und bin gleich auf dasselbe Problem gestoßen.

Also versucht, es statisch zu machen: Dasselbe Problem :mad:. Hmmm ... dann hab' ich mir gedacht, ob Du evtl. .xml als Dateiendung verwendet hast: Und siehe da: Es klappt!:D

Der Quelltext sieht jedoch absolut gleich aus ... :noidea: und dann fiel mir der Header ein, den der Webserver schickt! :idea:

Also den analysiert und probiert: Das Telefon will den Content-Length: header haben. Naja, Content-Type: application/xml kann auch nicht schaden.

Da man die Länge des Ergebnisses erst kennt, wenn alle Daten beisammen sind, musste ich das Script ein bischen umbauen, hier ist es:

PHP:
<? 
 $URL = 'http://deine.IP.adresse/deinpfad/';
 $per_page = '10'; 

 $mysql_conn = mysql_connect('dein.server', 'asterisk', '*****');
 mysql_select_db('asterisk', $mysql_conn );

 $output = "";

 if ( ($FROM=='') and ($TO=='') )
 {
   //check to see how many 
   $sql = "SELECT count(phones.fname) as total 
                         FROM phones 
                         WHERE phones.fname LIKE '$NAME%'";
   //echo $sql;
   $result= mysql_query($sql,$mysql_conn);
   $howmany = mysql_fetch_row($result);

   if ($howmany[0] > $per_page)
   {
    $start = 0; 
    $total = $howmany[0];
    $remain = $per_page;

    $output .= ("\n");
    $output .= ("<ThomsonPhoneMenu>\n");  
   
    while ($start < ($total + 1))
    { 
      $limitstart = 'LIMIT '.$start.','.$per_page;
      $result = mysql_query("SELECT fname,phone 
                             FROM phones 
                             WHERE fname LIKE '$NAME%' ORDER BY fname $limitstart", $mysql_conn); 

      $row = mysql_fetch_row($result); 
      $from = $row[0];
      if (($total - $start) < $per_page) { $remain = $total - $start; }
      for ($i = 1; $i < $remain; ++$i) { $row = mysql_fetch_row($result); }
      $to = $row[0]; 
    
      $output .= ("<MenuItem>\n"); 
      $output .= ("\t<Name>"); 
      $output .= ($from."->".$to); 
      $output .= ("</Name>\n"); 
      $output .= ("\t<URL>"); 
      $output .= ($URL."search.php?FROM=".$from."&amp;TO=".$to); 
      $output .= ("</URL>\n"); 
      $output .= ("</MenuItem>\n"); 

      $start = $start + $per_page;
    } 
    $output .= ("</ThomsonPhoneMenu>\n"); 

   } else {

    $result = mysql_query("SELECT fname,lname,phone 
                           FROM phones 
                           WHERE phones.fname LIKE '$NAME%' 
                           ORDER BY fname ", $mysql_conn); 

    $output .= ("\n");
    $output .= ("<ThomsonPhoneBook>\n");  

    while($row = mysql_fetch_row($result)) 
    { 
      $output .= ("<DirectoryEntry>\n"); 
      $output .= ("\t<Name>"); 
      $output .= ($row[0].", ".$row[1] ); 
      $output .= ("</Name>\n"); 
      $output .= ("\t<Telephone>"); 
      $output .= ($row[2]); 
      $output .= ("</Telephone>\n"); 
      $output .= ("</DirectoryEntry>\n"); 
    } 
    $output .= ("</ThomsonPhoneBook>\n"); 
   }


 } else {

  $result = mysql_query("SELECT fname,lname,phone 
                         FROM phones 
                         WHERE fname>='$FROM' AND fname<='$TO' 
                         ORDER BY fname", $mysql_conn); 

   $output .= ("\n");
   $output .= ("<ThomsonPhoneBook>\n");  

   while($row = mysql_fetch_row($result)) 
   { 
     $output .= ("<DirectoryEntry>\n"); 
     $output .= ("\t<Name>"); 
     $output .= ($row[0].", ".$row[1] ); 
     $output .= ("</Name>\n"); 
     $output .= ("\t<Telephone>"); 
     $output .= ($row[2]); 
     $output .= ("</Telephone>\n"); 
     $output .= ("</DirectoryEntry>\n"); 
   } 
   $output .= ("</ThomsonPhoneBook>\n"); 
 }

$len = strlen($output);

header("Content-Type: application/xml");
header("Content-Length: " . $len);

print $output;

?>
Viel Erfolg damit!
Udo
 
Werd ich Montag mal versuchen...danke!
 
Hat wunbderbar geklappt...danke!
 
Hi,
I'm trying to do the same,
I did cut and paste the php code, but still get the error message,
anything else to check ??
thanks
jl
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.