DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Fonctions WLangage / Communication / Fonctions Téléphone
  • Principe
  • Les différentes étapes
  • Exemple
  • Exemple permettant de gérer les appels entrants dans le thread principal
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Principe
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.
Les différentes étapes
Pour gérer les appels entrants dans une application WINDEV ou WINDEV Mobile :
  1. 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ériqueListe 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ériqueSélectionne le périphérique TAPI qui sera utilisé lors des opérations de téléphonie suivantes :
  2. 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é.
  3. 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ébutRenvoie 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é.
        telAppelFinRenvoie la date et l'heure de la fin de l'appel.
        telDuréeAppelRenvoie 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éroAppelantPermet de connaître le numéro de téléphone appelant (qui appelle).
      • effectuer des opérations spécifiques :
        telArrêteForce l'arrêt de la lecture d'un message pré-enregistré (fonction telJoue).
        telEnregistreEnregistre la communication en cours sous forme d'un fichier ".WAV".
        telJoueJoue un fichier sonore (.WAV) pour la ligne spécifiée.
        telNumérotePermet de simuler l'utilisation des touches du clavier téléphonique.
        telRépondAppelRépond à un appel entrant détecté.
        telToucheEnfoncéePermet 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).
  4. Pour terminer la session de détection d'appels entrants, utilisez la fonction telFinDétectionAppel.
Exemple

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 :
WD Téléphonie 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
Version minimum requise
  • Version 9
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 25/05/2022

Signaler une erreur ou faire une suggestion | Aide en ligne locale