Téléphonie sur IP : développements réalisés
IP Telephony : software development work

Objet XML <CiscoIPPhoneExecute>

Parmi les objets XML définis par Cisco pour les postes IP, l'objet <CiscoIPPhoneExecute> a un comportement particulier. Il permet de diriger le navigateur XML / HTTP d'un poste IP Cisco vers une URL particulière. Pour ce faire, une requête de type POST devra être adressée au poste IP Cisco à la destination suivante : http://x.x.x.x/CGI/Execute, où x.x.x.x représente l'adresse IP du poste IP Cisco cible.

La requête adressée devra contenir un champ 'XML' qui contiendra l'objet XML que l'on désire 'poster' au serveur HTTP du poste IP Cisco. Le format de cet objet est le suivant :
<CiscoIPPhoneExecute>
<ExecuteItem URL="http://y.y.y.y/anyUri">
</CiscoIPPhoneExecute>

Si le poste IP Cisco interprète correctement la requête, son navigateur HTTP lancera une requête HTTP de type GET vers l'URL http://y.y.y.y/anyUri. Il est nécessaire de s'authentifier (CM v.3.2) auprès du poste pour pouvoir lui adresser ce type de requête. Une authentification HTTP de base (basic HTTP Authentication) en tant qu'utilisateur associé au poste IP Cisco cible suffit, dans le cas contraire, le poste IP Cisco retournera une erreur de type 4 (Authentication Error).

Ci-dessous un exemple de code Java pour diriger un poste IP Cisco (adresse IP 192.168.1.1) vers l'URL 'http://192.168.1.2/anyUri' :

try {

URL url = new URL("http://192.168.1.1/CGI/Execute");
HttpURLConnection connection = (HttpURLConnection)url.openConnection();

// Codage de la chaîne au format URL
String query = "XML=" + URLEncoder.encode("<CiscoIPPhoneExecute>\n<ExecuteItem URL=\"http://192.168.1.2/anyUri\" />\n</CiscoIPPhoneExecute>");

connection.setDoOutput(true);
connection.setDoInput(true);
connection.setUseCaches(false);

connection.setRequestProperty("Content-Length", new String(query.length()));
connection.setRequestMethod("POST");
// Authentification nécessaire (codage en Base64)
connection.setRequestProperty("Authorization","Basic dXNlcjpwYXNzd29yZAo=");
connection.setRequestProperty("Accept", "*/*");

// Envoi de la requête via un objet OutputStreamWriter
OutputStreamWriter osw = new OutputStreamWriter(connection.getOutputStream());
osw.write(query);
osw.flush();
osw.close();

// Affichage du statut HTTP de la réponse
System.out.println(": Response Status = " + connection.getResponseMessage());
connection.disconnect();

}

catch (IOException ie) { ie.printStackTrace(); }

Objet XML <CiscoIPPhoneExecute>

auteur : Philippe Sultan ------- date de mise à jour : 17 juillet, 2003