화면 플로를 사용하여 동적 WhatsApp 플로에 입력 데이터 전달
화면 플로에서 고객 데이터를 수집하고 변수로 안전하게 전달할 수 있습니다. 이러한 변수는 Apex 기반 양식 메시징 구성 요소로 생성되는 동적 WhatsApp 플로의 입력으로 사용할 수 있습니다. 메시지에 맞춤형 콘텐츠를 추가하려면 Apex 기반 양식 메시지 구성 요소에서 이 입력 데이터에 대한 동적 참조를 추가합니다. 예를 들어, 수의사 약속을 예약하기 위해 화면 흐름은 동물 유형 및 문제와 같은 특정 세부 사항을 수집하고 이 정보를 동적으로 Apex 기반 양식 메시지 구성 요소로 전달합니다.
필수 Edition
| 지원되는 Edition을 확인하세요. | |
이 문서는 다음에 적용됩니다.
|
고급 WhatsApp 채널, 통합 WhatsApp |
이 문서는 다음에 적용되지 않습니다.
|
고급 앱 내 채팅, 고급 웹 채팅, 표준 및 고급 Facebook Messenger, 표준 및 고급 SMS, 고급 Apple Messages for Business, 고급 LINE, 자체 채널 가져오기 |
| 필요한 사용자 권한 | |
|---|---|
| Messaging 구성 요소 만들기: | 응용 프로그램 사용자 정의 AND 설정 및 구성 보기 OR 시스템 관리자 |
| Messaging에서 메시지 주고 받기: | Messaging 에이전트 |
Apex 기반 양식 메시징 구성 요소를 만들 때 기본적으로 다음의 표준 입력 매개 변수를 사용할 수 있습니다.
| 매개 변수 | 상세 설명 |
|---|---|
FormData |
플로에 전달된 입력 데이터를 저장합니다. 데이터는 키-값 쌍의 JSON 문자열로 저장됩니다. 이 데이터를 참조하려면 데이터 모델의 데이터 구조를 정의해야 합니다. 데이터 모델의 구조는 JSON의 구조와 일치해야 합니다. Apex 또는 화면 플로를 사용하여 이 데이터에 액세스할 수 있습니다. |
FormEntryScreenId |
Messaging 최종 사용자에게 표시되는 첫 번째 화면인 입력 화면의 ID를 저장합니다. |
구성 요소 세부 사항 섹션의 매개 변수 탭에서 이러한 기본 매개 변수를 찾을 수 있습니다.
해당 매개 변수 및 화면 플로를 사용하여 입력 데이터를 전달하는 방법을 이해할 수 있도록 예제를 살펴보겠습니다.
-
Apex 기반 양식 메시징 구성 요소의 플로 형식을 엽니다.
-
플로 형식에서 데이터 관리를 클릭하여 FormData 매개 변수에서 전달되는 모든 입력 데이터에 대한 데이터 모델을 정의합니다.
예를 들어 FormData 매개 변수는 이 입력 데이터를 저장합니다.
{“FirstName”:“Albert”,“LastName”:“Costa”,“isStudent”:“true”} -
데이터 모델에 필드를 추가하려면 필드 추가를 클릭하고 해당 속성을 구성합니다.
FormData 매개 변수의 모든 필드에 대해 이 단계를 수행합니다. 구조를 만들려면 필드에 대한 개체 데이터 유형을 선택하고 중첩된 필드를 추가합니다.

- 데이터 모델 정의를 완료한 후 저장합니다.
-
플로 형식에서 데이터 관리를 클릭하여 FormData 매개 변수에서 전달되는 모든 입력 데이터에 대한 데이터 모델을 정의합니다.
-
플로 속성에서 데이터 모델 필드의 값을 사용하려면 동적 참조를 추가합니다.
-
플로 형식을 열고 동적 참조를 사용할 속성을 찾습니다.
예를 들어, 본문 화면 요소의 텍스트 콘텐츠 필드에 대한 동적 참조를 추가할 수 있습니다.
- 유형 필드에서 동적 참조를 선택합니다.
-
참조 필드 선택에서 데이터 모델 필드를 선택합니다.

동적 참조는 화면에 정의된 데이터 모델 필드 또는 입력 필드에서 데이터를 가져올 수 있습니다.
-
캔버스에서 동적 참조를 미리 봅니다.

-
플로 형식을 열고 동적 참조를 사용할 속성을 찾습니다.
-
데이터를 Messaging 구성 요소에 전달하려면 화면 플로를 만듭니다.
화면 플로는 Messaging 세션에서 데이터를 수집하고 Apex 기반 양식 Messaging 구성 요소에서 사용할 수 있습니다. 작동 방식을 설명하려면 샘플 화면 플로를 만드십시오.
-
화면 플로 변수를 정의합니다.
변수 값 sessionIdMessaging 세션 레코드 ID를 저장합니다. initialDataApex 기반 양식의 입력 데이터를 저장합니다. 이 JSON 문자열의 필드는 데이터 모델에 추가한 필드 이름과 일치해야 합니다. initialScreenIdApex 기반 양식의 초기 화면 ID를 저장합니다. 이는 Messaging 최종 사용자에게 표시되는 첫 번째 화면입니다. meuNameMessaging 최종 사용자의 이름을 저장합니다. items이 모음 변수는 항목 목록을 저장합니다. -
화면 플로에서 다음 순서로 다음 작업을 추가합니다. Salesforce 개체에서 데이터를 검색하려면 레코드 가져오기 작업을 추가합니다. 화면 변수에 값을 할당하려면 할당 작업을 추가합니다.
작업 설명 getSession 레코드 가져오기 작업 세션 ID를 기반으로 Messaging 세션을 가져옵니다. 해당 Messaging 세션에서 관련 데이터를 가져올 수 있습니다. 이 경우 Id 및 MessagingEndUserId 필드 값을 검색하고 저장합니다. getMEU 레코드 가져오기 작업 MessagingEndUserId를 기반으로 Messaging 사용자 레코드를 가져옵니다. setMEUName 할당 작업 meuName변수를 Messaging 사용자 레코드의 Messaging 사용자 이름 필드 값으로 설정합니다.getDynamicFlowItem 레코드 가져오기 작업 DynamicFlowItem 개체에서 모든 DynamicFlowItem 레코드를 가져와서 ID, ItemId__c 및 itemTitle__c 필드를 items컬렉션 변수에 저장합니다.GenerateJson Apex 작업 items및meuName변수의 입력 데이터를 JSON 형식으로 변환합니다. JSON 개체의 필드는 플로의 데이터 모델에 있는 필드에 매핑됩니다. 이 작업은 Apex 클래스를 기반으로 합니다. 이 표 뒤에 있는 샘플 Apex 클래스를 참조하십시오.setData 할당 작업 InitialData변수를 생성된 JSON 작업의 값으로 설정합니다.이 Apex 클래스는 사용자 이름 및 Salesforce 레코드 목록과 같은 구조화된 입력 데이터를 단일 JSON 문자열로 변환합니다. 이 JSON 문자열은 Apex 기반 양식 메시징 구성 요소에 입력 데이터를 전달하는 데 사용됩니다.
public class FlowJSONBuilder { // 1. Input parameters public class FlowInput { @InvocableVariable(label='User Name' required=true) public String meuName; // CHANGE: Use List<SObject> instead of List<DynamicFlowItems__c> to avoid compile error @InvocableVariable(label='Flow Items' required=true) public List<SObject> items; } // 2. Output parameters public class FlowOutput { @InvocableVariable(label='Generated JSON') public String jsonString; } // 3. Internal Wrapper classes public class JSONStructure { public String greeting; public List<ItemWrapper> items; } public class ItemWrapper { public String id; public String title; } // 4. Main Method @InvocableMethod(label='Generate Custom JSON' description='Builds the JSON string from Flow items') public static List<FlowOutput> generateJson(List<FlowInput> requests) { List<FlowOutput> outputs = new List<FlowOutput>(); for (FlowInput request : requests) { FlowOutput output = new FlowOutput(); JSONStructure jsonRoot = new JSONStructure(); jsonRoot.greeting = 'Hello ' + request.meuName + '!'; jsonRoot.items = new List<ItemWrapper>(); if (request.items != null) { // Loop through generic SObjects for (SObject genericRec : request.items) { // CAST the generic SObject to your specific Custom Object DynamicFlowItem__c rec = (DynamicFlowItem__c)genericRec; ItemWrapper item = new ItemWrapper(); item.id = rec.itemId__c; item.title = rec.itemTitle__c; jsonRoot.items.add(item); } } output.jsonString = JSON.serialize(jsonRoot); outputs.add(output); } return outputs; } } -
화면 플로에 화면 작업을 추가한 다음, 고급 메시지 구성 요소를 화면으로 끌어옵니다.

-
입력 데이터를 지정하려면 다음과 같이 고급 메시지 구성 요소 속성을 설정합니다.
속성 값 Messaging 세션 ID 세션 ID가 포함된 화면 플로 변수인 sessionId을 선택합니다.Messaging 구성 요소 이름 생성한 Apex 기반 양식 Messaging 구성 요소의 이름을 선택합니다. Apex 양식 데이터 입력 데이터가 포함된 화면 플로 변수인 initialData을 선택합니다.Apex 양식 항목 화면 ID 초기 화면 ID를 포함하는 화면 플로 변수인 initialScreenId을 선택합니다.런타임 시 화면 작업이 Apex 기반 양식 메시지 구성 요소를 호출하고 이 입력 데이터를 전달합니다.
-
화면 플로를 저장하고 활성화합니다.

-
화면 플로 변수를 정의합니다.
-
서비스 담당자가 화면 플로를 실행할 수 있도록 하려면 Service Console 페이지에 활성 화면 플로를 포함합니다.
예를 들어, Messaging 세션 레코드 페이지에 플로 구성 요소를 추가합니다.

메시징 세션 중에 페이지에서 화면 플로를 시작하려면 서비스 담당자가 다음을 클릭할 수 있습니다.
고객과의 대화에 플로의 Messaging 구성 요소를 삽입하려면 서비스 담당자가 메시지 삽입을 클릭할 수 있습니다.

그러면 서비스 담당자가 고객에게 메시지를 보낼 수 있습니다.



