Saltar al contenido

Use NetSuite TBA Llamando a un RESTlet Desde una Fuente de Archivo Local

Introducción

Esta página describe cómo usar la autenticación basada en token (TBA) de NetSuite llamando a un RESTlet desde una fuente de archivo local en Harmony Jitterbit. Antes de configurar TBA en Harmony, consulte las recomendaciones de Jitterbit para habilitar TBA en NetSuite.

Para llamar a un RESTlet para autenticarse con NetSuite TBA usando una fuente de archivo local, se recomiendan estos pasos, como se describe en esta página:

  1. Asociar el complemento RunCommand
  2. Instalar Node.js
  3. Cree el archivo Node.js
  4. Llamar al archivo Node.js en un Secuencia de Comandos
  5. Procesar la respuesta RESTlet
  6. Solución de problemas

Requisitos Previos

Para usar NetSuite TBA llamando a un RESTlet desde una fuente de archivo local en Harmony, se deben cumplir estos criterios:

  1. Debe tener el rol de permisos adecuado en su cuenta de NetSuite.

  2. Debe utilizar SuiteTalk versión 2015.2 o superior.

  3. Debe tener TBA habilitado para su cuenta de NetSuite.

    Consejo

    Para obtener información adicional, consulte la documentación de NetSuite en Introducción a la autenticación basada en token (se requiere iniciar sesión en NetSuite).

  4. Debe utilizar un Agente Privado de Harmony (Linux o Windows) y tener instalados Node.js y npm (se explican en las instrucciones a continuación).

    Advertencia

    Este método no está disponible para usar con Agentes en Nube, ya que requiere el uso de archivos locales y poder ejecutar un comando donde se encuentra el archivo.

Asociar el Complemento RunCommand

El uso de RunCommand se requiere el complemento para ejecutar un archivo Node.js que se creará más adelante. Para utilizar este complemento, primero debe asociarlo con su Grupo de Agentes Privados. Esto hará que el complemento esté disponible en todos los Agentes Privados dentro del Grupo de Agentes Privados.

Para asociar el complemento:

  1. Inicie sesión en el Portal de Harmony y vaya a la Management Console. Luego use el menú en la parte superior izquierda para navegar a Personalizaciones > Complementos.
  2. En la tabla, localice la fila "Jitterbit - Ejecutar comando". En el extremo derecho, use el menú desplegable Acción para seleccionar Grupo de Agentes asociados.
  3. En la ventana emergente, seleccione su Grupo de Agentes Privados y haga clic en Guardar.

Consejo

La documentación detallada sobre la asociación de complementos está disponible en Personalizaciones > Complementos.

Instalar Node.js

Node.js debe estar instalado para ejecutar un archivo que se creará más adelante para llamar al RESTlet de Harmony. El programa npm, que se usa para administrar los paquetes de Node.js, también es necesario y generalmente se incluye con Node.js.

En este paso, verifique si Node.js y npm están instalados en su(s ) Agente Privado(s), y si no lo están, instálelos.

Nota

Ubuntu 18.04 se usa como ejemplo a continuación, aunque también se pueden usar otros sistemas Linux y Windows compatibles donde se ejecutan sus Agente Privado.

  1. Verifique si Node.js está instalado.

    $ node -v
    
  2. Verifique si npm está instalado.

    $ npm -v
    
  3. Si alguno de los comandos no responde con una versión, use estos comandos para instalar la aplicación que se necesita:

    $ sudo apt install nodejs
    $ sudo apt install npm
    
  4. Cree un nuevo directorio que se usará más adelante como la ubicación de la llamada y respuesta de NetSuite. Esto se puede cambiar a cualquier ubicación deseada y deberá proporcionarse más adelante en su proyecto Harmony.

    $ mkdir -p /opt/Jitterbit_projects/TBA_RESTlet/
    
  5. Navegue hasta el nuevo directorio.

    $ cd /opt/Jitterbit_projects/TBA_RESTlet/
    
  6. Instale estos paquetes necesarios de Node.js.

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

Crear el Archivo Node.js

Este es el archivo que necesitará para llamar al RESTlet de Harmony.

En este paso, cree un nuevo JavaScript fuera de Harmony. Para crear un nuevo archivo en Ubuntu 18.04, por ejemplo, usando el nombre request.js:

$ nano request.js

Dentro del nuevo JavaScript, pegue el contenido proporcionado a continuación:

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;}
  });
});

Llame al Archivo Node.js en un Secuencia de Comandos

Para usar el archivo Node.js creado en el paso anterior, configure un Jitterbit Script que establezca variables TBA y llame al archivo Node.js usando el complemento RunCommand.

  1. En Design Studio, cree una nueva Secuencia de Comandos de Jitterbit como elemento del proyecto.

  2. Dentro de la secuencia de comandos, pegue el contenido a continuación en la Secuencia de Comandos de Jitterbit. En este ejemplo, este secuencia de comandos se llama 01-Call_Node.js_File.

    Nota

    Este secuencia de comandos usa varias variables de proyecto que están predefinidos en el ejemplo para establecer los valores necesarios para TBA y proporcionar la ubicación del archivo local del archivo Node.js y la respuesta RESTlet. Utilice estas variables o proporcione valores directamente tal como se obtienen al habilitar TBA en 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. Cree una operación de secuencia de comandos y coloque la Jitterbit Script dentro de ella. En este ejemplo, la operación se llama 01-Call_Node.js_File.

  4. Para verificar que se ha conectado con éxito a NetSuite, pruebe la operación para asegurarse de recibir algo de RESTlet.

Procesar la Respuesta RESTlet

Ahora que la llamada a NetSuite está configurada, puede continuar con la configuración del resto de su proyecto utilizando la respuesta que recibe de la llamada.

  1. Cree una fuente de archivo local con la ubicación en su Agente Privado donde especificó que se escribiría la respuesta.

  2. Cree una operación de transformación que utilice el origen del archivo local que acaba de crear y que contenga la respuesta de NetSuite. En este ejemplo, la operación se llama 02-Process_RESTlet_Response. La configuración de la operación debería ser similar a la siguiente.

    archivo adjunto

  3. En la transformación, puede usar la respuesta de NetSuite como desee, completando la asignación como de costumbre.

Solución de Problemas

Si la llamada de Node.js no parece funcionar desde Harmony, o si los archivos no se escriben en el Agente, es posible que deba ajustar los permisos de la carpeta con la llamada y respuesta de NetSuite. Una prueba simple es proporcionar acceso completo a todos y probar la operación nuevamente. Si eso resuelve el problema, deberá ajustar los permisos del directorio para permitir que el usuario/grupo de Jitterbit acceda a leer y escribir en la carpeta creada.

Si el complemento RunCommand devuelve errores, asegúrese de haber completado todas las variables del proyecto con la información necesaria de NetSuite.