Vai al contenuto principale
Se utilizzi ABBYY Vantage all’interno del tuo sistema, probabilmente vorrai anche sfruttare le funzionalità di revisione manuale. Questa sezione ti guiderà nell’integrazione della revisione manuale. Dopo aver inviato alcuni documenti all’elaborazione tramite la Vantage API, monitora lo stato della transaction come descritto in Come elaborare i documenti utilizzando la Vantage API. Se un documento deve essere sottoposto a revisione da parte di un operatore, la risposta sullo stato della transaction conterrà la chiave manualReviewLink con un collegamento sicuro, che consentirà al revisore di accedere solo ai dati di quella specifica transaction. Incorpora un iframe con il contenuto di quel collegamento nella pagina web del tuo servizio:
<iframe src="link-revisione-manuale"></iframe>
Nota che il link scadrà 168 ore dopo la sua creazione. Se devi proseguire la revisione, richiedi un nuovo link inviando una richiesta GET alla risorsa transactions come in precedenza.

Aspetto dell’iframe

Potresti voler semplificare l’aspetto del servizio rimuovendo il logo di Vantage o nascondendo alcuni riquadri nell’interfaccia del client di revisione manuale. Per rimuovere il logo di Vantage, aggiungi al link un parametro di query displayMode con valore iframe, come segue:
<iframe src="manual-review-link&displayMode=iframe"></iframe>
Utilizzare le seguenti opzioni per configurare l’interfaccia client di revisione manuale:
ChiaveDescrizione
features
batchEditorImpostare su false per nascondere il riquadro delle miniature delle pagine.
batchEditor.toolbarImpostare su false per mostrare il riquadro delle miniature delle pagine ma nascondere la barra degli strumenti.
batchEditor.autoCollapseImpostare su true per mostrare il riquadro delle miniature delle pagine ma comprimerlo all’apertura dell’interfaccia client di revisione manuale.
docEditorImpostare su false per nascondere il riquadro dell’immagine della pagina.
docEditor.toolbarImpostare su false per mostrare il riquadro dell’immagine della pagina ma nascondere la relativa barra degli strumenti.
formEditorImpostare su false per nascondere il riquadro dell’elenco dei field estratti.
rulesReportImpostare su false per nascondere il riquadro dell’elenco degli errori delle regole.
sendToStageAvailableImpostare su true per mostrare il pulsante Send to Stage….
Queste opzioni sono organizzate in un unico oggetto JSON. Il seguente esempio di codice visualizza un iframe con il riquadro degli errori delle regole nascosto e il riquadro delle miniature delle pagine compresso:
"features": {
   "batchEditor": {
      "autocollapse": true,
   },
   "rulesReport": false,
}
Aggiungi un parametro di query settings contenente questo oggetto JSON al tuo link per la revisione manuale:
<iframe src="manual-review-link&settings=%7B%22features%22%3A%7B%22batchEditor%22%3A%7B%22autoCollapse%22%3Atrue%7D%2C%22rulesReport%22%3Afalse%7D%7D"></iframe>

Eventi dell’iframe

L’oggetto iframe invierà messaggi alla finestra padre per informarti delle azioni del revisore nell’interfaccia del client di revisione manuale, così da consentirti di passare alla fase successiva al momento opportuno. Gli eventi vengono inviati con il Parameter targetOrigin=parent. Di seguito è riportato un elenco di eventi da monitorare:
  • ManualReviewWasPaused. Inviato quando il revisore fa clic sul pulsante Reject.
  • ManualReviewWasCompleted. Inviato quando il revisore fa clic sul pulsante Complete.
  • ManualReviewWithdrawn. Inviato quando il revisore è inattivo per un certo periodo di tempo e l’attività del client di revisione manuale viene ritirata nella coda generale delle attività.
Il codice di esempio seguente mostra come visualizzare un iframe per la revisione manuale e nasconderlo non appena viene attivato uno qualsiasi degli eventi sopra indicati. Esempio di codice per l’ascolto degli eventi dell’iframe:
<html style="min-height: 100%; height: 100%;">
<head>
  <script>
    var manualReviewLink; // il link dalla risposta dello stato della transaction
    window.addEventListener("DOMContentLoaded", init, false);
    function init() {
      var iframe = document.createElement("iframe");
      iframe.src = getUrl();
      iframe.style.width = "100%";
      iframe.style.height = "95%";
      try {
        document.getElementById("main").removeChild(document.querySelector("iframe"));
      } catch (e) { }
      document.getElementById("main").appendChild(iframe);
      window.addEventListener("message", receiveMessage, false);
    }
    function getUrl() {
      return manualReviewLink + "&displayMode=iframe";
    }
    function receiveMessage(event) {
      console.log(event.data);
      if (event.data.target === "parent") {
        if (event.data.eventName === "ManualReviewWithdrawn" || 
            event.data.eventName === "ManualReviewWasPaused" || 
            event.data.eventName === "ManualReviewWasCompleted" ) {
          document.getElementById("iframe").style.display = "none";
        }
      }
    }
  </script>
</head>
<body
  style="background-color: #999999; min-height: 100%; height: 100%; position: relative; margin: 0; padding: 0; background: linear-gradient(to bottom right, #4380bc, #5ba484);">
  <div id="main"
    style="height: 100%; position: relative; padding:20px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box;">
  </div>
</body>
</html>