Introducción al proveedor de servicios TAPI

Las aplicaciones TAPI residen en su propio espacio de proceso. Las aplicaciones TAPI cargan el Tapi32.dll o Tapi3.dll en su proceso, y TAPI se comunica con TAPISRV a través de una interfaz RPC privada. Un TSP se ejecuta en el contexto de TAPISRV. Un TSP determinado puede residir en un equipo distinto del equipo del usuario y se accede a él mediante un TSP remoto. TAPISRV se implementa como un proceso de servicio dentro de SVCHOST. Un MSP reside dentro del espacio de proceso de la aplicación y siempre es local.

Un par TSP/MSP se puede considerar que tiene una ruta de comunicación privada virtual. La información se puede enviar entre los dos mediante búferes opacos que no se interpretan mediante TAPISRV o el ARCHIVO DLL de TAPI.

Algunos proveedores de servicios implementan operaciones específicas del hardware implicado. TAPI 2.x proporciona acceso a estas operaciones a través de la función lineDevSpecific o phoneDevSpecific . TAPI 3.x expone interfaces específicas del proveedor.

En el diagrama siguiente se muestra el flujo de controles e información, que muestra un TSP independiente (Unimodem) y un par TSP/MSP (H.323).

tsp independiente y flujo tsp/msp emparejado de control e información

En el diagrama siguiente se muestra el progreso de una llamada entrante que implica un TSP y un MSP.

llamada entrante con un tsp y un msp

Configuración de llamadas entrantes

  • El TSP envía un mensaje de LINE_NEWCALL a TAPISRV. El estado de llamada es LINECALLSTATE_OFFERING.
  • TAPISRV notifica a los clientes de la llamada.
  • TAPI3 crea el objeto CALL de TAPI y, a continuación, llama a ITMSPAddress::CreateMSPCall, que implementa el MSP.
  • El MSP crea un objeto MSP Call y secuencias predeterminadas basadas en los tipos de medios necesarios para la llamada. Devuelve un puntero IUnknown al objeto de llamada MSP.
  • TAPI3 agrega el objeto MSP Call al objeto Call tapi, lo que hace que las interfaces como ITStreamControl estén disponibles para la aplicación. A continuación, notifica a la aplicación de la nueva llamada.

A continuación, la aplicación puede usar métodos como ITStream::SelectTerminal para completar los preparativos para la finalización de llamadas.

Finalización de llamadas entrantes

  • La aplicación llama a ITBasicCallControl::Answer.
  • TAPI3 llama a lineAnswer.
  • TAPISERV llama a TSPI_lineAnswer.
  • El TSP inicia el streaming de llamadas. Normalmente, el TSP envía un mensaje al MSP correspondiente y el MSP inicia las secuencias. En algunas implementaciones de TSP/MSP, el TSP inicia las secuencias.

Comunicación de TSP/MSP durante el progreso de la llamada

Una vez que la llamada está en curso, el TSP y el MSP se comunican pasando búferes opacos a través de TAPISRV y TAPI3.

  • El TSP envía información al MSP enviando el mensaje de LINE_SENDMSPDATA a TAPISRV.
  • El MSP recibe información del TSP a través del método ITMSPAddress::ReceiveTSPData . Si los datos están relacionados con un objeto de llamada MSP, se proporciona un puntero de interfaz al objeto de llamada MSP como parámetro de ese método.
  • El MSP envía información al TSP enviando un evento de MSP_TSP_DATA a TAPI 3.
  • El TSP recibe información del MSP a través de la función TSPI_lineReceiveMSPData .

El proceso exacto y el contenido de la comunicación entre los proveedores de servicios es específico de un conjunto de TSP/MSP determinado.

Nota

En el caso de las llamadas salientes, el MSP normalmente conoce la llamada antes del TSP. Si el MSP intenta comunicarse con el TSP antes de que se informe al TSP sobre una llamada, se producirá un error en la comunicación. Cuando el MSP y el TSP necesitan intercambiar información sobre una llamada específica, el TSP debe iniciar la comunicación.