本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
調用 Lambda 函數
步驟 1:建立 Lambda 函式
在行銷活動執行期間,對外行銷活動會使用一批描述檔調用您的 Lambda 函數,並預期回應包含每個描述檔的結果。
請求承載
叫用 Lambda 函數時,它會收到具有下列結構的 JSON 承載:
承載結構
{ "InvocationMetadata": { "CampaignContext": { "CampaignId": "string", "RunId": "string", "ActionId": "string", "CampaignName": "string" } }, "Items": { "CustomerProfiles": [ { "ProfileId": "string", "CustomerData": "string", "IdempotencyToken": "string" } ] } }
欄位描述
InvocationMetadata
-
CampaignContext:包含行銷活動執行的相關中繼資料
-
CampaignId:行銷活動的唯一識別符
-
RunId:此特定行銷活動執行的唯一識別符
-
ActionId:對外行銷活動執行的流程動作識別符
-
CampaignName:行銷活動的人類可讀取名稱
項目
-
CustomerProfiles:要處理的客戶設定檔陣列 (為了提高效率而批次處理)
-
ProfileId:客戶設定檔的唯一識別符
-
CustomerData:客戶設定檔的 JSON 字串
-
IdempotencyToken:此特定調用的唯一權杖,以確保等冪處理
請求承載範例
{ "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" } ] } }
預期的回應承載
您的 Lambda 函數必須傳回具有下列結構的 JSON 回應:
回應結構
{ "Items": { "CustomerProfiles": [ { "Id": "string", "ResultData": {} } ] } }
欄位描述
項目
-
CustomerProfiles:對應至請求中每個客戶設定檔的結果陣列
-
ID:必須符合請求
ProfileId中的 -
ResultData:包含處理結果的自訂 JSON 物件 (選用)
回應承載範例
{ "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" } } ] } }
重要限制
承載大小限制
-
回應承載大小上限:每個客戶設定檔 32 KB
-
如果您的
ResultData超過此限制,則調用將標記為無效
回應要求
-
您必須為請求中
ProfileId包含的每個 提供回應 -
缺少的回應會被視為錯誤
-
回應中的
Id欄位必須與請求ProfileId中的 完全相符
錯誤處理
-
如果您的 Lambda 函數擲回例外狀況,批次中的所有設定檔都會標示為失敗
-
ResultData基於偵錯目的,在 中包含錯誤詳細資訊
調用類型
-
調用類型:
REQUEST_RESPONSE(同步) -
您的函數應該會在 30 秒內傳回結果,而不是以非同步方式處理。超過 30 秒的回應會導致動作失敗
步驟 2:授予傳出行銷活動存取 Lambda 函數的權限
-
在 https://console.aws.amazon.com/connect/
開啟 Amazon Connect 主控台。 -
在執行個體頁面的執行個體別名資料欄中選擇您的執行個體名稱。此執行個體名稱會出現在您用來存取 Amazon Connect 的 URL 中。
-
在頻道和通訊下方的導覽窗格中,選擇外撥行銷活動。
-
在設定自訂動作區段下,使用 Lambda 函數下拉式方塊選取要新增至對外行銷活動執行個體的函數。
-
選擇新增 Lambda 函數。確認函數的 ARN 已新增至 Lambda 函數。
重要
上述主控台程序會自動將所需的資源型政策新增至 Lambda 函數。如果您使用 AWS CLI 或 SDK,您可以使用lambda整合組態呼叫 PutConnectInstanceIntegration API。此 API 會自動將必要的資源型政策新增至您的 Lambda 函數,就像主控台一樣。
如果您需要手動新增資源型政策 (例如,針對跨帳戶調用),請新增政策陳述式,授予connect-campaigns.amazonaws.com服務主體調用函數的許可。您可以選擇性地使用 AWS:SourceAccount和 新增Condition元素AWS:SourceArn,以限制對 帳戶和 Connect Customer 執行個體的存取。我們建議同時包含這兩個條件。下列範例顯示必要的政策陳述式。
{ "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" } } } ] }
如需資源型政策的詳細資訊,請參閱《Lambda 開發人員指南》中的為 Lambda 使用資源型政策。
步驟 3:從行銷活動叫用 Lambda
-
開啟或建立旅程流程。
-
將自訂動作區塊 (在整合群組中) 新增至網格。將分支連接到區塊或從區塊連接。
-
選擇自訂動作區塊的標題,以開啟其屬性頁面。
-
在函數 ARN 下,從您已新增至對外行銷活動執行個體的函數清單中選擇。
步驟 4:使用 Lambda 函數回應
直接存取變數
若要直接在流程區塊中存取這些變數,請在自訂動作區塊之後新增 區塊,然後參考下列範例所示的屬性:
RecommendedProduct - $.LambdaInvocation.ResultData.recommendedProduct Score - $.LambdaInvocation.ResultData.score
請確定為來源屬性指定的名稱與從 Lambda ResultData傳回的 中的金鑰名稱相符。