Script d'exemple de transfert d'appel
Nous présentons ici quelques exemples de transfert d'appel avec le serveur vocal.
Transfert d'appel via l'infrastructure de téléphonie
Ce script utilise la synthèse vocale.
Voici le script correspondant ci-dessous. Nous détaillerons les différentes instructions par la suite.
Dim sCallerNum As String
Dim sCalledNum As String
Dim nRes As Integer
Dim nTransRes As Integer
sCallerNum = GETCALLERNUMBER()
sCalledNum = GETCALLEDNUMBER()
PLAYTEXT("Bienvenue sur le test de transfert du serveur vocal." , "fr-fr")
WAITENDOFPLAY(1000)
REQTELEPHONYTRANSFER(0, "1096", FALSE)
nRes = GETTRANSFERSTATUS(30000)
If nRes = 2 Then
PLAYTEXT("Vous allez recevoir un appel en provenance du " + sCallerNum + ", appuyez sur une touche." , "fr-fr")
If GETKEY(10000) >= 0 Then
nTransRes = COMPLETETRANSFER(40000, TRUE)
If nTransRes = 2 Then
CANCELTRANSFER()
PLAYTEXT("Le transfert n'est pas encore lancé." , "fr-fr")
ElseIf nTransRes = 0 Then
PLAYTEXT("Désolé, le transfert n'a pas fonctionné." , "fr-fr")
Endif
Else
CANCELTRANSFER()
PLAYTEXT("Désolé, votre correspondant n'a pas accepté." , "fr-fr")
EndIf
ElseIf nRes = 0 Then
CANCELTRANSFER()
PLAYTEXT("L'appel n'a pas été accepté." , "fr-fr")
ElseIf nRes = 1 Then
CANCELTRANSFER()
PLAYTEXT("Personne ne répond ..." , "fr-fr")
EndIf
WAITENDOFPLAY(500)
DISCONNECT()
Tout d'abord, le script diffuse un message de bienvenue avec la fonction PLAYTEXT.
PLAYTEXT("Bienvenue sur le test de transfert du serveur vocal." , "fr-fr")
On attend ensuite 1 seconde après la fin de diffusion du message d'accueil. C'est la fonction WAITENDOFPLAY.
WAITENDOFPLAY(1000)
Le script initie alors un transfert d'appel vers le numéro "1096" avec la fonction REQTELEPHONYTRANSFER. Le transfert sera réalisé via l'infrastructure téléphonique (PBX, réseau téléphonique national ...). Le type de transfert (ici 0) ne concerne que les ports CAPI. (Voir documentation)
REQTELEPHONYTRANSFER(0, "1096", FALSE)
Le premier appel (l'appel entrant) est mis en attente.
Le script attend alors le décroché du numéro appelé (ici le 1096). La fonction GETTRANSFERSTATUS réalise cette attente.
nRes = GETTRANSFERSTATUS(30000)
Suivant le résultat de l'attente, plusieurs cas sont possibles :
2 : Le numéro appelé a décroché. Le script est alors connecté sur ce second appel. Le premier appel reste en attente.
0 : Le numéro appelé a refusé l'appel ou était occupé. Le transfert est toujours en cours. Le premier appel reste en attente. Il faudra donc annuler le transfert avec CANCELTRANSFER pour pouvoir à nouveau diffuser un message.
1 : Le numéro appelé n'a pas répondu dans le temps spécifié. Le transfert est toujours en cours. Le premier appel reste en attente. Il faudra donc annuler le transfert avec CANCELTRANSFER pour pouvoir à nouveau diffuser un message.
-1 : L'appel initial a été raccroché.
Si le second appel a abouti (retour 2), il est possible de diffuser du son sur ce deuxième appel. On utilise toujours la fonction PLAYTEXT.
PLAYTEXT("Vous allez recevoir un appel en provenance du " + sCallerNum + ", appuyez sur une touche." , "fr-fr")
Le script attend à présent l'appui sur une touche avec la fonction GETKEY.
If GETKEY(10000) >= 0 Then
Si aucune touche n'est appuyée, le premier appel reste en attente. Il faudra donc annuler le transfert avec CANCELTRANSFER pour pouvoir à nouveau diffuser un message.
Pour finaliser le transfert, il faut appeler COMPLETETRANSFER.
nTransRes = COMPLETETRANSFER(40000, TRUE)
Si la fonction réussit, le script est alors arrêté et les deux appels mis en relation.
Dans le cas contraire, il faudra donc annuler le transfert avec CANCELTRANSFER pour pouvoir à nouveau diffuser un message.
Transfert d'appel géré seulement par ALERT (Flux à flux)
Dans ce cas, les flux audio sont redirigés par ALERT. Nous utiliserons également la synthèse vocale.
L'utilisation de ce type de tranfert nécessite quelques prérequis.
-
Dans le cas du transfert avec redirection de flux audio, deux ports sont nécessaires. Un port sera utilisé pour l'appel entrant et l'autre pour l'appel sortant. Peu importe le type de port (COM, CAPI, SIP), les redirections de flux peuvent être effectuées d'un port à l'autre.
-
Deux scripts sont donc nécessaires : un pour le port entrant, l'autre pour le port sortant.
-
Un opérateur utilisant comme driver le script vocal sortant.
Voici les scripts correspondant ci-dessous. Les différentes instructions sont décrites par la suite.
Pour l'appel entrant :
Dim nRes As Integer
PLAYTEXT("Bienvenue sur le test du transfert flux à flux" , "fr-fr")
WAITENDOFPLAY(1000)
REQFLOWTOFLOWTRANSFER(gnUserId)
nRes = GETTRANSFERSTATUS(30000)
If nRes = 2 Then
WAITENDFLOWTRANSFER(120)
Else
PLAYTEXT("Désolé, ça ne marche pas" , "fr-fr")
EndIf
WAITENDOFPLAY(500)
DISCONNECT()
Tout d'abord, le script diffuse un message de bienvenue avec la fonction PLAYTEXT.
PLAYTEXT("Bienvenue sur le test du transfert flux à flux" , "fr-fr")
On attend ensuite 1 seconde après la fin de diffusion du message d'accueil. C'est la fonction WAITENDOFPLAY.
WAITENDOFPLAY(1000)
Le script initie alors un transfert d'appel vers l'opérateur avec l'OID gnUserId avec la fonction REQFLOWTOFLOWTRANSFER. Le transfert sera réalisé via ALERT. C'est pourquoi, il faut un opérateur défini (avec comme driver le second script) et un autre port pour effectuer l'appel.
REQFLOWTOFLOWTRANSFER(gnUserId)
Le script attend alors que l'opérateur appelé accepte le transfert. La fonction GETTRANSFERSTATUS réalise cette attente.
nRes = GETTRANSFERSTATUS(30000)
Suivant le résultat de l'attente, plusieurs cas sont possibles :
2 : Le numéro appelé a décroché et l'opérateur a accepté l'appel via la fonction ACCEPTTRANSFER dans le second script.
0 : Le numéro appelé a refusé l'appel ou était occupé.
1 : Le transfert est toujours en cours (Attente décroché, transfert pas encore accepté).
-1 : L'appel initial a été raccroché.
Si le second appel a abouti et le transfert a été accepté (retour 2), l'appelant et l'appelé sont en relation. Les flus audio sont redirigés par ALERT.
Pendant le transfert, le script attend la fin du transfert avec la fonction WAITENDFLOWTRANSFER.
WAITENDFLOWTRANSFER(120)
L'appel est ensuite déconnecté.
Le script de l'appel sortant :
Dim bRes As Boolean
Dim nRet As Integer
bRes = ISTRANSFERCHILDPORT()
If bRes Then
ACCEPTTRANSFER(TRUE)
nRet = WAITENDFLOWTRANSFER(120)
Else
PLAYTEXT("Ce n'est pas un transfert d'appel. Au revoir !", "fr-fr")
EndIf
WAITENDOFPLAY(1000)
DISCONNECT()
Le script contrôle en premier lieu si l'appel est un transfert avec la fonction ISTRANSFERCHILDPORT.
bRes = ISTRANSFERCHILDPORT()
Si l'appel a été lancé pour un transfert, nous acceptons le transfert. C'est la fonction ACCEPTTRANSFER qui effectue cette action.
ACCEPTTRANSFER(TRUE)
Maintenant que le transfert a été accepté, l'appelant et l'appelé sont en relation. Les flus audio sont redirigés par ALERT.
Pendant le transfert, le script attend la fin du transfert avec la fonction WAITENDFLOWTRANSFER.
WAITENDFLOWTRANSFER(120)
L'appel est ensuite déconnecté.