annexes du document sur l'auto provisioning, contacts, presence et streaming sur asterisk

17
a Auto provisioning Gestion des contacts Présence Vidéo surveillance X. 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). Promotion : 2009 – 2011

Upload: kamleu-noumi-emeric

Post on 17-Jan-2015

1.043 views

Category:

Technology


0 download

DESCRIPTION

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

TRANSCRIPT

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

Auto provisioning – Gestion des contacts – Présence – Vidéo surveillance

X. ANNEXESANNEXE - 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

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

Auto provisioning – Gestion des contacts – Présence – Vidéo surveillance

Figure X-5 : Ces messages indiquent l’enregistrement du téléphone sur le serveur asterisk. Ensuite asterisk envoi les paramètres du téléphone configurés dans sscp.conf comme le paramétrage des touches, des boutons, l’heure à afficher, le nom de téléphone à afficher, etc…

Promotion : 2009 – 2011

b

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

Auto provisioning – Gestion des contacts – Présence – Vidéo surveillance

Figure X-6 : Cette figure montre les étapes d’appel. Quand on compose un numéro, le téléphone transmet un à un les numéros composés (j’ai composé 1001 dont le téléphone envoie 4 fois le message KeypadButtonMessage). Ensuite asterisk fait sonner l’abonné appelé (2548) et lorsqu’il dé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) en UDP (3324).

Promotion : 2009 – 2011

c

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

Auto provisioning – Gestion des contacts – Présence – Vidéo surveillance

Figure X-8 : Le téléphone raccroche et asterisk envoi un message ICMP (3349). Le téléphone appelant arrête la transmission la communication et envoi les statistiques de l’appel.

ANNEXE - 2 : Codes sources des pages de gestion des contacts

Pour un petit rappel, les liens indiqués dans le fichier de configuration dans le serveur tftp doivent 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épertoire de contacts (PhoneDirectory.php) et le deuxième lien menant vers le fichier utilisé pour des services supplémentaires (services.php).

Je crée un fichier (db_connection.php) qui sera utilisé par n’importe quel autre fichier né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 et l’afficher sur le téléphone ip cisco.

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

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

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 MySQLrequire("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

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

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

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

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</URL>\n"; $PersonNameList .= "</MenuItem>\n";

} $PersonNameList .= "</CiscoIPPhoneMenu>"; echo "$PersonNameList";}?>

Ce code est utilisé pour afficher la page suivante avec les contacts restants au cas où le té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 contenuheader("Content-Type: text/xml");# On inclut le fichier de connexion à la base de données to MySQLrequire("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

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

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 les téléphones cisco.

services.php

<?php########################################### Configuration Chemin vers ce fichier php#$Server = "http://Adresse IP Serveur Web/contacts"; # sans le / à la fin!

Promotion : 2009 – 2011

h

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

Auto provisioning – Gestion des contacts – Présence – Vidéo surveillance

$Server = "http://192.168.1.1/contacts";############################################ Type de contenu : xmlheader("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 : xmlheader("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";

Promotion : 2009 – 2011

i

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

Auto provisioning – Gestion des contacts – Présence – Vidéo surveillance

$menu .= "<InputFlags>A</InputFlags>\n";$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 : xmlheader("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 HomeScreen\n";$menu .= "</Text>\n";$menu .= "</CiscoIPPhoneText>\n";echo $menu;?>

Promotion : 2009 – 2011

j

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

Auto provisioning – Gestion des contacts – Présence – Vidéo surveillance

ANNEXE - 3 : Procédure de configuration de compte dans x-lite

Pour 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

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

Auto provisioning – Gestion des contacts – Présence – Vidéo surveillance

Figure X-11 : ajout des paramètres du compte

Figure X-12 : Le logiciel s'enregistre sur le serveur

Promotion : 2009 – 2011

l