Para implementar el reconocimiento por voz en XOne, se debe inicialmente crear un botón para asociar la funcionalidad para iniciar la captura de voz.

La función asociada a este botón deberá contener lo siguiente:

Métodos de script asociados:

function doSpeak(sLanguage, strText, waitForAnswer, objSource, objAR) {
    let jsParams = {
        language   : sLanguage,  //lenguaje de captura, es, en...
        text       : strText,      // el texto que se dice, es decir, la pregunta que se hace
        speechRate : 120, //el tiempo, en milisegundos que espera una respuesta de la pregunta que se le esta haciendo
        onCompleted: function() {
            if(waitForAnswer==1)
            {
                objSource.MAP_IMGLISTENING="microRojo.png";    //ejemplo para cambiar icono
                ui.refresh("MAP_IMGLISTENING,MAP_BT_OPCION2"); //refrescar
                recognizeSpeech(sLanguage,objSource,objAR);      //esto es para realizar el reconocimiento de lo que dice el usuario, para capturarlo
            }
        }
    };
    ui.speak(jsParams);
}

Esta es la función que es llamada anterior, para capturar las palabras.

function recognizeSpeech(sLanguage,objSource, objAR) {
    let jsParams = {
        language: sLanguage,   //el lenguaje
        timeoutAfterSilence: 10000,   //tiempo de espera despues de un silencio, para procesar lo que dice el usuario, en milisegundos
        onRecognize: function(sText) {    //el proceso de reconocimiento. 
            sText = processText(sText);
            if (objSource.MAP_INITAR==1 && objSource.MAP_ARELEMENT!=null && objSource.MAP_ARELEMENT!='' && objAR!== null)
            {
                let idx=100;
                if (objAR.MAP_TITLE0.toUpperCase() == sText )
                    idx=0;
                else
                {
                    if (objAR.MAP_TITLE1.toUpperCase() == sText )
                        idx=1;
                    else
                    {
                        if (objAR.MAP_TITLE2.toUpperCase() == sText )
                            idx=2;
                    }
                }
 
            }
            else
            {
                objSource.MAP_TEXT=sText;
                ui.refreshValue("MAP_TEXT");    
            }
        },
        onError: function(nErrorCode, sError) {     //salta si hubo un error
             //ui.msgBox("onError():\nError code: " + nErrorCode + "\nMensaje: " + sError, "Desde callback", 0);
            //objSource.MAP_IMGLISTENING="microGris.png";
            //ui.refresh("MAP_BT_OPCION1");
            //nErrorCode==6
            objSource.MAP_IMGLISTENING="microGris.png";
            ui.refresh("MAP_BT_OPCION2");
            var a=1;
        },
        onPartialResults: function(extras) {     //si hay resultados parciales, por si dice una frase
            var a=1;
        },
        onEndOfSpeech: function()    // al finalizar el speech
        {
            objSource.MAP_IMGLISTENING="microGris.png";
            ui.refresh("MAP_BT_OPCION2");
        }
    };
    ui.recognizeSpeech(jsParams);
}