Zugriff auf den Exchange-Kalender in Node.js über Connect Bridge

Zugriff auf den Exchange-Kalender in Node.js über Connect Bridge

Michal Hainc Konnektoren, Technisch Einen Kommentar hinterlassen

Microsoft hat immer APIs & SDKs für seine Systeme, die leicht in .NET-Sprachen nutzbar sind.

Der Zugriff auf solche Microsoft-basierten Systeme von Node.js-Anwendungen aus, insbesondere auf solche, die nicht auf einer Microsoft-Windows-Plattform gehostet werden, kann schwieriger sein.

Ich weiß, dass Sie einwenden könnten, dass es normalerweise Webdienste gibt, die zusammen mit den APIs & SDKs veröffentlicht werden, aber Hand aufs Herz, sind Sie bereit, sie sofort schnell und effizient zu nutzen? Ich wette, Sie erwarten eine Verzögerung der Lernkurve.

Wäre es nicht einfacher, wenn eine Integrationsplattform das Erstellen, Abrufen, Aktualisieren und Löschen von Daten in wichtigen Geschäftssystemen durch die Ausführung einfacher SQL-Anweisungen ermöglichen würde? Zuerst mag das gefährlich klingen - würden diese CRUD-Operationen nicht die Datenintegrität gefährden?

Tatsache ist, dass diese Möglichkeit besteht - mit Hilfe der Connect Bridge Plattform, die ich in diesem Tutorial von Connecting Software verwenden werde. Es handelt sich um ein kommerzielles Tool, aber Sie können kostenlos auf seine Testversion zugreifen. Warum probieren Sie es nicht aus?

Erste Schritte

Fordern Sie Ihre Connect Bridge Testversion an, laden Sie Ihre Lizenz herunter und aktivieren Sie sie, indem Sie wie folgt vorgehen Lehrvideo.

Wir benötigen auch eine Maschine mit installiertem Node.js. Wir werden auf einem Linux-Rechner mit der CentOS 7.x-Distribution demonstrieren.

Die Umwelt vorbereiten

Ich nehme an, Sie haben sich Ihre Lieblings-Linux-Distribution ausgesucht. Der erste Schritt ist die Installation von Node.js in Ihrer Umgebung. Auf CentOS habe ich meinen bevorzugten Paketmanager Yum verwendet. Wenn Sie sich nicht sicher sind, wie Sie Node.js in Ihrem Betriebssystem installieren, konsultieren Sie bitte die Seite node.js Anleitungen zur Bereitstellung.

Sie müssen nun eine Verbindung zu Ihrem Zielsystem herstellen, z. B. zu Microsoft Exchange. Starten Sie dazu das Connect Bridge Management Studio und  

  1. Fügen Sie ein Konto für Exchange hinzu (Konten - Konto hinzufügen). Zum Hinzufügen des Kontos sollten Sie den Connector Microsoft Exchange auswählen und Ihre Exchange-Anmeldedaten verwenden 
  2. Öffnen Sie die Option Neue Abfrage und dann den Verbindungsbrowser. Suchen Sie den Connector Exchange und erweitern Sie ihn, bis Sie die DefaultConnection sehen. Klicken Sie mit der rechten Maustaste auf die DefaultConnection und wählen Sie Get Connection string. Kopieren Sie die ODBC-Verbindungszeichenfolge, da Sie sie benötigen, um sie an das Skript weiterzugeben. 
  3. Verwenden Sie die Option Neue Abfrage, um eine Abfrage auszuprobieren, die auf das zugreift, was Sie in Exchange benötigen. PBitte beachten Sie, dass es zwar so aussieht, als ob wir direkt eine Datenbank verwenden, dies aber nicht der Fall ist. Connect Bridge greift auf die API zu und stellt sie dann so dar, als wäre es eine Datenbank. Sobald Sie Ihre Abfrage haben, kopieren Sie sie, da Sie sie an das Skript weitergeben müssen. 

Die Lösung


Aktualisierung: Der unten erwähnte Dienst Connect Bridge Playground ist nicht mehr verfügbar. Dieser Artikel wird demnächst entsprechend aktualisiert.

In der Zwischenzeit, wenn Sie Connect Bridge für Ihre Node.js-Integrationsprojekte verwenden möchten, zögern Sie nicht, einen Kommentar zu hinterlassen oder sich direkt mit unserem Experten.


Das Verfahren für diese Lösung sieht wie folgt aus:

  1. Erstellen Sie einen Ordner für die Lösung. Ich habe sie aus offensichtlichen Gründen "Knotenartikel" genannt.
  2. Erstellen Sie eine Manifestdatei für die nodejs-Anwendung. Der Dateiname lautet package.json. Suchen Sie den Inhalt der Datei unten.
{
  "name": "nodejsExchangeDemo",
  "version": "0.0.1",
  "description": "a demonstration of accessing exchnage calendar in nodejs",
  "main": "app.js",
  "author": {
    "name": "",
    "email": ""
  },
  "dependencies": {
  }
}

3. Für diese Aktion benötigen wir einen Rechner, der mit dem Internet verbunden ist. Öffnen Sie Ihre Lieblings-Shell. Und führen Sie den folgenden Befehl aus, um ein Abhängigkeitsmodul für unsere Anwendung namens connect-bridge-node zu installieren.

npm install connect-bridge-node -save

Nach dieser Aktion sollte die Connect-Bridge-Knoten-Abhängigkeit in unserer Manifestdatei package.json erscheinen.
4. Im nächsten Schritt werden wir ein wenig den Quellcode des Moduls connect-bridge-node (von mir geschrieben) selbst ausnutzen. Wir werden die Datei test.js aus dem github-Repository des Moduls. und modifizieren Sie es so, dass es so aussieht (wir werden den Code in den Code-Kommentaren selbst erklären):

//require the module dependency and pass your connection parameters
//to obtain your connect-bridge-node credentials please follow 
//the chapter on 'How do I find out my credentials?' in 
//this article
var cbnode = require('connect-bridge-node')('pg.connecting-software.com', 4433, 'michalhainc0036',
					 '29e)5d2bc9044e2c42878A4A63BC6777', 'EX2010_PLAYGROUND_michalhainc0036');
 
//error handler for connect bridge operations
function onError(err) {
    console.error(err);
}
 
//connected event handler - executed when successfully connected 
//to a Connect Bridge integration
//server instance
function onConnected() {
    console.log('Connected to Connect Bridge');
    console.log('Inserting record to Exchange Calendar...');
    //after successfull connection we will 
	//create one appointment and call the onRecordInserted
	//callback afterwards
    cbnode.execute("INSERT INTO [Appointment] (Subject, StartDate, EndDate, Location) "+
				   "VALUES (?, ?, ?, ?); ",
				   //parameters for the insert statement
				   ['my appointment', '2015-10-11 10:00', '2015-10-11 10:00', 'Bratislava' ], 
				   onRecordInserted, onError);
}
 
function onRecordInserted() {
    //first 100 appointments from the Exchange calendar
    //from our CB playground account 
    //we will retrieve only certain field
    console.log("Retrieving first 100 appointments from Exchange calendar...")
    cbnode.execute( "SELECT TOP 100 Subject, Location, StartDate, EndDate "+
					"FROM [Appointment];",
					//empty params array
					[], onRecordsRetrieved, onError); 
}
 
//disconnected event handler - executed when successfully disconnected 
//from a Connect Bridge integration
//server instance
function onDisconnected() {
    console.log('Disconnected');
}
 
//records received event handler - executed when data records are 
//received from Connect Bridge for a previously executed SQL statement
function onRecordsRetrieved(result)
{
    console.log(result);
    cbnode.disconnect(onDisconnected, onError);
}
 
//begin connecting to the Connect Bridge integration server
cbnode.connect(onConnected, onError);

5. Führen Sie Ihre app.js über die Befehlszeile mit folgendem Befehl aus


node app.js

6. Das app.js-Skript fügt einen Termin in Ihren CB Playground Exchange-Kalender ein. Und ruft anschließend die ersten 100 Termine aus Ihrem Kalender ab.
7. Sie sollten die folgende Ausgabe sehen, wenn alles gut gegangen ist:

8. Und voi-la, da sollte Ihr Termin im Outlook Web Access des CB Playground Exchange Servers angezeigt werden:

Wie finde ich meine Berechtigungsnachweise heraus?

Hier ist ein kurzer Rundgang, um Ihre Zugangsdaten zu erfahren:

Laden Sie die Connect Bridge Playground Client-Paket (Sie haben in Ihrer Registrierungs-E-Mail einen Hyperlink, der darauf verweist). Wenn Sie noch kein kostenloses Spielplatzkonto haben, können Sie sich gerne registrieren.
Extrahieren Sie den Inhalt des Pakets, suchen Sie die Datei CBQueryAnalyzer.bat und führen Sie sie aus

Die Query Analyzer-Anwendung fragt Sie nach der Registrierung eines ODBC-Treibers (wird nur für die Anwendung benötigt, nicht für Ihr app.js-Knotenprojekt).
Klicken Sie mit der rechten Maustaste auf die EX2010-Verbindung in der linken Anschlusstafel. Wählen Sie 'Verbindung bearbeiten'.

Gehen Sie zur Registerkarte 'Erweitert' und kopieren Sie die unterstrichenen Anmeldedaten in Ihr app.js-Skript mit Ausnahme des Portparameters, der in unserem Fall 4433 sein sollte.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.