Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Auto provisioning   –   Gestion des contacts    –     Présence   –   Vidéo surveillanceX.   ANNEXES       ANNEXE - 1 :    ...
Auto provisioning    –    Gestion des contacts    –     Présence   –    Vidéo surveillanceFigure X-5 : Ces messages indiqu...
Auto provisioning    –    Gestion des contacts    –     Présence    –    Vidéo surveillanceFigure X-6 : Cette figure montr...
Auto provisioning   –   Gestion des contacts    –     Présence   –   Vidéo surveillanceFigure X-8 : Le téléphone raccroche...
Auto provisioning   –   Gestion des contacts    –     Présence   –   Vidéo surveillance header("Content-Type: text/xml"); ...
Auto provisioning      –   Gestion des contacts    –     Présence   –   Vidéo surveillance                    $PersonDirec...
Auto provisioning   –   Gestion des contacts    –     Présence   –   Vidéo surveillance               $PersonNameList .= "...
Auto provisioning   –    Gestion des contacts   –     Présence   –   Vidéo surveillance     $LastName% OR first_name like ...
Auto provisioning   –    Gestion des contacts    –     Présence   –   Vidéo surveillance     #############################...
Auto provisioning   –    Gestion des contacts     –    Présence   –    Vidéo surveillance     $menu .= "</InputItem>n";   ...
Auto provisioning   –    Gestion des contacts    –     Présence     –   Vidéo surveillance       ANNEXE - 3 :          Pro...
Auto provisioning   –      Gestion des contacts     –    Présence     –     Vidéo surveillance                        Figu...
Upcoming SlideShare
Loading in …5
×

Annexes du Document sur l'Auto provisioning, contacts, presence et streaming sur asterisk

1,416 views

Published on

Annexes du Document sur l'Auto provisioning, contacts, presence et streaming sur asterisk

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Annexes du Document sur l'Auto provisioning, contacts, presence et streaming sur asterisk

  1. 1. Auto provisioning – Gestion des contacts – Présence – Vidéo surveillanceX. ANNEXES ANNEXE - 1 : Traces de toute la procédure d’auto provisioning Figure X-1 : Le téléphone au démarrage va émettre une requête cdp pour connaître les équipements cisco voisins. Figure X-2 : Comme décrit dans le scénario de fonctionnement, le téléphone va chercher une adresse ip auprès de notre serveur dhcp. Le serveur lui attribue l’adresse 192.168.1.5. Les échanges dhcp sont coloriés en bleu. Figure X-3 : Le téléphone récupère ensuite son fichier de configuration sur le serveur tftp (SEP18EF639E60F4.cnf.xml). Figure 4 : Le téléphone se met à jour en téléchargeant le nouveau firmware (P00308010200.sb2). Les messages ont été tronqués car ils sont trop longs. Promotion : 2009 – 2011 a
  2. 2. Auto provisioning – Gestion des contacts – Présence – Vidéo surveillanceFigure X-5 : Ces messages indiquent l’enregistrement du téléphone sur le serveur asterisk. Ensuiteasterisk envoi les paramètres du téléphone configurés dans sscp.conf comme le paramétrage destouches, des boutons, l’heure à afficher, le nom de téléphone à afficher, etc… Promotion : 2009 – 2011 b
  3. 3. Auto provisioning – Gestion des contacts – Présence – Vidéo surveillanceFigure X-6 : Cette figure montre les étapes d’appel. Quand on compose un numéro, le téléphonetransmet un à un les numéros composés (j’ai composé 1001 dont le téléphone envoie 4 fois lemessage KeypadButtonMessage). Ensuite asterisk fait sonner l’abonné appelé (2548) et lorsqu’ildécroche, asterisk informe l’abonné appelant (2563) qui commence à émettre la voix (2566 :startMediaTransmission) à travers les messages RTP coloriés en bleu.Figure 7 : Si l’appelé répond, astérisk envoi le message au téléphone appelant (192.168.1.5) enUDP (3324). Promotion : 2009 – 2011 c
  4. 4. Auto provisioning – Gestion des contacts – Présence – Vidéo surveillanceFigure X-8 : Le téléphone raccroche et asterisk envoi un message ICMP (3349). Le téléphoneappelant arrête la transmission la communication et envoi les statistiques de l’appel. ANNEXE - 2 : Codes sources des pages de gestion des contactsPour un petit rappel, les liens indiqués dans le fichier de configuration dans le serveur tftpdoivent pointer sur l’un des fichiers écrits en php que l’on met dans le serveur web (apache).Dans mon cas j’ai mis deux liens ; un menant vers le fichier charger d’afficher le répertoirede contacts (PhoneDirectory.php) et le deuxième lien menant vers le fichier utilisé pour desservices supplémentaires (services.php). Je crée un fichier (db_connection.php) qui sera utilisé par n’importe quel autre fichiernécessitant une connexion à la base de données MySQL : db_connection.php <? $connection = @mysql_connect("localhost", "cisco", "cisco") or die(database is down, or username and password is wrong); $db_name = "astcontacts"; $db = @mysql_select_db($db_name, $connection) or die(database name not working, line 3.); ?>Le fichier qui suit est utilisé pour lire le contenu de la base de données des contacts etl’afficher sur le téléphone ipcisco. PhoneDirectory.php < ?php ########################################## # Configuration Chemin vers ce fichier php #$Server = "http://Adresse IP Serveur Web/contacts"; $Server = "http://192.168.1.1/contacts"; # sans le / à la fin! $LongDistanceExtension = ""; # Préfixe pour des numéros extérieur ########################################## # Type de contenu Promotion : 2009 – 2011 d
  5. 5. Auto provisioning – Gestion des contacts – Présence – Vidéo surveillance header("Content-Type: text/xml"); # On inclut le fichier de connexion à la base de données to MySQL require("db_connection.php"); # Comme on sait que le téléphone ne peut afficher que les 30 prémiers #contacts, les deux lignes qui suivent sont utilisées pour à partir du quantième #contact on va continuer à afficher (le 31e contact jusqu’à…) $NextSet = $_GET[NextSet]; $NextStartingRow = $NextSet*30; # Si la variable “ID” existe alors on le récupère avec la function GET et #ensuite on affiche les numéros de cet ID. En fait comme chaque contact à un #ID, lorsqu’on clique sur un contact, ce fichier se recharge en envoyant juste #l’ID du contact qu’on a sélectionné et ainsi le récupère et affiche ses #numéros. Il est combiné avec du XML. $ID = $_GET[ID]; if ($ID) { $PersonDirectoryListing = "<CiscoIPPhoneDirectory>n"; $Query = "SELECT id, first_name, last_name, phone_home, phone_work, phone_mobile, phone_other "; $Query .= "FROM contacts WHERE id = $ID "; $SelectPersonInfo = mysql_query($Query,$connection); while ($row = mysql_fetch_array($SelectPersonInfo)) { $CellPhone = ereg_replace("[ ()-]+", "", $row[phone_mobile]); $HomePhone = ereg_replace("[ ()-]+", "", $row[phone_home]); $WorkPhone = ereg_replace("[ ()-]+", "", $row[phone_work]); $OtherPhone = ereg_replace("[ ()-]+", "", $row[phone_other]); if ($row["phone_home"]) { $PersonDirectoryListing .= "<DirectoryEntry>n"; $PersonDirectoryListing .= "<Name>Home:</Name>n"; $PersonDirectoryListing .= "<Telephone>$HomePhone</Telephone>n"; $PersonDirectoryListing .= "</DirectoryEntry>n"; } if ($row["phone_mobile"]) { $PersonDirectoryListing .= "<DirectoryEntry>n"; $PersonDirectoryListing .= "<Name>Cell:</Name>n"; $PersonDirectoryListing .= "<Telephone>$LongDistanceExtension$CellPhone</Telephone>n"; $PersonDirectoryListing .= "</DirectoryEntry>n"; } if ($row["phone_work"]) { $PersonDirectoryListing .= "<DirectoryEntry>n"; $PersonDirectoryListing .= "<Name>Work:</Name>n"; $PersonDirectoryListing .= "<Telephone>$LongDistanceExtension$WorkPhone</Telephone>n"; $PersonDirectoryListing .= "</DirectoryEntry>n"; } if ($row["phone_other"]) { $PersonDirectoryListing .= "<DirectoryEntry>n"; $PersonDirectoryListing .= "<Name>Other:</Name>n"; $PersonDirectoryListing .= "<Telephone>$OtherPhone</Telephone>n"; Promotion : 2009 – 2011 e
  6. 6. Auto provisioning – Gestion des contacts – Présence – Vidéo surveillance $PersonDirectoryListing .= "</DirectoryEntry>n"; } } $PersonDirectoryListing .= "</CiscoIPPhoneDirectory>n"; echo "$PersonDirectoryListing"; # Si la variable ID n’est pas récupérée alors on affiche juste les contacts (nom # et prénom). } else { $PersonNameList = "<CiscoIPPhoneMenu>n"; $PersonNameList .= "<Title>Phone Directory</Title>n"; $PersonNameList .= "<Prompt>Please select one</Prompt>n"; $Query = "SELECT id, first_name, last_name, phone_home, phone_work, phone_mobile, phone_other "; $Query .= "FROM contacts "; # Les suivantes sont utilisées pour la recherche dans les contacts. Pour cela # quand on tape le nom à rechercher, on arrive sur ce fichier qui récupère ce # nom à travers la variable LastName $LastName = $_GET[LastName]; if ($LastName) $Query .= "WHERE last_name like $LastName% "; if ($LastName) $Query .= "OR first_name like $LastName% "; $Query .= "order by last_name"; # On limite chaque page à afficher au maximum 30 contacts if (!$NextSet) { $Query .= " Limit 0,30"; # Si c’est la page suivante alors on le limite aussi à 30 contacts. } else { $Query .= " Limit $NextStartingRow,30"; } # On exécute toutes les requêtes # echo $Query; $SelectNameList = mysql_query($Query,$connection); # On compte le nombre maximal de contacts et si c’est supérieur à 30 # alors on affecte une valeur pour la prochaine page. $NumberOfRows = mysql_num_rows($SelectNameList); if ($NumberOfRows>= 30) { $NextSetValue = $NextSet+1; } # Les lignes suivantes sont utilisées pour afficher les contacts while ($row = mysql_fetch_array($SelectNameList)) { $PersonNameList .= "<MenuItem>n"; $PersonNameList .= "<Name>"; $PersonNameList .= $row["last_name"]; if ($row["first_name"]) $PersonNameList .= ", " . $row["first_name"]; $PersonNameList .= "</Name>n"; $PersonNameList .= "<URL>"; $PersonNameList .= "$Server/PhoneDirectory.php?"; $PersonNameList .= "ID="; $PersonNameList .= $row["id"]; $PersonNameList .= "</URL>n"; Promotion : 2009 – 2011 f
  7. 7. Auto provisioning – Gestion des contacts – Présence – Vidéo surveillance $PersonNameList .= "</MenuItem>n"; } # S’il y a une prochaine page alors on affiche un mot (Plus…) pour la # prochaine page. if ($NextSetValue) { $PersonNameList .= "<MenuItem>n"; $PersonNameList .= "<Name>Plus...</Name>n"; $PersonNameList .= "<URL>$Server/Plus.php?NextSet=$NextSetValue&amp;LastName=$LastName</U RL>n"; $PersonNameList .= "</MenuItem>n"; } $PersonNameList .= "</CiscoIPPhoneMenu>"; echo "$PersonNameList"; } ?>Ce code est utilisé pour afficher la page suivante avec les contacts restants au cas où letéléphone ne peut pas afficher tous les contacts en une seule fois. Plus.php <?php ########################################## # Configuration Chemin vers ce fichier php #$Server = "http://Adresse IP Serveur Web/contacts"; $Server = "http://192.168.1.1/contacts"; # sans le / à la fin! $LongDistanceExtension = ""; # Préfixe pour des numéros extérieur ########################################## # Type de contenu header("Content-Type: text/xml"); # On inclut le fichier de connexion à la base de données to MySQL require("db_connection.php"); $NextSet = $_GET[NextSet]; if (!$NextSet) { $NextStartingRow = 0; # Now for each subsiquent call we get the next 30 records. } else { $NextStartingRow = $NextSet*2; } $PersonNameList = "<CiscoIPPhoneMenu>n"; $PersonNameList .= "<Title>Phone Directory</Title>n"; $PersonNameList .= "<Prompt>Please select one</Prompt>n"; $Query = "SELECT id, first_name, last_name, phone_home, phone_work, phone_mobile, phone_other FROM contacts order by last_name Limit $NextStartingRow,2"; $LastName = $_GET[LastName]; if ($LastName) $Query = "SELECT id, first_name, last_name, phone_home, phone_work, phone_mobile, phone_other FROM contacts WHERE last_name like Promotion : 2009 – 2011 g
  8. 8. Auto provisioning – Gestion des contacts – Présence – Vidéo surveillance $LastName% OR first_name like $LastName% order by last_name Limit $NextStartingRow,2"; # echo $Query; $SelectNameList = mysql_query($Query,$connection); $NumberOfRows = mysql_num_rows($SelectNameList); if ($NumberOfRows>= 2) { $NextSetValue = $NextSet+1; } while ($row = mysql_fetch_array($SelectNameList)) { $PersonNameList .= "<MenuItem>n"; $PersonNameList .= "<Name>"; $PersonNameList .= $row["last_name"]; if ($row["first_name"]) $PersonNameList .= ", " . $row["first_name"]; $PersonNameList .= "</Name>n"; $PersonNameList .= "<URL>"; $PersonNameList .= "$Server/PhoneDirectory.php?"; $PersonNameList .= "ID="; $PersonNameList .= $row["id"]; $PersonNameList .= "</URL>n"; $PersonNameList .= "</MenuItem>n"; } if ($NextSetValue) { $PersonNameList .= "<MenuItem>n"; $PersonNameList .= "<Name>Plus...</Name>n"; if($LastName){ $PersonNameList .= "<URL>$Server/Plus40.php?NextSet=$NextSetValue&amp;LastName=$LastName</ URL>n"; }else{ $PersonNameList .= "<URL>$Server/Plus40.php?NextSet=$NextSetValue</URL>n"; } $PersonNameList .= "</MenuItem>n"; } $PersonNameList .= "</CiscoIPPhoneMenu>"; echo "$PersonNameList"; ?>Ce fichier est utilisé pour définir les différents services que je veux implémenter sur lestéléphones cisco. services.php <?php ########################################## # Configuration Chemin vers ce fichier php #$Server = "http://Adresse IP Serveur Web/contacts"; # sans le / à la fin! $Server = "http://192.168.1.1/contacts"; Promotion : 2009 – 2011 h
  9. 9. Auto provisioning – Gestion des contacts – Présence – Vidéo surveillance ########################################## # # Type de contenu : xml header("Content-Type: text/xml"); $menu = "<CiscoIPPhoneMenu>n"; $menu .= "<Title>XML Services</Title>n"; $menu .= "<Prompt>Please select one</Prompt>n"; $menu .= "<MenuItem>n"; $menu .= "<Name>View Phone Directory</Name>n"; $menu .= "<URL>$Server/PhoneDirectory.php</URL>n"; $menu .= "</MenuItem>n"; $menu .= "<MenuItem>n"; $menu .= "<Name>Search by name</Name>n"; $menu .= "<URL>$Server/searchDirectory.php</URL>n"; $menu .= "</MenuItem>n"; $menu .= "<MenuItem>n"; $menu .= "<Name>Insert contact in phone</Name>n"; $menu .= "<URL>$Server/insertDirectory.php</URL>n"; $menu .= "</MenuItem>n"; $menu .= "<MenuItem>n"; $menu .= "<Name>Need Help</Name>n"; $menu .= "<URL>$Server/help.php</URL>n"; $menu .= "</MenuItem>n"; $menu .= "</CiscoIPPhoneMenu>n"; echo $menu; ?>J’utilise ce fichier pour rechercher un contact dans la base de données MySQL. searchDirectory.php <?php ########################################## # Configuration Chemin vers ce fichier php #$Server = "http://Adresse IP Serveur Web/contacts"; # sans le / à la fin! $Server = "http://192.168.1.1/contacts"; ########################################## # # Type de contenu : xml header("Content-Type: text/xml"); $menu = "<CiscoIPPhoneInput>n"; $menu .= "<Prompt>Enter the first three letters</Prompt>n"; $menu .= "<URL>$Server/PhoneDirectory.php</URL>n"; $menu .= "<InputItem>n"; $menu .= "<DisplayName>Last Name</DisplayName>n"; $menu .= "<QueryStringParam>LastName</QueryStringParam>n"; $menu .= "<DefaultValue></DefaultValue>n"; $menu .= "<InputFlags>A</InputFlags>n"; Promotion : 2009 – 2011 i
  10. 10. Auto provisioning – Gestion des contacts – Présence – Vidéo surveillance $menu .= "</InputItem>n"; $menu .= "</CiscoIPPhoneInput>n"; echo $menu; ?>J’utilise ce fichier pour ajouter de l’aide dans les téléphones au cas où l’employé à un souci. help.php <?php ########################################## # Configuration Chemin vers ce fichier php #$Server = "http://Adresse IP Serveur Web/contacts"; # sans le / à la fin! $Server = "http://192.168.1.1/contacts"; ########################################## # # Type de contenu : xml header("Content-Type: text/xml"); $menu = "<CiscoIPPhoneText>n"; $menu .= "<Title>Help</Title>n"; $menu .= "<Prompt>Hotline</Prompt>n"; $menu .= "<Text>n"; $menu .= "For Help and Support Please Call: "; #$menu .= "n"; $menu .= "111 or Click Button Hotline in your HomeScreenn"; $menu .= "</Text>n"; $menu .= "</CiscoIPPhoneText>n"; echo $menu; ?> Promotion : 2009 – 2011 j
  11. 11. Auto provisioning – Gestion des contacts – Présence – Vidéo surveillance ANNEXE - 3 : Procédure de configuration de compte dans x-litePour ajouter le compte 900 dans x-lite, la procédure est la suivante en images : Figure X-9 : On ouvre les paramètres de comptes Figure X-10 : On clique sur ajouter (add) Promotion : 2009 – 2011 k
  12. 12. Auto provisioning – Gestion des contacts – Présence – Vidéo surveillance Figure X-11 : ajout des paramètres du compte Figure X-12 : Le logiciel senregistre sur le serveur Promotion : 2009 – 2011 l

×