여기서 보듯이 일부 경고 작업의 경우 webhook에서 제공하는 페이로드에 따라 알림이 표시될 때 최종 사용자에게 표시되는 데이터의 룩 앤드 필을 정의할 수 있습니다.
메시지 정의 정의하기
작업을 위한 두 가지 유형의 봇 응답을 정의할 수 있습니다.
- 모든 채널의 기본값: API 요청 및 정의된 처리기의 페이로드 응답에 따라 모든 채널의 기본 제목과 메시지 응답을 작성합니다. 자신만의 입력, Kore.ai 시스템에서 파생된 변수 키 집합, 사용자 정의 변수, 응답 샘플과 함께 응답 개체에서 데이터 혼합을 생성할 수 있습니다. 메시지는 일반적으로 요청 개체 데이터에서 ID 번호 또는 제목과 같은 변수를 하나 이상 포함하는 올바른 형식의 HTML 메시지로 표시됩니다.
- 채널별 응답: 또한 미리 정의된 메시지 템플릿을 선택된 채널에 적용하고 특정 채널(예: Facebook Messenger, Skype, SMS 또는 웹/모바일 SDK)을 위한 봇 응답 메시지를 사용자 정의할 수 있습니다.
메시지 정의 편집기 기능
조치 작업의 편집기를 열려면, 봇 응답> 메시지 정의로 이동합니다. 메시지 정의 편집기는 다음 기능을 제공하는 세 개의 탭을 사용합니다.
- 표준 텍스트: 기본 편집기 컨트롤 및 HTML 마크업 및 변수 키를 사용하여 응답을 정의하고 형식을 지정합니다. 텍스트를 입력한 다음, 굵게, 기울임 꼴, 머리글 스타일, 하이퍼링크, 순서 있는 목록 및 순서 없는 목록의 버튼을 사용하고 라인을 삽입하여 형식을 지정합니다.
- JavaScript: 사용자 정의 코드를 추가하여 최종 사용자 작업 응답 메시지를 처리하고, 변수를 선언하고, 변수 키를 사용하고, 타사 애플리케이션과 상호 작용할 수 있습니다.
- 미리 보기: 봇 사용자가 확인할 수 있는 마크업으로 렌더링 된 출력 메시지의 샘플을 봅니다.
변수 키 추가하기
변수 키를 추가하려면 다음 단계를 따르세요.
- 표준 텍스트 또는 JavaScript 모드를 사용하여 변수 키를 추가하려면, 변수를 추가하려는 위치에 커서를 놓고 변수 키를 클릭합니다.
- 요청/응답 키 대화 상자에서 삽입하려는 변수가 포함된 키 노드 유형을 확장합니다.
- 추가하려는 변수(예:
response.data.id
)를 선택한 다음 확인을 클릭합니다.
표준 키
표준 키는 재사용 가능한 데이터를 위한 다음 Kore.ai 변수 플레이스 홀더입니다.
- _labels _: GUID 대신 친숙한 레이블을 반환합니다. 예: 웹 서비스 API에서 사용자 데이터를 요청할 때 반환되는 프로젝트 또는 워크스페이스의 ID는 GUID입니다.
_labels_
키를 사용하여 GUID 대신 최종 사용자에게 GUID의 친숙한 이름을 알려줄 수 있습니다. Kore.ai에서, 드롭다운 컨트롤은_labels_
키의 응답을 다음과 같이 저장합니다. 예:{ "_labels_": { "15379386734832": "roadlabs.com", "26377329985341": "Test Project", "workspace": "roadlabs.com", "project": "Test Project" }, "_fields_": { "workspace": "15379386734832", "project": "26377329985341" } }
- _tenant_ – 정의된 경우 엔터프라이즈에 대한 테넌트를 반환합니다. 예: JIRA는 https://koreteam.atlassian.net/browse/BBF-3265에서 koreteam과 같은 URL에 대한 테넌트가 필요합니다.
_tenant_
키를 사용하여 다음과 같은 작업 응답에서 링크를 작성할 수 있습니다. - _fields_ – 페이로드 응답의 일부가 아닌, 사용자가 제공한 작업 필드 입력을 반환하는 데 사용됩니다. 예: JIRA 작업에서, 최종 사용자에게 워크스페이스 이름을 입력하라는 메시지가 표시됩니다.
_fields_
키를 사용하여 최종 사용자 입력을 다음과 같이 저장할 수 있습니다._fields_["workspace"]
- _last_run – 웹 서비스 풀의 UTC 날짜 타임 스탬프를 ISO 8601 형식을 사용하여 반환하는 데 사용됩니다. 예: 2016-03-05T12:44:38+00:00. 예: 웹 서비스 요청이 페이로드 응답에서 모든 활동을 반환하는 경우,
_last_run
키를 사용하여 다음 값의 앞 또는 뒤에 표시되는 결과를 필터링할 수 있습니다._last_run
세션 키
세션 키는 단일 세션 인스턴스와 관련된 사용자 데이터의 Kore.ai 변수 플레이스 홀더입니다.
- UserContext.get("_id") – Kore.ai 사용자 ID입니다.
- UserContext.get("emailId") – userId에 연결된 이메일 주소입니다.
- UserContext.get("lastName") – 사용자의 성입니다.
- UserContext.get("firstName") – 사용자의 이름입니다.
- UserContext.get("profImage") – 사용자의 이미지 또는 아바타 파일 이름입니다.
- UserContext.get("profColor") – 사용자의 계정 색상입니다.
- UserContext.get("activationStatus") – 사용자의 계정 상태입니다.
- UserContext.get("jTitle") – 정의된 경우 사용자의 직함입니다.
- UserContext.get("orgId") – 정의된 경우 사용자 계정의 조직 ID입니다.
- UserContext.get("customData") – 개발자가 정의한 사용자 정의 키입니다.
- UserContext.get("identities") – 정의된 경우 대체 사용자 ID입니다.
봇 작업을 정의하는 방법과 해당 작업에 사용 가능한 키 컨텍스트에 따라 추가 세션 키를 사용할 수 있습니다. 세션 키 및 컨텍스트 키에 대한 자세한 내용은, 작업에서 세션 변수 및 컨텍스트 변수 사용하기를 참조하세요.
응답 키
응답 키는 API 응답 탭에서 응답 샘플 텍스트에서 직접 구문 분석됩니다. 응답 키는 정의된 응답 샘플에 따라 달라집니다.
다음 목록은 Asana 작업에 사용 가능한 응답 키의 예입니다.
request.data.workspace request.data.projects request.data.name request.data.notes labels.498346170860 labels.30887755353556 labels["data.workspace"] labels["data.projects"] _tenant_ response.data.id response.data.created_at response.data.modified_at response.data.name response.data.notes response.data.completed response.data.assignee_status response.data.completed_at response.data.due_on response.data.due_at response.data.workspace.id response.data.workspace.name response.data.num_hearts response.data.parent response.data.followers[0].id response.data.followers[0].name response.data.hearted response.data.assignee response.data.projects[0].id response.data.projects[0].name response.data.memberships[0].project.id response.data.memberships[0].project.name response.data.memberships[0].section
보고서 키
보고서 키는 보고서 템플릿 정의 및 봇 응답에서 사용자가 클릭할 수 있는 메시지에 추가 정보 링크를 표시하는 데 사용할 수 있는 Kore.ai 변수 플레이스 홀더입니다.
- reportInfo.reportLink – 이 작업에 대한 보고서 템플릿 정의 섹션에 정의된 링크입니다.
- reportInfo.reportTitle – 이 작업에 대한 보고서 템플릿 정의에 정의된 제목입니다.
응답 미리 보기
메시지 편집기에서, 미리 보기를 클릭하여 다음 옵션 중 하나를 사용하여 응답 미리 보기를 생성합니다.
- 테스트 및 미리 보기 – 봇의 작업 설정 페이지를 열고 작업 설정을 정의하고, 인증한 다음 타사 웹 서비스(예: Asana)를 통해 생성된 응답의 미리 보기를 표시합니다.
- 샘플 응답으로 미리 보기 – 작업의 API 요청 탭의 응답 샘플 섹션에 정의된 키-값 쌍으로 제공된 샘플 데이터를 사용하여 미리 보기를 생성합니다.
사용자 정의 JavaScript 응답 예시
다음 예시에서는 작업 응답 메시지가 전송될 때 출력 메시지를 최종 사용자에게 표시하는 게시물 제목 및 게시물 설명 섹션을 정의하기 위해 JavaScript를 사용한 응답 개체를 표시합니다. 다음 예시에서, desc로 레이블이 표시된 변수는 JSON 응답에 캡션값이 정의되어 있는 경우에만 표시됩니다.
var desc = (caption !== "undefined" ? caption : "")
다음 예시에서는, 작업 제목을 사용하여 클릭 가능한 URL이 작업 응답 메시지에 표시됩니다.
var tasklink = '' + title + '';
이 마지막 예시에서, 링크 변수는 동영상 또는 사진 유형에 따라 다릅니다. 유형에 따라 적절한 링크가 표시됩니다.
var link = ""; switch (type) { case "video": var video = (typeof(video_url) != "undefined") ? video_url : permalink_url; link = '<video controls><source src ="' + video + '" type="video/mp4"></video>'; break; case "photo": link = '<img src="' + image_permalink + '"></img>'; break; }
사용자 정의 JavaScript를 생성하여 작업의 페이로드 응답에 따라 JavaScript 탭에서 작업별 요구 사항을 처리할 수 있습니다.
채널별 봇 응답
작업 응답 메시지는 응답 메시지가 표시되는 채널에 따라 다를 수 있습니다. 예: Kore.ai 메신저 클라이언트, 이메일 또는 텍스트 메시지. 기본적으로, 모든 채널의 기본값으로 설정된 응답 메시지는 모든 채널에 전송됩니다. 그러나, 기본 응답 대신 해당 채널의 최종 사용자에게 표시할 20개 이상의 채널에 특정 응답을 정의할 수 있습니다.
- 특정 채널을 위한 응답 메시지를 정의하려면, + 채널 추가를 클릭하여 채널 선택 드롭다운 목록을 표시합니다.
- 채널(예: Kore.ai)을 선택한 다음 JavaScript 탭에서 해당 채널에 대한 응답을 설정합니다.
각 채널에는 하나의 응답만 정의할 수 있습니다. 다음 JavaScript 예시에서는 Kore.ai 기본 형식 지정 템플릿을 채널별로 재정의하는 방법을 보여 줍니다.
참고 사항: 다음 키를 사용하여 기본값을 반환합니다. response.message – 기본 메시지를 문자열로 반환합니다. response.message.choices – 옵션 선택 또는 확인 메시지 유형을 배열로 반환합니다.
- Slack 채널 재정의 예시
var message = {}; var attachments = []; var attachment = { 'text': "Exception occurred during API execution", 'color': '#FFCC00', 'attachment_type': 'default' }; attachments.push(attachment); message.attachments = attachments; print(JSON.stringify(message));
- FaceBook 채널 재정의 예시
var message = { text: response.message }; var buttons = []; for (var i = 0; i < response.choices.length; i++) { var choiceItem = response.choices[i]; if (choiceItem.length > 20) { choiceItem = choiceItem.substring( 0, 18) + '..'; } var element = { content_type: 'text', title: choiceItem, payload: choiceItem }; buttons.push(element); } message.quick_replies = buttons; print(JSON.stringify(message));
- 이메일 채널 재정의 예시
var message = {}; var text = response.message + ' <br> '; for (var i = 0; i < response.choices.length; i++) { text = text.concat( '<u> + response.choices[i] + ' < /u> <br>'); } message.text = text; print(JSON.stringify(message));
- SMS 채널 재정의 예시
var message = {}; var indexArray = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' ]; var text = response.message + '\\n'; for (var i = 0; i < response.choices .length; i++) { text = text.concat(indexArray[i] + ') ' + response.choices[ i] + '\\n'); } message.text = text; print(JSON.stringify(message));