

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à.

# Trigger Lambda di messaggi personalizzati
<a name="user-pool-lambda-custom-message"></a>

Se disponi di uno standard esterno per i messaggi di posta elettronica e SMS che desideri inviare agli utenti o se desideri applicare la tua logica in fase di esecuzione alla formattazione dei messaggi utente, aggiungi un trigger di messaggio personalizzato al tuo pool di utenti. Il messaggio personalizzato Lambda riceve il contenuto di tutti i messaggi e-mail e SMS prima che il pool di utenti li invii. La funzione Lambda ha quindi l'opportunità di modificare il contenuto e l'oggetto del messaggio.

Amazon Cognito richiama questo trigger prima di inviare un messaggio di verifica via e-mail o telefono o un codice di autenticazione a più fattori (MFA). È possibile personalizzare il messaggio in modo dinamico con il trigger di messaggio personalizzato.

La richiesta include `codeParameter`. Questa è una stringa che agisce da segnaposto per il codice che Amazon Cognito fornisce all'utente. Inserisci la stringa `codeParameter` nel corpo del messaggio, nella posizione in cui desideri che appaia il codice di verifica. Alla ricezione di questa risposta, Amazon Cognito sostituisce la stringa `codeParameter` con il codice di verifica effettivo. 

**Nota**  
L'evento di input per una funzione Lambda per messaggi personalizzati con la fonte del `CustomMessage_AdminCreateUser` trigger include un nome utente e un codice di verifica. Poiché un utente creato dall'amministratore deve ricevere sia il nome utente che il codice, la risposta della funzione deve includere variabili segnaposto per il nome utente e il codice. I segnaposto per il messaggio sono i valori di e. `request.usernameParameter` `request.codeParameter` Questi valori sono in genere `{username}` e`{####}`, come procedura consigliata, fanno riferimento ai valori di input anziché codificare i nomi delle variabili.

**Topics**
+ [Origini dei trigger Lambda di messaggi personalizzati](#cognito-user-pools-lambda-trigger-syntax-custom-message-trigger-source)
+ [Parametri del trigger Lambda di messaggi personalizzati](#cognito-user-pools-lambda-trigger-syntax-custom-message)
+ [Messaggio personalizzato per un esempio di registrazione](#aws-lambda-triggers-custom-message-example)
+ [Messaggio personalizzato per un esempio di amministratore che crea un utente](#aws-lambda-triggers-custom-message-admin-example)

## Origini dei trigger Lambda di messaggi personalizzati
<a name="cognito-user-pools-lambda-trigger-syntax-custom-message-trigger-source"></a>


| Valore triggerSource | Event | 
| --- | --- | 
| CustomMessage\$1SignUp | Messaggio personalizzato: invio del codice di conferma post registrazione. | 
| CustomMessage\$1AdminCreateUser | Messaggio personalizzato: invio della password temporanea a un nuovo utente. | 
| CustomMessage\$1ResendCode | Messaggio personalizzato: nuovo invio del codice di conferma a un utente esistente. | 
| CustomMessage\$1ForgotPassword | Messaggio personalizzato: invio del codice di conferma per una richiesta di password dimenticata. | 
| CustomMessage\$1UpdateUserAttribute | Messaggio personalizzato: quando l'e-mail o il numero di telefono di un utente viene modificato, questo trigger invia automaticamente un codice di verifica all'utente. Non può essere utilizzato per altri attributi. | 
| CustomMessage\$1VerifyUserAttribute | Messaggio personalizzato: questo trigger invia un codice di verifica all'utente, quando lo richiede manualmente per una nuova e-mail o numero di telefono. | 
| CustomMessage\$1Authentication | Messaggio personalizzato: invio del codice MFA durante l'autenticazione. | 

## Parametri del trigger Lambda di messaggi personalizzati
<a name="cognito-user-pools-lambda-trigger-syntax-custom-message"></a>

La richiesta passata da Amazon Cognito a questa funzione Lambda è una combinazione dei parametri seguenti e dei [parametri comuni](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-working-with-lambda-triggers.html#cognito-user-pools-lambda-trigger-syntax-shared) aggiunti da Amazon Cognito a tutte le richieste.

------
#### [ JSON ]

```
{
    "request": {
        "userAttributes": {
            "string": "string",
            . . .
        }
        "codeParameter": "####",
        "usernameParameter": "string",
        "clientMetadata": {
            "string": "string",
            . . .
        }
    },
    "response": {
        "smsMessage": "string",
        "emailMessage": "string",
        "emailSubject": "string"
    }
}
```

------

### Parametri di richiesta di messaggi personalizzati
<a name="cognito-user-pools-lambda-trigger-syntax-custom-message-request"></a>

**userAttributes**  
Una o più coppie nome-valore che rappresentano gli attributi utente.

**codeParameter**  
Una stringa per te, da utilizzare come segnaposto per il codice di verifica nel messaggio personalizzato.

**Parametro username**  
Il nome utente. Amazon Cognito include questo parametro nelle richieste generate da utenti creati dall'amministratore.

**clientMetadata**  
Una o più coppie chiave-valore che è possibile fornire come input personalizzato alla funzione Lambda specificata per il trigger di messaggi personalizzato. La richiesta che richiama una funzione di messaggio personalizzata non include i dati passati nel ClientMetadata parametro [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)e le operazioni [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)API. Per passare questi dati alla funzione Lambda, puoi utilizzare il ClientMetadata parametro nelle seguenti azioni API:  
+  [AdminResetUserPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminResetUserPassword.html) 
+  [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html) 
+  [AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html)
+  [ForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html)
+  [GetUserAttributeVerificationCode](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUserAttributeVerificationCode.html)
+  [ResendConfirmationCode](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ResendConfirmationCode.html)
+  [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)
+  [UpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserAttributes.html)

### Parametri di risposta di messaggi personalizzati
<a name="cognito-user-pools-lambda-trigger-syntax-custom-message-response"></a>

Nella risposta, specifica il testo personalizzato da usare nei messaggi destinati agli utenti. Per i vincoli di stringa che Amazon Cognito applica a questi parametri, consulta. [MessageTemplateType](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_MessageTemplateType.html)

**smsMessage**  
L'SMS personalizzato da inviare ai tuoi utenti. Deve includere il valore `codeParameter` che hai ricevuto nella richiesta.

**emailMessage**  
Il messaggio e-mail personalizzato da inviare ai tuoi utenti. È possibile utilizzare la formattazione HTML nel parametro `emailMessage`. Deve includere il valore `codeParameter` ricevuto nella richiesta come variabile `{####}`. Amazon Cognito può utilizzare il parametro `emailMessage` solo se l'attributo `EmailSendingAccount` del bacino d'utenza è `DEVELOPER`. Se l'attributo `EmailSendingAccount` del bacino d'utenza non è `DEVELOPER` e viene restituito un parametro `emailMessage`, Amazon Cognito genera un codice di errore 400 `com.amazonaws.cognito.identity.idp.model.InvalidLambdaResponseException`. Quando scegli di utilizzare Amazon Simple Email Service (Amazon SES) per inviare messaggi e-mail, l'attributo `EmailSendingAccount` di un bacino d'utenza è `DEVELOPER`. In caso contrario, il valore è `COGNITO_DEFAULT`.

**emailSubject**  
L'oggetto per il messaggio personalizzato. Puoi utilizzare il `emailSubject` parametro solo se l' EmailSendingAccountattributo del pool di utenti è. `DEVELOPER` Se l'attributo `EmailSendingAccount` del bacino d'utenza non è `DEVELOPER` e viene restituito un parametro `emailSubject`, Amazon Cognito genera un codice di errore 400 `com.amazonaws.cognito.identity.idp.model.InvalidLambdaResponseException`. Quando scegli di utilizzare Amazon Simple Email Service (Amazon SES) per inviare messaggi e-mail, l'attributo `EmailSendingAccount` di un bacino d'utenza è `DEVELOPER`. In caso contrario, il valore è `COGNITO_DEFAULT`

## Messaggio personalizzato per un esempio di registrazione
<a name="aws-lambda-triggers-custom-message-example"></a>

Questa funzione Lambda di esempio permette di personalizzare un'e-mail o un SMS quando il servizio richiede che un'app invii un codice di verifica all'utente.

Amazon Cognito può richiamare un trigger Lambda durante più eventi: dopo la registrazione, per rinviare un codice di verifica, nel caso di una password dimenticata o per verificare un attributo utente. La risposta include sia SMS sia e-mail. Il messaggio deve includere il parametro di codice `"####"`. Questo parametro è il segnaposto per il codice di verifica che l'utente riceve.

La lunghezza massima per un messaggio e-mail è di 20.000 caratteri UTF-8. Questa lunghezza include il codice di verifica. In questi messaggi e-mail puoi utilizzare i tag HTML.

La lunghezza massima di un SMS è di 140 caratteri UTF-8. Questa lunghezza include il codice di verifica.

------
#### [ Node.js ]

```
const handler = async (event) => {
  if (event.triggerSource === "CustomMessage_SignUp") {
    const message = `Thank you for signing up. Your confirmation code is ${event.request.codeParameter}.`;
    event.response.smsMessage = message;
    event.response.emailMessage = message;
    event.response.emailSubject = "Welcome to the service.";
  }
  return event;
};

export { handler };
```

------

Amazon Cognito trasferisce informazioni sugli eventi alla funzione Lambda. La funzione quindi restituisce a Amazon Cognito lo stesso oggetto evento con eventuali modifiche nella risposta. Nella console Lambda puoi configurare un evento di test con i dati pertinenti al trigger Lambda. Di seguito è riportato un evento di test per questo esempio di codice:

------
#### [ JSON ]

```
{
	"version": "1",
	"region": "us-west-2",
	"userPoolId": "us-west-2_EXAMPLE",
	"userName": "test-user",
	"callerContext": {
		"awsSdkVersion": "aws-sdk-unknown-unknown",
		"clientId": "1example23456789"
	},
	"triggerSource": "CustomMessage_SignUp",
	"request": {
		"userAttributes": {
			"sub": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
			"cognito:user_status": "CONFIRMED",
			"email_verified": "true",
			"phone_number_verified": "true",
			"phone_number": "+12065551212",
			"email": "test-user@example.com"
		},
		"codeParameter": "{####}",
		"linkParameter": "{##Click Here##}",
		"usernameParameter": "None"
	},
	"response": {
		"smsMessage": "None",
		"emailMessage": "None",
		"emailSubject": "None"
	}
}
```

------

## Messaggio personalizzato per un esempio di amministratore che crea un utente
<a name="aws-lambda-triggers-custom-message-admin-example"></a>

La richiesta che Amazon Cognito ha inviato a questo esempio di messaggio personalizzato (funzione Lambda) ha un `triggerSource` valore di, un nome utente `CustomMessage_AdminCreateUser` e una password temporanea. La funzione viene compilata `${event.request.codeParameter}` a partire dalla password temporanea nella richiesta e `${event.request.usernameParameter}` dal nome utente nella richiesta.

I messaggi personalizzati devono inserire i valori di `codeParameter` e `usernameParameter` dentro `smsMessage` e `emailMessage` nell'oggetto di risposta. In questo esempio, la funzione scrive lo stesso messaggio nei campi di risposta `event.response.smsMessage` e`event.response.emailMessage`.

La lunghezza massima di un messaggio e-mail è pari a 20.000 caratteri UTF-8. Questa lunghezza include il codice di verifica. Puoi usare i tag HTML in queste e-mail. La lunghezza massima di un SMS è di 140 caratteri UTF-8. Questa lunghezza include il codice di verifica.

La risposta include sia SMS sia e-mail. 

------
#### [ Node.js ]

```
const handler = async (event) => {
  if (event.triggerSource === "CustomMessage_AdminCreateUser") {
    const message = `Welcome to the service. Your user name is ${event.request.usernameParameter}. Your temporary password is ${event.request.codeParameter}`;
    event.response.smsMessage = message;
    event.response.emailMessage = message;
    event.response.emailSubject = "Welcome to the service";
  }
  return event;
};

export { handler };
```

------

Amazon Cognito trasferisce informazioni sugli eventi alla funzione Lambda. La funzione quindi restituisce a Amazon Cognito lo stesso oggetto evento con eventuali modifiche nella risposta. Nella console Lambda puoi configurare un evento di test con i dati pertinenti al trigger Lambda. Di seguito è riportato un evento di test per questo esempio di codice:

------
#### [ JSON ]

```
{
  "version": 1,
  "triggerSource": "CustomMessage_AdminCreateUser",
  "region": "<region>",
  "userPoolId": "<userPoolId>",
  "userName": "<userName>",
  "callerContext": {
      "awsSdk": "<calling aws sdk with version>",
      "clientId": "<apps client id>",
      ...
  },
  "request": {
      "userAttributes": {
          "phone_number_verified": false,
          "email_verified": true,
           ...
      },
      "codeParameter": "####",
      "usernameParameter": "username"
  },
  "response": {
      "smsMessage": "<custom message to be sent in the message with code parameter and username parameter>"
      "emailMessage": "<custom message to be sent in the message with code parameter and username parameter>"
      "emailSubject": "<custom email subject>"
  }
}
```

------