Acesso ao Calendário Exchange no Node.js via Connect Bridge

Acesso ao calendário Exchange no Node.js via Connect Bridge

Georgii KapanadzeConnectors, Technical Leave a Comment

A Microsoft sempre tem APIs & SDKs para seus sistemas que são facilmente utilizáveis em idiomas .NET.

O acesso a tais sistemas baseados na Microsoft a partir de aplicativos Node.js, especialmente aqueles não hospedados em uma plataforma Microsoft Windows, pode ser mais complicado.

Eu sei que você pode objetar, dizendo que geralmente há serviços web publicados junto com as APIs & SDKs, mas de coração, você está pronto para usá-los de uma forma rápida e eficiente imediatamente? Aposto que você está esperando algum atraso na curva de aprendizado.

Não seria mais fácil se uma plataforma de integração lhe permitisse criar, recuperar, actualizar e apagar dados nos principais sistemas empresariais através da execução de simples instruções SQL? No início, isso poderia parecer perigoso - essas operações CRUD não ameaçariam a integridade dos dados?

O facto é que esta possibilidade existe - utilizando o Connect Bridge que irei utilizar neste tutorial do Connecting Software. É uma ferramenta comercial, mas você pode acessar sua versão de teste gratuitamente. Por que você não experimenta?

Como Começar

Solicite o seu teste Connect Bridge, faça o download e active a sua licença, seguindo o seguinte tutorial em vídeo.

Também vamos precisar de uma máquina com o Node.js instalado. Vamos demonstrar em uma máquina Linux rodando a distribuição CentOS 7.x.

Preparar o Ambiente

Presumo que você tenha escolhido a sua distribuição Linux favorita. O primeiro passo é instalar o Node.js no seu ambiente. No CentOS, eu usei o meu gerenciador de pacotes favorito, Yum. Se você não tem certeza de como instalar o Node.js no seu sistema operacional, por favor consulte o página de guias de implantação do nodo.js.

Agora você precisa se conectar ao seu sistema alvo, por exemplo, ao Microsoft Exchange. Para isso, execute o Connect Bridge Management Studio e  

  1. Adicionar uma conta para Exchange (Contas - Adicionar conta). Para adicionar a conta, você deve selecionar o conector Microsoft Exchange e usar suas credenciais de login do Exchange 
  2. Abra a opção Nova Consulta e depois o Navegador de Conexão. Encontre o Conector Exchange e expanda-o até ver o DefaultConnection. Clique com o botão direito do mouse na opção DefaultConnection e escolha Get Connection string. Copie a string de conexão ODBC, pois você vai precisar dela para passá-la para o script. 
  3. Use a opção Nova Consulta para testar uma consulta que irá acessar o que você precisa no Exchange. PNote que embora pareça que estamos usando um banco de dados diretamente, não é o caso. Connect Bridge está acessando a API e depois apresentando-a como se fosse uma base de dados. Uma vez que você tenha sua consulta, copie-a, pois você precisará passá-la para o script. 

A solução


Atualização: O serviço de playground Connect Bridge mencionado abaixo já não está disponível. Este artigo será em breve actualizado em conformidade.

Entretanto, se você quiser usar o Connect Bridge para seus projetos de integração Node.js, não hesite em deixar um comentário abaixo ou entre em contato diretamente com nosso especialistas.


A solução é a seguinte:

  1. Crie uma pasta para a solução. Eu a chamei de 'nodearticle' por razões óbvias.
  2. Crie um arquivo de manifesto para a aplicação nodejs. O nome do arquivo é package.json. Encontre o conteúdo do arquivo abaixo.
{
  "nome": "nodejsExchangeDemo",
  "versão": "0.0.1",
  "descrição": "uma demonstração de acesso ao calendário exchnage em nodejs",
  "principal": "app.js",
  "Autor": {
    "nome": "",
    "e-mail": ""
  },
  "Dependências": {
  }
}

3. Para esta acção, precisamos que a máquina esteja ligada à Internet. Abra a sua concha favorita. E execute o seguinte comando para instalar um módulo de dependência para a nossa aplicação chamado connectt-bridge-node.

npm install connect-bridge-node -save

Após esta ação, a dependência do nó conexão-ponte deve aparecer em nosso arquivo de manifesto package.json.
4. No próximo passo vamos explorar um pouco o próprio código fonte do módulo connectt-bridge-node (escrito por mim). Nós copiaremos o arquivo test.js do arquivo repositório github do módulo. e modificá-lo para que fique assim (vamos explicar o código nos comentários do próprio código):

//requerir a dependência do módulo e passar seus parâmetros de conexão
// para obter as suas credenciais de ligação-ponte-nó por favor siga
// o capítulo sobre 'Como posso descobrir as minhas credenciais?' em
//este artigo
var cbnode = require('connect-bridge-node')('pg.connecting-software.com', 4433, 'michalhainc0036',
					 '29e)5d2bc9044e2c42878A4A63BC6777', 'EX2010_PLAYGROUND_michalhainc0036');
 
//tratador de erros para operações de pontes de ligação
função noError(err) {
    console.erro(err);
}
 
//connected event handler - executado quando conectado com sucesso
// para uma integração Connect Bridge
//servidor instância
função emConnected() {
    console.log('Conectado ao Connect Bridge');
    console.log('Inserindo registro no Calendário Exchange...');
    //after successfull connection we will
	//criar um compromisso e chamar o onRecordInserted
	//callback depois
    cbnode.execute("INSERIR INTO [Consulta] (Assunto, StartDate, EndDate, Localização) "+
				   "VALORES (?, ?, ?, ?, ?);",
				   //parâmetros para a declaração de inserção
				   ['minha nomeação', '2015-10-11 10:00', '2015-10-11 10:00', 'Bratislava' ],
				   onRecordInserted, onError);
}
 
função onRecordInserted() {
    //first 100 nomeações do calendário Exchange
    //f da nossa conta do parque infantil CB
    //vimos recuperar apenas determinado campo
    console.log("Recuperar os primeiros 100 compromissos do calendário Exchange...")
    cbnode.execute("SELECT TOP 100 Subject, Location, StartDate, EndDate "+
					"DA [Nomeação];",
					// matriz de params vazios
					[], onRecordsRetrieved, onError);
}
 
//disconnected event handler - executado quando desconectado com sucesso
//f de uma integração Connect Bridge
//servidor instância
função onDisconnected() {
    console.log('Desconectado');
}
 
//registros recebidos manipulador de eventos - executado quando os registros de dados são
//recebido de Connect Bridge para uma instrução SQL previamente executada
function onRecordsRetrieved(result)
{
    console.log(resultado);
    cbnode.disconnect(onDisconnected, onError);
}
 
//begin ligando-se ao servidor de integração Connect Bridge
cbnode.connect(onConnected, onError);

5. Execute seu app.js via linha de comando usando o seguinte comando


nódulo app.js

6. O script do app.js irá inserir um compromisso no seu calendário do Playground Exchange do CB. E recupera os primeiros 100 compromissos do seu calendário depois.
7. Você deve ver a seguinte saída se tudo correu bem:

Exchange calendário em Node.js

8. E voi-la, deve haver a sua marcação no Outlook Web Access do servidor do CB Playground Exchange:

Exchange calendário em Node.js

Como é que eu descubro as minhas credenciais?

Aqui está uma breve passagem para descobrir as suas credenciais:

Faça o download do Pacote Connect Bridge Playground Client (você tem um hyperlink apontando para ele no seu e-mail de registro). Se você ainda não tem uma conta gratuita no playground, por favor sinta-se livre para se registrar.
Extraia o conteúdo do pacote e encontre o arquivo CBQueryAnalyzer.bat e execute-o

Exchange calendário em Node.js

A aplicação Query Analyzer irá perguntar-lhe sobre o registo de um driver ODBC, (necessário apenas para a aplicação, não para o seu projecto de nó app.js).
Clique com o botão direito do mouse na conexão EX2010 no painel de conexão do lado esquerdo. Escolha 'Editar conexão'.

Exchange calendário em Node.js

Vá para o separador 'Avançado' e copie as credenciais sublinhadas para o seu script app.js excepto do parâmetro de porta que deve ser no nosso caso 4433.

Exchange calendário em Node.js

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

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