Session
Una Session è il raggruppamento delle interazioni di un utente con il sistema.
Essa raggruppa tutte le domande, tutti gli intenti invocati e tutte le risposte fornite.
Il Channel Gateway si occupa di censire ciascuna Sessione, veicolando le interazioni di conseguenza. Il Gatemaster invece si occupa di tenerne aggiornate le informazioni.
{
sessionId: id che dipende dal canale,
user: {
id: UUIDv4,
mail:"string",
phone:"string",
fiscal_code:"string",
telegram_id:"string",
},
metaData: {}, // Opzionali
organization: "prova",
channelType: "mail" //Il tipo di canale
language: "it",
history: [
{
time: "", //Timestamp dell'interazione
question: "", //Presente per interazioni che provengono dall'esterno
response: "", //Presente per interazioni che provengono da Calybron
source: "", //(channelId|apiCore|intentSlug)
sourceType: "", //Il tipo di sorgente, può essere channel|apiCore|DIM
attachments: [], //Array contente gli attachments di sessione.
},
{...}
]
logicalSubject: [{
type: "string",
label: "string",
id: UUIDv4
}, {...}]
}Il gatemaster riceve sulla coda askChannel il seguente oggetto:
Il GateMaster, consumando la coda askChannel:
prova a recuperare informazioni di sessione a partire da
sessionInfo.sessionId. Se non trova riscontro nella sua memory, ne genera una nuova. Altrimenti, prende le informazioni della sessione già in memoria.integra la Session (nuova o esistente), compiendo le seguenti azioni:
Aggiunge il message come ultimo elemento di
historyIntegra eventuali nuovi
metaDataIntegra eventuali nuove informazioni a livello di
user
Il GateMaster si occuperà di aggiungere il sessionId ad ogni messaggio che pubblica nelle code di askIntent e askDIM in modo da attribuire correttamente le risposte alla sessione a cui appartengono, e poterle poi re-inviare al canale corretto.
Last updated
