Partager via


Vue d’ensemble de la téléphonie assistée

Une fonctionnalité précieuse de la téléphonie est le petit ensemble de fonctions appelées téléphonie assistée. La téléphonie assistée est conçue pour rendre l’établissement d’appels vocaux et d’appels multimédias accessibles à n’importe quelle application, et pas seulement à celles dédiées aux fonctionnalités téléphoniques. En d’autres termes, la téléphonie assistée permet aux applications d’effectuer des appels téléphoniques sans avoir à connaître les détails des services de l’API de téléphonie complète. Il étend la téléphonie aux applications de traitement de texte, aux feuilles de calcul, aux bases de données, aux gestionnaires d’informations personnelles et à d’autres applications autres que la téléphonie.

Pour obtenir la liste des fonctions de téléphonie assistée TAPI 2.x de la téléphonie de base, consultez Informations de référence sur les fonctions rapides TAPI. TAPI 3.x prend en charge la téléphonie assistée via l’interface ITRequest .

L’utilité de la téléphonie assistée peut être illustrée par l’exemple suivant. Une application de feuille de calcul peut incorporer des fonctions qui composent un numéro de téléphone pour un appel vocal. Tant que l’application n’a besoin d’aucun contrôle d’appel détaillé fourni par l’API de téléphonie complète, la téléphonie assistée est le moyen le plus simple et le plus efficace de lui donner des fonctionnalités téléphoniques.

téléphonie assistée avec une application de feuille de calcul

La téléphonie assistée et l’API de téléphonie complète sont utilisées et implémentées de différentes manières. Il n’est donc pas recommandé de combiner les appels de fonction de téléphonie assistée et les appels de fonction d’API téléphonie au sein d’une seule application.

Utilisation de la téléphonie assistée

Les applications qui utilisent des services de téléphonie assistée lancent uniquement les demandes d’appel qui sont temporairement mises en file d’attente par TAPI. L’application destinataire de la demande récupère ces demandes et les exécute pour le compte de l’application de téléphonie assistée. La fonction tapiRequestMakeCall demande l’établissement d’un appel vocal. L’application qui demande ne contrôle pas l’appel.

TAPI permet à l’utilisateur d’établir des applications de destinataires de requête différentes ou identiques pour chacun de ces services. Une application devient un destinataire de requête en s’inscrivant auprès de lineRegisterRequestRecipient, dans lequel TRUE est spécifié comme valeur pour le paramètre bEnable. (La spécification de FALSE annule l’inscription de l’application en tant que destinataire de la demande, ce qu’elle doit faire lorsqu’elle a déterminé que ses tâches de destinataire sont effectuées pour la session active.) L’application sélectionne les services qu’elle souhaite gérer dans le paramètre dwRequestMode de lineRegisterRequestRecipient. Une valeur possible pour une requête est LINEREQUESTMODE_MAKECALL, pour montrer que l’application gère les demandes tapiRequestMakeCall . Si plusieurs applications s’inscrivent pour les mêmes services, un schéma de priorité est utilisé pour permettre à l’utilisateur de sélectionner l’application préférée pour la gestion des demandes. Ce schéma de priorité est identique à celui utilisé pour le transfert d’appel et le routage des appels entrants en fonction d’une liste de noms de fichiers dans HandoffPriorities dans le registre.

Demandes d’appel

La téléphonie assistée fournit des applications compatibles avec la téléphonie avec un mécanisme facile à utiliser pour passer des appels téléphoniques sans que le développeur soit pleinement alphabétisé en téléphonie.

La fonction tapiRequestMakeCall demande un appel vocal entre l’utilisateur et un tiers distant spécifié par son numéro de téléphone. La demande est envoyée à TAPI, qui la transmet à une application inscrite en tant que destinataire de ces demandes. Ce destinataire est une application de gestionnaire d’appels.

Une fois que l’application a effectué la demande, l’appel est entièrement contrôlé à partir de l’application de gestionnaire d’appels, car les applications de téléphonie assistée ne peuvent pas gérer les appels. Étant donné que les aspects les plus complexes de la téléphonie et de toutes les opérations d’interface utilisateur sont gérés par l’application de gestionnaire d’appels, les applications compatibles avec la téléphonie n’ont pas besoin d’être modifiées de manière substantielle. En fait, les applications qui permettent d’appeler cette opération à partir de leur langage de script intégré n’ont peut-être pas besoin d’être modifiées du tout.

La fonction tapiGetLocationInfo renvoie à l’application l’indicatif de pays ou de région et le code de ville (zone) que l’utilisateur a définis dans les paramètres d’emplacement actuels dans le Panneau de configuration téléphonie. L’application peut utiliser ces informations pour aider l’utilisateur à former des numéros de téléphone canoniques appropriés, par exemple en les proposant comme valeurs par défaut lorsque de nouveaux numéros sont entrés dans une entrée d’annuaire téléphonique ou un enregistrement de base de données.

Destinataires de la demande

Deux types d’applications sont nécessaires pour exécuter la téléphonie assistée. Les clients de téléphonie assistée sont des applications qui utilisent la téléphonie assistée en appelant les fonctions dont le préfixe est « tapi ». Un exemple d’une telle application cliente est une feuille de calcul à laquelle une commande de menu Numérotation ou un bouton de barre d’outils est ajouté.

Les serveurs de téléphonie assistée sont des applications qui peuvent exécuter des fonctions d’API de téléphonie qui résultent de l’appel d’une autre application à une fonction préfixée « tapi ». Pour se faire connaître en tant que serveur de téléphonie assistée, une telle application s’inscrit en tant que serveur à l’aide de la fonction lineRegisterRequestRecipient .

Les fonctions de la téléphonie assistée (qui commencent par le préfixe « tapi ») sont appelées fonctions de requête. Les applications de téléphonie assistée qui traitent ces demandes (serveurs de téléphonie assistée) sont appelées destinataires des demandes.

Traitement des demandes de téléphonie assistée

Le processus avec lequel les demandes sont remises et traitée est le suivant :

  1. Lorsque TAPI reçoit une demande de téléphonie assistée, il recherche un destinataire de la demande, c’est-à-dire une application actuellement inscrite pour traiter ce type de demande. S’il existe un destinataire de la demande, celle-ci est mise en file d’attente et l’application de priorité la plus élevée qui s’est inscrite pour le service de cette demande reçoit un message LINE_REQUEST . Le message informe le destinataire de la demande qu’une nouvelle demande est arrivée, et il contient une indication du mode de la demande.

  2. Si TAPI ne trouve pas une application en cours d’exécution pour traiter une telle demande, il tente de lancer une application qui a été inscrite comme capable de le faire. Ces informations d’inscription sont enregistrées dans HandoffPriorities dans le registre. TAPI tente de lancer des applications dans l’ordre dans lequel elles sont répertoriées dans la section HandoffPriorities . (Consultez l’étape suivante.)

    Si aucune application n’est actuellement inscrite, TAPI examine la liste des applications de traitement des demandes sur l’entrée associée dans HandoffPriorities. Si la ligne associée est manquante dans le fichier, si aucune application n’y est répertoriée ou si aucune des applications de la liste ne peut être lancée, la demande est rejetée avec l’erreur TAPIERR_NOREQUESTRECIPIENT.

    Lorsqu’un destinataire de demande est lancé (qu’il ait ou non été lancé par TAPI), il lui incombe d’appeler lineRegisterRequestRecipient pendant le processus de démarrage et de s’inscrire en tant que destinataire de la demande.

  3. Si une ou plusieurs applications sont répertoriées dans l’entrée, TAPI commence par la première application répertoriée (priorité la plus élevée) et tente de la lancer à l’aide de la fonction CreateProcess . Si la tentative de lancement de l’application échoue, TAPI tente de lancer l’application suivante dans la liste. Lorsqu’une application est lancée avec succès, TAPI met simplement en file d’attente la demande et retourne une indication de réussite à l’application, même si la demande n’a pas encore été signalée au destinataire de la demande.

    Une fois l’application destinataire de la demande lancée, elle appelle lineRegisterRequestRecipient, ce qui provoque l’envoi d’un message LINE_REQUEST , signalant que la demande est mise en file d’attente. Si, pour une raison quelconque, l’application lancée ne s’inscrit jamais, la demande reste en file d’attente et reste dans la file d’attente indéfiniment jusqu’à ce qu’une application s’inscrive pour ce type de demande.

  4. Si TAPI trouve une telle application inscrite déjà en cours d’exécution ou en lance une, elle met la demande en file d’attente, en envoyant un message LINE_REQUEST à l’application serveur et retourne une indication de réussite pour l’appel de fonction à l’application de téléphonie assistée. Ce message de réussite indique uniquement que la demande a été acceptée et mise en file d’attente, et non qu’elle a été exécutée avec succès.

Lorsque l’application serveur est prête à traiter une demande, elle appelle la fonction lineGetRequest . Cela lui permet de recevoir toutes les informations dont il a besoin, telles qu’une adresse à composer. Il traite ensuite la requête, à l’aide des fonctions TAPI (telles que lineMakeCall et lineDrop) qui seraient autrement utilisées pour passer l’appel. L’appel de lineGetRequest supprime la demande de TAPI, et les paramètres de la requête sont copiés dans une mémoire tampon de requête allouée par l’application. La taille et l’interprétation du contenu de la mémoire tampon dépendent du mode de requête.

Le serveur doit s’assurer qu’il utilise les paramètres appropriés lors de l’exécution des demandes. Dans ce cas, ces étapes sont suivies :

  1. Le destinataire de la demande reçoit d’abord un message LINE_REQUEST l’informant que des demandes peuvent exister pour lui dans la file d’attente des demandes. Cela indique à l’application d’appeler lineGetRequest et de continuer à l’appeler jusqu’à ce que la file d’attente soit vidée (si la demande est destinée à effectuer un nouvel appel) ou à supprimer un appel existant. Ce message ne contient pas les paramètres de la demande, sauf dans le cas d’une demande de suppression d’un appel existant.
  2. Si la demande est d’effectuer un nouvel appel, le serveur de téléphonie assistée utilise la fonction lineGetRequest pour récupérer la demande complète, qui inclut les paramètres de la demande. Le serveur dispose désormais de toutes les informations dont il a besoin, telles que le numéro à composer ou l’identification du créateur de la demande. Tout d’abord, toutefois, le serveur doit allouer la mémoire nécessaire pour stocker ces informations.
  3. Enfin, le serveur exécute la demande en appelant la fonction TAPI ou l’ensemble de fonctions approprié.

Si TAPI ne peut pas lancer une application capable de servir de destinataire de la demande, l’appel de téléphonie assistée échoue et retourne l’erreur TAPIERR_NOREQUESTRECIPIENT.

Remarques sur les opérations de destinataire de la demande

Les informations suivantes concernent les systèmes sur lesquels les demandes de téléphonie assistée sont traitées :

  • Le registre par défaut doit répertorier une application de gestionnaire d’appels dans la liste des priorités pour tapiRequestMakeCall. Il serait utile, mais pas essentiel, que l’application de gestionnaire d’appels dispose d’une option de menu qui permet aux utilisateurs de la définir sur la priorité la plus élevée.
  • Lorsqu’une application destinataire de téléphonie assistée est lancée automatiquement par TAPI et s’il s’agit de la seule application TAPI dans le système, cette action initialise TAPI. Si l’application destinataire de la téléphonie assistée initialise et arrête l’appareil de ligne avant l’inscription aux demandes de téléphonie assistée, TAPI est également arrêté et la demande de téléphonie assistée est perdue. Les demandes de téléphonie assistée peuvent également être perdues lorsqu’une autre application TAPI lancée effectue une initialisation et un arrêt.