En effet, le logiciel permettant de réaliser des SVI (dont j ai oublié le nom) ne vous servira que pour des scripts dit généraux, limité dans ses fonctionnalités. Vous devrez donc taper le code à la main. Et oui c'est la rançon du succès.

Bon commençons, le theme de ce TUTO est de réaliser un SVI, permettant d'interconnecter deux personnes pour un dialogue en direct. Mais voila, comment faire ???

Ce script a été réaliser en 2005 et n'a jamais servi (mais fonctionne tres bien). Donc pour commencer un SVI il nous faut le créer dans le logiciel de SVI, vous l'enregistrer et c'est tout. Apres on travaillera avec un éditeur de texte standard.

Ce script n'a qu'un but éducatif. dans mon prochain billet j'expliquerai les fonctions importantes
ps: ce script a été réaliser sans aucune aide de la part de Vocalcom. J'attend vos commentaires
/* ---------------------------------------*/
/* Code genere le 12/01/2005 13:10  */
/* Scenario : CONNECTION               */
/* Langage  : Onnet32                       */
/* (c) Abys 2005 :                             */
/* -------------------------------------- */

#include "\hermes_p\recept.onh"
#include "\VOCALCOM\027\includes\fonctions.ons"
#include "\VOCALCOM\027\includes\variables.ons"

Init_Call:
	NETVOICE_IN_ACCEPT;							// On accepte l'appel
	NET_IN_WAIT_CALL;
	NET_IN_RLIB_ON_GOTO(Fin_scenario);			// branchement fin de scenario si raccroche

	/* init des variables */
	$NumeroTel="0" & NET_IN_ANI;					// On recupere le numero de l'appelant
	$Date=DATE_TIME("DD/MM/YYYY hh:mm:ss",0);	// Date et heure de l'appel
	$Heure_debut=DATE_TIME("hh:mm:ss",0);		// Heure de debut
	$Clef=DATE_TIME("DDMMYYYYhhmmss",0);		// Creation de la clef primaire
	$Ctx=$SysNetChannel[CTX_IN];					// Numero de la ligne
	$DataBase="Appels.mdb";						// La bd utilisee

Start:
	/* Message d'accueil  : Bonjour, ... */
	VOICE_PLAY(RepMessages & "accueil.wav",dtmfclear=1,dtmfend="0123456789*#");

	/* Message info legale : Pour les infos légales tapez "*"  */
	VOICE_PLAY(RepMessages & "pour_info_legale.wav",dtmfclear=1,dtmfend="0123456789*#");
	/* Message Fin info legale  */

	/* Message RCS : RCS numero ....*/
	$GetDTFM="";
	VOICE_GET_DTMF(1,300,$GetDTFM);
	if ($GetDTFM=="*") { VOICE_PLAY(RepMessages & "mes_rcs.wav",dtmfclear=1,dtmfend="0123456789*#");}
	/* Fin Message RCS */
	
	/* Message +18 ans : Avez vous plus de 18 ans si oui tapez "*" */
Verif_age:
	VOICE_PLAY(RepMessages & "mes_plus_18ans.wav",dtmfclear=1,dtmfend="0123456789*#");
	$GetDTFM="";
	VOICE_GET_DTMF(1,300,$GetDTFM);
	if ($GetDTFM=="*")
	{
		GOTO (AgeOK);								// J'ai plus de 18 ans Go AgeOk
	}	
	if ($GetDTFM !="")
	{								/* Message : Désolé mais ce service est reserve au plus de 18ans */
		VOICE_PLAY(RepMessages & "mes_desole_18plus.wav",dtmfclear=1,dtmfend="0123456789*#");
		GOTO (Fin_scenario);
	}
	GOTO (Verif_age);								// On boucle si aucune touche appuyee
	/* Fin +18 ans */
AgeOK:
	
	/* Message département : Veuillez tapez le numero de votre departement et terminer par "#" */
	$TmpDepartement="";
	VOICE_PLAY(RepMessages & "mes_departement.wav",dtmfnb=1,dtmfclear=1,dtmfend="0123456789*#");
	VOICE_GET_DTMF(3,800,$TmpDepartement);
	if ($TmpDepartement !="")
	{
		if (STR_RIGHT($TmpDepartement,1)=="#")
		{
			if (STR_LEN($TmpDepartement)==3)
			{
				$Departement=STR_LEFT($TmpDepartement,2);
				if (FILE_SIZE(RepSons & "chiffres\" & $Departement & ".wav")>0)
				{
					VOICE_PLAY(RepSons & "chiffres\" & $Departement & ".wav");
					GOTO (DepOK);
				}
			}
		}
	}
	GOTO (AgeOK);
DepOK:
		/* Si on raccroche on supprime tout dans la bd et le message */
		NET_IN_RLIB_ON_GOTO(Fin_Supprime);			// branchement fin de scenario si raccroche
		/*  Fin Si on raccroche on supprime tout dans la bd et le message */

		/* On enregistre les infos dans la BD */
		$Query=$"INSERT INTO APPELS (CLEF,DEBUT,TEL,DEP,CTX,ONLINE,ONCHAT) VALUES('$Clef','$Date','$NumeroTel','$Departement','$Ctx','YES','NO')";
		$Result=VBASE_EXECUTE(RepBase & $DataBase,"",$Query);
		DEBUG;	
		/* Fin On enregistre les infos dans la BD */
	/* Fin Message département */

	/* Enregistre Message */
	Record_Annonce;
	WAIT(100);
	/* Fin Enregistre Message */

	/* Boucle Principale*/
Boucle:
	/* Message : Vous allez pouvour ecouter les messages, si vous souhaitez repondre tapez 1 */
	VOICE_PLAY(RepMessages & "mes_ecoute_message.wav",dtmfnb=1,dtmfclear=1,dtmfend="0123456789*#");
	/* On recherche les messages dans la bd */
	$Query=$"SELECT COUNT(MESSAGE) AS TOTAL FROM APPELS WHERE CLEF<>'$Clef' AND ONLINE='YES'";
	$Result=VBASE_SELECT_READ(RepBase & $DataBase,"",$Query,"TOTAL",($NbMessage),error=1);

	$Query=$"SELECT CLEF,MESSAGE,ONLINE,ONCHAT,CTX,DEP FROM APPELS WHERE CLEF<>'$Clef' AND ONLINE='YES'";
	VBASE_ALLOC_NOT_EMPTY($Ressource,RepBase & $DataBase,"",$Query);
	//VBASE_REPAIRDATABASE(RepBase & $DataBase);
	//if ($Ressource<=0) {RETURN(0);}
	//VBASE_MOVE_FIRST($Ressource);
	$NbMessageTmp=1;
	while ($NbMessageTmp<=$NbMessage) do	
	{
		VBASE_READ($Ressource,"CLEF,MESSAGE,ONLINE,ONCHAT,CTX,DEP",($ClefDest,$Message,$OnLine,$OnChat,$Ctx_Destination,$Departement));
		/* On test si le message existe si oui on le joue, et on peut y repondre*/
		if (FILE_SIZE($Message)>0 && $OnLine=="YES")
		{
			VOICE_PLAY($Message,dtmfnb=1,dtmfclear=1,dtmfend="0123456789*#");
			/* Le client dépose une annonce */
			Depose_Annonce;
		}
			/* On test si le client a un / des messages */
			Recherche_Messages;
			/* On test si qqun veut entrer en com avec moi*/
			VerifConference;
			
		VBASE_MOVE_NEXT ($Ressource);
		$NbMessageTmp=$NbMessageTmp+1;
		DEBUG;
	}
	VBASE_FREE($Ressource);
	WAIT(100);
	GOTO (Boucle);								// On boucle les messages

	/* Fin Boucle Principale*/

Fin_Supprime:
	/* On supprime tout et mise a jour de la base */
	DeleteAll;
	/* Fin On supprime tout et mise a jour de la base */

Fin_scenario:
	/* On ferme tout et on raccroche */
	VBASE_FREE($Ressource);
	VBASE_FREE($Ressource_Boite);
	VOICE_STOP_FUNCTION;
	NET_IN_RLIB_OFF;
	NET_IN_FREE;
	NETVOICE_IN_FREE;
	SCRIPT_RETURN("");