Entregas
Cuando una aplicación tiene privilegios de propietario para una sesión de comunicaciones, la aplicación puede optar por entregar la propiedad a otra aplicación. Normalmente, la operación de entrega se usa para permitir que se cambie el tipo de medio de la llamada. La aplicación de prioridad más alta para el nuevo tipo de medio debe tomar y controlar la llamada. Normalmente, el cambio de tipo de medio se produce por uno de los siguientes motivos.
Comando de usuario: A través de una interfaz de usuario o a través de mensajes de ventana, la aplicación aprende que el usuario local quiere cambiar el tipo de medio. Por ejemplo, el usuario ha dicho a la nueva aplicación de destino (que aún no es propietario) que obtenga una llamada de voz existente para transmitir datos. La aplicación de destino ahora debe tomar el control de la llamada. En este caso, el propietario actual observa el número de propietarios que aumentan y, a continuación, renuncia a su control de la llamada. Como alternativa, el usuario podría indicar al propietario actual de la llamada que lo entregue a una aplicación que pueda controlar el nuevo tipo de medio.
Cambio del tipo de medio: El proveedor de servicios puede detectar un cambio de tipo multimedia. Por ejemplo, la aplicación local está reproduciendo un mensaje de voz grabado al autor de la llamada. Durante este mensaje, el autor de la llamada decide espontáneamente transmitir un tono de llamada de fax, y la aplicación local puede responder en consecuencia cambiando el tipo de medio a fax y, si es necesario, entregando la llamada a una aplicación de fax. Otra manera de funcionar es que una aplicación de supervisión habilite la supervisión de tipos de medios y, cuando se detecte el tipo de medio en el que está interesado en una llamada, puede solicitar la propiedad de la llamada. Este mecanismo hace que no sea necesario que todas las aplicaciones supervisen todas las llamadas de cada tipo de medio.
Comando de entidad remota: La entidad remota puede indicar interactivamente un cambio en los tipos de medios durante una llamada existente, como si la aplicación local supervisa la entrada DTMF por parte del autor de la llamada remota. A través de esta supervisión, el autor de la llamada indica, por ejemplo, que se va a enviar un fax. Otras formas en que el autor de la llamada puede controlar las aplicaciones locales son con comandos recibidos en otras conexiones de datos y a través de mensajes de información de usuario de ISDN.
Una entrega de llamada tendrá uno de estos resultados:
- La llamada se asigna a otra aplicación (SUCCESS).
- La aplicación de entrega es el destino (TARGETSELF).
- Se produce un error en la entrega (TARGETNOTFOUND).
Si la aplicación que recibe la llamada entregada ya tiene un identificador de llamada a la llamada, se usa este identificador de llamada anterior. De lo contrario, se crea un nuevo identificador de llamada. En cualquier caso, la aplicación termina con privilegios de propietario para la llamada. Cada vez que la aplicación de entrega no es la misma que la aplicación de destino, el destino se informa sobre la entrega en un mensaje de estado de sesión como si estuviera recibiendo una nueva llamada.
Si se indica a la aplicación propietaria actual que cambie los tipos de medios, lo hace entregando la llamada a una aplicación usada para el tipo de medio de destino. Los dos tipos de entregas de llamadas se describen en Entregas dirigidas y Entregas de tipo Media.
No todos los proveedores de servicios admiten el uso de esta operación.
TAPI 2.x: Consulte lineHandoff, con lpszFileName establecido en el nombre de la aplicación para una entrega directa o dwMediaMode establecido en un tipo de medio para una entrega indirecta.
TAPI 3.x: Consulte ITBasicCallControl::HandoffDirect, ITBasicCallControl::HandoffIndirect.
Se produce una entrega dirigida cuando la aplicación de destino se conoce por nombre a la aplicación original. Esta situación se produciría, por ejemplo, entre un conjunto de aplicaciones escritas por el mismo proveedor. Normalmente, el usuario puede configurar el control de entregas dirigidas. Con este tipo de entrega, la llamada se proporciona a la aplicación especificada si ha abierto la línea en la que existe la llamada. El tipo de medio especificado en el momento en que la aplicación abrió la línea se omite. Un ejemplo común es una llamada de voz seguida de una transmisión de fax en la misma llamada. La entrega dirigida se usaría con más frecuencia en las aplicaciones del mismo desarrollador que también están vinculadas de otras maneras.
La entrega dirigida también se puede usar en versiones futuras como parte del proceso de arbitraje de varias aplicaciones que esperan llamadas entrantes del mismo tipo de medio, con la selección de la aplicación para controlar la llamada que se basa en la detección de protocolos de nivel superior o de vínculo de datos en lugar de en el tipo de medio. Un ejemplo de su uso sería una línea de módem de datos entrante con aplicaciones como la adquisición remota, la placa de boletines, el acceso a la red remota y el acceso de correo electrónico remoto a todas las llamadas a la espera simultáneamente.
Se produce una entrega de tipo de medio cuando hay un tipo de medio nuevo y dirigido, normalmente cuando la aplicación propietaria determina que el tipo de medio necesario para la llamada no está presente o está a punto de cambiar.
El proceso de entrega dependiente de un medio puede ser un proceso de sondeo si el tipo de medio DESCONOCIDO está activado. Es responsabilidad de la aplicación propietaria recorrer los tipos de medios para encontrar la aplicación de mayor prioridad. TAPI realiza este ciclo solo en la llamada entrante inicial para encontrar al primer propietario. No lo hace para una operación de entrega. De lo contrario, una entrega es prácticamente la misma que para la asignación inicial de una llamada a una aplicación. La diferencia es el hecho de que solo se puede establecer un tipo de medio para una entrega indirecta (tipo de medio).
Dado que solo se puede especificar un solo bit de tipo de medio, la llamada se asigna a la aplicación de prioridad más alta para ese tipo de medio. Sin embargo, es posible que se tenga en cuenta más de un tipo de medio para la entrega. En este caso, la aplicación de entrega debe especificar la prioridad más alta de los tipos de medios posibles como parámetro.
Si una aplicación especifica el bit UNKNOWN al realizar una entrega de tipo multimedia y se produce un error en la entrega, esto significa que una aplicación desconocida capaz de realizar la determinación del tipo de medio no se está ejecutando actualmente. La aplicación que entrega debe intentar entregar la llamada a la aplicación de prioridad más alta registrada para el siguiente tipo de medio superior.
La aplicación receptora ahora es responsable de la llamada. Ahora sondea el tipo de medio real de la llamada. Si la aplicación puede controlar el tipo de medio de la llamada, debe asegurarse de que es la aplicación de prioridad más alta registrada para ese tipo de medio. Si es así, mantiene la llamada y la procesa con normalidad. Si no es así, entrega la llamada a otra aplicación registrada para ese tipo de medio.
Sin embargo, si se produce un error en el sondeo de ese tipo de medio, la aplicación vuelve a intentar las posibilidades restantes del modo multimedia. Primero debe desactivar el bit de tipo multimedia actual y, a continuación, probar otra entrega con un tipo diferente.
Este proceso de sondeo y entrega continúa, y los tipos de medios restantes se eliminan uno por uno. A lo largo del proceso, una de las aplicaciones puede ver que el tipo de medio que controla está en la llamada y que la entrega se realiza correctamente.
A continuación, la aplicación debe establecer el tipo de medio correcto y borrar todos los demás bits de tipo multimedia. Esto informa a otras aplicaciones interesadas del tipo de medio correcto. Estas otras aplicaciones reciben un mensaje de notificación de eventos que indica que el tipo de medio de la llamada ha cambiado.