Utilice NetSuite TBA llamando a un RESTlet desde una fuente de archivo local en Jitterbit Design Studio
Introducción
Esta página describe cómo utilizar la autenticación basada en token (TBA) de NetSuite llamando a un RESTlet desde una fuente de archivo local en Harmony. 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 utilizando una fuente de archivo local, se recomiendan estos pasos, como se explica en esta página:
- Asociar el complemento RunCommand
- Instalar Node.js
- Crear el archivo Node.js
- Llamar al archivo Node.js en un secuencia de comandos
- Procesar la respuesta RESTlet
- Solución de problemas
Prerrequisitos
Para utilizar NetSuite TBA llamando a un RESTlet desde una fuente de archivo local en Harmony, se deben cumplir estos criterios:
-
Debe tener los permisos rol en su cuenta de NetSuite.
-
Debe utilizar SuiteTalk versión 2015.2 o superior.
-
Debe tener TBA habilitado para su cuenta 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).
-
Debe utilizar un agente privado Jitterbit (Linux o Windows) y tener instalados Node.js y npm (cubiertos en las instrucciones a continuación).
Advertencia
Este método no está disponible para su uso con agentes de la nube, ya que requiere el uso de archivos locales y la posibilidad de ejecutar un comando en la ubicación del archivo.
Asociar el complemento RunCommand
El uso del comando Ejecutar es necesario para ejecutar un archivo Node.js que se creará más adelante. Para usar 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:
- Inicie sesión en el portal Harmony y vaya a la Management Console. Luego, use el menú en la parte superior izquierda para navegar a Personalizaciones > Complementos.
- En la tabla, busque la fila "Jitterbit - Ejecutar comando". En el extremo derecho, utilice el menú desplegable Acción para seleccionar Asociar Grupo de agentes.
- En la ventana emergente, seleccione su grupo de agentes privados y haga clic en Guardar.
Sugerencia
La documentación detallada sobre la asociación de complementos está disponible en Personalizaciones > Complementos.
Instalar Node.js
Es necesario instalar Node.js para poder ejecutar un archivo que se creará más adelante para llamar al RESTlet desde Harmony. También es necesario el programa npm, que se utiliza para gestionar los paquetes de Node.js y que suele estar incluido con Node.js.
En este paso, verifique si Node.js y npm están instalados en sus agentes privados y, si no lo están, instálelos.
Nota
A continuación se utiliza Ubuntu 18.04 como ejemplo, aunque también es posible que se utilicen otros sistemas Linux y Windows compatibles donde se ejecuten sus agentes privados.
-
Verifique si Node.js está instalado.
$ node -v
-
Verifique si npm está instalado.
$ npm -v
-
Si ninguno de los comandos responde con una versión, utilice estos comandos para instalar la aplicación necesaria:
$ sudo apt install nodejs $ sudo apt install npm
-
Cree un nuevo directorio que se utilizará más adelante como ubicación de la llamada y la respuesta de NetSuite. Puede cambiarlo por cualquier ubicación que desee y deberá proporcionarlo más adelante en su proyecto de Harmony.
$ mkdir -p /opt/Jitterbit_projects/TBA_RESTlet/
-
Navegue hasta el nuevo directorio.
$ cd /opt/Jitterbit_projects/TBA_RESTlet/
-
Instale estos paquetes Node.js necesarios.
$ npm install request $ npm install oauth-1.0a@1.0.1
Crear el archivo Node.js
Este es el archivo que necesitarás para llamar al RESTlet desde Harmony.
En este paso, cree un nuevo JavaScript fuera de Harmony. Para crear un nuevo archivo en Ubuntu 18.04, por ejemplo, use el nombre request.js
:
$ nano request.js
Dentro del nuevo JavaScript, pegue el contenido que se proporciona a continuación:
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;}
});
});
Llamar al archivo Node.js en un secuencia de comandos
Para utilizar 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.
-
En Design Studio, crea un nuevo Jitterbit Script como un elemento del proyecto.
-
Dentro del secuencia de comandos, pegue el contenido que aparece a continuación en el Jitterbit Script. En este ejemplo, el secuencia de comandos se llama
01-Call_Node.js_File
.Nota
Este secuencia de comandos utiliza 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 obtuvieron 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>
-
Cree una operación de secuencia de comandos y coloque el Jitterbit Script dentro de ella. En este ejemplo, la operación se llama
01-Call_Node.js_File
. -
Para verificar que se ha conectado correctamente a NetSuite, pruebe la operación para garantizar que recibas algo a cambio del 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 reciba de la llamada.
-
Cree una fuente de archivo local con la ubicación en tu agente privado donde especificaste que se escribiera la respuesta.
-
Cree una operación de transformación que utilice la fuente de archivo local que acaba de crear y que contiene la respuesta de NetSuite. En este ejemplo, la operación se denomina
02-Process_RESTlet_Response
La configuración de la operación debería ser similar a la que se muestra a continuación. -
En la transformación, puede utilizar la respuesta de NetSuite como desee y completar 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 la respuesta de NetSuite. Una prueba sencilla es proporcionar acceso completo a todos y volver a probar la operación. Si eso resuelve el problema, deberá ajustar los permisos del directorio para permitir que el usuario o grupo Jitterbit tenga acceso para 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.