Università degli Studi di Modena e Reggio Emilia

Slides:



Advertisements
Presentazioni simili
JUG – Ancona Italy AJAX Giovanni Baleani Developer IBS srl.
Advertisements

Presentazione web domanda di accreditamento Programmazione
Università degli Studi di Perugia, LS in Informatica Seminario per il corso di Sicurezza Informatica (Prof. S. Bistarelli) Valentina Franzoni I nuovi paradigmi.
Giuditta Cantoni, 4 E S.I.A I DATABASE. Definizione databese In informatica, il termine database, banca dati o base di dati (a volte abbreviato con il.
Alma Mater Studiorum - Università di Bologna Facoltà di Scienze Matematiche Fisiche e Naturali Dipartimento di Scienze dell’Informazione Supporto al multihoming.
+ Common actions Nicolò Sordoni. + Azioni comuni Esistono una serie di azioni di uso comune, che vengono messe a disposizione dalla piattaforma tramite.
13 gennaio Sistema di rilevazione delle temperature all’interno di Personal Computer Industriali Dipartimento di Ingegneria Elettronica SISTEMA.
VO-Neural Project e GRID Giovanni d’Angelo Dipartimento di Scienze Fisiche Università degli Studi di Napoli Federico II Martina Franca 12 – 23 Novembre.
Dove vuoi andare questa estate?
Visual Analytics Dashboard
Sviluppo di un database aziendale con Microsoft Access e VBA
Vulnerability Assessment
Protocollo di trasmissione tramite tecnologia Barryvox
Università degli Studi di Modena e Reggio Emilia
Lato Server - OMNIS Web Web Services.
PORTALE SIDOCPORTAL TALENTURE SA.
Piattaforma per industrie stampaggio
Sistema di Autenticazione unica (Single-Sign-On) (azione #8)
“Lenuove tecnologie” – Lezione2
Aggiornamento del Presentation Layer di un Web Application Framework Introduzione del Responsive Web Design nel Framework Quix Davide Setti Dipartimento.
Gestione delle fasi del tirocinio attraverso un’ App Android e interfaccia Web e relativa gestione documentale della tesi Università degli Studi di Napoli.
Uso di Unity per la Creazione di Giochi Educativi
I PROCESSI.
Elementi di Economica Microstruttura e Macrostruttura
UNIVERSITÀ DEGLI STUDI DI MODENA E REGGIO EMILIA Dipartimento di Scienze Fisiche, Informatiche e Matematiche Corso di Laure in Informatica Relatore: Riccardo.
Commissione Calcolo e Reti
Applicazione web basata su web service e web socket
Dati in rete Appunti.
Pre-processing e rendering di mappe GIS per IoT platforms
Uso di Unity per la Creazione di Giochi Educativi
PNSD - Modulo D1A 27 aprile 2017 Piattaforme di e-­learning e cloud:​ installazione e gestione (azione #22) Prof. Rocca Marcello
Studente/i Relatore Correlatore Committente Pagano Pedro Daniel
Sistema di Autenticazione unica (Single-Sign-On) (azione #8)
Commissione Calcolo e Reti
Real-time 3D reconstruction using multiple depth cameras
UNIVERSITA’ DEGLI STUDI DI PALERMO SCUOLA POLITECNICA Dipartimento di Ingegneria Civile, Ambientale, Aerospaziale, dei Materiali (DICAM) Corso di Laurea.
Condivisione Documentazione Tecnica
Corso di Ingegneria del Web e Applicazioni A A
Uso di Unity per la Creazione di Giochi Educativi
* Il Sistema Operativo GNU/Linux * Sistema Operativo e Applicazioni
La storia dei social è come vengono utilizzati
Asynchronous JavaScript and XML
Corso Di Laurea Magistrale In Ingegneria Informatica - Anno accademico
Sistema di Autenticazione unica (Single-Sign-On) (azione #8)
Sviluppo di un'applicazione web per l'utilizzo del framework SparkER
Sala di Videoconferenza … quale strumento usare ?
Ardis e il sistema qualità
Corso di Ingegneria del Web A A Domenico Rosaci 1
Il test di lingua italiana: il procedimento e i soggetti coinvolti
Psicologia dell’apprendimento
Predisposizione e presentazione della domanda di nullaosta
Emergency Department Wait Time Prediction
Il test di lingua italiana: il procedimento e i soggetti coinvolti
INSERIRE GLI INDIRIZZI DEGLI UTENTI
SALVATERRA, GEN/FEB 2019.
© 2007 SEI-Società Editrice Internazionale, Apogeo
Il test di lingua italiana: il procedimento e i soggetti coinvolti
ADO Per gestire i database con tecnologia ASP si utilizzano strumenti ADO (ActiveX Data Objects): un'architettura che fornisce oggetti.
Le reti informatiche di Roberto Minotti 17/01/2019.
Il Progetto OpenAirVallée
Le reti informatiche di Roberto Minotti 15/02/2019.
UNIVERSITÀ DEGLI STUDI DI MODENA E REGGIO EMILIA
OpenLayers Client di mappe “non solo” WMS
Predisposizione e presentazione della domanda di nullaosta
applicazioni dell’Intelligenza Artificiale ai servizi di ricevimento
Università degli studi di Modena e Reggio Emilia
UNIVERSITÀ DI MODENA E REGGIO EMILIA
CLOUD.
Corso di laurea in Ingegneria Elettronica
Transcript della presentazione:

Università degli Studi di Modena e Reggio Emilia Dipartimento di ingegneria ‘’Enzo Ferrari’’ Corso di Laurea in Ingegneria Informatica Struttura generica di bot: il Qbot Anno Accademico 2015/2016 Relatori: Prof.ssa Laura Po Prof. Domenico Beneventano Candidato: Marianna Ferrari

Obiettivo della Tesi Argomento della tesi sono i Chatbot, detti più semplicemente Bot. Il progetto in questione, il Qbot, è stato sviluppato presso l’azienda Quix srl. L’elaborato si suddivide in due parti: La prima parte presenta una panoramica sui bot (storia e possibile futuro) La seconda parte descrive l’applicazione realizzata, il Qbot

Introduzione

Cosa sono i Bot? I Bot sono programmi che possono interagire, attraverso una chat, con l’essere umano, simulandone il comportamento. I Bot possono svolgere qualsiasi tipo di funzione automatica (risposta a messaggi, visualizzazione video musicali, giochi in rete…). Solitamente un singolo Bot risponde a un numero ridotto di funzioni. Esistono diverse applicazioni di messaggistica che supportano i Bot, tra cui: Telegram, Messenger , SKype, Slack … In questo contesto ci si è focalizzati su Telegram.

La storia dei Bot Il test di Turing: analizzando una conversazione tra un individuo e una macchina, una persona ignara di chi stia colloquiando, ha il compito di capire quale dei due sia l’automa e quale l’essere umano; nel caso in cui il terzo soggetto non sia in grado di comprenderlo, l’automa «ha superato il Test di Turing». ELIZA: primo automa che, simulando il comportamento di uno psicoterapeuta, superò il Test di Turing nel 1966. ALICE: nato nel 1995, è stato un degno successore di ELIZA; usa uno schema chiamato AIML (Artificial Intelligence Markup Language) che gli permette di avere una conoscenza di base sufficiente ad avere una conversazione verosimile.

Il futuro dei Bot I Chatbot sono visti, dagli osservatori più entusiasti, come il futuro dell’interazione tra utente e smartphone/PC Secondo gli scettici, invece, non avranno futuro a causa della scarsa intelligenza artificiale che supportano.

Il Qbot Compito principale del Qbot è la risposta automatica a richieste inviate tramite applicazioni di messaggistica Prevede una procedura di autenticazione tramite CAS (Central Authentication Service) Progettato per supportare sia la modalità webhook che long polling È basato sull’applicazione Telegram Il Qbot è una struttura generica di supporto al Bot

Il Qbot

I Database In questo progetto sono stati interrogati tre DB: PUMA: database in cui sono registrati gli utenti con i relativi dati e ruoli FRMK: database utilizzato dal framework Quix che contiene ad esempio le SysConfig QBOT: database creato per l’applicazione che tiene traccia dei Bot, dei BotChannel, dei ChannelRegistry e dei Log I DB sono stati interrogati tramite DAO e QbotManager

QbotManager e DAO La dichiarazione di Context e resources nel server.xml ha permesso a Tomcat di gestire le connessioni tramite Datasource DAO, Datasources, Manager e Validatori sono stati gestiti con l’aiuto dei bean di Spring Il QbotManager ha un metodo per ogni metodo di ogni DAO Ogni metodo del Manager è stato segnato con l’annotazione @Transactional di Spring in modo che venga effettuato il rollback automatico in caso di eccezione durante l’esecuzione, permettendo l’integrità del DB

Model I model del progetto possono essere suddivisi in tre grandi categorie: I DBModel, che rispecchiano le tabelle del DB QBOT (Bot, BotChannel, Channel_registry e LogHistoryBot) Gli AbstractModel, utilizzati dai metodi degli Handler (UserBot, MessageBot, UpdateBot, WebhookInfoBot ..) I TelegramModel che estendono le classi astratte dei model sopracitati e che rispecchiano le API di Telegram (TelegramUser, TelegramMessage, TelegramUpdate, TelegramWebhookInfo … )

Webhook e Long Polling Long Polling: variante del tradizionale polling, processo in cui il dispositivo di controllo aspetta un segnale dall’esterno in modo sincrono e interrogando ogni “tot” di tempo il dispositivo esterno per sapere se esistono degli aggiornamenti, ma con l’aspettativa che il server possa anche non rispondere immediatamente, per cui si “mette in attesa” della risposta. Nel momento in cui la risposta viene ricevuta, viene effettuata una nuova richiesta al server Webhook: È un metodo per alterare il comportamento di una pagina o applicazione Web con chiamate di ritorno personalizzate (callback). Quando l’evento accade, la fonte fa una richiesta HTTP alla URI configurata per il webhook. I webhook vengono spesso utilizzati, come in questo caso, per scatenare l’aggiornamento di sistemi in modo continuativo e asincrono Il Bot implementato come esempio fa uso della tecnica di Long Polling

TelegramChatHandler e ScriptEngineHandler Il TelegramChatHandler è una classe che estende la classe astratta ChatHandler implementando le API Telegram per reperimento aggiornamenti, invio messaggi, invio contatti … Si può definire lo ScriptEngineHandler come una classe intermedia tra l’intera architettura Java costruita e il vero e proprio comportamento del Bot, definito invece in JavaScript, per questo è una delle classi di maggiore importanza della struttura. Questa classe ha un unico grande metodo, che permette l’invocazione e la compilazione degli script JavaScript salvati in memoria nella tabella QBOT_BOT del DB QBOT

Funzionamento Ogni richiesta effettuata è una chiamata REST (sono supportate sia le GET che le POST) del tipo: https://api.telegram.org/bot<token>/METHOD_NAME Le risposte contengono un oggetto JSON Nel caso di primo contatto con il Bot nell’ultima ora, verrà inviato il sendLogin, un metodo che richiederà all’utente di eseguire il login (su CAS) tramite un messaggio con tastiera incorporata

Funzionamento (2) Una volta effettuato il login, la Action HomeActionLogin (dichiarata tramite Struts2) genera un nuovo authCode (impostando la authCodeValidityDate all’ora corrente più un’ora), salva BotChannel, Channel_registry e LogHistory e, infine, fa in modo che il Bot invii un messaggio di benvenuto all’utente Ora il Bot è pronto per ricevere le varie richieste dall’utente

Pagina JSP di edit per il Bot

Esempio di implementazione JS Per prima cosa viene controllato l’accesso dell’utente. Nel caso in cui l’utente non sia ancora loggato, il Bot, spedisce un messaggio di login con un InlineButton collegato a url per login su CAS. Dopo aver effettuato il login, l’utente riceve un messaggio di benvenuto con la presentazione del menu dei possibili comandi (presenti nella tastiera in basso).

Esempio di implementazione JS (2) Esistono diversi comandi: /ciao: comando che porta all’invio di un semplice messaggio con saluto /cena: comando che causa l’invio di un messaggio con InlineButton con callback associata /logout: comando per logout

Esempio di implementazione JS (3) È presente un messaggio default Ogni InlineButton del messaggio di risposta al comando “/cena” è associato a una callback. Una callback è come un comando scaturito automaticamente dalla risposta a un altro messaggio. Entrambe le callback di questo Bot inviano un semplice messaggio di risposta

Esempio di implementazione JS (4) Funzione di menù citata nella parte riguardante il messaggio di benvenuto, che setta la tastiera per la scelta dei comandi Il Bot descritto fa uso di Long Polling ed è implementato su piattaforma Telegram Non esiste ora come ora un esempio concreto da poter mostrare in sede di discussione, in quanto il prodotto Qbot è attualmente oggetto di installazioni su server di aziende clienti

Grazie a tutti per l’attenzione!!