Inicio del Lector inmersivo
En la introducción, se indica lo que es el Lector inmersivo y cómo implementa técnicas demostradas para mejorar la comprensión lectora de nuevos lectores, alumnos de idiomas y alumnos con diferencias de aprendizaje. En este artículo se muestra cómo iniciar el Lector inmersivo en JavaScript, Python, Android o iOS.
Prerrequisitos
- Una suscripción a Azure: cree una cuenta gratuita
- Un recurso del Lector inmersivo configurado para la autenticación de Azure Active Directory. Siga estas instrucciones para realizar la configuración. Necesitará algunos de los valores que se crean aquí cuando configure las propiedades del entorno. Guarde la salida de la sesión en un archivo de texto para futuras referencias.
- Node.js y Yarn
- Un IDE como Visual Studio Code
Crear una aplicación web de Node.js con Express
Cree una aplicación web de Node.js con la herramienta express-generator.
npm install express-generator -g
express --view=pug myapp
cd myapp
Instale las dependencias de yarn y agregue las dependencias request y dotenv, que se utilizarán más adelante en el tutorial.
yarn
yarn add request
yarn add dotenv
Adquisición de un token de autenticación de Azure AD
Después, escriba una API de back-end para recuperar un token de autenticación de Azure AD.
Necesita algunos valores del paso del requisito previo de configuración de la autenticación de Azure AD para esta parte. Vuelva a consultar el archivo de texto que ha guardado de esa sesión.
TenantId => Azure subscription TenantId
ClientId => Azure AD ApplicationId
ClientSecret => Azure AD Application Service Principal password
Subdomain => Immersive Reader resource subdomain (resource 'Name' if the resource was created in the Azure portal, or 'CustomSubDomain' option if the resource was created with Azure CLI Powershell. Check the Azure portal for the subdomain on the Endpoint in the resource Overview page, for example, 'https://[SUBDOMAIN].cognitiveservices.azure.com/')
Una vez que tenga estos valores, cree un nuevo archivo llamado .env y pegue el siguiente código en él, proporcionando sus valores de propiedad personalizados desde arriba. No incluya comillas ni los caracteres "{" y "}".
TENANT_ID={YOUR_TENANT_ID}
CLIENT_ID={YOUR_CLIENT_ID}
CLIENT_SECRET={YOUR_CLIENT_SECRET}
SUBDOMAIN={YOUR_SUBDOMAIN}
Asegúrese de no confirmar este archivo en el control de código fuente, ya que contiene secretos que no deben hacerse públicos.
Después, abra el archivo app.js y agregue lo siente en la parte superior. Esto carga las propiedades definidas en el archivo .env como variables de entorno en el nodo.
require('dotenv').config();
Abra el archivo routes\index.js y reemplace su contenido por el código siguiente.
Este código crea un punto de conexión de la API que adquiere un token de autenticación de Azure AD mediante la contraseña de la entidad de servicio. También recupera el subdominio. Luego, devuelve un objeto que contiene el token y el subdominio.
var request = require('request');
var express = require('express');
var router = express.Router();
router.get('/getimmersivereaderlaunchparams', function(req, res) {
request.post ({
headers: {
'content-type': 'application/x-www-form-urlencoded'
},
url: `https://login.windows.net/${process.env.TENANT_ID}/oauth2/token`,
form: {
grant_type: 'client_credentials',
client_id: process.env.CLIENT_ID,
client_secret: process.env.CLIENT_SECRET,
resource: 'https://cognitiveservices.azure.com/'
}
},
function(err, resp, tokenResponse) {
if (err) {
return res.status(500).send('CogSvcs IssueToken error');
}
const token = JSON.parse(tokenResponse).access_token;
const subdomain = process.env.SUBDOMAIN;
return res.send({token: token, subdomain: subdomain});
}
);
});
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
module.exports = router;
El punto de conexión de la API getimmersivereaderlaunchparams debe estar protegido mediante algún tipo de autenticación (por ejemplo, OAuth) para evitar que usuarios no autorizados obtengan tokens para utilizarlos contra el servicio Lector inmersivo y su facturación; este trabajo está fuera del ámbito de este tutorial.
Iniciar el Lector inmersivo con contenido de muestra
Abra views\layout.pug y agregue el siguiente código bajo la etiqueta
head, antes de la etiquetabody. Estas etiquetasscriptcargan el DSK de Lector inmersivo y jQuery.script(src='https://contentstorage.onenote.office.net/onenoteltir/immersivereadersdk/immersive-reader-sdk.0.0.2.js') script(src='https://code.jquery.com/jquery-3.3.1.min.js')Abra el archivo views\index.pug y reemplace el contenido por el código siguiente. Este código rellena la página con algún contenido de muestra y agrega un botón que inicia el Lector inmersivo.
extends layout block content h2(id='title') Geography p(id='content') The study of Earth's landforms is called physical geography. Landforms can be mountains and valleys. They can also be glaciers, lakes or rivers. div(class='immersive-reader-button' data-button-style='iconAndText' data-locale='en-US' onclick='launchImmersiveReader()') script. function getImmersiveReaderLaunchParamsAsync() { return new Promise((resolve, reject) => { $.ajax({ url: '/getimmersivereaderlaunchparams', type: 'GET', success: data => { resolve(data); }, error: err => { console.log('Error in getting token and subdomain!', err); reject(err); } }); }); } async function launchImmersiveReader() { const content = { title: document.getElementById('title').innerText, chunks: [{ content: document.getElementById('content').innerText + '\n\n', lang: 'en' }] }; const launchParams = await getImmersiveReaderLaunchParamsAsync(); const token = launchParams.token; const subdomain = launchParams.subdomain; ImmersiveReader.launchAsync(token, subdomain, content); }Nuestra aplicación web ya está lista. Inicie la aplicación; para ello, ejecute:
npm startAbra el explorador web y vaya a http://localhost:3000 . Debería ver el contenido anterior en la página. Haga clic en el botón Lector inmersivo para iniciar el Lector inmersivo con su contenido.
Especificar el idioma del contenido
El Lector inmersivo es compatible con numerosos lenguajes diferentes. Para especificar el idioma del contenido, puede seguir estos pasos.
Abra views\index.pug y agregue el código siguiente bajo la etiqueta
p(id=content)que agregó en el paso anterior. Este código agrega contenido en español a la página.p(id='content-spanish') El estudio de las formas terrestres de la Tierra se llama geografía física. Los accidentes geográficos pueden ser montañas y valles. También pueden ser glaciares, lagos o ríos.En el código JavaScript, agregue lo siguiente encima de la llamada a
ImmersiveReader.launchAsync. Este código pasa el contenido en español al Lector inmersivo.content.chunks.push({ content: document.getElementById('content-spanish').innerText + '\n\n', lang: 'es' });Vaya de nuevo a http://localhost:3000 . Debería ver el texto en español en la página y, al hacer clic en Lector inmersivo, se mostrará en el Lector inmersivo también.
Especificar el idioma de la interfaz del Lector inmersivo
De forma predeterminada, el idioma de la interfaz del Lector inmersivo coincide con la configuración de idioma del explorador. También puede especificar el idioma de la interfaz del Lector inmersivo con el código siguiente.
En views\index.pug, reemplace la llamada a
ImmersiveReader.launchAsync(token, subdomain, content)por el código siguiente.const options = { uiLang: 'fr', } ImmersiveReader.launchAsync(token, subdomain, content, options);Vaya a http://localhost:3000. Al iniciar el Lector inmersivo, se mostrará la interfaz en francés.
Iniciar el Lector inmersivo con contenido de matemáticas
Puede incluir contenido de matemáticas en el Lector inmersivo mediante MathML.
Modifique views\index.pug para incluir el código siguiente encima de la llamada a
ImmersiveReader.launchAsync:const mathML = '<math xmlns="https://www.w3.org/1998/Math/MathML" display="block"> \ <munderover> \ <mo>∫</mo> \ <mn>0</mn> \ <mn>1</mn> \ </munderover> \ <mrow> \ <msup> \ <mi>x</mi> \ <mn>2</mn> \ </msup> \ <mo>ⅆ</mo> \ <mi>x</mi> \ </mrow> \ </math>'; content.chunks.push({ content: mathML, mimeType: 'application/mathml+xml' });Vaya a http://localhost:3000. Al iniciar el Lector inmersivo y desplazarse hasta la parte inferior, verá la fórmula matemática.
Pasos siguientes
- Explorar el SDK del Lector inmersivo y agregar la Referencia del SDK del Lector inmersivo
- Ver muestras de código en GitHub
Prerrequisitos
- Una suscripción a Azure: cree una cuenta gratuita
- Un recurso del Lector inmersivo configurado para la autenticación de Azure Active Directory. Siga estas instrucciones para realizar la configuración. Necesitará algunos de los valores que se crean aquí cuando configure las propiedades del entorno. Guarde la salida de la sesión en un archivo de texto para futuras referencias.
- Git.
- SDK del Lector inmersivo.
- Python y pip. A partir de Python 3.4, pip se incluye de forma predeterminada con los instaladores binarios de Python.
- Flask.
- Jinja.
- virtualenv y virtualenvwrapper-win para Windows o virtualenvwrapper para OSX.
- Módulo requests.
- Un IDE como Visual Studio Code.
Configuración de las credenciales de autenticación
Cree un archivo denominado .env y pegue en él los siguientes nombres y valores. Proporcione los valores especificados al crear el recurso del Lector inmersivo.
TENANT_ID={YOUR_TENANT_ID}
CLIENT_ID={YOUR_CLIENT_ID}
CLIENT_SECRET={YOUR_CLIENT_SECRET}
SUBDOMAIN={YOUR_SUBDOMAIN}
No confirme este archivo en el control de código fuente, ya que contiene secretos que no deben hacerse públicos.
Proteja el punto de conexión de la API getimmersivereadertoken mediante algún tipo de autenticación, por ejemplo, OAuth. La autenticación impide que usuarios no autorizados obtengan tokens para usarlos en el servicio de Lector inmersivo y su facturación. Este escenario queda fuera del alcance de este tutorial.
Creación de una aplicación web de Python en Windows
Cree una aplicación web de Python con flask en Windows.
Instale Git.
Una vez instalado Git, abra un símbolo del sistema y clone el repositorio Git del SDK del Lector inmersivo en una carpeta del equipo.
git clone https://github.com/microsoft/immersive-reader-sdk.git
Instale Python.
Seleccione la casilla Add Python to PATH (Agregar Python a PATH).

Seleccione las casillas correspondientes para agregar Características opcionales y seleccione Siguiente.

Seleccione Custom installation (Instalación personalizada) y establezca la ruta de acceso de instalación como carpeta raíz (por ejemplo, C:\Python37-32\). A continuación, seleccione Instalar.

Una vez finalizada la instalación de Python, abra un símbolo del sistema y use cd para ir a la carpeta Scripts de Python.
cd C:\Python37-32\Scripts
Instale Flask.
pip install flask
Instale Jinja2. Se trata de un motor de plantillas completo para Python.
pip install jinja2
Instale virtualenv. Se trata de una herramienta para crear entornos de Python aislados.
pip install virtualenv
Instale virtualenvwrapper-win. Con virtualenvwrapper se quiere facilitar el uso de virtualenv.
pip install virtualenvwrapper-win
Instale el módulo requests. Requests es una biblioteca HTTP con licencia de Apache2, escrita en Python.
pip install requests
Instale el módulo python-dotenv. Este módulo lee el par clave-valor del archivo .env y lo agrega a la variable de entorno.
pip install python-dotenv
Cree un entorno virtual.
mkvirtualenv advanced-python
Use cd para ir a la carpeta raíz del proyecto de ejemplo.
cd C:\immersive-reader-sdk\js\samples\advanced-python
Conecte el proyecto de ejemplo con el entorno. De este modo se asigna el entorno virtual recién creado a la carpeta raíz del proyecto de ejemplo.
setprojectdir .
Active el entorno virtual.
activate
Ahora el proyecto debe estar activo; verá algo parecido a (advanced-python) C:\immersive-reader-sdk\js\samples\advanced-python> en el símbolo del sistema.
Desactive el entorno.
deactivate
El prefijo (advanced-python) habrá desaparecido, ya que el entorno se ha desactivado.
Para volver a activar el entorno, ejecute workon advanced-python desde la carpeta raíz del proyecto de ejemplo.
workon advanced-python
Inicio del Lector inmersivo con contenido de ejemplo
Cuando el entorno esté activo, ejecute el proyecto de ejemplo escribiendo flask run en la carpeta raíz del proyecto de ejemplo.
flask run
Abra el explorador web y vaya a http://localhost:5000.
Creación de una aplicación web de Python en OSX
Cree una aplicación web de Python con flask en OSX.
Instale Git.
Una vez instalado Git, abra el terminal y clone el repositorio Git del SDK del Lector inmersivo en una carpeta del equipo.
git clone https://github.com/microsoft/immersive-reader-sdk.git
Instale Python.
La carpeta raíz de Python, Python37-32, por ejemplo, debe estar ahora en la carpeta de aplicaciones.
Una vez finalizada la instalación de Python, abra el terminal y use cd para ir a la carpeta Scripts de Python.
cd immersive-reader-sdk/js/samples/advanced-python
Instale PIP.
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
Ejecute el código siguiente para instalar pip para el usuario que tiene actualmente iniciada la sesión para evitar problemas de permisos.
python get-pip.py --user
sudo nano /etc/paths
- Escriba la contraseña cuando se le solicite.
- Agregue la ruta de acceso de la instalación de pip a la variable PATH.
- Vaya al final del archivo y escriba la ruta de acceso que desea agregar como último elemento de la lista, por ejemplo,
PATH=$PATH:/usr/local/bin. - Seleccione CTRL + X para salir.
- Escriba Y para guardar el búfer modificado.
- Eso es todo. Para probarlo, escriba
echo $PATHen una nueva ventana del terminal.
Instale Flask.
pip install flask --user
Instale Jinja2. Se trata de un motor de plantillas completo para Python.
pip install Jinja2 --user
Instale virtualenv. Se trata de una herramienta para crear entornos de Python aislados.
pip install virtualenv --user
Instale virtualenvwrapper. Con virtualenvwrapper se quiere facilitar el uso de virtualenv.
pip install virtualenvwrapper --user
Instale el módulo requests. Requests es una biblioteca HTTP con licencia de Apache2, escrita en Python.
pip install requests --user
Instale el módulo python-dotenv. Este módulo lee el par clave-valor del archivo .env y lo agrega a la variable de entorno.
pip install python-dotenv --user
Elija la carpeta donde desea conservar los entornos virtuales y ejecute este comando:
mkdir ~/.virtualenvs
Use cd para ir a la carpeta de aplicación de ejemplo de Python del SDK del Lector inmersivo.
cd immersive-reader-sdk/js/samples/advanced-python
Cree un entorno virtual.
mkvirtualenv -p /usr/local/bin/python3 advanced-python
Conecte el proyecto de ejemplo con el entorno. De este modo se asigna el entorno virtual recién creado a la carpeta raíz del proyecto de ejemplo.
setprojectdir .
Active el entorno virtual.
activate
Ahora el proyecto debe estar activo; verá algo parecido a (advanced-python) /immersive-reader-sdk/js/samples/advanced-python> en el símbolo del sistema.
Desactive el entorno.
deactivate
El prefijo (advanced-python) habrá desaparecido, ya que el entorno se ha desactivado.
Para volver a activar el entorno, ejecute workon advanced-python desde la carpeta raíz del proyecto de ejemplo.
workon advanced-python
Inicio del Lector inmersivo con contenido de ejemplo
Cuando el entorno esté activo, ejecute el proyecto de ejemplo escribiendo flask run en la carpeta raíz del proyecto de ejemplo.
flask run
Abra el explorador web y vaya a http://localhost:5000.
Pasos siguientes
- Consulte SDK del Lector inmersivo y Referencia del SDK del Lector inmersivo.
- Puede ver ejemplos de código en GitHub.
Prerrequisitos
- Una suscripción a Azure: cree una cuenta gratuita
- Un recurso del Lector inmersivo configurado para la autenticación de Azure Active Directory. Siga estas instrucciones para realizar la configuración. Necesitará algunos de los valores que se crean aquí cuando configure las propiedades del entorno. Guarde la salida de la sesión en un archivo de texto para futuras referencias.
- Git.
- SDK del Lector inmersivo.
- Android Studio.
Configuración de las credenciales de autenticación
Inicie Android Studio y abra el proyecto desde el directorio immersive-reader-sdk/js/samples/quickstart-java-android (Java) o immersive-reader-sdk/js/samples/quickstart-kotlin (Kotlin).
Cree un archivo denominado env dentro de la carpeta /assets. Agregue los siguientes nombres y valores y proporcione los valores según corresponda. No confirme este archivo en el control de código fuente, ya que contiene secretos que no deben hacerse públicos.
TENANT_ID=<YOUR_TENANT_ID> CLIENT_ID=<YOUR_CLIENT_ID> CLIENT_SECRET=<YOUR_CLIENT_SECRET> SUBDOMAIN=<YOUR_SUBDOMAIN>
Inicio del Lector inmersivo con contenido de ejemplo
Elija un emulador de dispositivos de AVD Manager y ejecute el proyecto.
Pasos siguientes
- Consulte SDK del Lector inmersivo y Referencia del SDK del Lector inmersivo.
- Puede ver ejemplos de código en GitHub.
Prerrequisitos
- Una suscripción a Azure: cree una cuenta gratuita
- Un recurso del Lector inmersivo configurado para la autenticación de Azure Active Directory. Siga estas instrucciones para realizar la configuración. Necesitará algunos de los valores que se crean aquí cuando configure las propiedades del entorno. Guarde la salida de la sesión en un archivo de texto para futuras referencias.
- macOS.
- Git.
- SDK del Lector inmersivo.
- Xcode.
Configuración de las credenciales de autenticación
Abra Xcode y abra immersive-reader-sdk/js/samples/ios/quickstart-swift/quickstart-swift.xcodeproj.
En el menú superior, seleccione Product > Scheme > Edit Scheme (Producto > Esquema > Editar esquema).
En la vista Run (Ejecutar), seleccione la pestaña Arguments (Argumentos).
En la sección Environment Variables (Variables de entorno), agregue los siguientes nombres y valores. Proporcione los valores especificados al crear el recurso del Lector inmersivo.
TENANT_ID=<YOUR_TENANT_ID> CLIENT_ID=<YOUR_CLIENT_ID> CLIENT_SECRET<YOUR_CLIENT_SECRET> SUBDOMAIN=<YOUR_SUBDOMAIN>
No confirme este cambio en el control de código fuente, ya que contiene secretos que no deben hacerse públicos.
Inicio del Lector inmersivo con contenido de ejemplo
En Xcode, seleccione Ctrl+R para ejecutar el proyecto.
Pasos siguientes
- Consulte SDK del Lector inmersivo y Referencia del SDK del Lector inmersivo.
- Puede ver ejemplos de código en GitHub.