Accediendo al Calendario Exchange en Node.js vía Connect Bridge

Accediendo al calendario Exchange en Node.js a través de Connect Bridge

Ana NetoConnectors, Technical Leave a Comment

Microsoft siempre tiene APIs y SDKs para sus sistemas que son fácilmente utilizables en los lenguajes .NET.

Acceder a esos sistemas basados en Microsoft desde aplicaciones Node.js, especialmente las que no están alojadas en una plataforma Microsoft Windows, puede ser más difícil.

Sé que puede objetar, diciendo que normalmente hay servicios web publicados junto con las API y los SDK, pero de corazón, ¿está listo para usarlos de forma rápida y eficiente de inmediato? Apuesto a que estás esperando un retraso en la curva de aprendizaje.

¿No sería más fácil si una plataforma de integración le permitiera crear, recuperar, actualizar y eliminar datos en los principales sistemas empresariales mediante la ejecución de simples sentencias SQL? Al principio, eso podría sonar peligroso - ¿no amenazarían esas operaciones CRUD la integridad de los datos?

El hecho es que esta posibilidad existe - usando el Connect Bridge que usaré en este tutorial desde el Connecting Software. Es una herramienta comercial, pero puede acceder a su versión de prueba de forma gratuita. ¿Por qué no lo intentas?

Empezando

Solicite su prueba Connect Bridge, descargue y active su licencia siguiendo esto video tutorial.

También necesitaremos una máquina con Node.js instalado. Haremos una demostración en una máquina Linux con la distribución CentOS 7.x.

Preparar el medio ambiente

Supongo que has elegido tu distribución favorita de Linux. El primer paso es instalar Node.js en su entorno. En CentOS, he usado mi gestor de paquetes favorito, Yum. Si no está seguro de cómo instalar Node.js en su sistema operativo, por favor consulte el página de guías de despliegue de node.js.

Ahora tendrá que conectarse a su sistema de destino, por ejemplo, Microsoft Exchange. Para ello, ejecute Connect Bridge Management Studio y  

  1. Añada una cuenta para Exchange (Cuentas - Añadir cuenta). Para añadir la cuenta, debe seleccionar el conector Microsoft Exchange y utilizar sus credenciales de acceso al Exchange 
  2. Abra la opción Nueva Consulta y luego el Navegador de Conexiones. Busque el conector Exchange y expándalo hasta que vea la DefaultConnection. Haga clic con el botón derecho del ratón en DefaultConnection y elija Obtener cadena de conexión. Copie la cadena de conexión ODBC, ya que la necesitará para pasarla al script. 
  3. Utilice la opción Nueva consulta para probar una consulta que acceda a lo que necesita en Exchange. PTenga en cuenta que, aunque parezca que estamos utilizando una base de datos directamente, no es así. Connect Bridge está accediendo a la API y luego la presenta como si fuera una base de datos. Una vez que tenga su consulta, cópiela, ya que tendrá que pasarla al script. 

La solución


Actualización: El servicio de parque infantil Connect Bridge mencionado a continuación ya no está disponible. Este artículo se actualizará pronto en consecuencia.

Mientras tanto, si quieres usar Connect Bridge para tus proyectos de integración de Node.js, no dudes en dejar un comentario a continuación o ponte en contacto directamente con nuestro expertos.


El procedimiento para esta solución es el siguiente:

  1. Crear una carpeta para la solución. La he llamado "nodeartícula" por razones obvias.
  2. Crear un archivo de manifiesto para la aplicación de nodejs. El nombre del archivo es paquete.json. Encuentra el contenido del archivo a continuación.
{
  "nombre": "nodejsExchangeDemo",
  "versión": "0.0.1",
  "Descripción": "una demostración de acceso al calendario de intercambio en nodejs",
  "principal": "app.js",
  "autor": {
    "nombre": "",
    "Correo electrónico": ""
  },
  "dependencias": {
  }
}

3. Para esta acción necesitamos que la máquina esté conectada a Internet. Abre tu concha favorita. Y ejecuta el siguiente comando para instalar un módulo de dependencia para nuestra aplicación llamado connect-bridge-node.

npm instalar conectar-puente-nodo -guardar

Después de esta acción, la dependencia del nodo puente debería aparecer en nuestro archivo de manifiesto package.json.
4. En el siguiente paso explotaremos un poco el código fuente del módulo conexión-puente-nodo (escrito por mí) en sí mismo. Copiaremos el archivo test.js del repositorio github del módulo. y modificarlo para que se vea así (explicaremos el código en los comentarios del código mismo):

//requiere la dependencia del módulo y pasa sus parámetros de conexión
//Para obtener sus credenciales de conexión del nodo puente, por favor siga
// el capítulo sobre "¿Cómo averiguo mis credenciales?" en
// este artículo
var cbnode = require('connect-bridge-node')('pg.connecting-software.com', 4433, 'michalhainc0036',
					 '29e)5d2bc9044e2c42878A4A63BC6777', 'EX2010_PLAYGROUND_michalhainc0036');
 
// manejador de errores para conectar las operaciones del puente
función enError(err) {
    console.error(err);
}
 
// manejador de eventos conectado - ejecutado cuando se conecta con éxito
// a una integración Connect Bridge
//servidor de la instancia
función onConnected() {
    console.log('Conectado a Connect Bridge');
    console.log('Insertar registro en el calendario Exchange...');
    //Después de una conexión exitosa
	//crear una cita y llamar al onRecordInserted
	// Llamada de vuelta después
    cbnode.execute("INSERTAR EN [Cita] (Asunto, Fecha de inicio, Fecha de fin, Lugar) "+".
				   "VALORES (?, ?, ?, ?); ",
				   //parámetros para la declaración de inserción
				   ['mi cita', '2015-10-11 10:00', '2015-10-11 10:00', 'Bratislava' ],
				   enRecordado Insertado, enError);
}
 
función enRecordInserted() {
    // Las primeras 100 citas del calendario de Exchange
    //...de nuestra cuenta del patio de recreo de CB...
    // vamos a recuperar sólo cierto campo
    console.log("Recuperando las primeras 100 citas del calendario Exchange...")
    cbnode.execute("Seleccionar los 100 primeros temas, ubicación, fecha de inicio, fecha de finalización "+
					"DE [Nombramiento];",
					// Vaciar la matriz de params
					[], enRecordsRetrieved, enError);
}
 
// manejador de eventos desconectado - ejecutado cuando se desconecta con éxito
//f desde una integración Connect Bridge
//servidor de la instancia
función onDisconnected() {
    console.log('Desconectado');
}
 
// registros recibidos manejador de eventos - ejecutado cuando los registros de datos son
//recibido de Connect Bridge para una sentencia SQL previamente ejecutada
función enRecordsRetrieved(result)
{
    console.log(result);
    cbnode.disconnect(onDesconectado, onError);
}
 
//empezar a conectar con el servidor de integración Connect Bridge
cbnode.connect(onConectado, onError);

5. Ejecute su app.js por línea de comandos con el siguiente comando


nodo app.js

6. El script app.js insertará una cita en su calendario del CB Playground Exchange. Y recupera las primeras 100 citas de tu calendario después.
7. Deberías ver la siguiente salida si todo salió bien:

Calendario Exchange en Node.js

8. Y voi-la, debería aparecer su cita en el acceso web Outlook del servidor Exchange del parque infantil CB:

Calendario Exchange en Node.js

¿Cómo averiguo mis credenciales?

Aquí hay un breve recorrido para conocer sus credenciales:

Descargue el Connect Bridge Paquete de cliente de patio de recreo (tienes un hipervínculo apuntando a él en tu correo electrónico de registro). Si aún no tienes una cuenta gratuita para el patio de recreo, por favor, siéntete libre de registrarte.
Extraer el contenido del paquete y encontrar el archivo CBQueryAnalyzer.bat y ejecutarlo

Calendario Exchange en Node.js

La aplicación Query Analyzer le preguntará sobre el registro de un controlador ODBC, (necesario sólo para la aplicación, no para su proyecto de nodo app.js).
Haga clic con el botón derecho del ratón en la conexión EX2010 en el panel de conexión de la izquierda. Selecciona "Editar conexión".

Calendario Exchange en Node.js

Ve a la pestaña 'Avanzado' y copia las credenciales subrayadas en tu script app.js excepto por el parámetro del puerto que debería ser en nuestro caso 4433.

Calendario Exchange en Node.js

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

For security, use of Google's reCAPTCHA service is required which is subject to the Google Privacy Policy and Terms of Use.