|
|
|
|
|
- Principe
- Les différentes étapes
- Exemple
- Exemple permettant de gérer les appels entrants dans le thread principal
Téléphonie : Gérer les appels entrants
La gestion des appels entrants est réalisée dans un "Thread" spécifique. Lorsque un appel entrant est détecté, la procédure associée au thread est exécutée. C'est dans cette procédure que la gestion de l'appel est réalisée.
Pour gérer les appels entrants dans une application WINDEV ou WINDEV Mobile : - Déterminez si nécessaire le périphérique TAPI sur lequel la détection d'appels doit être effectuée. Utilisez les fonctions :
| | telCapacité | Renvoie les caractéristiques d'un périphérique de téléphonie. | telListePériphérique | Liste les périphériques de téléphonie compatibles TAPI 2.0 et TAPI 3.1 installés sur le poste en cours. | telPériphérique | Sélectionne le périphérique TAPI qui sera utilisé lors des opérations de téléphonie suivantes : |
- Démarrez la détection d'appels entrants grâce à la fonction telDémarreDétectionAppel. Cette fonction exécute une procédure WLangage spécifique. Cette procédure sera automatiquement exécutée lorsque un appel entrant sera détecté.
- Dans cette procédure, il est possible de :
- connaître l'état de l'appel grâce aux constantes suivantes :
- telLigneOccupée : La ligne est actuellement occupée.
- telLigneDécrochée : La ligne est connectée.
- telLigneNumérote : Numérotation en cours.
- telLigneTonalité : La ligne reçoit la tonalité
- telLigneRaccrochée : Le correspondant a raccroché
- telLigneAttendRéponse : L'appel est composé : recherche du correspondant
- telLigneSonnerie : Sonnerie en cours chez le correspondant
- telNouvelAppel : Nouvel appel détecté en attente de réponse ou de rejet.
- telInformationAppel : Les informations supplémentaires (présentation du numéro) sont disponibles. Ces informations ne sont généralement disponibles qu'après la première sonnerie.
- gérer complètement l'appel grâce aux fonctions suivantes :
- obtenir les caractéristiques de l'appel entrant :
| | telAppelDébut | Renvoie la date et l'heure du début de l'appel (entrant ou sortant). | telAppelEstTerminé | Permet de savoir si l'appel (sortant ou entrant) est terminé. | telAppelFin | Renvoie la date et l'heure de la fin de l'appel. | telDuréeAppel | Renvoie la durée de l'appel (différence entre la date et l'heure du début de l'appel et la date et l'heure de fin de l'appel). | telNuméroAppelant | Permet de connaître le numéro de téléphone appelant (qui appelle). |
- effectuer des opérations spécifiques :
| | telArrête | Force l'arrêt de la lecture d'un message pré-enregistré (fonction telJoue). | telEnregistre | Enregistre la communication en cours sous forme d'un fichier ".WAV". | telJoue | Joue un fichier sonore (.WAV) pour la ligne spécifiée. | telNumérote | Permet de simuler l'utilisation des touches du clavier téléphonique. | telRépondAppel | Répond à un appel entrant détecté. | telToucheEnfoncée | Permet de connaître l'historique des touches enfoncées sur le clavier téléphonique depuis la dernière utilisation de la fonction telToucheEnfoncée. |
Attention : Cette procédure WLangage étant exécutée dans un thread, toutes les contraintes des threads doivent être respectées (ouverture de fenêtre impossible, pas de gestion des timer, pas de gestion des événements, ...). Pour plus de détails, consultez Gestion des threads avec WINDEV. Il est conseillé de limiter les traitements réalisés dans cette procédure. En effet, pendant la durée de l'appel, la détection d'autres appels (ainsi que tous les événements de téléphonie) est gelée. Si des traitements longs doivent être réalisés, il est conseillé de traiter l'appel dans le thread principal de l'application (voir exemple ci-dessous).
- Pour terminer la session de détection d'appels entrants, utilisez la fonction telFinDétectionAppel.
Exemple permettant de gérer les appels entrants dans le thread principal - Code de déclaration des globales de la fenêtre réalisant la détection d'appels. Dans ce code sont déclarés les différents événements permettant de gérer les appels dans le thread principal de l'application.
GLOBAL gnIDEvenement est un entier // On met en place un événement pour gérer les appels entrant en popup SI Evénement("AppelDetecté", "*.*", "AppelTel") = 0 ALORS Erreur("Impossible de gérer la popup de détection d'appel", ErreurInfo()) FIN SI Evénement("FinAppelDetecté", "*.*", "AppelTelFin") = 0 ALORS Erreur("Impossible de gérer la popup de détection d'appel", ErreurInfo()) FIN SI Evénement("IdentifiantAppelDetecté", "*.*", "AppelTelInfo") = 0 ALORS Erreur("Impossible de gérer la popup de détection d'appel", ErreurInfo()) FIN - Code d'initialisation de la fenêtre : ce code permet de démarrer la procédure de détection d'appels.
// On démarre le service de détection des appels SI telDémarreDétectionAppel("AppelEntrant", telOptionTypeFax, "DetectionAppel") ALORS // Le service de détection des appels a démarré Message("Détection des appels activés") SINON // Le service de détection des appels n'a pas démarré  Erreur("Impossible de démarrer la détection des appels" + RC + ... "Détail de l'erreur :" + RC + ErreurInfo(errMessage)) FIN - Procédure de détection d'appels :
Cette procédure permet de détecter les appels entrants. Pour chaque appel entrant, les caractéristiques de l'appel sont transmises au thread principal grâce à la fonction PostMessage.
PROCÉDURE DetectionAppel(nIDService, nIDAppel, nStatut) // AVERTISSEMENT : // Les traitements réalisés dans cette procédure sont appelés à partir d'un thread // La gestion de l'affichage doit être réalisé à partir du thread principal // (d'où l'utilisation de PostMessage) // Pour déboguer ce type de traitement, vous devez utiliser la fonction "Trace" // détection des appels entrants SELON nStatut // Détection d'un nouvel appel : // Note : On ne disposera de plus d'informations qu'après au moins une sonnerie CAS telNouvelAppel :  // On signale l'arrivée d'un nouvel appel à la fenêtre principale  // pour ouvrir une Popup  PostMessage(Handle(Fenêtre_Appel), "AppelTel", nIDAppel, nStatut)  // On dispose d'informations sur l'appel CAS telInformationAppel :  // On signale l'arrivée d'un nouvel appel à la fenêtre principale  // pour ouvrir une Popup  PostMessage(Handle(Fenêtre_Appel), "AppelTelInfo", nIDAppel, nStatut)  // La ligne a été raccrochée CAS telLigneRaccrochée:  // On signale l'arrivée d'un nouvel appel à la fenêtre principale  // pour ouvrir une Popup  PostMessage(Handle(Fenêtre_Appel), "AppelTelFin", nIDAppel, nStatut) FIN
Liste des exemples associés :
|
Exemples complets (WINDEV) : WD Téléphonie
[ + ] Cet exemple illustre les fonctions téléphonie de WINDEV. Dans cet exemple, nous abordons deux thèmes principaux : 1/ Comment composer un numéro de téléphone 2/ Détecter et identifier des appels entrants Résumé de l'exemple livré avec WINDEV : Cet exemple présente les différentes fonctions de téléphonie fournies en standard avec WINDEV. Après avoir saisi quelques contacts dans la fenêtre principale (la table est en saisie), vous pourrez les appeler directement à partir de l'application (à condition que votre ordinateur soit équipé d'un modem correctement installé). Vous pourrez également avoir une notification des appels entrants et obtenir l'identité de l'appelant
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|