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 history

    • Integra eventuali nuovi metaData

    • Integra 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