Contesto del Bot - RetiSpA/botler GitHub Wiki
Contesto del Bot
Questa parte è stata l'ultima funzionalità aggiunta a Botler, per renderlo un bot più flessibile e 'intelligente' nella conversazione, con l'aiuto dei due tipi di Scenario, siamo in grado di capire le azioni da svolgere ogni turno.
Quello che fa e salvare e leggere un file JSON di questo tipo, serializzato dalla classe BotStateContext, il quale contiene tutte le informazioni utili per capire le azioni da compiere ogni turno.
I file JSON sono univocamente identificati dal loro Conversation_ID, poichè il contesto è su una singola conversazione.
Ecco un esempio di 'stato' del bot salvato nel CosmoDB:
{
"_id" : ObjectId("5d03a9fff9932e312ca41a8f"),
"scenarioID" : "Outlook",
"TopIntent" : {
"Name" : "CreaAppuntamentoCalendar",
"Score" : 0.9753231,
"NeedEntities" : true,
"EntityLimit" : 2147483647,
"EntityLowerBound" : 2,
"DialogID" : "CreaAppuntamentoCalendar",
"EntitiesCollected" : [
{
"Type" : "datetime",
"Text" : "02/07/2019",
"StartIndex" : 0,
"EndIndex" : 9
},
{
"Type" : "mese",
"Text" : "luglio",
"StartIndex" : 3,
"EndIndex" : 9
},
{
"Type" : "datetime",
"Text" : "02/07/2019",
"StartIndex" : 0,
"EndIndex" : 9
}
],
"EntityNeedResponse" : "Per creare un appuntamento, inserisci: \nUna Location, una Data, orario di inizo e fine, e dei partecipanti (email partecipanti)"
},
"Conversation_ID" : "8e3cb3ec-104c-4601-895d-68a1029d57b7",
"Turn" : 8,
"UserQuery" : "02 luglio",
"User" : null
}
Come si può vedere questo è un turno in una conversazione, dove l'utente sta scegliendo una data per creare un appuntamento sul suo Outlook Calendar. Ovviamente questo stato viene da un contesto di conversazione già iniziato, dove l'utente avrà chiesto di creare un appuntamento, e il bot non avrà riconosciuto nessuna entità e quindi chiederà informazioni all'utente per completare una zione, sembra evidente che scrivere '02 luglio' senza alcun contesto, presa una conversazione umano-umano, non può portare a questo risultato, cioè a creare un appuntamento; ed è proprio questa sensazione che Botler vuole dare all'utente, una sensazione più vicino all'uomo, ma nei suoi limiti.