Exchange Kontakte auf Cisco 79xx Serie

xxxomxxx

Neuer User
Mitglied seit
19 Feb 2006
Beiträge
14
Punkte für Reaktionen
0
Punkte
0
Hi

wie kann ich die Kontakte aus Exchange in ein Cisco füttern. Offensichtlich scheint der ganze Adressdienst mittels LDAP zu laufen...

Gibt es da Software die das automatisiert?

Nachtrag:Ich habe jetzt etwas recherchiert und man kann ja das Active Directory von einem Windows Server als LDAP gebrauchen indem man Kontakte hinzufügt. Jetz ist nur die Frage wie ich die Kontakte mit dem AD synchronisieren kann?

Danke
Cobra
 
Zuletzt bearbeitet:
Hi xxxomxxx,

ich stand vor selbem problem und nach ca einer Woche PHP Skripten und Debuggen und testen kam ich zum Ergebniss: Es geht (aber nicht alles)

z.B. kann dein Cisco Telefon nie alle Kontakte anzeigen (es gehen maximal 100 dann steigt das Telefon aus.)

Lösung => Wenn ich das Telefonbuch wähle sage ich wen ich suche (Per Eingabemaske)

Du kannst die die Globalen Kontakte auf das Telefon holen aber nicht die Persönlichen, da diese nicht im AD gespeichert werden sondern in einem File auf der Platte des Ex-Servers.

Ich habe mal mein Skript angehängt. Wenn ihr es verbessert oder sonstiges wäre es nett wenn ihr die änderungen auch hier veröffentlicht.


index.php
Code:
<?php

include('../../config.inc.php');

$client = strstr ($_SERVER["HTTP_USER_AGENT"], "Allegro-Software-WebClient");
//if(!$client) {
//  include('error.htm');
//} else {

  header("Content-type: text/xml");
  header("Connection: close");

  echo "<CiscoIPPhoneMenu>\n";
  echo "\t<Title>Telefonbuch</Title>\n";
  echo "\t<Prompt>Bitte auswaehlen</Prompt>\n";

//  echo "\t<MenuItem>\n";
//  echo "\t\t<Name>Active Directory</Name>\n";
//  echo "\t\t<URL>".$url_base."?action=browse</URL>";
//  echo "\t</MenuItem>\n";

  echo "\t<MenuItem>\n";
  echo "\t\t<Name>Active Directory Suche</Name>\n";
  echo "\t\t<URL>".$url_base."?action=search</URL>";
  echo "\t</MenuItem>\n";
  echo "</CiscoIPPhoneMenu>\n";

//}

?>


query.php
Code:
<?php

$client = strstr ($_SERVER["HTTP_USER_AGENT"], "Allegro-Software-WebClient");
if(!$client) {
  include('error.htm');
} else {


header("Content-type: text/xml");
header("Connection: close");


function ld_browse() {
 include('../../config.inc.php');
 $ds=ldap_connect($ld_server);
 if ($ds) {
  $r=ldap_bind($ds, $ld_binddn, $ld_bindpw) or exit(">>Could not bind to $ld_server<<") ;;
  $sr=ldap_search($ds, $ld_basedn, "objectClass=person") or exit(">>Unable to search ldap server $ld_server<<");

   echo "<CiscoIPPhoneMenu>\n";
   echo "\t<Title>Telefonbuch</Title>\n";
   echo "\t<Prompt>Bitte auswaehlen</Prompt>\n";

   $list = ldap_get_entries($ds, $sr);

   for ($i=0; $i<$list["count"]; $i++) {

     $find=array("&auml;","&ouml;","&uuml;","&eacute;","&Auml;","&Ouml;","&Uuml;");
     $replace=array("ae","oe","ue","e","Ae","Oe","Ue");

     $string=$list[$i]["cn"][0];
     $string2=htmlentities($string);

     $string2=str_replace($find,$replace,$string2);


     $name=explode(" ", $string2);

     if ($name[1] == "") {
     } else {
       echo "\n";
       echo "\t<MenuItem>\n";
       echo "\t\t<Name>". $name[1] ." ". $name[0] ."</Name>\n";
       echo "\t\t<URL>".$url_base."?action=detail&amp;sn=".$list[$i]["usncreated"][0]."</URL>\n";
       echo "\t</MenuItem>\n";
     }
   }
   echo "\n</CiscoIPPhoneMenu>\n";
  ldap_close($ds);
 } else {
   echo "error";
 }
}

function ld_detail() {
 include('../../config.inc.php');
 $ds=ldap_connect($ld_server);
 if ($ds) {
  $r=ldap_bind($ds, $ld_binddn, $ld_bindpw) or exit(">>Could not bind to $ld_server<<") ;;

  $search=$_GET['sn'];

   $sr=ldap_search($ds, $ld_basedn, "usncreated=".$search."") or exit(">>Unable to search ldap server $ld_server<<");

   echo "<CiscoIPPhoneDirectory>\n";

   $detail = ldap_get_entries($ds, $sr);

   for ($i=0; $i<$detail["count"]; $i++) {

     $string=$detail[$i]["cn"][0];
     $name=explode(" ", $string);

   echo "\t<Title>". $name[1] ." ". $name[0] ."</Title>\n";
   echo "\t<Prompt></Prompt>\n";

      if ($detail[$i]["telephonenumber"][0]) {
       echo "\n";
       echo "\t<DirectoryEntry>\n";
       echo "\t\t<Name>Gesch&auml;ftlich</Name>\n";
       echo "\t\t<Telephone>" . $detail[$i]["telephonenumber"][0] ."</Telephone>\n";
       echo "\t</DirectoryEntry>\n";
      }

      if ($detail[$i]["homephone"][0]) {
       echo "\n";
       echo "\t<DirectoryEntry>\n";
       echo "\t\t<Name>Privat</Name>\n";
       echo "\t\t<Telephone>" . $detail[$i]["homephone"][0] ."</Telephone>\n";
       echo "\t</DirectoryEntry>\n";
      }

      if ($detail[$i]["mobile"][0]) {
       echo "\n";
       echo "\t<DirectoryEntry>\n";
       echo "\t\t<Name>Mobil</Name>\n";
       echo "\t\t<Telephone>" . $detail[$i]["mobile"][0] ."</Telephone>\n";
       echo "\t</DirectoryEntry>\n";
      }

   }
   echo "\n</CiscoIPPhoneDirectory>";
  ldap_close($ds);
 } else {
   echo "error";
 }

}

function ld_search() {
 include('../../config.inc.php');
        echo "<CiscoIPPhoneInput>\n";
        echo "<Title>Suchen im AD</Title>\n";
        echo "<Prompt>Suchbegriff eingeben</Prompt>\n";
        echo "<URL>".$url_base."?action=do_search</URL>\n";
        echo "\t<InputItem>";
        echo "\t\t<DisplayName>Nachname</DisplayName>\n";
        echo "\t\t<QueryStringParam>sn</QueryStringParam>";
        echo "\t\t<DefaultValue></DefaultValue>";
        echo "\t\t<InputFlags>A</InputFlags>";
        echo "\t</InputItem>";
        echo "\t<InputItem>";
        echo "\t\t<DisplayName>Vorname</DisplayName>\n";
        echo "\t\t<QueryStringParam>gn</QueryStringParam>";
        echo "\t\t<DefaultValue></DefaultValue>";
        echo "\t\t<InputFlags>A</InputFlags>";
        echo "\t</InputItem>\n";
        echo "</CiscoIPPhoneInput>\n";
}

function ld_do_search() {
 include('../../config.inc.php');
 $ds=ldap_connect($ld_server);
 if ($ds) {
 $r=ldap_bind($ds, $ld_binddn, $ld_bindpw) or exit(">>Could not bind to $ld_server<<") ;;

 $q_sn=$_GET['sn'];
 $q_gn=$_GET['gn'];

 $sr=ldap_search($ds, $ld_basedn, "(&(givenName=".$q_gn."*)(sn=".$q_sn."*))") or exit(">>Unable to search ldap server $ld_server<<");

   echo "<CiscoIPPhoneMenu>\n";
   echo "\t<Title>Telefonbuch</Title>\n";
   echo "\t<Prompt></Prompt>\n";

   $dosearch = ldap_get_entries($ds, $sr);

   for ($i=0; $i<$dosearch["count"]; $i++) {

     $string=$dosearch[$i]["cn"][0];
     $string=preg_replace('/ö/','/oe/',$string);
     $name=explode(" ", $string);

     if ($name[1] == "") {
     } else {
       echo "\n";
       echo "\t<MenuItem>\n";
       echo "\t\t<Name>". $name[1] ." ". $name[0] ."</Name>\n";
       echo "\t\t<URL>".$url_base."?action=detail&amp;sn=".$dosearch[$i]["usncreated"][0]."</URL>\n";
       echo "\t</MenuItem>\n";
     }
   }
   echo "\n</CiscoIPPhoneMenu>\n";
  ldap_close($ds);
 } else {
   echo "error";
 }
}

function ld_debug() {
 include('../../config.inc.php');
 $ds=ldap_connect($ld_server);
 if ($ds) {
  $r=ldap_bind($ds, $ld_binddn, $ld_bindpw) or exit(">>Could not bind to $ld_server<<") ;;
  $sr=ldap_search($ds, $ld_basedn, "objectClass=contact") or exit(">>Unable to search ldap server $ld_server<<");

   $foo = ldap_get_entries($ds, $sr);

    echo "<pre>";
    print_r($foo);
    echo "</pre>";

  ldap_close($ds);
 } else {
   echo "error";
 }

}

 switch ($_GET['action']) {

        case browse:
                ld_browse();
                break;
        case detail:
                ld_detail();
                break;
        case search:
                ld_search();
                break;
        case do_search:
                ld_do_search();
                break;
        case debug:
                ld_debug();
                break;
 }


}
?>

config.inc.php
Code:
<?php
// LDAP Server Settings

$ld_server="SERVERNAME";
$ld_basedn="ou=contacts,dc=123,dc=456,dc=net";
$ld_binddn="cn=administrator,cn=users,dc=123,dc=456,dc=net";
$ld_bindpw="meintollespasswort";

// URL Settings
$url_base="http://tolleurl/query.php";
?>
 
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.