Partager via


TSPI_lineSetupTransfer, fonction (tspi.h)

La fonction TSPI_lineSetupTransfer lance un transfert de l’appel spécifié par hdCall. Il établit un appel de consultation, lphdConsultCall, sur lequel la partie peut être appelée et qui peut devenir la destination du transfert.

Syntaxe

LONG TSPIAPI TSPI_lineSetupTransfer(
  DRV_REQUESTID          dwRequestID,
  HDRVCALL               hdCall,
  HTAPICALL              htConsultCall,
  LPHDRVCALL             lphdConsultCall,
  LPLINECALLPARAMS const lpCallParams
);

Paramètres

dwRequestID

Identificateur de la requête asynchrone.

hdCall

Handle de l’appel à transférer. L’état d’appel de hdCall peut être connecté.

htConsultCall

Le handle TAPI pour le nouvel appel de consultation temporaire. Le fournisseur de services doit l’enregistrer et l’utiliser dans tous les appels ultérieurs à la procédure LINEEVENT rapportant des événements sur le nouvel appel de consultation.

lphdConsultCall

Pointeur vers un HDRVCALL représentant l’identificateur du fournisseur de services pour le nouvel appel de consultation. Le fournisseur de services doit remplir cet emplacement avec son handle pour le nouvel appel de consultation avant le retour de cette procédure. Ce handle est ignoré par TAPI si la fonction génère une erreur. L’état de l’appel de hdConsultCall n’est pas applicable.

Lors de la configuration d’un appel pour transfert, un autre appel (appel de consultation) est automatiquement alloué pour permettre à l’application (via TAPI) de composer l’adresse (à l’aide de TSPI_lineDial) de la partie vers laquelle l’appel doit être transféré. La partie d’origine peut poursuivre une conversation au cours de cet appel de consultation avant de terminer le transfert.

Cette procédure de transfert peut ne pas être valide pour certains appareils de ligne. Au lieu d’appeler cette procédure, TAPI peut avoir besoin de détenir un appel détenu existant (à l’aide de TSPI_lineUnhold) pour identifier la destination du transfert. Sur les commutateurs qui prennent en charge le transfert d’appels inter-adresses, l’appel de consultation peut exister sur une adresse différente de l’appel à transférer. Il peut également être nécessaire de configurer l’appel de consultation comme un appel entièrement nouveau à l’aide de TSPI_lineMakeCall, à la destination du transfert.

Les indicateurs transferHeld et transferMake dans la structure de données LINEADDRESSCAPS indiquent le modèle utilisé par le fournisseur de services.

lpCallParams

Pointeur vers une structure LINECALLPARAMS contenant des paramètres d’appel à utiliser lors de l’établissement de l’appel de consultation. Ce paramètre peut être défini sur NULL si aucun paramètre de configuration d’appel spécial n’est souhaité (le fournisseur de services utilise les valeurs par défaut).

Valeur retournée

Retourne dwRequestID, ou un numéro d’erreur si une erreur se produit. Le paramètre réel lResult de la ASYNC_COMPLETION correspondante est égal à zéro si la fonction réussit, ou un numéro d’erreur si une erreur se produit. Les valeurs de retour possibles sont les suivantes :

LINEERR_INVALCALLHANDLE, LINEERR_INVALBEARERMODE, LINEERR_INVALCALLSTATE, LINEERR_INVALRATE, LINEERR_CALLUNAVAIL, LINEERR_INVALCALLPARAMS, LINEERR_NOMEM, LINEERR_INVALLINESTATE, LINEERR_OPERATIONUNAVAIL, LINEERR_INVALMEDIAMODE, LINEERR_OPERATIONFAILED, LINEERR_INUSE, LINEERR_RESOURCEUNAVAIL, LINEERR_NOMEM, LINEERR_BEARERMODEUNAVAIL, LINEERR_RATEUNAVAIL, LINEERR_INVALADDRESSMODE, LINEERR_USERUSERINFOTOOBIG.

Remarques

Le fournisseur de services retourne LINEERR_INVALCALLSTATE si l’appel à transférer n’est pas dans un état valide.

Cette opération configure le transfert de l’appel spécifié par hdCall. La phase de configuration d’un transfert établit un appel de consultation pour envoyer l’adresse de la destination (la partie à transférer) au commutateur, tandis que l’appel à transférer est maintenu en attente. Ce nouvel appel est appelé appel de consultation (hdConsultCall) et peut être manipulé (par exemple, supprimé) indépendamment de l’appel d’origine.

Lorsque l’appel de consultation a atteint l’état de l’appel de numérotation , TAPI peut continuer à transférer l’appel soit en composant l’adresse de destination et en suivant sa progression, soit en détenir un appel existant. Le transfert de l’appel d’origine vers la destination sélectionnée est effectué à l’aide de TSPI_lineCompleteTransfer.

Bien que l’appel de consultation existe, l’appel d’origine passe généralement à l’état onholdPendingTransfer .

La fonction TSPI_lineUnhold peut récupérer les appels dont l’état d’appel est onHoldPendingTransfer. Si cette opération est effectuée, tout appel de consultation passe généralement à l’état inactif .

Dans les environnements de téléphonie qui suivent les modèles de transfert transferHeld ou transferMake , cette procédure retourne LINEERR_OPERATIONFAILED et n’alloue pas de handle d’appel de consultation.

Un appel de consultation peut être annulé en appelant TSPI_lineDrop sur celui-ci. Après avoir supprimé un appel de consultation, l’appel d’origine revient généralement à l’état connecté .

Cette fonction diffère de la fonction TAPI correspondante en ce qu’elle suit le modèle TSPI pour commencer la durée de vie d’un appel. TAPI et le fournisseur de services échangent des handles opaques représentant l’appel entre eux. En outre, le fournisseur de services est autorisé à effectuer des rappels pour le nouvel appel avant qu’il ne revienne de cette procédure. Dans tous les cas, le fournisseur de services doit également traiter le handle qu’il a retourné comme « non encore valide » jusqu’à ce que le message de ASYNC_COMPLETION correspondant signale la réussite. En d’autres termes, il ne doit pas émettre de messages LINEEVENT pour le nouvel appel ou l’inclure dans le nombre d’appels dans les messages ou status structures de données pour la ligne.

Configuration requise

Condition requise Valeur
Plateforme cible Windows
En-tête tspi.h

Voir aussi

LINEADDRESSCAPS

LINECALLPARAMS

LINE_CALLSTATE

TSPI_lineBlindTransfer

TSPI_lineCompleteTransfer

TSPI_lineDial

TSPI_lineDrop

TSPI_lineSwapHold

TSPI_lineUnhold