Partilhar via


Transferências

Quando um aplicativo tem de privilégio de proprietário para uma sessão de comunicações, o aplicativo pode optar por transferir a propriedade para outro aplicativo. A operação de transferência é normalmente usada para permitir que o tipo de mídia da chamada seja alterado. O aplicativo de prioridade mais alta para o novo tipo de mídia deve atender e lidar com a chamada. A alteração do tipo de mídia geralmente ocorre por um dos seguintes motivos.

Comando User: Através de uma interface de usuário ou através de mensagens de janela, o aplicativo aprende que o usuário local deseja alterar o tipo de mídia. Por exemplo, o usuário disse ao novo aplicativo de destino (que ainda não é proprietário) para obter uma chamada de voz existente para transmitir dados. O aplicativo de destino agora deve assumir o controle da chamada. Nesse caso, o proprietário atual percebe o aumento do número de proprietários e, em seguida, abre mão do controle da chamada. Como alternativa, o usuário pode instruir o proprietário atual da chamada a entregá-la a um aplicativo que possa lidar com o novo tipo de mídia.

Alteração de tipo de mídia: O provedor de serviços pode detetar uma alteração de tipo de mídia. Por exemplo, o aplicativo local está reproduzindo uma mensagem de voz gravada para o chamador. Durante essa mensagem, o chamador decide espontaneamente transmitir um tom de chamada de fax, e o aplicativo local pode responder de acordo, alterando o tipo de mídia para fax e, se necessário, entregando a chamada para um aplicativo de fax. Outra maneira de isso funcionar é para um aplicativo de monitoramento habilitar o monitoramento de tipo de mídia e, quando o tipo de mídia no qual ele está interessado é detetado em uma chamada, ele pode solicitar a propriedade da chamada. Esse mecanismo torna desnecessário que cada aplicativo monitore cada chamada para cada tipo de mídia.

comando Remote party: A parte remota pode indicar interativamente uma alteração nos tipos de mídia durante uma chamada existente, como se o aplicativo local estiver monitorando a entrada DTMF pelo chamador remoto. Através deste monitoramento, o chamador indica, por exemplo, que um fax está prestes a ser enviado. Outras maneiras pelas quais o chamador pode controlar aplicativos locais são com comandos recebidos em outras conexões de dados e por meio de mensagens de informações do usuário e do usuário ISDN.

Uma transferência de chamada terá um destes resultados:

  • A chamada é dada para outra aplicação (SUCESSO).
  • O aplicativo de entrega é o próprio destino (TARGETSELF).
  • A transferência falha (TARGETNOTFOUND).

Se o aplicativo que está recebendo a chamada transferida já tiver um identificador de chamada para a chamada, esse identificador de chamada antigo será usado. Caso contrário, um novo identificador de chamada será criado. Em ambos os casos, o aplicativo acaba com privilégios de proprietário para a chamada. Sempre que o aplicativo de entrega não é o mesmo que o aplicativo de destino, o destino é informado sobre o handoff em uma mensagem de estado de sessão como se estivesse recebendo uma nova chamada.

Se o aplicativo proprietário atual for instruído a alterar os tipos de mídia, ele fará isso entregando a chamada para um aplicativo usado para o tipo de mídia de destino. Os dois tipos de transferência de chamadas são descritos em Directed Handoffs e Media Type Handoffs.

Nem todos os prestadores de serviços suportam a utilização desta operação.

TAPI 2.x: Consulte lineHandoff, com lpszFileName definido como o nome do aplicativo para uma transferência direta ou dwMediaMode definido como um tipo de mídia para uma transferência indireta.

TAPI 3.x: Consulte ITBasicCallControl::HandoffDirect, ITBasicCallControl::HandoffIndirect.

Handoffs Dirigidos

Uma de transferência direcionada ocorre quando o aplicativo de destino é conhecido pelo nome do aplicativo original. Essa situação ocorreria, por exemplo, entre um conjunto de aplicativos escritos pelo mesmo fornecedor. O usuário geralmente pode configurar o controle de transferências direcionadas. Com essa transferência, a chamada é dada ao aplicativo especificado se ele tiver aberto a linha na qual a chamada existe. O tipo de mídia especificado no momento em que o aplicativo abriu a linha é ignorado. Um exemplo comum é uma chamada de voz seguida de uma transmissão de fax na mesma chamada. O handoff direcionado seria usado com mais frequência por aplicativos do mesmo desenvolvedor que também estão vinculados de outras maneiras.

A transferência direcionada também pode ser usada em versões futuras como parte do processo de arbitragem de vários aplicativos aguardando chamadas recebidas do mesmo tipo de mídia, com a seleção do aplicativo para lidar com a chamada sendo baseada em link de dados ou deteção de protocolo de nível superior em vez de tipo de mídia. Um exemplo de seu uso seria uma linha de modem de dados de entrada com aplicativos como aquisição remota, quadro de avisos, acesso remoto à rede e acesso remoto a e-mails, todos aguardando chamadas simultaneamente.

Handoffs de tipo de mídia

Um de transferência de tipo de mídia ocorre quando há um novo tipo de mídia direcionado, geralmente quando o aplicativo proprietário determina que o tipo de mídia necessário para a chamada não está presente ou está prestes a mudar.

O processo para uma transferência dependente de mídia pode ser um processo de sondagem se o bit UNKNOWN do tipo de mídia estiver ativado. É responsabilidade do aplicativo proprietário percorrer os tipos de mídia para encontrar o aplicativo de prioridade mais alta. A TAPI faz este ciclismo apenas na chamada inicial para encontrar o primeiro proprietário. Não o faz para uma operação de transferência. Caso contrário, uma transferência é praticamente a mesma que para a atribuição inicial de uma chamada para um aplicativo. A diferença é o fato de que apenas um tipo de mídia pode ser definido para uma transferência indireta (tipo de mídia).

Como apenas um único bit de tipo de mídia pode ser especificado, a chamada é dada ao aplicativo de prioridade mais alta para esse tipo de mídia. No entanto, é possível que mais de um tipo de mídia seja considerado para a transferência. Nesse caso, o aplicativo de transferência deve especificar a prioridade mais alta dos tipos de mídia possíveis como parâmetro.

Se um aplicativo especificar o bit DESCONHECIDO ao executar um handoff de tipo de mídia e o handoff falhar, isso significa que um aplicativo desconhecido capaz de executar a determinação de tipo de mídia não está em execução no momento. O aplicativo que está sendo transferido deve então tentar entregar a chamada para o aplicativo de prioridade mais alta registrado para o próximo tipo de mídia superior.

A candidatura recetora é agora responsável pela chamada. Agora, ele investiga o tipo de mídia real da chamada. Se o aplicativo puder manipular o tipo de mídia da chamada, ele deverá garantir que seja o aplicativo de prioridade mais alta registrado para esse tipo de mídia. Em caso afirmativo, mantém a chamada e processa-a normalmente. Caso contrário, ele entrega a chamada para outro aplicativo registrado para esse tipo de mídia.

Se, no entanto, o teste para esse tipo de mídia falhar, o aplicativo investigará novamente, tentando as possibilidades restantes do modo de mídia. Ele deve primeiro desativar o bit de tipo de mídia atual e, em seguida, tentar outra transferência com um tipo diferente.

Este processo de sondagem e entrega continua, e os tipos de mídia restantes são eliminados um a um. Ao longo do caminho, um dos aplicativos pode ver que o tipo de mídia que ele manipula está na chamada, e a transferência é bem-sucedida.

O aplicativo deve então definir o tipo de mídia correto e limpar todos os outros bits de tipo de mídia. Isso informa outras aplicações interessadas do tipo de mídia correto. Esses outros aplicativos recebem uma mensagem de notificação de evento informando que o tipo de mídia da chamada foi alterado.