.net CMS
Plugin > Chat Robot

Instructions Chat Language

ICL (Instructions Chat Language) è un linguaggio per programmare i robot automi che assistono la chat

L’ Instructions Chat Language è il linguaggio utilizzato per programmare il robot che simula un umano in chat. Le istruzioni contenute in questo linguaggio, possono essere impostate in un file di testo. L’ordine con cui si susseguono le istruzioni nopn ha importanza e quindi non influisce sul risultato finale (un po’ come avviene per esempio con i CSS).
I file aventi le istruzioni, sono dei file di testo che obbligatoriamente dovranno essere salvati come UTF-8, in modo da supportare i caratteri internazionali tramite l’Unicode.
I file di programma nel nostro applicativo web, sono posti sotto la cartella “app_data\Plugins\ChatRobot”.
L’estensione di tali file è .(acronimo lingua).txt:
L’ “acronimo lingua” è una sigla di due caratteri che indica la lingua a cui le istruzioni si riferiscono (it, en, ru, ecc..).
Si possono creare più file contenenti le istruzioni per il robot. Anche più file per la stessa lingua, per esempio: “file1.it.txt”, “ragazza.it.txt”, “vacane.it.txt”, “standard.en.txt”. In questo esempio i primi tre file conterranno istruzioni che il robot utilizzerà nei siti di lingua italiana, mentre l’ultimo conterrà istruzioni da adottarsi nel sito in lingua inglese.
Qualora i file contenenti le istruzioni dovessero contenere degli errori, il sistema provvederà automaticamente a segnalarlo, scrivendo l’errore in un file dal nome errore.(nome del file con l’errore).

Cosa ne pensi in merito all’effettiva utilità del robot? Rispondi al sondaggio!

Credi che un robot che emula un operatore in chat possa essere di valore aggiunto ad un sito commerciale?

1) Sì in quanto può assistere egregiamente alla maggior parte delle casistiche poste dagli utenti, portando questi ad concludere gli ordini 71,4%

2) No! E’ molto meglio un operatore in carne ed ossa. Anche se ha un costo maggiore viene largamente compensato dai maggiori introiti 14,3%

3) Credo che la semplice assistenza via telefono o e-mail sia più che sufficiente, il resto mi pare sia superfluo 14,3%

Specifiche

Ecco le specifiche del linguaggio per istruire il Robot nella chat

E’ possibile istruire il robot nel dare risposta ad una serie di “questioni”.
Ogni “questione” permette di impartire al robot le risposte a domande da parte dell’utente che entra in conversazione.

La sintassi per impostare le “questioni” è la seguente:

?
Domanda
!
Risposta

Tanto per intenderci con un esempi:

?
Come di chiami?
!
Mi chiamo Mario

E’ anche possibile creare una questione che ha più domande sinonimo, per esempio:

?
Come di chiami?
?
Quale è il tuo nome?

Allo stesso modo ogni questione può avere più risposte, ciò serve a non creare un robot monotono che risponda sempre la stessa cosa alla medesima domanda:

!
Mi chiamo Mario
!
Sono Mario
!
Io non mi chiamo, sono gli altri che mi chiamano

E’ anche possibile nelle risposte utilizzare delle variabili testuali, che verranno opportunamente sostituite con il loro valore. Infatti non è detto che tutti i robot si chiamino Mario.
Ogni variabile è scritta con lettere maiuscole, così: ROBOT.NAME. Cosicché la risposta alla questione – stando all’esempio precedente – può essere impartita anche in questo modo:

!
Mi chiamo ROBOT.NAME

I nomi delle variabili sono standard ed elencati nell’apposita sessione.
Ogni domanda non può occupare più di una riga, le risposte invece sì: In tal caso nella chat appariranno messaggi distinti uno a seguito dell’altro. Esempio di risposta con una sequenza di frasi:

!
Mi chiamo ROBOT.NAME
Felice di conoscerci

E’ possibile anche impartire al robot di effettuare domande, l’identificatore è sempre il punto esclamativo (!). Ecco con un esempio:

?
Come di chiami?
!
Mi chiamo ROBOT.NAME
E tu come ti chiami?

Nell’esempio sopra il robot chiede “E tu come ti chiami?”

E’ anche possibile impartire al robot di avviare conversazioni, semplicemente basta omettere nella questione la domanda da parte dell’utente ed impostare solamente la domanda da parte del robot. Con un esempio:

!
Che bella giornata oggi, non credi?

Le domande impostabili da parte del robot tramite punto esclamativo (!) che non sono riferite a nessuna domanda da parte dell’utente, sono definite “splash”, in quanto conferiscono all’automa di prendere l’iniziativa buttando lì per lì delle domande.

E’possibile anche impartire una questione che definisca quale debba essere o quali possono essere, le frasi di accoglienza da parte del robot quando qualcuno entra in chat. Basta semplicemente far rientrare la questione nell’ambito WELCOME, come da esempio:

=WELCOME
!
Salve USER.NAME, in ce modo posso aiutarla?

Nella definizione sopra viene impostato in che modo il robot debba accogliere il cliente.

In pratica ogni questione è formata da domande da parte dell’utente (?) e domande e risposte da parte del robot (!).

E’ possibile impostare più questioni semplicemente lasciando una riga vuota tra di esse:

?
Come ti chiami?
!
Mi chiamo Mario
?
Come va?
!
Tutto bene grazie!
!
Si tira avanti..

Qualora si volessero aggiungere dei commenti (delle rem non interpretabili dal robot) basta far incominciare le frasi con il simbolo della barra (/), cosi:

/quello che segue è il messaggio di benvenuto:
!
Ciao e benvenuto nella chat da parte mia!

E’ altresì possibile impostare risposte (!) e domande da parte del robot (!) multi linea, ovvero con più frasi una per ogni linea, in questo modo il robot emulerà la digitazione dei testi in chat lasciando dei lassi di tempo tra la scrittura delle varie righe di testo. Questo è un esempio:

?
Come va?
!
Malaccio!
Sono qui che crepo dal caldo
E te invece come te la passi?

Nell’esempio riportato sopra il robot risponderà scrivendo tre messaggi differenti nella chat, lasciando un breve lasso di tempo fra i due: Scrittura “Malaccio!”, dopo qualche secondo, scrittura  “Sono qui che crepo dal caldo”, ed in fine “E te invece come te la passi?”. Tra la scrittura di ogni frase passerà qualche secondo.

Variabili

Le variabili sono delle parole che opportunamente vengono sostituite con altre. Sono facilmente riconoscibili doto che vengono scritte interamente in maiuscolo.

Queste sono le variabili inerenti il robot che si sostituiscono con l’attributo corrispondente:

ROBOT.NAME
ROBOT.LASTNAME
ROBOT.PHONE
ROBOT.SKYPE
ROBOT.CITY
ROBOT.WEBPAGE
ROBOT.EMAIL
ROBOT.COUNTRY

Queste sono le variabili inerenti l’utente connesso in chat:

USER.NAME = Il nome dell’utente

Altre variabili:

WEBSITE = Il nome del sito in cui si sta navigando

Variabili emoticons:
Le variabili emoticons sono rappresentate da tutta quella schiera di sequenze di caratteri assai comuni in internet che vengono sostituiti con delle icone espressive, ecco alcuni esempi: :-) Sorriso, ;-) Strizzare l’occhio, (I) cuoricino. Per la serie completa delle emoticons si può vedere la pagina chat del sito dove in basso sono elencate tutte.

Ecco un esempio di utilizzo delle variabili:

?
Grazie di tutto, arrivederci.
!
Torni a trovarci, e salvi il nostro sito WEBSITE fra i preferiti ;-)

Nell ‘esempio sopra WEBSITE verrà sostituito con la url alla homepage del sito in cui si sta navigando e la sequenza di caratteri ;-) diventa una immagine (emoticons) raffigurante un volto stilizzato che strizza un occhio.

Una variabile molto interessante è SEARCH. Il suo utilizzo è molto versatile in tutte quelle occasioni in cui l’utente possa chiedere un qualche cosa di cui non è stata programmata la risposta. In pratica, SEARCH viene sostituito con un link in cui il sistema rivela vi sia un contenuto idoneo a soddisfare la domanda posta dall’utente. L’utilizzo della variabile SEACH è molto efficace nelle questioni prive della domanda (?) . Ecco con un esempio.

!
Se suggerisco di dare un occhiata a questa pagina: SEARCH, dovrebbe esserci ciò che sta cercando.
!
Veda questa pagina se trova ciò che cerca SEARCH

Nell’esempio sopra, viene impostata una questione priva di domanda (?), avente due risposte (!) in cui la parola SEARCH verrà automaticamente sostituito con un link che riporta ad una pagina in internet i cui termini di ricerca sono i medesimi della domanda posta dall’utente.

Una variabile il cui utilizzo è molto simile a SEARCH, è INSIDE. Tale variabile si differisce da SEARCH in quanto rappresenta un link interno al sito visitato dall’utente. Ecco un esempio di funzionamento:

!
Provi a vedere nel nostro sito a questo indirizzo: INSIDE

Ambito

A seconda del contesto in cui si trova l’utente che sta interagendo con il robot, potrebbe essere necessario un comportamento differente. Qui entra in gioco il concetto di ambito, che nell’Instructions Chat Language permette di stabilire delle regole alle questioni tramite dei semplici operatori:
L’operatore uguale  (=), permette di filtrare la questione in un determinato ambito:

=TESTOSTERONE
?
Ti posso chiedere dove abiti
!
Sì caro, certamente

Nell’esempio sopra, solamente se la conversazione con l’utente si trova nell’ambito TESTOSTERONE, alla domanda “Ti posso chiedere dove abiti” il robot risponderà “Sì caro, certamente”.
Ma come è possibile definire un ambito?
Iniziamo con il dire che alcuni ambiti sono definiti automaticamente dal sistema, mentre altri vengono impostati tramite l’operatore più (+), come da esempio:

+TESTOSTERONE
?
Ho visto la tua foto. Sei una bella gnocca
!
Grazie per il complimento

In tal caso, qualora l’utente digiti la frase “Ho visto la tua foto. Sei una bella gnocca”, in automatico la conversazione da qui in avanti rientrerà nell’ambito TESTOSTERONE.
E’ anche possibile filtrare la questione,in modo da non farla rientrare in un determinato ambito, in tal caso occorrerà utilizzare l’operatore (-) come da esempio:

-TESTOSTERONE
?
Grazie e arrivederci
!
Non c’è di che, torni a trovarci
?
Grazie e arrivederci
!
Baci, ti aspetto nuovamente!

Nell’esempio sopra, sono  definite due questioni, la prima è riferita solamente a discussioni che non rientrano nell’ambito TESTOSTERONE, e assegna alla frase dell’utente “Grazie e arrivederci” la risposta “Non c’è di che, torni a trovarci”, mentre la seconda, assegna alla medesima frase, la risposta “Baci, ti aspetto nuovamente!”.

Per quanto concerne gli ambiti definiti automaticamente dal sistema, ovvero gli ambiti per i quali non viene utilizzato l’operatore più (+) per costruirli, essi riguardano aspetti sia dell’utente connesso in chat e sia anche della sua navigazione. Si supponga di per esempio di voler accogliere in un determinato modo un utente che abbia visitato una determinata pagina del sito, e la pagina in questione sia la numero 9 dell’archivio 29 (ovvero una pagina nella cui url si evincono i seguenti parametri: “?p=9&a=29&t=xxx”). Con il seguente esempio è possibile definire il messaggio spalsh per questo determinato ambito:

=P9A29
!
Benvenuto USER.NAME, presumo che abbia bisogno di informazioni inerenti il servizio di hosting linux
mi dica?
Con questo esempio definiamo una questione sempre per gli utenti che abbiano visitato la pagina P9A29
=P9A29
?
Che versione di .NET è supportata?
!
Guardi che il servizio di hosting linux non supporta .NET

Il numero che segue dopo la P sta ad indicare la pagina, quello dopo la A è l’ID di archivio.

Sempre rimanendo in tema, è anche possibile programmare il robot in base a un determinato nome di’URL di pagina visitata, si prenda per esempio:

=BOOKING.ASPX
?
Come si fa a prenotare?
!
Deve andare su “Prenota ora” (veda il bottone in alto alla pagina di prenotazione)

Nell’esempio sopra, la questione si riferisce agli solo agli utenti che abbiano visitato una pagina che incomincia per booking.aspx, per esempio anche una ipotetica pagina booking.aspx?hotel=venice.
E’ anche possibile inserire nel filtro dell’ambito, la url request:

=BOOKING.ASPX?HOTEL=MILAN
?
Che hotel mi consiglia?
!
Il Principe di Savoia

Nell’esempio sopra, la questione viene filtrata solo per gli utenti che abbiano visitato una pagina la cui url – per la parte che si riferisce alla pagina – incominci per booking.aspx?hotel=milan.

La sintassi degli operatori preposti alla gestione degli ambiti, prevede che si possano inserire anche molteplici riferimenti ad ambiti per la medesima questione sia mettendoli su più linee, oppure più semplicemente concatenandoli uno di seguito all’altro come da esempio:

=MARPIONE=TESTOSTERONE
?
Ti posso invitare a cena
!
Sì bel maschione

Nell’esempio sopra, la questione viene filtrata in modo che sia ritenuta valida solo per gli ambiti MARPIONE e TESTOSTERONE.

E’ possibile definire anche degli ambiti temporanei tramite il suffisso cancelletto (#), nel nome dell’ambito.
Gli ambiti temporanei scadono non appena l’utente scrive qualsiasi cosa in chat. L’utilizzo degli ambiti temporanei si presta a programmare il battibecco, ovvero una sequenza di domande e risposte, come da esempio:

+#NUCLEARE
!
Sei a favore del nucleare?
=#NUCLEARE
?

!
Ma come, è dannoso all’ambiente!
=#NUCLEARE
?
No
!
Anche io sono contro il nucleare!

E’ possibile aumentare la complessità del battibecco creando una catena, ovvero non appena un ambito scade (perché la domanda ha ricevuto una risposta da parte dell’utente), se ne crea un altro in quale a sua volta necessita di una risposta per scadere. Ecco con un esempio:

+#NUCLEARE
!
Sei a favore del nucleare?
=#NUCLEARE+#FAVOREVOLE
?

!
Ma come, è dannoso all’ambiente!
Credi veramente che sia una forma energetica conveniente?
=#NUCLEARE
?
No
!
Anche io sono contro il nucleare!
=#FAVOREVOLE
?

!
Non è così, se si calcola il costo dello smantellamento delle scorie non è affatto conveniente!
=#FAVOREVOLE
?
No
!
E allora spiegami perché sei a favore del nucleare!

Esistono anche degli ambiti che riguardano le caratteristiche dell’utente connesso in chat, e sono:

USER.FEMALE

Ambito che definisce gli utenti femmina

USER.MALE

Ambito che definisce gli utenti maschio

ROBOT.FEMALE

Ambito in cui la conversazione avviene con in robot il quale emula di essere femmina

ROBOT.MALE

Ambito in cui la conversazione avviene con in robot il quale emula di essere maschio

(nome di dominio del sito visitato scritto in maiuscolo, esempio MIOSITO.COM)

Questo ambito si riferisce al nome di dominio in cui sta navigando l’utente (occorre ricordare che questo è un applicativo multi dominio). Ecco un esempio di utilizzo:

=SITOVERDURE.IT
?
Sono fresche?
!
Si certo,

Nell’esempio sopra viene impostata una questione che come regola prevede che l’utente sia nell’ambito del sito dal nome di dominio “sitoverdure.it”

Analogamente al nome di dominio, è possibile usare come ambito il nome della configurazione – scritta in maiuscolo – del sito o sottosito, esempio:

=NOMECONFIGURAZIONE

Dove per NOMECONFIGURAZIONE si intende il nome assegnato alla configurazione del sito/sottosito visitato dall’utente, per esempio: SITO1, DEFAULT, SITOPESCA.

Come ambito è anche possibile indicare l’Id di un forum. In tal caso si ritiene che l’utente appartiene a quel determinato ambito, se nel sito che sta visitando vi sia il forum con il determinato Id specificato nella maniera seguente:

=F200 (F seguito dall’Id numerico del forum)
?
Dove trovo la pagina per il download
!
Ci deve scrivere per e.mail ed il file ve lo mandiamo per posta elettronica

Nell’esempio sopra la questione è presa in considerazione solo se l’utente si trova in un sito in cui è configurato il forum con Id 200. Stando alle regole già viste, è anche possibile agire per esclusione usando il segno meno (-), per esempio:

-F200

Nell’esempio sopra è riportato come escludere una determinata questione nel caso in cui l’utente stia navigando in un sito con configurato il forum avente Id 200.

Un altro ambito che viene definito automaticamente dal sistema è lo WELCOME. L’utente rientra automaticamente nell’ambito WELCOME non appena questi entra in chat e ne esce immediatamente.
Tale ambito può essere utile qualora si volesse accogliere l’utente con dei messaggi di tipo splash prima che costui abbia già iniziato a conversare. Ecco con un esempio come è possibile far impartire l’iniziativa al robot di accogliere l’utente con un semplice “Ciao, dimmi bello!” appena che questi sia giunto nella chat:

=WELCOME
!
Ciao, dimmi bello!

In ambito che invece si presta assai bene per la scrittura di messaggi splash introduttivi è l’INTRODUCTORY.
Tale ambito viene mantenuto dal momento dell’ingresso in chat dell’utente, fino a che l’utente non abbia scritto almeno quattro messaggi.

Un altro ambito molto interessante è il RUNNING. Questo ambito è simile a l’INTRODUCTORY con una sola differenza: L’utente entra automaticamente in questo ambito dopo che questi abbia scritto almeno cinque messaggi in chat. Questo ambito si presta a diverse chicche, per esempio è possibile impostare un messaggio splash a conversazione inoltrata in questo modo:

=RUNNING
!
Può tornare qui a trovarci quando vuole, io purtroppo adesso la devo lasciare.

E’ importante sapere che ogni questione viene utilizzata una sola volta dal robot, se impostiamo una questione come nell’esempio a seguire, il robot chiederà all’utente “Come va?” o “Dove vai in vacanza?” una sola volta nel corso della sessione nella chat.
Per far si che il robot ponga all’utente molteplici domande spash, è opportuno inserirle in questioni differenti, in questo modo:

!
Come va?
!
Dove vai in vacanza?

Note: Alcuni ambiti concernenti le caratteristiche dell’utente, potrebbero essere inibiti per gli utenti non registrati,in particolare le caratteristiche che riguardano il sesso dell’utente.

Comportamento del robot

Per evitare che il comportamento del robot appaia ripetitivo e monotono, ogni questione viene utilizzata dal robot una sola volta, a meno che questa con contenga più di una risposta. Se veda la seguente questione:

?
Che stai facendo di bello?
!
Sono qui che chatto con tè!

Nell’esempio sopra è stata impostata una questione, la quale si brucia (ovvero non potrà più essere riutilizzata), qualora un utente domandi “Che stai facendo di bello?”.  A domanda l’utente otterrà l’unica possibile risposta prefissata “Sono qui che chatto con tè!”, dopodiché se l’utente dovesse ripetere la domanda, tale riposta non verrà più ripetuta in quanto la questione è già stata utilizzata. Cosa ben diversa per le questione che prevedono un ventaglio di possibili risposte come per esempio:

?
Che stai facendo di bello?
!
Sono qui che chatto con tè!
!
Mi sto grattando
!
E a te che ti importa?

In questo esempio, il robot risponderà con una a caso delle risposte prefissate. Qualora la domanda da parte dell’utente si ripetesse, il robot continuerà a dare una risposta a caso tra quelle prefissate.

E’ possibile anche creare due o più questioni per la medesima domanda, le quali si “bruciano” o meno a seconda se contengono una o molteplici risposte, e ogni questione può avviare un ambito specifico, il tutto dando al possibilità di creare scenari di discussione molto complessi. Esempio:

?
Che stai facendo di bello?
!
Sono qui che chatto con tè!
+PROPOSTAINDECENTE
?
Che stai facendo di bello?
!
Aspetto una tua proposta indecente
=PROPOSTAINDECENTE
!
E questa sarebbe una proposta indecente? Non sai propormi nulla di più scabroso?

Nell’esempio sopra vi sono due questioni che programmano una risposta alla domanda dell’utente “Che stai facendo di bello?”. Il ha la possibilità di rispondere con una a caso delle seguenti risposte: “Sono qui che chatto con tè!” oppure “Aspetto una tua proposta indecente”. Qualora il robot risponda con “Aspetto una tua proposta indecente” si attiva un ambito dal nome “PROPOSTAINDECENTE”. Ad una nuova replica da parte dell’utente il robot risponderà con “E questa sarebbe una proposta indecente? Non sai propormi nulla di più scabroso?”.

Formare le frasi in modo intelligente

L’algoritmo che utilizza il robot per riconoscere le domande poste dagli utenti, è in gradi di comprendere anche frasi ortograficamente non corrette (contenenti errori di battitura), persino l’ordine delle parole ha poca rilevanza, Tutto ciò rende l’Instructions Chat Language, un linguaggio versatile, potente e in grado di emulare caratteristiche umane, tutto questo affinché l’utente in conversazione con il robot non sia indotto a credere che questi sia un automa.
Proprio affinché il robot possa essere in grado di mantenere un volto umano, si rende necessario far si che questi possa rispondere a delle domande molto precise. A tal fine si suggerisce di programmare le domande nelle questioni (?), utilizzando delle forme molto sintetiche. Per esempio, la domanda:

?
Mi sa dare informazione sugli orari degli autobus per Milano?
Per una concreta efficacia va  impostata così:
?
Orari autobus Milano

Ciò perché è raro che qualcuno chieda al robot una frase contenente tutte la parole di “Mi sa dare informazione sugli orari degli autobus per Milano?”, mentre invece lo è meno che si ponga al robot una domanda avente i seguenti termini: “Orari” + “autobus” + “Milano”.
In questo esempio sarebbe opportuno anche aggiungere la domanda che utilizzi anche il sinonimo di autobus, pullman:

?
Orari autobus Milano
?
Orari pullman Milano

Il risultato migliore si ottiene omettendo dalle domande dell’utente, le preposizioni e gli articoli che sono assolutamente influenti ai fini del funzionamento.

Argomenti nella stessa categoria