Ir para o conteúdo

Use o NetSuite TBA Chamando um RESTlet de uma Fonte de Arquivo Local

Introdução

Esta página descreve como usar a autenticação baseada em token NetSuite (TBA) chamando um RESTlet de uma fonte de arquivo local em Harmony. Antes de configurar o TBA no Harmony, consulte as recomendações do Jitterbit para ativar o TBA no NetSuite.

Para chamar um RESTlet para autenticação com NetSuite TBA usando uma fonte de arquivo local, estas etapas são recomendadas, conforme abordadas nesta página:

  1. Associar o plug-in RunCommand
  2. Instalar Node.js
  3. Crie o arquivo Node.js
  4. Chame o arquivo Node.js em um Script
  5. Processar a resposta RESTlet
  6. Solução de problemas

Pré-requisitos

Para usar o NetSuite TBA chamando um RESTlet de uma fonte de arquivo local no Harmony, estes critérios devem ser atendidos:

  1. Você deve ter a papel de permissões apropriada em sua conta NetSuite.

  2. Você deve estar usando SuiteTalk versão 2015.2 ou superior.

  3. Você deve ter TBA habilitado para sua conta NetSuite.

    Dica

    Para obter informações adicionais, consulte a documentação do NetSuite em Introdução à autenticação baseada em token (é necessário fazer login no NetSuite).

  4. Você deve estar usando um Harmony Agente Privado (Linux ou Windows) e ter Node.js e npm instalados (abordados nas instruções abaixo).

    Aviso

    Este método não está disponível para uso com Agentes em Nuvem, pois requer o uso de arquivos locais e a capacidade de executar um comando onde o arquivo está localizado.

Associar o Plug-in RunCommand

O uso do RunCommand plugin é necessário para executar um arquivo Node.js que será criado posteriormente. Para usar este plug-in, você deve primeiro associá-lo ao seu Grupo de Agentes Privados. Isso tornará o plugin disponível para todos os Agentes Privados dentro do Grupo de Agentes Privados.

Para associar o plug-in:

  1. Faça login no Portal Harmony e vá para o Management Console. Em seguida, use o menu no canto superior esquerdo para navegar até Personalizações > Plug-ins.
  2. Na tabela, localize a linha "Jitterbit - Executar comando". À direita, use o menu suspenso Action para selecionar Associate Grupo de Agentes.
  3. No pop-up, selecione seu Grupo de Agentes Privados e clique em Salvar.

Dica

A documentação detalhada sobre a associação de plug-ins está disponível em Customizações > Plug-ins.

Instale o Node.js

Node.js deve ser instalado para executar um arquivo que será criado posteriormente para chamar o RESTlet do Harmony. O programa npm, que é usado para gerenciar pacotes Node.js, também é necessário e geralmente está incluído no Node.js.

Nesta etapa, verifique se o Node.js e o npm estão instalados no(s) seu(s ) Agente Privado(s) e, caso não estejam, instale-os.

Nota

Ubuntu 18.04 é usado como exemplo abaixo, embora outros sistemas Linux e Windows suportados onde seu(s) Agente Privado(s) também possam ser usados.

  1. Verifique se o Node.js está instalado.

    $ node -v
    
  2. Verifique se o npm está instalado.

    $ npm -v
    
  3. Se algum dos comandos não responder com uma versão, use estes comandos para instalar o aplicativo necessário:

    $ sudo apt install nodejs
    $ sudo apt install npm
    
  4. Crie um novo diretório que será usado posteriormente como o local da chamada e resposta do NetSuite. Isso pode ser alterado para qualquer local desejado e precisará ser fornecido posteriormente em seu projeto Harmony.

    $ mkdir -p /opt/Jitterbit_projects/TBA_RESTlet/
    
  5. Navegue até o novo diretório.

    $ cd /opt/Jitterbit_projects/TBA_RESTlet/
    
  6. Instale esses pacotes Node.js necessários.

    $ npm install request
    $ npm install oauth-1.0a@1.0.1
    

Criar o Arquivo Node.js

Este é o arquivo que você precisará para chamar o RESTlet do Harmony.

Nesta etapa, crie um novo JavaScript fora do Harmony. Para criar um novo arquivo no Ubuntu 18.04, por exemplo, usando o nome request.js:

$ nano request.js

Dentro do novo JavaScript, cole o conteúdo fornecido abaixo:

request.js
const request=require('request');
const OAuth=require('oauth-1.0a');
const fs=require('fs');

var args=process.argv;
var outputFile=args[2];

var accountID=args[3];
var token={
  public:args[6],
  secret:args[7]
};

var consumer={
  public:args[8],
  secret:args[9]
};

var restlet_url=args[4];

var oauth=OAuth({
  consumer:consumer,
  signature_method:'HMAC-SHA256',
  hash_function(base_string,key){
  return crypto.createHmac('sha256',key).update(base_string).digest('base64');
  }
});

var request_data={
  url:restlet_url,
  method:args[5],
};

var authorization=oauth.authorize(request_data,token);
var header=oauth.toHeader(authorization);
header.Authorization+=', realm="'+accountID+'"';
header['content-type']='application/json';

request({
  url:request_data.url,
  method:request_data.method,
  headers:header,
  json:{message:"this is the payload"}
},function(error,response,body){
  if(error){
    console.log(error);
  }else{
    console.log(body);
  }
  fs.writeFile(outputFile,body,function(err){
    if(err){return err;}
  });
});

Chame o Arquivo Node.js em um Script

Para usar o arquivo Node.js criado na etapa anterior, configure um Script Jitterbit que defina variáveis TBA e chame o arquivo Node.js usando o plug-in RunCommand.

  1. No Design Studio, crie um novo Jitterbit Script como um item de projeto.

  2. Dentro do script, cole o conteúdo abaixo no Script Jitterbit. Neste exemplo, este script é nomeado 01-Call_Node.js_File.

    Nota

    Este script usa várias variáveis do projeto que são predefinidos no exemplo para definir os valores necessários para TBA e fornecer o local do arquivo local do arquivo Node.js e a resposta RESTlet. Use essas variáveis ou forneça os valores diretamente obtidos ao ativar o TBA no NetSuite.

    01-Call_Node.js_File
    <trans>
    $nsAccountID=$NS_OrgID;
    $RESTletURL='https://'+$nsAccountID+'.restlets.api.netsuite.com/app/site/hosting/restlet.nl?script=999999&deploy=1';
    $httpMethod='GET';
    $tokenKey=$NS_tokenKey;
    $tokenSecret=$NS_tokenSecret;
    $consumerKey=$NS_consumerKey;
    $consumerSecret=$NS_consumerSecret;
    $nodeRESTletFile=$NS_RESTlet_Node_File;
    $nodeResponseFile=$NS_RESTlet_Node_Response;
    $Command='node';
    $Arguments=$nodeRESTletFile         // arg[1]
               +" "+$nodeResponseFile // arg[2]
               +" "+$nsAccountID      // arg[3]
               +" "+$RESTletURL           // arg[4]
               +" "+$httpMethod           // arg[5]
               +" "+$tokenKey         // arg[6]
               +" "+$tokenSecret      // arg[7]
               +" "+$consumerKey      // arg[8]
               +" "+$consumerSecret;  // arg[9]
    $response=RunPlugin("<TAG>plugin:http://www.jitterbit.com/plugins/pipeline/user/RunCommand</TAG>");
    if($response==1,
      WriteToOperationLog('success');
      RunOperation("<TAG>Operations/NS_Node_RESTlet_TBA/02-Process_RESTlet_Response</TAG>",true);
    );
    </trans>
    
  3. Crie uma operação de script e coloque o Jitterbit Script dentro dela. Neste exemplo, a operação é chamada 01-Call_Node.js_File.

  4. Para verificar se você se conectou com sucesso ao NetSuite, teste a operação para garantir que você receba algo de volta do RESTlet.

Processe a Resposta RESTlet

Agora que a chamada para o NetSuite está configurada, você pode prosseguir com a configuração do restante do projeto usando a resposta recebida da chamada.

  1. Crie uma fonte de arquivo local com a localização em seu Agente Privado onde você especificou para que a resposta seja escrita.

  2. Crie uma operação de transformação que use a fonte de arquivo local que você acabou de criar contendo a resposta do NetSuite. Neste exemplo, a operação é chamada 02-Process_RESTlet_Response. A configuração da operação deve ser semelhante à abaixo.

    anexo

  3. Na transformação, você pode usar a resposta NetSuite como quiser, completando o mapeamento como de costume.

Solução de Problemas

Se a chamada Node.js não parece estar funcionando a partir do Harmony, ou se os arquivos não estão sendo gravados no Agente, pode ser necessário ajustar as permissões da pasta com a chamada e resposta do NetSuite. Um teste simples é fornecer acesso total a todos e testar a operação novamente. Se isso resolver o problema, você precisará ajustar as permissões do diretório para permitir que o usuário/grupo Jitterbit acesse ler e gravar na pasta criada.

Se o plug-in RunCommand retornar erros, verifique se você preencheu todas as variáveis do projeto com as informações necessárias do NetSuite.