All-in-one Inspections
La implementación más simple y rápida de Autoinspector.
Intro
Esta guía te proporcionará los pasos a seguir para implementar Autoinspector en tu sistema de la manera más simple y rápida. La única interacción que tu sistema tendrá con Autoinspector será para la creación de una inspección y recibir los eventos de actualización.
Obtener x-api-key
Para obtener la x-api-key se necesita que un rol apto. Comunícate con el administrador propietario de tu empresa en caso de que no lo tengas.
Toda interacción con Autoinspector API requiere de un código secreto de autenticación. Para encontrar el tuyo, puedes seguir los siguientes pasos:
1. Dirígite al dashboard de Autoinspector
2. Haz click en el ícono de tu perfil y luego haz click en Configuración
3. Dirígite a la sección de developers
4. Encuentra tu API token en esta página
Creando la aplicación / Server
La aplicación que se comunicará con Autoinspector tiene que ser de tipo backend, es decir, no puede correr dentro del browser de algún cliente debido a que estarías exponiendo credenciales sensibles como x-api-key
.
- NodeJS
- PHP
npm init -y
composer init -n --name php/my-app
Luego debes instalar algunas dependencias para poder crear el servicio:
- NodeJS
- PHP
npm i express autoinspector dotenv
composer require autoinspector/autoinspector-php slim/slim vlucas/phpdotenv
Por último, debes crear un archivo con el nombre .env
en donde guardarás las credenciales:
AUTOINSPECTOR_API_KEY=YOUR_X_API_KEY
Con las credenciales ya guardadas en un archivo, necesitarás cargarlas en la aplicación para poder utilizarlas:
- NodeJS
- PHP
const dotenv = require('dotenv')
dotenv.config({
path: '.env',
})
require("../vendor/autoload.php")
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();
Ya estás en condiciones de empezar a usar Autoinspector SDK, instalada anteriormente como dependencia. Para eso, debes crear una instancia pasando las credenciales:
- NodeJS
- PHP
const Autoinspector = require('autoinspector')
const autoinspector = new Autoinspector({
apikey: process.env.AUTOINSPECTOR_API_KEY,
})
$autoinspector = new \Autoinspector\AutoinspectorClient($_ENV['AUTOINSPECTOR_API_KEY']);
Pedido de inspección
El primer paso es crear el servidor HTTP para poder interactuar con él y crear inspecciones
- NodeJS
- PHP
const express = require("express");
const app = express();
app.post("/inspection/:product", (req, res) => {
switch (req.params.product) {
case "car":
autoinspector.inspections.car
.create({
metadata:{
product_type: req.params.product
},
delivery:{
channel: 'email',
destination: "johndoe@gmail.com",
disabled: false,
}
locale: 'es_AR',
consumer: {
firstName: "John",
lastName: "Doe",
identification: "44188219",
email:"johndoe@gmail.com",
},
producer: {
internalId: "123",
},
car: {
plate: "AB705SU",
},
templateId: "easy" // Here we use built-in alias, but if you want to create an inspection using custom template, you need to send template id instead,
})
.then((inspection) => {
res.status(201).json(inspection);
})
.catch((err) => {
console.error(err);
res.status(500).json({ message: "Something went wrong" });
});
break;
//anothers product inspections implementations...
default:
res
.status(400)
.json({ message: "This product inspection does not exist" });
break;
}
});
app.listen(3000, () => {
console.log("HTTP server listening on port 3000");
});
<?php
$app = new \Slim\App;
$app->post('/inspection/{product}', function ($request, $response, $args) {
$product = $args['product'];
switch ($product) {
case "car":
try {
$inspection = $autoinspector->inspections->car->create(
[
'consumer' => [
'firstName' => 'Luciano',
'lastName' => 'Alvarez',
'email' => 'johndoe@gmail.com',
'identification' => '3213232',
],
'car' => [
'plate' => 'AB705SU',
],
'templateId' => "easy",
'producer' => [
'internalId' => '123'
],
'initialStatus' => 'started'
'delivery' => [
'channel' => 'email',
'destination' => 'johndoe@gmail.com',
'countryISO' => 'AR',
],
'locale' => 'es_AR'
]
);
$response->status->setStatus(201);
$response->body(json_encode($response));
} catch (\Throwable $th) {
$response->status->setStatus(400);
$response->body(json_encode(["message" => "something went wrong"]));
}
break
//Anothers product inspections implementations...
default:
$response->status->setStatus(400);
$response->body(json_encode([
"message" => "This product inspection does not exist",
]));
}
return $response;
})
$app->run();
Correr la aplicación
Una vez que ya tienes el servidor conectado a Autoinspector, puedes levantarlo corriendo el siguiente comando:
- NodeJS
- PHP
Antes de levantar el servidor, necesitas agregar lo siguiente en el package.json
:
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start":"node ./src/main.js"
}
Finalmente, ya puedes correr el siguiente comando:
npm run start
php -S localhost:3000
Ahora que tu aplicación ya se encuentra levantada y lista para responder, puedes realizar una http request:
curl -X POST http://localhost:3000/inspection/car
Si todo salió como se esperaba, deberías recibir una respuesta del tipo:
{"inspectionId":"60f021d61234567890000000","productId":"60f021d6123456789000000","message":"Car inspection created!"}