지난 편에서는 Dify에서 앱을 만들고 API 키를 발급하는 과정을 마쳤습니다.
이번 편에서는 플렉스튜디오 Embed 컨트롤로 답변 영역을 구성하고 Dify API를 호출하는 이벤트를 완성합니다.
이번 실습에서 완성할 앱의 동작 방식은 다음과 같습니다. 입력창에 질문을 입력하고 입력창 밖을 클릭하면 위 영역에 AI 답변이 말풍선 형태로 채워집니다.
핵심 컨트롤은 Embed 컨트롤과 InputText 컨트롤 두 가지입니다.
새 시나리오를 생성하고 기본 스텝에서 스텝 버튼을 삭제합니다. 이어서 답변이 표시될 영역을 아래 순서로 구성합니다.
<div id="difyChat" style="width:100%;height:100%;">
<div class="dify-empty">
<div>아래에 질문을 입력하면<br>AI 답변이 여기에 표시됩니다.</div>
</div>
</div>
답변영역에 말풍선 모양과 색상을 반영하려면 스타일이 필요합니다. 스타일을 별도 CSS 파일로 분리해서 외부 파일로 연결하는 방식으로 진행합니다.
dify-chat.css 파일을 다운로드합니다.CSS 셀렉터를 반드시 #difyChat으로 지정해야 합니다. 스타일이 임베드 영역 안에만 적용되고 화면의 다른 요소에는 영향을 주지 않는 방법입니다.
input, 데이터용도 : 기본으로 설정합니다.query로 연결합니다.CallDify로 입력합니다.FocusOut은 입력창 밖을 클릭하거나 엔터 키를 입력하는 순간 실행됩니다.
CallDify 이벤트 설정으로 이동한 뒤, 스크립트 액션을 추가하고 강의자료의 DifyAPICall 스크립트를 붙여넣습니다. API KEY 값에는 앞서 발급한 본인 Dify 앱의 API 키를 입력합니다.
input 카테고리의 첫 번째 섹터에서 query 값을 읽어옵니다.
질문을 말풍선으로 화면에 바로 표시하고, 답변 자리에는 로딩 인디케이터를 넣습니다.
fetch로 Dify API 주소에 질문을 보내고 답변이 오면 답변 영역에 채워 넣습니다.
같은 CallDify 이벤트에 스크립트 액션을 이어서 추가합니다.
① 보낸 입력 섹터 비우기: f.Collection.removeSector('active', 'input');
② 입력 영역 화면 갱신: f.Content('f_id').reload();
③ 입력창 포커스 설정: f.Component('f_id').focus();
첫 번째 f_id는 입력 영역 그룹의 ID, 두 번째 f_id는 InputText 컨트롤의 ID입니다. 실제 시나리오에 맞는 ID로 변경해 주세요.
오른쪽 상단 초록색 실행 버튼으로 디버거를 켭니다. 입력창에 질문을 적고 입력창 밖을 클릭하거나 엔터 키를 입력합니다.
잠깐 로딩 표시가 나타난 뒤 AI 답변이 영역에 채워지는 것을 확인할 수 있습니다.
이번 시리즈를 통해 Dify 개념 이해부터 앱 생성, API 키 발급, 그리고 플렉스튜디오 연동까지 모든 과정을 완성했습니다.
① Dify는 기존 LLM을 조립해 AI 앱을 만드는 플랫폼입니다.
② Dify에서 만든 앱을 게시하고 API 키를 발급받으면 외부에서 호출할 수 있습니다.
③ 플렉스튜디오 Embed 컨트롤로 답변 영역을 구성하고 FocusOut 이벤트로 API를 호출합니다.
④ CSS 파일을 호스팅 폴더에 올려 외부 파일로 연결하면 스타일 관리가 쉬워집니다.