AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente.  Haga clic aquí  para ver la versión en inglés.
Ayuda / WLanguage / Funciones WLanguage / Comunicación / Funciones de teléfono
  • Principio
  • Etapas a seguir
  • Ejemplo
  • Ejemplo utilizado para gestionar las llamadas entrantes en el principal Thread
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Principio
La gestión de las llamadas entrantes se realiza en un "Hilo" específico. Cuando se detecta una llamada entrante, se ejecuta el Procedure associated con el hilo. La gestión de la llamada se realiza en este Procedure.
Etapas a seguir
Para administrar las llamadas entrantes en una aplicación WINDEV o WINDEV Mobile:
  1. Defina (si es necesario) el dispositivo TAPI en el que deben detectarse las llamadas.. Utilice las funciones:
    tapiCapabilityDevuelve las características de un dispositivo de telefonía.
    tapiDeviceSelecciona el dispositivo TAPI que se utilizará durante las siguientes operaciones de telefonía:
    tapiDeviceListEnumera los dispositivos compatibles con TAPI 2.0 y TAPI 3.1 instalados en el ordenador actual.
  2. Inicie la detección de llamadas entrantes con tapiEscuchar. Esta función ejecuta un WLanguage Procedure específico. Este Procedure se ejecutará automáticamente cuando se detecte una llamada entrante.
  3. En este procedimiento, es posible:
    • averiguar el estado de la llamada a través de las siguientes constantes:
      • tapiLineBusy: El Line está actualmente ocupado.
      • tapiLineConnected: El Line está conectado.
      • tapiLineDialing: Marcación en curso.
      • tapiLineDialTone: El Line recibe un tono de llamada
      • tapiLineDisconnected: El corresponsal ha colgado
      • tapiLineProceeding: La llamada se marca: búsqueda del corresponsal
      • tapiLineRingBack: Timbre en curso
      • tapiNewCall: Nueva llamada detectada en espera de respuesta o de rechazo.
      • tapiCallInformation: La información adicional (presentación del número) está disponible. En la mayoría de los casos, esta información estará disponible después del primer anillo.
    • gestionar la llamada a través de las siguientes funciones:
      • averiguar las características de la llamada entrante:
        tapiCallDuringDevuelve la duración de la llamada (diferencia entre la fecha y hora de inicio de la llamada y la fecha y hora de finalización de la misma).
        tapiCallEndDevuelve la fecha y hora de finalización de la llamada.
        tapiCallerIDSe utiliza para averiguar el número de Phone que llama (el que llama).
        tapiCallIsOverPermite saber si la llamada entrante o saliente ha finalizado.
        tapiCallStartDevuelve la fecha y hora de inicio de la llamada (llamada entrante o saliente).
      • realizar operaciones específicas:
        tapiAnswerCallContesta una llamada entrante que fue detectada.
        tapiKeyPressedDevuelve el historial de las teclas pulsadas en el teclado Phone desde la última llamada a tapiKeyPressed.
        tapiPlayReproduce un archivo de sonido (.WAV) para la Line especificada .
        tapiRecordRecords the current communication as a".WAV" file.
        tapiSendKeyPermite simular el uso de las teclas de Phone.
        tapiStopDeja de leer un mensaje pregrabado (tapiPlay).

        Atención:
        Este WLanguage Procedure que se ejecuta en un hilo, todas las limitaciones de los hilos deben ser cumplidas (ninguna apertura de ventana, ninguna gestión de temporizador, ninguna gestión de Event, ...). Para obtener más información, consulte Gestión de hilos con WINDEV.
        Le recomendamos que limite el número de procesos realizados en este Procedure. De hecho, durante la duración de la llamada, la detección de las otras llamadas (así como de todos los eventos de telefonía) se congela.. Si hay que realizar Process es larga, se aconseja Process la llamada en el thread principal de la aplicación (véase el ejemplo siguiente).
  4. Para finalizar la sesión de detección de llamadas entrantes, utilice tapiStopCallDetection.
Ejemplo

Ejemplo utilizado para gestionar las llamadas entrantes en el principal Thread

  • Código para declarar las variables globales de la ventana utilizada para la detección de llamadas. Los diferentes eventos utilizados para gestionar las llamadas en el principal Thread de la aplicación se declaran en este código.
    GLOBAL
    gnEventID is int
    // Implement an event to manage the incoming calls in popup
    IF Event("DetectedCall", "*.*", "PhoneCall") = 0 THEN
    Error("Unable to manage the popup for call detection", ErrorInfo())
    END
    IF Event("EndDetectedCall", "*.*", "EndPhoneCall") = 0 THEN
    Error("Unable to manage the popup for call detection", ErrorInfo())
    END
    IF Event("DetectedCallIdentifier", "*.*", "PhoneCallInfo") = 0 THEN
    Error("Unable to manage the popup for call detection", ErrorInfo())
    END
  • Código de inicialización de la ventana: este código se utiliza para iniciar el Procedure para la detección de llamadas.
    // Start the service for call detection
    IF tapiListen("IncomingCall", tapiOptionMediaModeFax, "CallDetection") THEN
    // The service for call detection is started
    Message("Call detection enabled")
    ELSE
    // The service for call detection is not started
     Error("Unable to start the call detection" + CR + ...
    "Error details:"+ CR + ErrorInfo(errMessage))
    END
  • Procedure para la detección de llamadas:
    Este Procedure se utiliza para detectar las llamadas entrantes.
    Para cada llamada entrante, las características de la misma son transmitidas al Thread principal por PostMessage.
    PROCEDURE CallDetection(nServiceID, nCallID, nStatus)
    // WARNING:
    // The processes performed by this procedure are called from a thread
    // The display should be done via the main thread
    // (this is why PostMessage is used)
    // The "Trace" function must be used to debug this process
    // detection of incoming calls
    SWITCH nStatus
    // Detect a new call:
    // Note: Additional information will be available after the fist ring
    CASE tapiNewCall:
      // Signal to the main window that a new call is arriving
      // to open a popup
      PostMessage(Handle(Window_Call), "PhoneCall", nCallID, nStatus)
      // Information about the call is available
    CASE tapiCallInformation:
      // Signal to the main window that a new call is arriving
      // to open a popup
      PostMessage(Handle(Window_Call), "PhoneCallInfo", nCallID, nStatus)
      // The line was hung up
    CASE tapiLineDisconnected:
      // Signal to the main window that a new call is arriving
      // to open a popup
      PostMessage(Handle(Window_Call), "PhoneCallEnd", nCallID, nStatus)
    END
Versión mínima requerida
  • Versión 9
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 23/06/2023

Señalar un error o enviar una sugerencia | Ayuda local