begin process at 2012 05 27 20:34:28
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseau & Internet

 > TAPI : METTRE EN RELATION DEUX POSTES TELEPHONIQUES

TAPI : METTRE EN RELATION DEUX POSTES TELEPHONIQUES


 Information sur la source

Note :
Aucune note
Catégorie :Réseau & Internet Classé sous :tapi, php, CreateCall, tranfsert Niveau :Initié Date de création :16/05/2011 Date de mise à jour :17/05/2011 10:17:53 Vu / téléchargé :3 493 / 178

Auteur : ravery

Ecrire un message privé
Site perso
Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note

 Description

Permet d'avoir un bouton 'composer numéro' sur une appli de gestion en interne
Le principe : j'ai le numéro de poste du gestionnaire (123)
j'ai le numéro du client (012345649)
j'attend que le gestionnaire décroche (sinon occupation deligne inutile et couteuse)
je prépare la ligne vers le client
je transfert la "préparation" vers le poste du gestionnaire


Notes :
Je fournis la méthode dumpC qui m'a bien aidée à avoir la structure des objets utilisés
Ainsi que les liens ci-dessous (à lire et comprendre pour avancer plus loins)
http://msdn.microsoft.com/en-us/library/m s728229%28v=vs.85%29.aspx
http://207.46.16.251/e n-us/library/ms734850%28VS.85%29.aspx

Source

  • <?php
  • $numeroPosteInterne = '123';
  • $numeroTelClient = '0123456789';
  • // pour l'autoCompletion
  • require('Tapiclasses.php');
  • // initialise la Dll (tapi3.dll)
  • $tapi = new COM("TAPI.TAPI.1") or die("Impossible d'instancier un objet COM");
  • /*@var $tapi ITTAPI2 */
  • $res = $tapi->Initialize();
  • // Cherche le bon Driver
  • $objCollAddresses = $tapi->Addresses;
  • for($i = 1; $i <= $objCollAddresses->Count; $i++) {
  • try {
  • $objAddress = $objCollAddresses->Item($i);
  • if (substr($objAddress->AddressName, 0, 15) == 'IP Office Phone') {
  • break;
  • }
  • } catch (Exception $e) {
  • die('Erreur lors de la recherche du driver');
  • }
  • }
  • /*@var $objAddress ITAddress2 */
  • if($objAddress != null) {
  • try {
  • $pConsultCall = null;
  • $pBasicCall = null;
  • /*@var $pBasicCall ITBasicCallControl2 */
  • /*@var $pConsultCall ITBasicCallControl2 */
  • // lance la première communication (Opérateur)
  • $pBasicCall = $objAddress->CreateCall($numeroPosteInterne,1,8);
  • // le true c'est pour dire que le script s'arrete tant que c'est pas décroché
  • $pBasicCall->connect(true);
  • // lance la première communication (Destinataire)
  • $pConsultCall = $objAddress->CreateCall($numeroTelClient,1,8);
  • $pBasicCall->BlindTransfer($numeroTelClient);
  • die();
  • } catch (Exception $e) {
  • // bon bah on va raccrocher
  • echo 'Excception '.$e;
  • raccroche($e, $pBasicCall, $pConsultCall);
  • }
  • }
  • $res = $tapi->Shutdown();
  • die();
  • function raccroche($message, $pBasicCall, $pConsultCall) {
  • $pBasicCall->Disconnect(3);
  • if ($pConsultCall != null) {
  • $pConsultCall->Disconnect(3);
  • }
  • echo '<h3>Raccroche</h3>';
  • echo '<br />'.$message;
  • }
  • // dump d'un objet TAPI
  • function dumpC($comObject) {
  • ob_start();
  • com_print_typeinfo($comObject);
  • $output = ob_get_contents();
  • ob_end_clean();
  • dump($output);
  • }
  • // dump d'un objet classique
  • function Dump() {
  • if(func_num_args()) {
  • foreach(func_get_args() as $var) {
  • $var = str_replace(' *//*', '<br />', $var);
  • print '<pre>';
  • var_dump($var);
  • print '</pre>';
  • }
  • }
  • }
  • ?>
<?php
$numeroPosteInterne	= '123';
$numeroTelClient	= '0123456789';

// pour l'autoCompletion
require('Tapiclasses.php');

// initialise la Dll (tapi3.dll)
$tapi = new COM("TAPI.TAPI.1") or die("Impossible d'instancier un objet COM");
/*@var $tapi ITTAPI2 */
$res = $tapi->Initialize();

// Cherche le bon Driver
$objCollAddresses = $tapi->Addresses;
for($i = 1; $i <= $objCollAddresses->Count; $i++) {
	try {
		$objAddress = $objCollAddresses->Item($i);
		if (substr($objAddress->AddressName, 0, 15) == 'IP Office Phone') {
			break;
		}
	} catch (Exception $e) {
		die('Erreur lors de la recherche du driver');
	}
}
/*@var $objAddress ITAddress2 */

if($objAddress != null) {
	try {
		
		$pConsultCall = null;
		$pBasicCall = null;
		/*@var $pBasicCall ITBasicCallControl2 */
		/*@var $pConsultCall ITBasicCallControl2 */
		
		// lance la première communication (Opérateur)
		$pBasicCall = $objAddress->CreateCall($numeroPosteInterne,1,8);
		// le true c'est pour dire que le script s'arrete tant que c'est pas décroché
		$pBasicCall->connect(true);
		
		// lance la première communication (Destinataire)
		$pConsultCall = $objAddress->CreateCall($numeroTelClient,1,8);
		$pBasicCall->BlindTransfer($numeroTelClient);
		die();
		
	} catch (Exception $e) {
		// bon bah on va raccrocher
		echo 'Excception '.$e;
		raccroche($e, $pBasicCall, $pConsultCall);
	}
}

$res = $tapi->Shutdown();
die();

function raccroche($message, $pBasicCall, $pConsultCall) {
	$pBasicCall->Disconnect(3);
	if ($pConsultCall != null) {
		$pConsultCall->Disconnect(3);
	}
	echo '<h3>Raccroche</h3>';
	echo '<br />'.$message;
}

// dump d'un objet TAPI
function dumpC($comObject) {
	ob_start();		
	com_print_typeinfo($comObject);
	$output = ob_get_contents();
	ob_end_clean();
	dump($output);
}

// dump d'un objet classique
function Dump() {
    	if(func_num_args()) {
    		foreach(func_get_args() as $var) {
    			$var = str_replace(' *//*', '<br />', $var);
    			print '<pre>';
				var_dump($var);
				print '</pre>';
    		}
    	}
    }

?>

 Conclusion

Quasi rien de ce qui touche à Tapi n'est documenté.
A l'heure de l'essor des systèmes de communication c'est dommage...

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

17 mai 2011 10:17:54 :
Mise a jour

 Sources du même auteur

Source avec Zip WINAMP EVERYWHERE
Source avec Zip Source avec une capture SAUVEGARDE D'UNE BASE DE DONNEES (MYSQL) AVEC CHOIX DES TABL...
VOIR TOUTES LES VARIABLE ACCESSIBLES
Source avec Zip VERIFICATEUR DE LIENS À PARTIR D'UNE BASE DE DONNÉE
Source avec Zip SCRIPT DE SAUVEGARDE AUTOMATIQUE DES FICHIERS RÉCENEMENT POS...

 Sources de la même categorie

INSPECTEUR DE PAGES (VÉRIFIEZ SI DES SITES AFFICHENT UN TEXT... par pablo836
Source avec Zip Source avec une capture GÉOLOCALISATION par pgl10
Source avec Zip CLIENT / SERVEUR : LES SOCKETS par Morphinof
Source avec Zip VALIDATEUR_3WC par lezj
Source avec Zip MYGGL GOOGLE API CLASS FOR BEGINERZ par lezj

 Sources en rapport avec celle ci

AFFICHÉ SUR UN TABLEAU AVEC PAGINATION ET BASE DE DONNÉES par stormxp
Source avec Zip POO - FORMULAIRE NEWSLETTER PHP - PROFESSEUR-PHP.COM par mtrix000
REDIMENSIONNEMENT D'IMAGE PHP par JStevens
Source avec Zip COLLECTION.CLASS.MIN.PHP par thunderhunter
EXEMPLE D'APPLICATION DE L'ALGORITHME DE DIJKSTRA EN PHP par philtr8

Commentaires et avis

Aucun commentaire pour le moment.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

lib TAPI pour php [ par tafa60 ] [^^langue3]Bonjour, je suis à la recherche de la lib TAPI (Telephony Application Program Interface) pour php. C'est de l'open, mais impossible de met PHP Recherche chaîne de caractère [ par regisgb17 ] Bonjour, Sur mon site www.alpesfaune.fr j'ai créé une recherche de photos. J'utilise en php la fonction eregi() qui recherche si une chaîne de car php sous linux [ par begueradj ] Bonjour, Grâce à un tutorial, je viens d'installer Apache, PHP, MySQL et PhpMyAdmin sous OpenSUSE: je ne sais pas où je dois mettre (quel répertoire Function, Require, Include [ par eli42 ] Bonjour a tous (tes) voila j'ai un peu chercher sur delphi fr et google mais je n'ai pas vu de solution à ma question j'expose mon probleme ma page écrire bonne endroit fichier [ par loblobloblob ] Bonjour, je vous expose mon probléme en espérant que vous pourrais m'aider. je dois faire un menu extensible sur un site, pour cela j'ai créé une BDD Comment recevoir une nouvelle Variable php ? [ par djrz ] Comment recevoir une nouvelle Variable php (chaque 2 secondes)(sans passer par un div) ? J'essai de m'expiquer : Dans une page en php, j'ai besoin d' Comment recevoir une nouvelle Variable php (chaque 2 secondes)(sans passer par un div) ? [ par djrz ] Comment recevoir une nouvelle Variable php (chaque 2 secondes)(sans passer par un div) ? J'essai de m'expiquer : Dans une page en php, j'ai besoin d Problème avec SoapClient pour consommer un web service [ par mimosa803 ] Bonjour, Je souhaite me connecter à un web service dans le fichier WSDL est disponible sur ce lien. Sauf que, quand j'exécute mon code php une erreur Enregistrement d'information sur une autre page [ par jdmcreator ] Bonjour, Tout d'abord débuté avec une petite introduction. Je suis codeur Javascript et je ne connais (malheureusement) rien à PHP. Ce que je souhait envoyer eamil avec php [ par jolina87 ] Bonjour,je suis débutante en php et j'essay de faire queleque chose.Donc mon travail demandé est à partir d'un formulaire contenant adresse, sujet et


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,936 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales