Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 mettre en place des appels vocaux et des appels multimédias accessibles à n’importe quelle application, et non 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 non téléphoniques.
Pour obtenir la liste des fonctions de téléphonie assistée TAPI 2.x de la téléphonie de base, consultez la Référence Rapide des Fonctions 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 tableur peut incorporer des fonctions qui permettent de composer un numéro de téléphone pour un appel vocal. Tant que l’application n’a pas besoin du 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 de téléphonie.

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 de téléphonie au sein d’une seule application.
Utilisation de la téléphonie assistée
Les applications qui utilisent les 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 demandée ne contrôle pas l’appel.
TAPI permet à l’utilisateur d’établir des applications de destinataire différentes ou identiques pour chacun de ces services. Une application devient un destinataire de demande en s’inscrivant auprès de lineRegisterRequestRecipient, dans laquelle TRUE est spécifiée comme valeur pour le paramètre bEnable. (En spécifiant FALSE, l'application se désinscrit en tant que récepteur de la demande, ce qu'elle devrait faire dès qu'elle a déterminé que ses responsabilités de réception sont terminées pour la session en cours.) 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 indiquer que l'application gérera les requêtes 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 qui est préférée pour gérer les demandes. Ce schéma de priorité est identique à celui utilisé pour le transfert des appels 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 obliger le développeur à devenir entièrement alphabétisé dans la 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 adressé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 du 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 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 ne doivent pas être modifiées d’une manière substantielle. En fait, les applications qui permettent à cette opération d’être appelées à partir de leur langage de script intégré n’ont peut-être pas besoin d’être modifiées du tout.
La fonction tapiGetLocationInfo retourne à l’application le code de pays ou de région (zone) que l’utilisateur a défini dans les paramètres d’emplacement actuels dans le Panneau de configuration de 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 offrant comme valeurs par défaut lorsque de nouveaux numéros sont entrés dans une entrée de carnet de téléphone 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 qui ont le préfixe « tapi ». Par exemple, une telle application cliente serait une feuille de calcul à laquelle une commande de menu Dial ou bouton de barre d’outils est ajoutée.
Les serveurs de téléphonie assistée sont des applications qui peuvent exécuter des fonctions d’API de téléphonie résultant de l’appel d’une autre application à une fonction préfixée « tapi ». Pour se faire connaître comme un serveur de téléphonie assistée, une telle application se déclare comme telle en utilisant la fonction lineRegisterRequestRecipient.
Les fonctions de 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 de la demande.
Traitement des demandes de téléphonie assistée
Le processus avec lequel les demandes sont livrées et traitées est le suivant :
Lorsque TAPI reçoit une demande de téléphonie assistée, il recherche un destinataire de demande, autrement dit, une application actuellement inscrite pour traiter ce type de demande. S’il existe un destinataire de demande, la demande est mise en file d’attente et un message LINE_REQUEST est envoyé à l’application de priorité la plus élevée inscrite pour le service de cette demande. Le message informe le destinataire de la demande qu’une nouvelle demande est arrivée et qu’elle contient une indication du mode de la demande.
Si TAPI ne trouve pas d’application en cours d’exécution pour traiter une telle demande, il tente de lancer une application qui a été inscrite comme étant 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 enregistrée, TAPI examine la liste des applications de traitement des requêtes dans l’entrée associée à HandoffPriorities. Si la ligne associée est manquante dans le fichier, s’il n’y a pas d’applications répertoriées dessus 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 est de son devoir d’appeler lineRegisterRequestRecipient pendant le processus de démarrage et de s’inscrire en tant que destinataire de la demande.
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 démarre correctement, 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 requête 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 requête.
Si TAPI trouve une telle application inscrite déjà en cours d’exécution ou en lance une, elle met en file d’attente la demande, 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 elle 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 placer l’appel. L’appel de lineGetRequest supprime la requête de TAPI et les paramètres de requête sont copiés dans une mémoire tampon de requête allouée à 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 requêtes. Dans ce cas, ces étapes sont suivies :
- Le destinataire de la demande reçoit d’abord un message LINE_REQUEST l’informant qu'il peut y avoir des demandes 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 consiste à 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.
- Si la demande doit effectuer un nouvel appel, le serveur de téléphonie assistée utilise la fonction lineGetRequest pour récupérer la requête complète, qui inclut les paramètres de la requête. Le serveur a désormais toutes les informations dont il a besoin, telles que le numéro à composer ou l’identification du créateur de la demande. Toutefois, le serveur doit tout d’abord allouer la mémoire nécessaire pour stocker ces informations.
- Enfin, le serveur exécute la requête 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 demande, l’appel de téléphonie assistée échoue et retourne l’erreur TAPIERR_NOREQUESTRECIPIENT.
Remarques sur les opérations du 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 de priorité pour tapiRequestMakeCall. Il serait utile, mais pas essentiel, pour que l’application du 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 de 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 téléphonie assistée initialise et arrête le périphérique de ligne avant de s’inscrire 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 un initialisation et un arrêt.