Compartir a través de


Ciclo de vida de un proveedor de servicios de telefonía

En este tema se proporciona una revisión general de las operaciones de TSP.

Una sesión es el tiempo durante el que una configuración determinada permanece válida y se llevan a cabo operaciones de telefonía. Un proveedor de servicios puede admitir muchas sesiones entre el momento en que se carga por primera vez y cuando finalmente se libera. Para cada sesión, TAPI negocia la versión de la interfaz, inicia la sesión, lleva a cabo operaciones y, finalmente, cierra la sesión. El proveedor de servicios no debe conservar la información de una sesión a la siguiente.

Una vez conocida la versión de la interfaz, TAPI llama a la función TSPI_providerInit para establecer todos los parámetros operativos. El proveedor de servicios se asegura de que toda la información de configuración del registro es estable cuando se llama a la función TSPI_providerInit. La mayoría de los proveedores de servicios leen toda la información de configuración en ese momento.

Las operaciones normales pueden continuar en cualquier orden, una vez inicializado el proveedor de servicios.

TAPI negocia información específica del dispositivo por dispositivo. TAPI y el proveedor de servicios se confirman en una versión cuando se abre un dispositivo.

El proveedor de servicios puede recibir solicitudes para seleccionar y cancelar versiones de extensión. Mientras se selecciona una versión de extensión, el dispositivo funciona estrictamente según esa versión de extensión específica del dispositivo.

La negociación de una versión de extensión específica del dispositivo puede producirse varias veces, tanto antes como después de abrir el dispositivo. TAPI pasa un intervalo de versiones y el proveedor de servicios elige y devuelve un valor de este intervalo. Normalmente, el proveedor de servicios tiene extensiones específicas del dispositivo deshabilitadas.

Esto confirma que TAPI y el proveedor de servicios funcionen en ese nivel de versión de extensión hasta que se cancele la selección. Durante el tiempo en que una extensión específica del dispositivo está en vigor, un intento de negociar un nivel de versión de extensión debe permitir solo el nivel de versión que está actualmente en vigor. Una vez cancelada la extensión específica del dispositivo, se puede negociar y seleccionar otra versión.

En la ilustración siguiente se muestran las operaciones telefónicas dentro del par Abrir o Cerrar. Algunas de estas operaciones son sincrónicas, otras son asincrónicas. Si una operación se completa de forma asincrónica, se puede solicitar otra operación antes de que finalicen los primeros informes. Por lo tanto, las operaciones se pueden superponer de cualquier manera. El proveedor de servicios debe notificar finalmente la finalización de cualquier operación asincrónica solicitada. Cerrar un teléfono obliga a que se completen las operaciones asincrónicas pendientes (posiblemente con una indicación de "error").

El ciclo de vida de los dispositivos de línea es similar al ciclo de vida de los teléfonos, salvo que las líneas tienen su propia negociación, inicialización, apertura y cierre de procedimientos. Las operaciones en líneas abiertas están entre corchetes por su propio par de abrir o cerrar. Este par está entre corchetes entre el mismo par inicialización/apagado que el teléfono abrir o cerrar.

Los ciclos de vida de las llamadas están entre corchetes estrictamente entre el Open/Close de la línea que los contiene. Las duraciones de llamadas pueden comenzar de varias maneras:

  • Solicitado desde TAPI a través de funciones como lineMakeCall, lineSetupTransfero lineSetupConference.
  • Se originó espontáneamente en el proveedor de servicios como nuevas llamadas entrantes, llamadas iniciadas por el usuario en un teléfono conectado o llamadas generadas como efecto secundario de otras operaciones, como poner una llamada existente en espera.

Las duraciones de llamadas distintas dentro de la misma línea se pueden superponer entre sí de cualquier manera. Todas las llamadas finalizan su vigencia en el momento en que se invoca la función TSPI TSPI_lineCloseCall. El ciclo de vida de varias llamadas se muestra en la siguiente ilustración.

ciclos de vida de llamadas que se superponen

Una llamada puede originarse en TAPI como se muestra con el par MakeCall/CloseCall. Una llamada también se puede originar en el proveedor de servicios. El proveedor de servicios lo anuncia con un mensaje de LINE_NEWCALL a un procedimiento de devolución de llamada proporcionado por TAPI. En tal caso, TAPI devuelve su identificador para la llamada, que se incluye en las devoluciones de llamada posteriores que notifican eventos que se producen en la llamada. En el caso de las llamadas cuya duración se origina en TAPI, este identificador se incluye en la operación TSPI que crea la llamada.

Todas las operaciones que inician la duración de una llamada dan lugar a TAPI y proveedor de servicios que intercambian identificadores para la nueva llamada. En el caso de las llamadas originadas de TAPI, TAPI pasa su identificador y recibe el identificador del proveedor de servicios como parámetro de retorno. En el caso de que la llamada se origine en el proveedor de servicios, el proveedor de servicios pasa su identificador a TAPI y recibe el identificador TAPI como parámetro de retorno.

En la ilustración siguiente se ofrece una vista muy alta de la instalación, configuración y eliminación del proveedor de servicios; secuencias de ciclo de vida que abarcan muchas sesiones. El ciclo de vida típico para estas operaciones se puede mostrar con la siguiente línea de tiempo.

de instalación, configuración y eliminación del proveedor de servicios

Se muestra el ciclo de vida típico de instalación y eliminación, que abarca varias sesiones. Las llamadas al Install y los procedimientos Remove están estrechamente emparejados y no se superponen. Las llamadas al procedimiento config de pueden producirse varias veces dentro de este par. Normalmente, el proveedor de servicios lo hace como un efecto secundario interno del procedimiento Install para crear entradas de línea y teléfono. Se puede llamar al procedimiento config de en otros momentos para modificar una configuración existente. El procedimiento Instalar debe realizarse antes de que se permita cualquier otra función de TSPI. En el escenario ideal, todas las sesiones se anidan estrictamente dentro del par de procedimientos instalar o quitar.

Las funciones TSPI_providerInstall, TSPI_providerConfigy TSPI_providerRemove interactúan con el propio proveedor de servicios en lugar de con cualquier dispositivo específico. Afectan a la información de configuración estática que sobrevive en varias sesiones y deben estar presentes para que cualquier otra operación continúe. Por lo tanto, todas las demás operaciones se anidan entre la invocación de TSPI_providerInstall y la finalización de su TSPI_providerRemovecoincidente. Estas dos operaciones suelen ocurrir muy lejos, lo más probable es que se produzca una carga diferente del proveedor de servicios o un arranque diferente de la máquina. Llamar a la función Config externamente es opcional, ya que el procedimiento Install es necesario para incluir el comportamiento de Config, además de su propio. La razón habitual para llamarla externamente es modificar una configuración existente.

Hay una sutileza incrustada en el concepto de finalización de una operación de TSPI_providerRemove. Es conveniente permitir que el usuario ejecute la utilidad panel de control de telefonía proporcionada con el servicio de telefonía para modificar las configuraciones del proveedor de servicios, incluso cuando las operaciones de telefonía (sesiones) están en curso. Por lo tanto, tanto las especificaciones de TSPI_providerConfig como TSPI_providerRemove permiten la invocación mientras hay una sesión pendiente. Sin embargo, es necesario retrasar los cambios en la configuración hasta que se apaguen y reinicien las operaciones de telefonía. Por lo tanto, estrictamente hablando, la finalización de cualquier operación de TSPI_providerConfig o TSPI_providerRemove se produce fuera de cualquier sesión. El anidamiento de acciones es como se muestra en la ilustración, aunque las llamadas a procedimientos pueden aparecer en un orden ligeramente diferente. Se permite que un proveedor de servicios simplemente no permita Config o Quitar mientras las operaciones están en curso, aunque el usuario debe recibir una notificación con un cuadro de diálogo. Se prefiere una implementación más fácil de usar que permita al menos un subconjunto de operaciones.

Estos Instalar, Configy Quitar operaciones tienen el efecto secundario de señalar las aplicaciones de telefonía en ejecución, lo que finalmente da como resultado que apaguen su uso del servicio de telefonía. Juntos, finalizan todas las sesiones pendientes para los proveedores de servicios. Esto significa a los proveedores de servicios que deben leer la nueva configuración del Registro cuando comiencen las nuevas sesiones. Los cambios pendientes debido a un de configuración de o Quitar mientras las operaciones estaban en curso, surten efecto.