Avvia un progetto

Creare una skill Alexa con PHP – Tutorial

· di Daniel

Dal mio ultimo tutorial alcune cose sono cambiate sulla piattaforma Alexa Developer di Amazon. L’interfaccia è stata rinnovata e, al posto del vecchio sistema in cui gli intent andavano creati a mano, ora c’è uno skill builder.

Per questo ti propongo qui un piccolo aggiornamento dei miei vecchi tutorial Alexa PHP.La panoramica delle skill

Cominciamo. Do per scontato che tu abbia un account Alexa Developer e passo quindi direttamente alla nuova dashboard. Dalla voce di menu «Your Alexa Consoles» (in alto a destra) > Skills arrivi alla panoramica delle tue skill.

Alla panoramica delle tue skill AlexaCreare una skill

In «Create Skill» possiamo creare la nostra prima skill Amazon Alexa. Dopo aver cliccato sul pulsante, come primo passo devi assegnare un nome alla skill. Nel mio esempio, Daniel.

Poi dobbiamo scegliere il modello della skill. Vogliamo iniziare in piccolo e non costruire subito una skill Smart Home o video. Per questo qui scegliamo Custom.

Impostazioni della skill

Dashboard della skill

Fatto: ora entri nella dashboard della tua skill. Nella barra in alto trovi le seguenti voci:

  • Daniel => nome della tua skill
  • Build => qui creiamo i comandi
  • Test => per verificare le funzioni in seguito
  • Launch => se vuoi pubblicare la tua skill nello store di Amazon
  • Measure => comportamento d’uso ecc.

Sotto Build, nella barra laterale sinistra, c’è la parte più importante: le invocazioni e le impostazioni della skill.

Nome di invocazione

Nella barra di destra trovi una buona checklist delle cose da fare. Iniziamo anche noi da lì e clicchiamo su «1st Invocation Name». Il nome di invocazione è l’«espressione di avvio» con cui ti rivolgi alla tua skill tramite Alexa, ad es. «Alexa, chiedi a INVOCATION NAME». Come esempio uso daniel. Importante: qui non sono ammesse lettere maiuscole.

Creare un intent

Dopo aver impostato il nome di invocazione possiamo creare il primo intent della nostra skill. Un intent è un comando che viene eseguito sul tuo server quando viene riconosciuta una delle frasi associate. Non è complicato. Ecco un esempio:

  • Intent = hello
  • Utterance
    • hi
    • hello
    • moin

Se ora dici «hi» alla tua skill, sul tuo server viene eseguito l’intent «hello». Che cosa restituisca questo intent dipende dalla tua programmazione.

Utterance e slot della skill

Bene, abbiamo creato un intent «hello». Ora creiamo 3 utterance come descritto sopra: hello, hi e moin.

Vorrei anche che al mio server venisse passato uno slot (o variabile). Aggiungo uno slot «name» con il tipo di slot «AMAZON.DE_FIRST_NAME». Naturalmente devo aggiungerlo alle utterance usando le parentesi graffe.

Il nostro primo intent è pronto.

Impostare un endpoint

Ora possiamo impostare un endpoint. L’endpoint è la destinazione a cui vengono inviate le richieste della tua skill. Nel mio caso è https://alexa.welaunch.io. È importante che l’endpoint abbia una connessione cifrata (https).

Seleziona HTTPS, inserisci l’indirizzo e scegli «My development endpoint has a certificate from a trusted certificate authority». Poi torna al modello di interazione e clicca su «Build».

La parte PHP

Finalmente arriviamo al PHP. In realtà rispetto al mio vecchio tutorial non cambia molto, ma lo spiego di nuovo brevemente. Come logger uso Monolog per verificare perché alcune domande non hanno ricevuto risposta. Vedi anche quali intent o utterance vengono richiesti ma non sono supportati dalla tua skill. Ad esempio, quando dico «hiderido», manca questa utterance.

File Composer per Monolog:

{
    "name": "db-dzine/alexaphp",
    "description": "PHP Class for Alexa",
    "type": "library",
    "authors": ,
    "minimum-stability": "dev",
    "require": {
        "monolog/monolog": "1.x-dev",
    }
}

Poi esegui composer install nella tua cartella. A questo punto puoi creare un index.php e caricare autoload e Monolog:

<?php // Load Monolog Vendor require_once __DIR__ . '/vendor/autoload.php'; // Autoload files using Composer autoload use Monolog\Logger; use Monolog\Handler\StreamHandler; // Save Requests on debug log define('DEBUG', true); define('DEBUG_FILE', __DIR__ . '/logs/log.log'); $logger = new Logger('Alexa'); $logger->pushHandler( new StreamHandler( DEBUG_FILE, Logger::INFO ) );

Per intercettare le richieste della tua skill:

// Get Alexa Request
$jsonRequest = file_get_contents('php://input');
// Decode the Request
$data        = json_decode($jsonRequest, true);
// Abort when Empty
if( empty($data) || (!isset($data) ) ) {
	die('Bad Request');
}

Dall’array dei dati si possono leggere le seguenti variabili. Naturalmente ce ne sono altre, ma queste sono le più importanti:

$intent = !empty($data) ? $data : 'default';
$intentData = !empty($data) ? $data : 'default';
$sessionId =  !empty($data) ? $data : 'default';
$logger->info( var_export($data, true));
$logger->info( $intentData );
$logger->info( $sessionId);

Ora possiamo usare la variabile $intent per capire quale intent è stato richiamato. Con un’istruzione switch restituisco un bel saluto per l’intent «hello». E se è stato passato anche un nome, restituisco anche quello. Il tutto torna ad Alexa come stringa codificata in JSON.

switch ($intent) {
	// Hallo Intent für Utterances hi, hallo, moin
	case 'hallo':
		// Hallo Intentdata abfragen
		$name = !empty($intentData) ? $intentData : '';
		// save $name in data file - here also mysql can be used
		// later you can use session id to get data like name
		if(!empty($name)) {
			$dataToSave = array($sessionId => array(
				'name' => $name
			));
			$fp = fopen('data.json', 'w');
			fwrite($fp, json_encode($dataToSave));
			fclose($fp);
		}
		$responseArray = ,
		          'shouldEndSession' => false
		    ]
		];
		break;
	// Default
	default:
		$responseArray = ,
		          'shouldEndSession' => true
		    ]
		];
		break;
}
header ( 'Content-Type: application/json' );
echo json_encode ( $responseArray );
die();

Testare la skill

Possiamo testare la nostra skill con «Question daniel hello klaus». Sembra strano, ma «ask daniel» avvia la skill (nome di invocazione) e viene eseguito «hello» (l’intent).

Puoi anche usare l’app Alexa sul tuo smartphone per testare la skill.

Blog29 ottobre 2026 Direttiva EmpCo: cosa devono sapere i negozi online sulle dichiarazioni ambientali dal 27 settembre 2026 «Sostenibile», «spedizione climaticamente neutra», «imballaggio ecologico»: dichiarazioni come queste compaiono in molti negozi online, nei testi dei prodotti, nei banner, nei badg… Blog29 ottobre 2026 EU AI Act: cosa significa il regolamento europeo sull’IA per siti web e negozi online Dal 2 agosto 2026 si applicano gli obblighi di trasparenza del regolamento europeo sull’intelligenza artificiale, l’EU AI Act. Se usi un chatbot IA sul tuo sito, crei immagini con … Blog22 dicembre 2023 Impedire a WP Rocket di mettere in cache le pagine WooCommerce filtrate Se usi WP Rocket con il preloading insieme a un plugin di filtri come Filter Everything Pro, il database E la cartella della cache possono esplodere. Avevamo un sito con solo circa…

Aumentiamo le tue vendite online.

Raccontaci del tuo shop o sito web. Ti risponde uno sviluppatore, non un team commerciale.

★ 4,85/5 da oltre 800 valutazioni · Envato Elite Author · Made in Germany