

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Aggiunta di automazione con Liquid
<a name="sms-custom-templates-step2-automate"></a>

Il sistema di modello personalizzato utilizza [Liquid](https://shopify.github.io/liquid/) per l'automazione. Si tratta di un linguaggio di markup inline open-source. In Liquid, il testo compreso tra parentesi graffe singole e simboli di percentuale è un'istruzione o un *tag* che svolge un’operazione come un flusso di controllo o un'iterazione. Il testo racchiuso tra parentesi graffe doppie è una variabile o *oggetto* che genera il suo valore.

Liquid è comunemente utilizzato per analizzare i dati provenienti dal file manifesto di input ed estrarre variabili pertinenti per creare l’attività. Ground Truth genera automaticamente le attività, a meno che non venga specificata una funzione Lambda di pre-annotazione. L’oggetto `taskInput` restituito da Ground Truth o [Lambda di pre-annotazione](sms-custom-templates-step3-lambda-requirements.md#sms-custom-templates-step3-prelambda) è l’oggetto `task.input` nei tuoi modelli.

Le proprietà nel manifesto di input vengono passate nel modello come `event.dataObject`.

**Example oggetto di dati del manifesto**  

```
{
  "source": "This is a sample text for classification",
  "labels": [ "angry" , "sad" , "happy" , "inconclusive" ],
  "header": "What emotion is the speaker feeling?"
}
```

**Example HTML di esempio con variabili**  

```
<crowd-classifier 
  name='tweetFeeling'
  categories='{{ task.input.labels | to_json }}'
  header='{{ task.input.header }}' >
<classification-target>
  {{ task.input.source }}
</classification-target>
```

Nota l’aggiunta di ` | to_json` alla proprietà `labels` di cui sopra. Si tratta di un filtro che trasforma l’array del manifesto di input in una rappresentazione JSON dell’array. Nella sezione successiva sono descritti i filtri variabili.

L'elenco seguente include due tipi di tag Liquid che potresti trovare utili per automatizzare l'elaborazione dei dati di input dei modelli. Se selezioni uno dei seguenti tipi di tag, verrai reindirizzato alla documentazione di Liquid.
+ [Flusso di controllo](https://shopify.github.io/liquid/tags/control-flow/): include operatori logici di programmazione come `if/else`, `unless` e `case/when`.
+ [Iterazione](https://shopify.github.io/liquid/tags/iteration/): consente di eseguire ripetutamente blocchi di codice utilizzando istruzioni come i cicli for. 

  Per un esempio di modello HTML che utilizza elementi Liquid per creare un ciclo for, consulta [translation-review-and-correction.liquid.html](https://github.com/aws-samples/amazon-sagemaker-ground-truth-task-uis/blob/8ae02533ea5a91087561b1daecd0bc22a37ca393/text/translation-review-and-correction.liquid.html) in. GitHub 

Per ulteriori informazioni e la documentazione, visita la [home page Liquid](https://shopify.github.io/liquid/).

## Filtri variabili
<a name="sms-custom-templates-step2-automate-filters"></a>

Oltre alle operazioni e ai [filtri Liquid](https://shopify.github.io/liquid/filters/abs/) standard, Ground Truth offre alcuni filtri aggiuntivi. I filtri vengono applicati posizionando un carattere barra verticale (`|`) dopo il nome di variabile e quindi specificando un nome filtro. I filtri possono essere concatenati nel formato seguente:

**Example**  

```
{{ <content> | <filter> | <filter> }}
```

### Escape automatico ed escape esplicito
<a name="sms-custom-templates-step2-automate-filters-autoescape"></a>

Per impostazione predefinita, gli input verranno preceduti da un carattere di escape HTML per evitare confusione tra testo variabile e HTML. Puoi aggiungere in maniera esplicita il filtro `escape` per rendere più evidente agli utenti che leggono il codice sorgente il modello su cui si esegue l'escape.

### escape\$1once
<a name="sms-custom-templates-step2-automate-escapeonce"></a>

`escape_once` garantisce che se hai già eseguito l'escape del codice, questo non viene nuovamente sottoposto a escape. Ad esempio, &amp; non diventa &amp;amp;.

### skip\$1autoescape
<a name="sms-custom-templates-step2-automate-skipautoescape"></a>

`skip_autoescape` è utile quando il contenuto deve essere utilizzato come HTML. Ad esempio, le istruzioni complete per un riquadro di delimitazione potrebbero contenere qualche paragrafo di testo e alcune immagini.

**Usa `skip_autoescape` con parsimonia**  
La best practice nei modelli è evitare di passare codice funzionale o markup con `skip_autoescape` a meno che non sei assolutamente certo di avere il controllo rigoroso di ciò che viene passato. Se stai passando input utente, potresti esporre i worker a un attacco Cross Site Scripting.

### to\$1json
<a name="sms-custom-templates-step2-automate-tojson"></a>

`to_json`codificherà ciò che gli invii in JSON (Object Notation). JavaScript Se fornisci un oggetto, verrà serializzato.

### grant\$1read\$1access
<a name="sms-custom-templates-step2-automate-grantreadaccess"></a>

`grant_read_access` accetta un URI S3 e lo codifica in un URL HTTPS con un token di accesso di breve durata per tale risorsa. Questo consente di mostrare ai worker oggetti di foto, audio o video archiviati in bucket S3 che non sono altrimenti accessibili pubblicamente.

### s3\$1presign
<a name="sms-custom-templates-step2-automate-s3"></a>

 Il filtro `s3_presign` funziona allo stesso modo del filtro `grant_read_access`. `s3_presign` accetta un URI Amazon S3 e lo codifica in un URL HTTPS con un token di accesso di breve durata per tale risorsa. Questo consente di visualizzare oggetti foto, audio o video archiviati in bucket S3 che non sono altrimenti accessibili pubblicamente dai worker.

**Example di filtri di variabili**  
Input  

```
auto-escape: {{ "Have you read 'James & the Giant Peach'?" }}
explicit escape: {{ "Have you read 'James & the Giant Peach'?" | escape }}
explicit escape_once: {{ "Have you read 'James &amp; the Giant Peach'?" | escape_once }}
skip_autoescape: {{ "Have you read 'James & the Giant Peach'?" | skip_autoescape }}
to_json: {{ jsObject | to_json }}                
grant_read_access: {{ "s3://amzn-s3-demo-bucket/myphoto.png" | grant_read_access }}
s3_presign: {{ "s3://amzn-s3-demo-bucket/myphoto.png" | s3_presign }}
```

**Example**  
Output  

```
auto-escape: Have you read &#39;James &amp; the Giant Peach&#39;?
explicit escape: Have you read &#39;James &amp; the Giant Peach&#39;?
explicit escape_once: Have you read &#39;James &amp; the Giant Peach&#39;?
skip_autoescape: Have you read 'James & the Giant Peach'?
to_json: { "point_number": 8, "coords": [ 59, 76 ] }
grant_read_access: https://s3.amazonaws.com/amzn-s3-demo-bucket/myphoto.png?<access token and other params>
s3_presign: https://s3.amazonaws.com/amzn-s3-demo-bucket/myphoto.png?<access token and other params>
```

**Example di un modello di classificazione automatico.**  
Per automatizzare l'esempio di classificazione del testo semplice, sostituisci il testo del tweet con una variabile.  
Il modello di classificazione del testo è riportato di seguito con automazione aggiunta. changes/additions Sono evidenziati in grassetto.  

```
<script src="https://assets.crowd.aws/crowd-html-elements.js"></script>
<crowd-form>
  <crowd-classifier 
    name="tweetFeeling"
    categories="['positive', 'negative', 'neutral', 'cannot determine']"
    header="Which term best describes this tweet?" 
  >
    <classification-target>
       {{ task.input.source }}
    </classification-target>

    <full-instructions header="Analyzing a sentiment">
      Try to determine the feeling the author 
      of the tweet is trying to express. 
      If none seem to match, choose "other."
    </full-instructions>

    <short-instructions>
      Pick the term best describing the sentiment 
      of the tweet. 
    </short-instructions>

  </crowd-classifier>
</crowd-form>
```
Il testo del tweet che nell’esempio precedente è stato ora sostituito con un oggetto. L’oggetto `entry.taskInput` utilizza `source` (o un altro nome specificato nella funzione Lambda di pre-annotazione) come nome di proprietà per il testo ed è inserito direttamente nell’HTML essendo racchiuso tra parentesi graffe doppie.