ZPK » APIS » SDK » PHP

SDK PHP

Una libreria instalable mediante composer que le permitirá implementar todas las APIs de ZPK

Instalación mediante composer (recomendada)


Recomendamos usar la versión composer para que su proyecto siempre pueda actualizar a la última versión del SDK.

Ejemplo composer require
composer require zpksystems/phpzpk

Estableciendo la aplicación


Todas las llamadas a la API deben especificar a que aplicación se realizan las llamadas.

La clase zpkApplication determina una aplicación específica mediante su application_id y una api_key de autenticación.


Ejemplo instanciando aplicación

<?php

use zpksystems\phpzpk\zpkApplication;

require 
'vendor/autoload.php';

$app = new zpkApplication('app_id','key');

Ejemplos incluidos

Ejemplos incluidos en la carpeta de instalación

Consulte los ejemplos disponibles

Hay varios ejemplos de uso del SDK en el directorio /examples

Captura de pantalla de un editor con código PHP usando el SDK de la API de ZPK Systems

Puede ejecutar los ejemplos dirigiéndose al directorio del ejemplo y ejecutandolo directamente desde la terminal.

Ejemplo composer require

user@host~/project/$ cd vendor/zpksystems/phpzpk
user@host../phpzpk/$ cd examples/sms
user@host~/examples/sms/$ php sending.php

ZPK Translate

Usando el SDK para traducir textos y detectar idiomas mediante la API de ZPK Translate

Traducción con ZPK Translate


Llame a la API de traducción inicializando un traductor, en este ejemplo puede verse una solicitud para traducir 2 frases. En el primer caso el idioma origen será autodetectado. En el segundo indicamos el idioma origen.

Ejemplo traducir dos textos

<?php
require 'vendor/autoload.php';

use 
zpksystems\phpzpk\zpkApplication;
use 
zpksystems\phpzpk\zpkTranslator;

$app = new zpkApplication('app_id','key');


$t = new zpkTranslator$app );

// Add a text to be translated to italian, english and french.
// Source language is autodetected
$t->addTranslation(
    
'Esto es una frase en español',
    [
'it','en','fr']
);

// Add another translation
// but sending a source language
$t->addTranslation(
    
'Esto es una frase en español',
    [
'it','en','fr'],
    
'es'
);

echo 
json_encode($t->translate(),
 
JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE);

Obteniendo la lista de idiomas


Puede obtener toda la lista de idiomas disponibles en nuestra API de traducción.

Tenga en cuenta que este request también tiene un coste, recomendamos hacer cache de estos datos y no realizar esta consulta mas de una vez cada 48 horas.

Ejemplo Obtener idiomas

<?php
require 'vendor/autoload.php';

use 
zpksystems\phpzpk\zpkApplication;
use 
zpksystems\phpzpk\zpkTranslator;

$app = new zpkApplication('app_id','key');
$t = new zpkTranslator$app );

echo 
json_encode($t->getLanguages(),
 
JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE);

Vin Analyzer

Extraiga datos de números de bastidor VIN, o bien autocorrija números VIN incorrectos.

Analizando números VIN


Llame a la API de análisis inicializando un analizador de VINS

Ejemplo analizar 2 VINs

<?php
require 'vendor/autoload.php';

use 
zpksystems\phpzpk\zpkApplication;
use 
zpksystems\phpzpk\zpkTranslate;

$app = new zpkApplication('app_id','key');

$vinA = new zpkVinAnalyzer$app );

// Add a valid vin
$vinA->addVin('L6TCX2E70ME005154');

// Add an invalid vin (missing character)
$vinA->addVin('6TCX2E70ME005154');

echo 
json_encode($vinA->analyze(),
 
JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE);

Filtrando VINs por zona, país, fabricante, o marca.


Nuestra API permite establecer filtros que alterarán la puntuación de los VIN detectados. Estos filtros se pueden usar para excluir VINs que cumplan con uno o más criterios, o bien para darles prioridad a otros VIN en caso de que un número incorrecto pueda ser corregido a diferentes VINs válidos.

En el siguiente ejemplo se enviará un VIN con los tres primeros dígitos VS5 que pertenece al fabricante 'renault', sin establecer ningún filtro. La API de ZPK retornará los datos de un vehículo del fabricante renault.

En un segundo envío, establecemos un filtro que penaliza la marca renault. La API determinará que el VIN enviado contiene un error de escritura debido a que hemos penalizado renault, y retornara un vehículo de la marca Seat debido a que su código de fabricante es VSS, y VS5 es ópticamente muy parecido a VS5

Ejemplo excludeBrand

<?php
require 'vendor/autoload.php';

use 
zpksystems\phpzpk\zpkApplication;
use 
zpksystems\phpzpk\zpkVinAnalyzer;

$app = new zpkApplication('app_id','key');


// Add a valid VIN from a renault vehicle
// don't use filters

$vinA = new zpkVinAnalyzer$app );
$vinA->addVin('VS5ZZZ5F1P6510989');

echo 
"VIN VS5ZZZ5F1P6510989 analysis without filter:\n";

echo 
json_encode($vinA->analyze(),
 
JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE)."\n\n";


// Add the same VIN and add a penalizer for
// all vehicles from 'renault'

$vinA = new zpkVinAnalyzer$app );
$vinA->addVin('VS5ZZZ5F1P6510989');
$vinA->excludeBrand('renault');

echo 
"VIN VS5ZZZ5F1P6510989 excluding renault:\n";

echo 
json_encode($vinA->analyze(),
 
JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE);


Obteniendo paises, fabricantes, y marcas.


Para obtener todos estos datos de forma actualizada puede realizar la siguiente llamada en el SDK.

Tenga en cuenta que estos requests también tienen un coste, recomendamos hacer caché de estos datos ya que se añaden y modifican solo puntualmente.

Ejemplo fabricantes,marcas,países

<?php
require 'vendor/autoload.php';

use 
zpksystems\phpzpk\zpkApplication;
use 
zpksystems\phpzpk\zpkTranslate;

$app = new zpkApplication('app_id','key');


// Add a valid VIN from a renault vehicle
// don't use filters

$vinA = new zpkVinAnalyzer$app );

// Make 3 requests
$data = [
    
'manufacturers'=>$vinA->getManufacturers(),
    
'countries'=>$vinA->getCountries(),
    
'brands'=>$vinA->getBrands(),
];

echo 
json_encode($data,
  
JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE);

VIN OCR

Extraiga datos de números de bastidor VIN, o bien autocorriga números VIN incorrectos a partir de imágenes y documentos escaneados.

Analizando una imágen para extraer el VIN


Llame a la API de detección OCR inicializando un OCR de VINS

Ejemplo Extraer de imagen

<?php
require 'vendor/autoload.php';

use 
zpksystems\phpzpk\zpkApplication;
use 
zpksystems\phpzpk\zpkVinOcr;

$app = new zpkApplication('app_id','key');

ocr = new zpkVinOcr$app );

// Add an image
$ocr->setImageFile('image.png');

echo 
json_encode($ocr->scan(),
 
JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE);

Usando filtros de puntuación para un reconocimiento óptimo.


Al igual que la api de VinAnalyzer, VINOCR puede usar filtros que alterarán la puntuación interna de los posibles números VIN considerados durante el reconocimiento óptico.

En este ejemplo se enviará una imagen que podría coincidir con múltiples fabricantes:

En este ejemplo enviaremos un número VIN al que le falta el primer carácter, y por lo tanto podría pertenecer a diferentes fabricantes. Para ese ejemplo supondremos que trabajamos con una flota de vehículos europeos.

Usaremos un filtro para dar mayor puntuación a los números VIN de vehículos europeos, forzando a la API a otorgar una puntuación de preferencia más alta a estos vehículos

Ejemplo Uso de filtros

<?php
require 'vendor/autoload.php';

use 
zpksystems\phpzpk\zpkApplication;
use 
zpksystems\phpzpk\zpkVinOcr;

$app = new zpkApplication('app_id','key');

ocr = new zpkVinOcr$app );

// Add an image
$ocr->setImageFile('image.png');

// Add a positive filter for european
// vehicles.
$ocr->addFilter([
    
'zone'=>'Europe',
    
'score'=>3
]);

echo 
json_encode($ocr->scan(),
 
JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE);

Obteniendo todos los VINs considerados


Puede solicitar a la API que retorne junto a los resultados, todos los VIN que a tenido en cuenta a la hora de determinar un VIN correcto. Eso puede ayudarle a crear filtros específicos para su caso de uso.

Para ello simplemente llamaremos al método includeConsideredVins()

Ejemplo includeConsideredVins

<?php

$ocr
->includeConsideredVins();

Obteniendo fabricantes, marcas, y países.


Su aplicación puede consultar los fabricantes, marcas, modelos y países que esta API puede retornar con una llamada a diferentes métodos.

Tenga en cuenta que consultar esta información también tiene un coste, recomendamos hacer caché de estos datos para minimizar las llamadas a la API.

Ejemplo Obteniendo datos

<?php
require 'vendor/autoload.php';

use 
zpksystems\phpzpk\zpkApplication;
use 
zpksystems\phpzpk\zpkVinOcr;

$app = new zpkApplication('app_id','key');

ocr = new zpkVinOcr$app );

// Add an image
$ocr->setImageFile('image.png');

// Add a positive filter for european
// vehicles.
$data = [
    
'manufacturers'=>$ocr->getManufacturers(),
    
'countries'=>$ocr->getCountries(),
    
'brands'=>$ocr->getBrands(),
];

echo 
json_encode($data,
 
JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE);

ZPK SMS

Envie mensajes de texto SMS a teléfonos móviles, 216 países soportados.

Enviar un SMS

Inicialice un SmsRequest para enviar uno o más mensajes SMS

Ejemplo Enviar SMS

<?php

$application 
= new zpkApplication($application_id,$api_key);

$sendRequest = new zpkSmsSendingRequest($application);

$sms = new zpkSMS("+34634568046");
$sms->setFrom("First");
$sms->setMessage("SMS test message, the first one :)");

$sendRequest->add($sms);

$response $r->send();

var_dump($response);

Consultar precios de envío

Para consultar los precios actuales de envío inicialice un PriceRequest

Ejemplo Enviar SMS

<?php
// Initialize zpk application
$application = new zpkApplication($application_id,$api_key);

// Price request
$pRequest = new zpkSmsPriceRequest$application );

$data $pRequqest->getPrices();

echo 
json_encode($data,JSON_PRETTY_PRINT);

Plate Scanner OCR

Extraiga matrículas de vehículos de imágenes y documentos

Extrayendo la matrícula de una imágen


Llame a la API de detección OCR inicializando un escaneador de matrícula.

Ejemplo Extraer de imagen

<?php

require 'vendor/autoload.php';

use 
zpksystems\phpzpk\zpkApplication;
use 
zpksystems\phpzpk\zpkPlateScanner;

$app = new zpkApplication('app_id','key');

$scanner = new zpkPlateScanner$app );

// Add an image
$scanner->setImageFile('plate.png');

echo 
json_encode($scanner->scan(),
 
JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE);

Especificando zonas


Puede enviar una o mas zonas geógraficas que se usarán como una sugerencia en la API en el momento de la detección con el método setZoneHints.

Ejemplo Zonas

<?php

require 'vendor/autoload.php';

use 
zpksystems\phpzpk\zpkApplication;
use 
zpksystems\phpzpk\zpkPlateScanner;

$app = new zpkApplication('app_id','key');

$scanner = new zpkPlateScanner$app );

// Add an image
$scanner->setImageFile('plate.png');

// Set region hints
$scanner->setRegionHints(['es','it']);

echo 
json_encode($scanner->scan(),
 
JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE);

Regiones en modo estricto


Con una llamada a enableStrictRegions() podemos forzar a la API a considerar única y exclusivamente las matrículas de las zonas especificadas anteriormente, descartando todas las matrículas que no cumplan con el patrón de las zonas especificadas.

Ejemplo regiones modo estricto

<?php

require 'vendor/autoload.php';

use 
zpksystems\phpzpk\zpkApplication;
use 
zpksystems\phpzpk\zpkPlateScanner;

$app = new zpkApplication('app_id','key');

$scanner = new zpkPlateScanner$app );

// Add an image
$scanner->setImageFile('plate.png');

// Set region hints
$scanner->setRegionHints(['es','it']);

// Enable strict mode
$scanner->enableStrictRegions();

echo 
json_encode($scanner->scan(),
 
JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE);

Obteniendo todas las zonas


Una llamada a getAllRegions() retornará una lista de todas las zonas soportadas por la API. Recuerde que esta petición tiene un coste, recomendamos guardar estos datos en cache.

Ejemplo Obteniendo regiones

<?php

require 'vendor/autoload.php';

use 
zpksystems\phpzpk\zpkApplication;
use 
zpksystems\phpzpk\zpkPlateScanner;

$app = new zpkApplication('app_id','key');
$scanner = new zpkPlateScanner$app );

echo 
json_encode($scanner->getAllRegions(),
 
JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE);


ZPK IA Images

Genere imagenes con inteligencia artificial en sus aplicaciones PHP

Solicitar con espera a generación


Llame a la api de generacion inicializando un generador, en este ejemplo puede verse una solicitud para generar dos imagenes mediante generate().

La aplicación esperará hasta que todas las imagenes hayan sido generadas en el servidor y luego mostrará la URL de descarga.

Ejemplo Solicitar con espera a generación

<?php

use zpksystems\phpzpk\zpkApplication;
use 
zpksystems\phpzpk\zpkImageGenerator;

$application = new zpkApplication($application_id,$api_key);
$generator = new zpkImageGenerator($application);

// Create 3 images
$generator->setPrompt("teenage mutant ninja turtles, eating pizza");
$generator->generate(2);

// Wait for generation
echo "Waiting for generation...";
$generator->waitForGeneration();
echo 
"[DONE]".PHP_EOL;

// Show generated image
foreach( $generator->imagesList as $image ){
    if( 
$image->isGenerated() ){
        echo 
"Generated image, download url: ".$image->getDownloadUrl(). PHP_EOL;
    }else{
        echo 
"Image cannot be generated. Error: ".$image->getErrorCode().PHP_EOL;
    }
}

Solicitar estado de generación


Solicite la generación de imagenes, luego puede solicitar el estado de las imagenes hasta que estas hayan sido generadas.

Al hacer una solicitud de generación obtenemos su id único único mediante getUniqueRequestId(), eso nos permite realizar posteriores llamadas de solicitud de estado con un zpkImageStatusRequest llamando al método requestStatus( $id_unico ).

Usted puede guardar el id único de generación (en su base de datos por ejemplo) para procesar el resultado en otra parte de su aplicación (un cron job, por ejemplo).

Ejemplo solicitar estado de generación

<?php

use zpksystems\phpzpk\zpkApplication;
use 
zpksystems\phpzpk\zpkImageGenerator;
use 
zpksystems\phpzpk\zpkImageStatusRequest;


$application = new zpkApplication($application_id,$api_key);

$generator = new zpkImageGenerator($application);
$generator->setPrompt("Panoramica de la superficie de un planeta hecho de gominolas.");
$generator->generate(2);

$statusRequest = new zpkImageStatusRequest($application);

while(
true){

    
sleep(3);

    
$images $statusRequest->requestStatus$generator->getUniqueRequestId() );

    foreach( 
$images as $key=>$image ){
        if( 
$image->isGenerated() ){
            echo 
"Image #$key | URL: ".$image->getDownloadUrl().PHP_EOL;
        }else{
            echo 
"Image #$key | status: ".$image->getStatus()." | ETA: ".$image->getETA().PHP_EOL;
        }
    }
}

Solicitar imagenes y esperar callback


Puede solicitar imagenes y procesarlas cuando hayan sido generadas en nuestros servidores mediante el uso de callbacks.

Cuando todas las imagenes hayan sido procesadas se enviará una solicitud HTTP a la URL indicada, con los datos de las solicitudes y las URL de descarga de las imagenes.

Ejemplo usando callbacks

<?php

use zpksystems\phpzpk\zpkApplication;
use 
zpksystems\phpzpk\zpkImageGenerator;

$application = new zpkApplication($application_id,$api_key);

$generator = new zpkImageGenerator($application);
$generator->setPrompt("Un bosque de fantasia con super-ordanadores y servidores en un claro del bosque.");

$code substr(str_shuffle('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'), 032);
$callback_url 'https://zpk.systems/callback-test/callback/'.$code;
$callback_viewer 'https://zpk.systems/callback-test/view/'.$code;

echo 
"Sending image generation request, check results at: ".$callback_viewer.PHP_EOL;

$generator->setCallbackURL($callback_url);
$generator->generate(1);

echo 
"END".PHP_EOL;

En este ejemplo hemos usado una dirección URL de zpk.systems para hacer tests de requests de callback, usted debe proporcionar una URL HTTPS apuntando a sus propios servidores.

Precios

Todos los precios de las API de ZPK System son bajo demanda, usted paga solo por el uso de las API. Sin cuotas mensuales.

API Precio
Vin OCR
VinOcr
EUR 0,003 Por cada imágen escaneada
Vin Analyzer
VinAnalyzer
EUR 0,004 Por cada solicitud de un VIN
EUR 0,003 Por cada VIN extra en la misma solicitud
IA Images
IA Images
A partir de 0,038 €
ZPK Translate
ZPK Translate
Primeros 600.000 caracteres al mes gratis
1 EUR por cada 62.500 caracteres
API de Moderación
API de Moderación
EUR 0,0010 por moderación (hasta 500 caracteres)
EUR 0,0050 por consulta a estadisticas de una fuente de mensajes.
Plate Scanner
PlateScanner
EUR 0,001 por imagen escaneada
EUR 0,010 por cada soclicitud de listado completo de regiones
ZPK SMS
ZPK SMS
España : 0.0472 €
Francia : 0.0690 €
Estados Unidos : 0.0210 €

Obtener crédito


Al crear una cuenta en ZPK Systems y validar sus datos, se añadirán gratuitamente 5,00 euros a su cuenta para que pueda realizar tests.

Cree una cuenta ahora, y obtenga crédito gratuito para realizar la implementación. Si ya está registrado, acceda a su panel para gestionar su crédito disponible o añadir fondos.

¿Su proyecto no usa PHP?

Nuestra API puede ser implementada en multitud de lenguajes.

Si su proyecto no usa PHP puede usar la API HTTP. Nuestras APIS funcionan con una comunicación HTTP basada en solicitudes y respuestas JSON. Facilitando la implementación en prácticamente cualquier lenguaje de programación.

Consulte la API http, endpoints, y parámetros en la documentación específica de cada API.