Services de ligne étendus

Les services de ligne étendus (ou services de ligne spécifiques au périphérique) incluent toutes les extensions définies par le fournisseur de services pour TSPI. TSPI définit un mécanisme qui permet aux fournisseurs de fournisseurs de services d’étendre le SPI de téléphonie à l’aide d’extensions spécifiques à l’appareil. TSPI définit uniquement le mécanisme d’extension, ce qui permet d’accéder aux extensions spécifiques à l’appareil, mais TSPI ne définit pas leur comportement. Le comportement est entièrement défini par le fournisseur de services.

Le SPI de téléphonie se compose de définitions de constantes, de structures de données, de fonctions et de messages de rappel scalaires et d’indicateurs de bits. Les procédures définies permettent à un fournisseur d’étendre la plupart de ces méthodes comme suit.

Pour les constantes de données scalaires extensible, un fournisseur de fournisseurs de services peut définir de nouvelles valeurs dans une plage spécifiée. Étant donné que la plupart des constantes de données sont des DWORD s, en général, la plage comprise entre 0X00000000 et 0x7FFFFFFF est réservée aux extensions futures courantes, tandis que 0X80000000 à 0xFFFFFFFF sont disponibles pour les extensions spécifiques au fournisseur. L’hypothèse est qu’un fournisseur définit des valeurs qui sont des extensions naturelles des types de données définis par TSPI.

Pour les constantes de données d’indicateur de bit extensible, un fournisseur de fournisseurs de services peut définir de nouvelles valeurs pour les bits spécifiés. Comme la plupart des constantes d’indicateur de bits sont des DWORD s, un nombre spécifique de bits inférieurs est réservé pour les extensions communes, tandis que les bits supérieurs restants sont disponibles pour les extensions spécifiques au fournisseur. Les indicateurs binaires communs sont assignés de bit zéro vers le haut ; les extensions spécifiques au fournisseur doivent être affectées de bit 31. Cela offre une flexibilité maximale pour assigner des positions de bits aux extensions communes et aux extensions spécifiques au fournisseur. Un fournisseur est censé définir de nouvelles valeurs qui sont des extensions naturelles des indicateurs binaires définis par TSPI.

Les structures de données extensibles ont un champ de taille variable qui est réservé à une utilisation spécifique à l’appareil. Une taille variable, le fournisseur de services décide de la quantité d’informations et de l’interprétation. Un fournisseur qui définit un champ spécifique à l’appareil est supposé créer ces extensions naturelles de la structure de données d’origine définies par TSPI.

Deux fonctions, TSPI _ LineDevSpecific et TSPI _ lineDevSpecificFeature, et quatre messages associés, line _ DEVSPECIFIC, line _ CALLDEVSPECIFIC, line _DEVSPECIFICFEATURE et line _ CALLDEVSPECIFICFEATURE, offrent un mécanisme d’extension spécifique au fournisseur. L’opération TSPI _ lineDevSpecific et les _ messages DEVSPECIFIC et Line CALLDEVSPECIFIC de ligne associés _ permettent à l’application cliente Tapi32.dll d’accéder à des fonctionnalités de ligne, d’adresse ou d’appel spécifiques à l’appareil qui ne sont pas disponibles dans les services de téléphonie de base ou supplémentaires. Le profil de paramètre de la fonction TSPI _ lineDevSpecific est générique dans le fait que peu d’interprétation des paramètres est effectuée par TSPI. Les paramètres de gestion des appareils ont des significations définies par TSPI et sont traduits correctement entre l’application et le fournisseur de services. Les paramètres génériques sont simplement transmis sans modification. L’interprétation des paramètres génériques est définie par le fournisseur de services et doit être comprise par toutes les applications qui les utilisent. Une application qui s’appuie sur des extensions spécifiques à l’appareil ne fonctionne généralement pas avec d’autres fournisseurs de services. Toutefois, les applications écrites entièrement dans les services de téléphonie de base et supplémentaires doivent fonctionner avec le fournisseur de services étendu.

L’implémentation TAPI des fonctions et messages spécifiques à l’appareil est « directe ». L’interface TAPI n’examine pas et ne modifie pas les paramètres et mémoires tampons génériques spécifiques à l’appareil, mais elle mappe les valeurs de handle opaques au niveau de l’application (utilisées au niveau de l’interface TAPI) aux valeurs de handle opaques au niveau du fournisseur de service (utilisées au niveau de TSPI).

En ce qui concerne la traduction des handles, la nature directe des parties génériques des extensions spécifiques à l’appareil a une conséquence importante. Un fournisseur de services n’a aucun moyen de lier les descripteurs utilisés au niveau du TSPI à ceux du niveau TAPI, sauf en les passant par les paramètres et les champs du handle prédéfini. Tout handle placé dans la zone d’extension générique n’est pas traduit par l’interface TAPI, car il est transmis entre l’application et le fournisseur de services. Le concepteur d’une extension de fournisseur de service ne doit généralement pas définir des extensions qui transmettent des handles de cette façon.

L’approche appropriée lors de la définition d’une extension spécifique à l’appareil qui doit faire référence à des appareils spécifiques sans utiliser de handles consiste à faire référence à ces appareils à l’aide de leur identification d’appareil absolue. L’identificateur d’appareil utilisé lors de l’ouverture d’une ligne au niveau de l’interface TAPI, par exemple, est strictement la même valeur que celle utilisée au niveau TSPI pour ouvrir la ligne. De même, un tuple (identificateur de périphérique de ligne, identificateur d’adresse) qui identifie de façon unique une adresse au niveau TAPI utilise les mêmes valeurs pour identifier la même chose au niveau du TSPI.

Pour plus de commodité, une fonction d’échappement plus spécialisée est également fournie. Il est similaire à TSPI _ lineDevSpecific, mais il place l’interprétation sur certains paramètres. La fonction TSPI _ lineDevSpecificFeature et les messages Line _ DEVSPECIFICFEATURE et line _ CALLDEVSPECIFICFEATURE associés permettent à l’interface TAPI d’émuler les enfoncements du bouton sur le téléphone de la ligne. Comme les téléphones et les significations de leurs boutons sont spécifiques au fournisseur, l’appel des fonctionnalités à l’aide de TSPI _ lineDevSpecificFeature est également spécifique au fournisseur.

Pour résumer, la fonction TSPI _ lineDevSpecificFeature est une fonction d’échappement spécifique à l’appareil qui permet d’envoyer des fonctionnalités de commutation au commutateur. La ligne _ CALLDEVSPECIFICFEATURE message est un message spécifique à l’appareil envoyé au rappel de l’application en tant qu’indication des fonctionnalités liées aux appels envoyées au commutateur. Ligne _ DEVSPECIFICFEATURE est un message spécifique à l’appareil envoyé au rappel de l’application en tant qu’indication des fonctionnalités liées aux lignes envoyées au commutateur.

Il n’existe pas de registre central pour les identificateurs de fabricant. Au lieu de cela, un générateur d’identificateur unique appelé Extidgen.exe est mis à disposition dans le cadre de TSPI. Le fournisseur qui conçoit un ensemble d’extensions spécifiques à l’appareil utilise cet utilitaire pour obtenir un identificateur unique pour ces extensions.