Tapi : mettre en relation deux postes telephoniques

Soyez le premier à donner votre avis sur cette source.

Vue 15 824 fois - Téléchargée 1 001 fois

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/ms728229%28v=vs.85%29.aspx
http://207.46.16.251/en-us/library/ms734850%28VS.85%29.aspx

Source / Exemple :


<?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...

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.