View a markdown version of this page

Richiamo delle funzioni Lambda - Cliente Amazon Connect

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

Richiamo delle funzioni Lambda

Fase 1: creare una funzione Lambda

Durante l'esecuzione della campagna, le campagne in uscita richiameranno la tua funzione Lambda con un batch di profili e si aspettano una risposta contenente i risultati per ciascuno.

Richiedi Payload

Quando la funzione Lambda viene richiamata, riceverà un payload JSON con la seguente struttura:

Struttura del payload

{ "InvocationMetadata": { "CampaignContext": { "CampaignId": "string", "RunId": "string", "ActionId": "string", "CampaignName": "string" } }, "Items": { "CustomerProfiles": [ { "ProfileId": "string", "CustomerData": "string", "IdempotencyToken": "string" } ] } }

Descrizioni dei campi

InvocationMetadata
  • CampaignContext: contiene metadati sull'esecuzione della campagna

  • CampaignId: identificatore univoco per la campagna

  • RunId: identificatore univoco per questa specifica campagna

  • ActionId: L'identificatore dell'azione di flusso eseguita dalle campagne in uscita

  • CampaignName: Human-readable nome della campagna

Item
  • CustomerProfiles: serie di profili dei clienti da elaborare (raggruppati per garantire l'efficienza)

  • ProfileId: identificatore univoco per il profilo del cliente

  • CustomerData: stringa JSON del profilo cliente

  • IdempotencyToken: Token univoco per questa chiamata specifica per garantire un'elaborazione idempotente

Esempio di payload di richiesta

{ "InvocationMetadata": { "CampaignContext": { "CampaignId": "campaign-12345", "RunId": "run-67890", "ActionId": "activity-abc123", "CampaignName": "Welcome Campaign" } }, "Items": { "CustomerProfiles": [ { "ProfileId": "customer-001", "CustomerData": "{\"firstName\":\"John\",\"lastName\":\"Doe\",\"email\":\"john.doe@example.com\"}", "IdempotencyToken": "token-xyz789" }, { "ProfileId": "customer-002", "CustomerData": "{\"firstName\":\"Jane\",\"lastName\":\"Smith\",\"email\":\"jane.smith@example.com\"}", "IdempotencyToken": "token-abc456" } ] } }

Payload di risposta previsto

La funzione Lambda deve restituire una risposta JSON con la seguente struttura:

Struttura della risposta

{ "Items": { "CustomerProfiles": [ { "Id": "string", "ResultData": {} } ] } }

Descrizioni dei campi

Item
  • CustomerProfiles: Matrice di risultati corrispondenti a ciascun profilo cliente nella richiesta

  • Id: deve corrispondere ProfileId al risultato della richiesta

  • ResultData: oggetto JSON personalizzato contenente i risultati dell'elaborazione (opzionale)

Esempio di payload di risposta

{ "Items": { "CustomerProfiles": [ { "Id": "customer-001", "ResultData": { "recommendedProduct": "Premium Plan", "score": 85, "nextAction": "send_email" } }, { "Id": "customer-002", "ResultData": { "error": "Invalid customer data", "errorCode": "VALIDATION_ERROR" } } ] } }

Vincoli importanti

Limiti di dimensione del carico utile

  • Dimensione massima del payload di risposta: 32 KB per profilo cliente

  • Se si ResultData supera questo limite, la chiamata verrà contrassegnata come non valida

Requisiti di risposta

  • È necessario fornire una risposta per ogni ProfileId elemento incluso nella richiesta

  • Le risposte mancanti verranno trattate come errori

  • Il Id campo nella risposta deve corrispondere esattamente ProfileId a quello della richiesta

Gestione errori

  • Se la funzione Lambda genera un'eccezione, tutti i profili del batch verranno contrassegnati come non riusciti

  • Includi i dettagli degli errori ResultData per scopi di debug

Tipo di chiamata

  • Tipo di chiamata: (sincrona) REQUEST_RESPONSE

  • La funzione dovrebbe restituire i risultati entro 30 secondi anziché essere elaborati in modo asincrono. Le risposte che richiedono più di 30 secondi comporteranno il fallimento dell'azione

Passaggio 2: concedi a Outbound Campaigns l'accesso alla tua funzione Lambda

  1. Apri la console Amazon Connect all'indirizzo. https://console.aws.amazon.com/connect/

  2. Nella pagina delle istanze, scegli il nome dell'istanza nella colonna Alias istanza. Questo nome di istanza appare nell'URL che usi per accedere ad Amazon Connect.

  3. Nel riquadro di navigazione in Canali e comunicazioni, scegli Campagne in uscita.

  4. Nella sezione Configura azioni personalizzate, utilizza la casella a discesa delle funzioni Lambda per selezionare la funzione da aggiungere all'istanza delle campagne in uscita.

  5. Scegli Aggiungi funzione Lambda. Verifica che l'ARN della funzione sia aggiunto sotto la voce Lambda Functions (Funzioni Lambda).

Importante

La precedente procedura della console aggiunge automaticamente la policy basata sulle risorse richiesta alla funzione Lambda. Se utilizzi la AWS CLI o l'SDK, puoi chiamare l'API con la configurazione dell'integrazione. PutConnectInstanceIntegration lambda Questa API aggiunge automaticamente la policy basata sulle risorse richiesta alla tua funzione Lambda, proprio come fa la console.

Se devi aggiungere manualmente la policy basata sulle risorse (ad esempio, per le chiamate tra più account), aggiungi una dichiarazione della politica che conceda al principale del servizio l'autorizzazione a richiamare la tua funzione. connect-campaigns.amazonaws.com Facoltativamente, puoi aggiungere un Condition elemento con AWS:SourceAccount e limitare l'accesso al tuo account e AWS:SourceArn all'istanza Connect Customer. Ti consigliamo di includere entrambe le condizioni. L'esempio seguente mostra la dichiarazione politica richiesta.

{ "Statement": [ { "Effect": "Allow", "Principal": { "Service": "connect-campaigns.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:region:account-id:function:function-name", "Condition": { "StringEquals": { "AWS:SourceAccount": "account-id" }, "ArnLike": { "AWS:SourceArn": "arn:aws:connect:region:account-id:instance/instance-id" } } } ] }

Per ulteriori informazioni sulle politiche basate sulle risorse, vedi Utilizzo delle politiche basate sulle risorse per Lambda nella Lambda Developer Guide.

Fase 3: Richiamare una Lambda da una campagna

  1. Apri o crea un flusso di Journey.

  2. Aggiungi un blocco di azioni personalizzato (nel gruppo Integrate) alla griglia. Collega i rami da e al blocco.

  3. Scegli il titolo del blocco di azioni personalizzato per aprire la relativa pagina delle proprietà.

  4. In Function ARN, scegli dall'elenco delle funzioni che hai aggiunto all'istanza delle tue campagne in uscita.

Fase 4: Consuma la risposta della funzione Lambda

Accesso diretto alle variabili

Per accedere a queste variabili direttamente in un blocco di flusso, aggiungi il blocco dopo il blocco di azioni personalizzato, quindi fai riferimento agli attributi come mostrato nell'esempio seguente:

RecommendedProduct - $.LambdaInvocation.ResultData.recommendedProduct Score - $.LambdaInvocation.ResultData.score

Assicurati che il nome specificato per l'attributo source corrisponda al nome della chiave ResultData restituita da Lambda.