Compartir a través de


Método ITAutomatedPhoneControl::SelectCall (tapi3if.h)

El método SelectCall selecciona el objeto de teléfono actual en el objeto Call al que apunta el parámetro pCall .

Sintaxis

HRESULT SelectCall(
  [in] ITCallInfo   *pCall,
  [in] VARIANT_BOOL fSelectDefaultTerminals
);

Parámetros

[in] pCall

Puntero a la interfaz ITCallInfo .

[in] fSelectDefaultTerminals

Si VARIANT_TRUE, use terminales predeterminados. Para obtener más información, vea la sección Comentarios que se muestra más adelante.

Valor devuelto

Si el método se realiza correctamente, devuelve S_OK. De lo contrario, devuelve un valor de error.

Comentarios

La aplicación debe tener privilegios de propietario tanto en la llamada como en el teléfono para que este método devuelva el éxito. Si el teléfono aún no está abierto con privilegios de propietario, se produce un error en este método.

Si el parámetro fSelectDefaultTerminals se establece en VARIANT_TRUE, este método recupera todos los terminales predeterminados asociados al teléfono e intenta seleccionarlos en la llamada. Si se produce un error en la creación de instancias de uno de los terminales o si se produce un error en la selección de uno de los terminales en la llamada, el método SelectCall completo devolverá un error y la llamada no se seleccionará en el teléfono. Si no es el comportamiento necesario para una aplicación, la aplicación debe pasar VARIANT_FALSE para el parámetro fSelectDefaultTerminals y controlar la selección del terminal por separado.

Cuando se completa correctamente este método, el objeto phone mantiene una referencia al objeto de llamada (es decir, llama al método AddRef en ITCallInfo).

Para Windows XP, solo se puede seleccionar una llamada a la vez en un teléfono. Las versiones futuras de TAPI pueden admitir la selección simultánea de varias llamadas para su uso con teléfonos que admiten varias apariencias de llamadas.

Tenga en cuenta que una llamada puede no seleccionarse de dos maneras: (1) la aplicación puede invocar ITAutomatedPhoneControl::UnselectCall o (2) el propio objeto de teléfono puede invocar ITAutomatedPhoneControl::UnselectCall. Consulte la lista siguiente para obtener información sobre cuándo ocurre esto.

Una vez completado correctamente este método, se realiza el siguiente control en la llamada seleccionada:

  • Cuando el teléfono pasa por onhook, el objeto de teléfono llama a ITBasicCallControl::D isconnect en cualquier llamada controlada actualmente que aún no esté en el estado de llamada CS_DISCONNECTED.
  • Si una llamada seleccionada alcanza el estado de la llamada CS_DISCONNECTED, el objeto de teléfono anula automáticamente la selección de la llamada mediante el método ITAutomatedPhoneControl::UnselectCall .
  • Si se cierra el teléfono, cualquier llamada seleccionada no se selecciona automáticamente desde ese teléfono.
  • Cuando el teléfono se apaga o se selecciona una llamada cuando el teléfono es offhook, el objeto de teléfono llama a ITBasicCallControl::Answer en la llamada controlada actualmente si está en el estado de llamada CS_OFFERING.
  • El objeto de teléfono llama a ITAutomatedPhoneControl::StartTone( PT_RINGBACK, 0 ) en sí mismo cuando se selecciona una llamada en él en el estado de llamada CS_INPROGRESS y el teléfono es offhook, o cuando una llamada seleccionada en el teléfono entra en el estado de llamada CS_INPROGRESS y el teléfono está desactivado.
  • El objeto de teléfono llama a ITAutomatedPhoneControl::StopTone en sí mismo cuando se selecciona una llamada en él en el estado de llamada CS_CONNECTED, o cuando una llamada seleccionada en el teléfono entra en el estado de la llamada CS_CONNECTED.
  • El objeto de teléfono llama a ITAutomatedPhoneControl::StartRinger( 0, 0 ) en sí mismo cuando se selecciona una llamada en ella en el CS_OFFERING, CS_INPROGRESS o CS_CONNECTED estado de llamada y el teléfono está onhook. Esto también ocurre cuando una llamada seleccionada en el teléfono entra en el CS_OFFERING, CS_INPROGRESS o CS_CONNECTED estado de llamada y el teléfono está en onhook.
Dependiendo de las circunstancias, el objeto de teléfono realiza una de las siguientes acciones cuando se selecciona una llamada en él en el estado de llamada CS_DISCONNECTED, o cuando una llamada seleccionada en el teléfono entra en el estado de llamada CS_DISCONNECTED.
  • Si el teléfono está onhook, el objeto de teléfono llama a ITAutomatedPhoneControl::StopRinger en sí mismo.
  • Si el teléfono es offhook y el evento de estado de llamada CS_DISCONNECTED causa igual a CEC_DISCONNECT_BUSY, el objeto de teléfono llama a ITAutomatedPhoneControl::StartTone( PT_BUSY, 0 ).
  • Si el teléfono es offhook y el evento de estado de llamada CS_DISCONNECTED causa igual a CEC_DISCONNECT_NORMAL, el objeto de teléfono llama a ITAutomatedPhoneControl::StopTone.
  • Si el teléfono es offhook y el evento de estado de llamada CS_DISCONNECTED no causa CEC_DISCONNECT_BUSY ni causa CEC_DISCONNECT_NORMAL, el objeto telefónico llama a ITAutomatedPhoneControl::StartTone( PT_ERROR, 0 ).

Requisitos

   
Plataforma de destino Windows
Encabezado tapi3if.h (include Tapi3.h)
Library Uuid.lib
Archivo DLL Tapi3.dll

Consulte también

ITAutomatedPhoneControl

ITBasicCallControl

ITCallInfo