시작
Kore.ai 대화형 플랫폼
챗봇 개요
자연어 처리(NLP)
봇 개념 및 용어들
빠른 시작 가이드
봇 빌더 접근 방법
사용 고지 사항 (영어)
Kore.ai 봇 빌더로 작업하기
봇 구축 시작하기
릴리스 정보
현재 버전 (영어)
이전 버전 (영어)

개념
디자인
스토리보드
대화 작업
개요
Using the Dialog Builder Tool
노드 유형
사용자 의도 노드
대화 노드
엔티티 노드
양식 노드
확인 노드
서비스 노드
봇 조치 노드
Service Node
WebHook 노드
스크립트 노드
노드 그룹화하기
Agent Transfer Node
사용자 프롬프트
음성 통화 속성
대화 관리
노드 및 전환
구성 요소 전환
컨텍스트 개체
이벤트 기반 봇 조치
지식 그래프
소개
지식 추출
지식 그래프 생성
봇에 지식 그래프 추가
그래프 생성
지식 그래프 작성
FAQ 추가
작업 실행
기존 소스에서 FAQ 구축
특성, 동의어 및 불용어
변수 네임스페이스 관리
수정
용어 편집 및 삭제
용어 편집 및 삭제
질문과 응답 편집
Knowledge Graph Training
지식 그래프 분석
봇 온톨로지 가져오기 및 내보내기
지식 그래프 가져오기
지식 그래프 내보내기
지식 그래프 생성
CSV 파일에서
JSON 파일
지식 그래프 생성
경고 작업
스몰 토크
Digital Skills
디지털 양식
Views
Digital Views
Panels
Widgets
기차
봇 성능 향상 – NLP 최적화
기계 학습
소개
모델 검증
기초 의미
지식 그래프 학습
특성
순위 및 해결
고급 NLP 설정
NLP 설정 및 지침
봇 인텔리전스
소개
컨텍스트 관리
컨텍스트 관리
대화 관리
다중 – 의도 탐지
엔티티 수정
기본 대화
정서 관리
어조 분석
Test & Debug
봇과 대화
발화 테스트
배치 테스트하기
대화 테스트
배포
채널 활성화
봇 게시
분석
봇 분석하기
Conversations Dashboard
Performance Dashboard
사용자 정의 대시보드
소개
맞춤형 메타 태그
사용자 정의 대시보드 생성 방법
Conversation Flows
NLP 지표
Containment Metrics
사용량 지표
스마트 봇
소개
범용 봇
소개
범용 봇 정의
범용 봇 생성
범용 봇 학습
범용 봇 커스터마이징
범용 봇용 추가 언어 활성화
스토어
Manage Assistant
플랜 및 사용량
Overview
Usage Plans
Support Plans
플랜 관리
봇 인증
다국어 봇
개인 식별 정보 삭제하기
봇 변수 사용
IVR 통합
일반 설정
봇 관리

방법
간단한 봇 생성하기
Design Conversation Skills
뱅킹 봇 생성
뱅킹 봇 – 자금 이체
뱅킹 봇 – 잔액 업데이트
Knowledge Graph (KG) 구축
스마트 경고를 예약하는 방법
Design Digital Skills
디지털 양식 설정 방법
디지털 보기 설정 방법
데이터 테이블에 데이터를 추가하는 방법
데이터 테이블 내 데이터 업데이트 방법
UI 양식에서 데이터 테이블에 데이터를 추가하는 방법
Train the Assistant
특성 사용 방법
의도와 엔티티에 대한 패턴 사용 방법
컨텍스트 전환 관리 방법
Deploy the Assistant
상담사 전환을 설정하는 방법
봇 기능 사용 방법
콘텐츠 변수 사용 방법
전역 변수 사용 방법
Kore.ai 웹 SDK 튜토리얼
Kore.ai 위젯 SDK 튜토리얼
Analyze the Assistant
사용자 정의 대시보드 생성 방법
사용자 지정 태그를 사용하여 봇 메트릭을 필터링하는 방법

API 및 SDK
API 참조
Kore.ai API 사용
API 목록
API 컬렉션
koreUtil Libraries
SDK 참조
상담사 전환을 설정하는 방법
봇 기능 사용 방법
콘텐츠 변수 사용 방법
전역 변수 사용 방법
소개
Kore.ai 웹 SDK 튜토리얼
Kore.ai 위젯 SDK 튜토리얼

관리
소개
봇 관리자 콘솔
대시보드
사용자 관리
사용자 관리
그룹 관리
역할 관리
봇 관리 모듈
등록
사용자 초대
사용자 등록을 위한 대량 초대 보내기
사용자 및 사용자 데이터 가져오기
Active Directory에서 사용자 동기화
보안 및 준수
싱글 사인 온 사용
보안 설정
Kore.ai 커넥터
봇 관리자용 분석
Billing (지원하지 않음)
  1. Docs
  2. Virtual Assistants
  3. SDKs
  4. BotKit SDK용 함수

BotKit SDK용 함수

Kore.ai BotKit SDK는 봇을 더 잘 제어하고 사용자 경험을 개선하는 데 사용할 수 있는 함수를 제공합니다.
BotKit SDK는 다음 함수를 지원합니다.

sdk.sendUserMessage

이 함수는 봇 사용자에게 메시지를 보냅니다.
사용법
on_bot_message 이벤트 콜백 내부에서 사용됩니다. on_bot_message 이벤트는 봇이 사용자에게 응답을 보낼 때 호출됩니다. SDK에서, message와 같은 페이로드 데이터는 수정한 후 봇 플랫폼으로 보낼 수 있습니다.
구문

sdk.sendUserMessage(payload, callback)

매개변수:

  • payload – 다음과 같은 JSON 응답 페이로드.
     {
       "message":"Spell-corrected message sent by bot to the user",
       "originalMessage":"Original message sent by bot to the user",
       "taskId":"Dialog task ID",
       "nodeId":"Current node ID in the dialog flow",
       "channel":"Channel name",
       "context": <context object>
    }
    

    위의 메시지 페이로드는 사용자 언어가 감지되고 철자 수정이 완료된 경우입니다. 사용자 언어가 감지되지 않는 경우, 메시지 구조는 다음과 같습니다

     {
       "message":"Original message sent by bot to the user",
       "originalMessage":"Original message sent by bot to the user",
       "languageInfo": {
            "currentLanguage": "current user language",
            "detectedLanguages": [
                "language detected 1",
                "language detected 2"
            ],
            "spellCorrectedInput": [
                "language 1": "spell correction in language 1",
                "language 2": "spell correction in language 2"
            ]
         }
    }
  • callback – 업데이트된 메시지와 컨텍스트를 봇 플랫폼으로 다시 전송하는 데 사용되는 이벤트 완료 시 호출하는 함수.

예시
다음 코드 조각은 사용자에게 오류를 반환하는 sdk.sendUserMessage 함수의 예시를 보여줍니다.

return sdk.sendUserMessage(payload, function(err){
    if(err)
       console.log("err", err);

다음 코드 예시에서는, 사용자가 라이브 상담사로 전환될 때 사용자에게 초기 메시지가 표시됩니다.

    formdata.welcome_message = "";
    var visitorId = _.get(payload, 'channel.channelInfos.from');
    if (!visitorId) {
        visitorId = _.get(payload, 'channel.from');
    }
    visitorId = payload.context.session.UserContext._id;
    userDataMap[visitorId] = payload;
    data.message = "An Agent will be assigned to you shortly!!!";
    sdk.sendUserMessage(payload, callback);

다음 코드 예시에서는, sdk.sendUserMessage 함수와 함께 사용자에게 보내는 메시지는 통화 변환을 위해 사용자 선택에 기반합니다. isTemplate 매개변수는 사용자 정의 형식 또는 기본 메시지 형식 중 어느 것을 사용할지 여부를 결정합니다.

    on_user_message : function(requestId, payload, callback) {
		message = payload.message.toLowerCase();console.log("MESSAGE",payload.message);
		//payload .context.session.BotContext.currency = "koko";
		if ( message == "Yes" || message == "yes")
		{
			var overrideMessagePayload = {
				body : " Enter the currency code for which the amount will be converted",
				isTemplate :false
			};
			data.overrideMessagePayload = overrideMessagePayload;
			currCode = true;
			return sdk.sendUserMessage(payload);
		}
		else if ( message == "No" || message == "no" )
		{
			 var overrideMessagePayload = {
				body : "Ok, Enter the country name so that I can fetch it on your behalf",
				isTemplate :false
			};
			payload.overrideMessagePayload = overrideMessagePayload;
			countryname = true;
			return sdk.sendUserMessage(payload);

플랫폼 버전 8.0 릴리스 후, User Meta Tags, Message Meta Tags 및 Session Meta Tags를 추가할 수 있습니다. 다음은 필요한 페이로드에 대한 구문입니다.

metaTags":{
     "userMetaTags":[
        {
            "name":"<string>",
           "value":"<string>"
       }
    ],
   "sessionMetaTags":[
      {
         "name":"<string>",
         "value":"<string>"
      }
    ],
 "messageMetaTags":[
     {
          "name":"<string>",
          "value":"<string>"
     }
  ]
}

sdk.sendBotMessage

이 함수는 봇에게 메시지를 보냅니다.
사용법
on_user_message 이벤트 콜백 내부에서 사용됩니다. on_user_message 이벤트는 사용자가 봇에게 메시지를 보낼 때 호출됩니다. SDK에서, message와 같은 페이로드 데이터는 수정한 후 봇 플랫폼으로 보낼 수 있습니다.
사용자 메시지에 대해 유효성 검사가 수행됩니다. 메시지는 3,000자를 초과할 수 없으며 각 단어는 1,200자를 초과할 수 없습니다.
구문:

sdk.sendBotMessage(payload, callback)

매개변수:

  • payload – 다음과 같은 JSON 응답 페이로드.
    { "message":"Message sent by the user", "channel":"Channel name", "context": <context object> }
  • callback – 업데이트된 메시지와 컨텍스트를 봇 플랫폼으로 다시 전송하는 데 사용되는 이벤트 완료 시 호출하는 함수.

예시
다음 코드 조각은 봇에게 사용자 응답을 보냅니다.

 {
   "message":"Message sent by the user",
   "channel":"Channel name",
   "context": <context object>
}

on_user_message 함수에서, 메시지는 사용자에게 직접 반환되며, 라이브 상담사로 전환되지 않으면, 봇으로 보냅니다.

    on_user_message: function(requestId, payload, callback) {
        sdk.sendBotMessage(payload, callback);
    },

플랫폼 버전 8.0 릴리스 후, User Meta Tags, Message Meta Tags 및 Session Meta Tags를 추가할 수 있습니다. 다음은 필요한 페이로드에 대한 구문입니다.

    on_user_message: function(requestId, payload, callback) {
        if (payload.message === "Hi") {
            payload.message = "Hello";
            //Sends back 'Hello' to user.
            return sdk.sendUserMessage(payload, callback);
        } else if (!payload.agent_transfer) {
            //Forward the message to bot
            return sdk.sendBotMessage(payload, callback);
        } else {
            payload.message = "Agent Message";
            return sdk.sendUserMessage(payload, callback);
        }
    };

sdk.AsyncResponse

이 함수는 봇 플랫폼으로 보낼 비동기식 응답을 준비합니다.
사용법
대화 작업 실행 흐름이 webhook 노드에 도달하는 경우, 봇 플랫폼은 SDK에 대한 on_webhook 이벤트 호출을 수행합니다. on_webhook 이벤트 호출은 두 가지 유형의 응답을 지원합니다.

  • 동기식 응답 – 비즈니스 로직 실행이 허용 가능한 시간 내에 완료될 수 있는 경우, SDK는 callback(null, payload) 함수를 사용하여 동기적으로 응답할 수 있습니다.
  • 비동기식 응답 – 비즈니스 로직 실행에 더 많은 시간이 필요한 경우, SDK는 callback(null, new sdk.AsyncResponse()) 함수를 호출하고 HTTP 코드 202를 봇 플랫폼으로 전송하여 비동기식 응답을 봇 플랫폼으로 보낼 수 있습니다. 응답이 준비되면, SDK는 sdk.respondToHook(payload) 함수를 호출할 수 있습니다.

구문:

sdk.AsyncResponse()
callback(null, new sdk.AsyncResponse())

매개변수:
없음.
예시
on_webhook 함수의 예시에서는, 봇이 사용자가 선택한 택시의 예약을 비동기식으로 대기합니다.

on_webhook : function(requestId, payload, componentName, callback) {
        var context = payload.context;
        if (componentName === 'FindNearbyCabs') {
            findCabs()
                .then(function(cabList) {
                    context.cabList = cabList;
                    callback(null, data);
                });
        } else if (componentName === 'BookTheCab') {
            sdk.saveData(requestId, payload)
                .then(function() {
                    bookTheCab(requestId, context.entities.selectedCab.id, context.session.UserSession.location, context.entities.whereTo);
                    callback(null, new sdk.AsyncResponse());
                });
        }
    }

sdk.respondToHook

이 함수는 봇 플랫폼으로 webhook 응답을 보냅니다.
사용법
대화 작업 실행 흐름이 webhook 노드에 도달하는 경우, 봇 플랫폼은 SDK에 대한 on_webhook 이벤트 호출을 수행합니다. on_webhook 이벤트 호출은 두 가지 유형의 응답을 지원합니다.

  • 동기식 응답 – 비즈니스 로직 실행이 허용 가능한 시간 내에 완료될 수 있는 경우, SDK는 callback(null, payload) 함수를 사용하여 동기적으로 응답할 수 있습니다.
  • 비동기식 응답 – 비즈니스 로직 실행에 더 많은 시간이 필요한 경우, SDK는 callback(null, new sdk.AsyncResponse()) 함수를 호출하고 HTTP 코드 202를 봇 플랫폼으로 전송하여 비동기식 응답을 봇 플랫폼으로 보낼 수 있습니다. 응답이 준비되면, SDK는 sdk.respondToHook(payload) 함수를 호출할 수 있습니다.

구문:

sdk.respondToHook(payload)

매개변수:

  • payload – 다음과 같은 JSON 응답 페이로드.
     {
       "taskId":"Dialog task ID",
       "nodeId":"Current node ID in the dialog flow",
       "channel":"Channel name",
       "context": <context object>
    }

예시
다음 코드 조각에서는, 택시 예약이 실패하면, 이벤트가 동기식으로 처리됩니다. 반대로, 택시 예약은 webhook을 통해 비동기식으로 처리됩니다.

function onBookingFailure(requestId) {
    sdk.getSavedData(requestId)
        .then(function(payload) {
            payload.context.successful = false;
            sdk.respondToHook(payload);
        });
}
//call cabBookingService with the requestId. This service is expected to respond asynchronously.
//'requestId' must be passed along all asynchronous flows, to allow the BotKit to respond
// back to the hook once the async process is completed.
function bookTheCab(requestId, cabId, userLoc, destination) {
    cabBookingService(requestId, cabId, userLoc, destination, {
        on_success: onBookingSuccess,
        on_failure: onBookingFailure
    });
}

sdk.registerBot

이 함수는 봇을 등록하고 실행 시 콜백 이벤트를 사용할 수 있도록 합니다.
사용법
BotKit SDK는 각 봇에 대해 하나의 Node.js 파일을 생성하도록 설계되었습니다. 해당 봇의 모든 콜백은 Node.js 파일에서 유지 관리됩니다. 봇을 등록하려면, 다음 변수와 함수를 다음과 같이 내보내야 합니다.

module.exports = {
      botId : “xxxxx”,
      botName : ““xxxxx”,
      on_user_message : function(requestId, data, callback) {
           //code goes here
      },
      on_bot_message : function(requestId, data, componentName, callback) {
           //code goes here
      },
     on_webhook : function(requestId, data, componentName, callback) {
           //code goes here
      },
}

구문:
봇을 등록하려면, 다음을 호출합니다

sdk.registerBot(require('./<Bot Name>.js'));

매개변수:

  • 등록할 봇의 Node.js 파일

예시
다음 코드 예시에서는 botIdbotName를 사용한 봇의 등록을 보여줍니다.

module.exports = {
    botId : botId,
    botName : botName,
    on_user_message : function(requestId, payload, callback) {
        debug('on_user_message');
        onUserMessage(requestId, payload, callback);
    },
    on_bot_message : function(requestId, payload, callback) {
        debug('on_bot_message');
        onBotMessage(requestId, payload, callback);
    },
    on_agent_transfer : function(requestId, payload, callback) { console.log("on agent transfer event");
        debug('on_webhook');
        onAgentTransfer(requestId, payload, callback);
    },
    gethistory: gethistory
};

sdk.saveData

이 함수는 Redis 인메모리 데이터 구조 저장소에 데이터를 저장합니다.
사용법
on_webhook 이벤트 호출에 비동기식으로 응답하는 경우, requestId를 사용하여 Redis 저장소에 페이로드를 저장할 수 있습니다. 비즈니스 로직 실행을 완료한 후, webhook 응답을 준비하는 동안 sdk.getSavedData(requestId)function 함수를 사용하여 데이터를 읽을 수 있습니다.
구문:

sdk.saveData(requestId, payload)

매개변수:

  • requestId – 비동기식 on_webhook 이벤트 호출의 requestId.
  • payload – 다음과 같은 JSON 응답 페이로드.
     {
       "taskId":"Dialog task ID",
       "nodeId":"Current node ID in the dialog flow",
       "channel":"Channel name",
       "context": <context object>
    }

예시
이 on_webhook 이벤트에서는, 택시 예약 요청이 Redis 스토어에 저장되고 예약의 비동기식 처리가 시작됩니다.

on_webhook : function(requestId, payload, componentId, callback) {
        var context = data.context;
        if (componentId === 'FindNearbyCabs') {
            findCabs()
                .then(function(cabList) {
                    context.cabList = cabList;
                    callback(null, payload);
                });
        } else if (componentName === 'BookTheCab') {
            sdk.saveData(requestId, payload)
                .then(function() {
                    //Assuming the cab booking was successful. A mock service to book the cab can be called here.
                    payload.successful = 'true';
                    payload.bookedCab = context.entities.selectedCab || {};
                    callback(null, payload);
                });
        }
    }

sdk.getSavedData

이 함수는 Redis 인메모리 데이터 구조 저장소에서 데이터를 읽습니다.
사용법
on_webhook 이벤트 호출에 비동기식으로 응답하는 경우, requestId를 사용하여 Redis 저장소에 페이로드를 저장할 수 있습니다. 비즈니스 로직 실행을 완료한 후, webhook 응답을 준비하는 동안 sdk.getSavedData(requestId)function 함수를 사용하여 데이터를 읽을 수 있습니다.
구문:

sdk.getSavedData(requestId, payload)

매개변수:

  • requestId – 비동기식 on_webhook 이벤트 호출의 requestId.
  • payload – 다음과 같은 JSON 응답 페이로드.
     {
       "taskId":"Dialog task ID",
       "nodeId":"Current node ID in the dialog flow",
       "channel":"Channel name",
       "context": <context object>
    }

예시
이 코드 예시에서, sdk.getSavedData 함수는 선택한 택시와 예약 정보를 반환하는 데 사용되거나, 비동기식 예약 webhook 이벤트가 실패하는 경우, 선택한 예약에 대한 실패 메시지를 사용자에게 보냅니다.

/*/
 * Responds to the webhook asynchronously with the success flag.
 */
function onBookingSuccess(requestId) {
    sdk.getSavedData(requestId)
        .then(function(payload) {
            payload.context.bookedCab = payload.entities.selectedCab;
            payload.context.successful = true;
            sdk.respondToHook(payload);
        });
}
function onBookingFailure(requestId) {
    sdk.getSavedData(requestId)
        .then(function(payload) {
            payload.context.successful = false;
            sdk.respondToHook(payload);
        });
}

sdk.getMessages

이 함수는 봇과 사용자 간에 이전 대화 기록을 가져올 때 사용됩니다. 공용 API 대화 기록(대화 기록 API는 여기를 참조하세요)
사용법
봇 과 사용자 간에 대화형 메시지를 시간 역순으로 가져옵니다. 이 API는 페이징을 지원합니다. 오프셋/건너뛰기 및 한 번에 특정 수의 메시지를 가져올 수 있도록 제한을 제공할 수 있습니다.
구문:

sdk.getMessages(requestData, callback)

매개변수:

  • requestData 다음과 같습니다.
    requestData.baseUrl + '/getMessages?' + "skip=" + offset + "&limit=" + limit + "&userId=" + userId+"&channelType"=channel-type

    위치

    • stream_id – 봇 빌더의 구성 설정 페이지에서 접근할 수 있는 봇 ID
    • user_id – 대화 기록에 접근할 수 있는 사용자 ID
    • skip – 건너뛸 메시지 수입니다.
    • limit – 각 페이지에 표시할 메시지 수.
    • channelType – 옵션, 대화가 호스팅 된 채널.
  • callback – 메시지 기록을 봇 플랫폼으로 다시 전송하는 데 사용되는 이벤트 완료 시 호출하는 함수.

//this example is from the LiveChat.js
//where the gethistory() function uses getMessage() to extract the messages
    var userId = req.query.userId;
    var data = userDataMap[userId];
    if(data) {
        data.limit = 100;
        return sdk.getMessages(data, function(err, resp){
            if(err){
                res.status(400);
                return res.json(err);
            }
            var messages = resp.messages;
            res.status(200);
            return res.json(messages);
        });

sdk.clearAgentSession

이 함수는 상담사 세션을 지우고 봇과의 대화를 다시 설정하는 데 사용됩니다.
사용법
상담사 전환 시나리오에서, 상담사가 사용자와의 대화를 종료하면, 타사 공급자로부터 chat_closed 이벤트가 실행됩니다. 이러한 경우, 이 함수는 봇과 대화를 다시 설정하기 위해 호출됩니다
구문:

sdk.clearAgentSession(requestData, callback)

매개변수:

  • requestData 다음과 같습니다.
    requestData.baseUrl+ '/clearAgentSession/' + requestData.requestId

    위치

    • requestId – 세션 id
  • callback – 이벤트 완료 시 호출할 함수.

//this example is from the LiveChat.js
//where the function is invoked to clear agent session when the chat is closed by the user
    if (event.type==="chat_closed"){
       console.log('chat_closed');
       delete userResponseDataMap[visitorId];
       delete _map[visitorId];
       sdk.clearAgentSession(data);
    }

플랫폼 버전 8.0 릴리스 후, User Meta Tags, Message Meta Tags 및 Session Meta Tags를 추가할 수 있습니다. 다음은 필요한 페이로드에 대한 구문입니다.

metaTags":{
     "userMetaTags":[
        {
            "name":"<string>",
           "value":"<string>"
       }
    ],
   "sessionMetaTags":[
      {
         "name":"<string>",
         "value":"<string>"
      }
    ],
 "messageMetaTags":[
     {
          "name":"<string>",
          "value":"<string>"
     }
  ]
}

sdk.startAgentSession

이 함수는 상담사 세션이 시작되었음을 플랫폼에 알리는 데 사용됩니다.
사용법
이 함수는 상담사 전환이 시작되고 상담사 전환이 진행 중임을 봇에게 알리려는 경우에 사용됩니다. 다음으로, 예를 들어, onMessages()에서 BotKit이 받은 데이터 개체는 상담사 세션을 true로 가집니다. 또한, sdk.clearAgentSession이 BotKit에서 호출되면, 플랫폼은 상담사 세션이 완료되었음을 알리고 BotKit이 받은 데이터 개체는 상담사 세션을 false로 설정합니다.
구문:

sdk.startAgentSession(requestData, callback)

매개변수:

  • requestData 다음과 같습니다.
    requestData.baseUrl + '/startAgentSession/' + requestData.requestId

    위치

    • requestId – 세션 id
  • callback – 이벤트 완료 시 호출할 함수.

//The following function call is used in the LiveChat.js for connectToAgent() function
//Invoking the startAgentSession before invoking the initChat function will ensure that
// the Bot is aware of the Agent transfer in progress
function connectToAgent(requestId, data, cb){
    var formdata = {};
    formdata.licence_id = config.liveagentlicense;
    formdata.welcome_message = "";
    var visitorId = _.get(data, 'channel.channelInfos.from');
    if(!visitorId){
       visitorId = _.get(data, 'channel.from');
      }
    userDataMap[visitorId] = data;
     data.message="An Agent will be assigned to you shortly!!!";
     sdk.sendUserMessage(data, cb);
     sdk.startAgentSession(data, cb);
    formdata.welcome_message = "Link for user Chat history with bot: "+ config.app.url +"/history/index.html?visitorId=" + visitorId;
    return api.initChat(visitorId, formdata)
     .then(function(res){
     _map[visitorId] = {
     secured_session_id: res.secured_session_id,
     visitorId: visitorId,
     last_message_id: 0
    };
   });
 }

플랫폼 버전 8.0 릴리스 후, User Meta Tags, Message Meta Tags 및 Session Meta Tags를 추가할 수 있습니다. 다음은 필요한 페이로드에 대한 구문입니다.

metaTags":{
     "userMetaTags":[
        {
            "name":"<string>",
           "value":"<string>"
       }
    ],
   "sessionMetaTags":[
      {
         "name":"<string>",
         "value":"<string>"
      }
    ],
 "messageMetaTags":[
     {
          "name":"<string>",
          "value":"<string>"
     }
  ]
}

sdk.resetBot

이 함수는 컨텍스트를 지우고 현재 세션을 묵시적으로 삭제하는 데 사용됩니다.
사용법
실행 시, 대화 실행 중에, 사용자 입력이 “reset bot” 명령어를 사용하여 봇을 지우려는 경우. 컨텍스트가 지워지고 작업이 삭제됩니다.
구문:

sdk.resetBot(requestData, callback)

매개변수:

  • requestData 다음과 같습니다.
    requestData.resetBotUrl
  • callback – 이벤트 완료 시 호출할 함수.

on_user_message : function(requestId, data, callback) {
     if (data.message==="reset bot"){
	sdk.resetBot(data, callback);
      }

sdk.extendRequestId

이 함수는 botKit이 플랫폼으로 메시지를 보내는 데 할당된 시간을 연장하는 데 사용됩니다.
사용법
이 함수는 상담사 전환이 시작되고 얼마 후 플랫폼이 메시지를 수신하지 못할 때 사용됩니다. 이것은 botKit이 플랫폼으로 메시지를 보내는 데 할당된 시간을 연장하여 해결할 수 있습니다.
구문:

sdk.extendRequestId(requestData, callback)

function onBotMessage(requestId, data, cb) {
    console.log("bot message",JSON.stringify(data));
    var visitorId = _.get(data, 'channel.from');
     event =  schedular.scheduleJob("*/4 * * * *", function() {
                pub.get(visitorId+':data',function(err,reply){
                    if(err) throw err;
                    sdk.extendRequestId(data,cb);
                })
    });
	}
 on_user_message: function(requestId, data, callback) { 
        var visitorId = _.get(data, 'channel.from');
        registerEvent(visitorId, data);
        if(event){
            event.cancel();
        }else{
            console.log(new Date(),'event not found');
        }
        event =  schedular.scheduleJob("*/4 * * * *", function() {
            pub.get(visitorId+':data',function(err,reply){
                if(err) throw err;
                    sdk.extendRequestId(data,callback);
            })
        });

참고: 15분 동안 활성 대화가 없는 경우 시간을 연장하는 것은 효과적이지 않습니다. 세션이 비활성화되면 불문하고 agent_transfer 모드가 재설정됩니다.

sdk.skipBotMessage

이 기능은 특정 비즈니스 사용 사례의 특정 메시지를 건너뛸 때 사용합니다.
사용법
실행 시, 대화 실행 중에, BotKit이 메시지를 보내고 계속 진행하기를 기다리는 대신, 시스템은 다음 단계로 진행합니다.

구문:

sdk.skipBotMessage(requestData, callback)

매개변수:

  • requestData – 데이터
  • callback – 이벤트 완료 시 호출할 함수.

if(data.message === "skipBotMessage"){ // condition for skipping a Bot message
	sdk.skipBotMessage(data, cb);
}

플랫폼 버전 8.0 릴리스 후, User Meta Tags, Message Meta Tags 및 Session Meta Tags를 추가할 수 있습니다. 다음은 필요한 페이로드에 대한 구문입니다.

metaTags":{
     "userMetaTags":[
        {
            "name":"<string>",
           "value":"<string>"
       }
    ],
   "sessionMetaTags":[
      {
         "name":"<string>",
         "value":"<string>"
      }
    ],
 "messageMetaTags":[
     {
          "name":"<string>",
          "value":"<string>"
     }
  ]
}

sdk.skipUserMessage

이 기능은 특정 비즈니스 사용 사례의 특정 메시지를 건너뛸 때 사용합니다.
사용법
실행 시, 대화 실행 중에, BotKit이 확인 메시지를 보내고 계속 진행하기를 기다리는 대신, 시스템은 다음 단계로 진행합니다.
구문:

sdk.skipUserMessage(requestData, callback)

매개변수:

  • requestData – 데이터
  • callback – 이벤트 완료 시 호출할 함수.

if(data.message === "skipUserMessage"){ // condition for skipping a user message
	sdk.skipUserMessage(data, cb);
}

플랫폼 버전 8.0 릴리스 후, User Meta Tags, Message Meta Tags 및 Session Meta Tags를 추가할 수 있습니다. 다음은 필요한 페이로드에 대한 구문입니다.

metaTags":{
     "userMetaTags":[
        {
            "name":"<string>",
           "value":"<string>"
       }
    ],
   "sessionMetaTags":[
      {
         "name":"<string>",
         "value":"<string>"
      }
    ],
 "messageMetaTags":[
     {
          "name":"<string>",
          "value":"<string>"
     }
  ]
}

sdk.closeConversationSession

이 함수는 대화 세션을 종료하는 데 사용됩니다.
사용법
구문:

sdk.closeConversationSession(requestData, callback)

매개변수:

  • requestData – 데이터
  • callback – 이벤트 완료 시 호출할 함수.

if(data.message === "closeConversationSession"){ // condition for skipping a user message
	sdk.closeConversationSession(data, cb);
}

플랫폼 버전 8.0 릴리스 후, User Meta Tags, Message Meta Tags 및 Session Meta Tags를 추가할 수 있습니다. 다음은 필요한 페이로드에 대한 구문입니다.

metaTags":{
     "userMetaTags":[
        {
            "name":"<string>",
           "value":"<string>"
       }
    ],
   "sessionMetaTags":[
      {
         "name":"<string>",
         "value":"<string>"
      }
    ],
 "messageMetaTags":[
     {
          "name":"<string>",
          "value":"<string>"
     }
  ]
}

BotKit SDK용 함수

Kore.ai BotKit SDK는 봇을 더 잘 제어하고 사용자 경험을 개선하는 데 사용할 수 있는 함수를 제공합니다.
BotKit SDK는 다음 함수를 지원합니다.

sdk.sendUserMessage

이 함수는 봇 사용자에게 메시지를 보냅니다.
사용법
on_bot_message 이벤트 콜백 내부에서 사용됩니다. on_bot_message 이벤트는 봇이 사용자에게 응답을 보낼 때 호출됩니다. SDK에서, message와 같은 페이로드 데이터는 수정한 후 봇 플랫폼으로 보낼 수 있습니다.
구문

sdk.sendUserMessage(payload, callback)

매개변수:

  • payload – 다음과 같은 JSON 응답 페이로드.
     {
       "message":"Spell-corrected message sent by bot to the user",
       "originalMessage":"Original message sent by bot to the user",
       "taskId":"Dialog task ID",
       "nodeId":"Current node ID in the dialog flow",
       "channel":"Channel name",
       "context": <context object>
    }
    

    위의 메시지 페이로드는 사용자 언어가 감지되고 철자 수정이 완료된 경우입니다. 사용자 언어가 감지되지 않는 경우, 메시지 구조는 다음과 같습니다

     {
       "message":"Original message sent by bot to the user",
       "originalMessage":"Original message sent by bot to the user",
       "languageInfo": {
            "currentLanguage": "current user language",
            "detectedLanguages": [
                "language detected 1",
                "language detected 2"
            ],
            "spellCorrectedInput": [
                "language 1": "spell correction in language 1",
                "language 2": "spell correction in language 2"
            ]
         }
    }
  • callback – 업데이트된 메시지와 컨텍스트를 봇 플랫폼으로 다시 전송하는 데 사용되는 이벤트 완료 시 호출하는 함수.

예시
다음 코드 조각은 사용자에게 오류를 반환하는 sdk.sendUserMessage 함수의 예시를 보여줍니다.

return sdk.sendUserMessage(payload, function(err){
    if(err)
       console.log("err", err);

다음 코드 예시에서는, 사용자가 라이브 상담사로 전환될 때 사용자에게 초기 메시지가 표시됩니다.

    formdata.welcome_message = "";
    var visitorId = _.get(payload, 'channel.channelInfos.from');
    if (!visitorId) {
        visitorId = _.get(payload, 'channel.from');
    }
    visitorId = payload.context.session.UserContext._id;
    userDataMap[visitorId] = payload;
    data.message = "An Agent will be assigned to you shortly!!!";
    sdk.sendUserMessage(payload, callback);

다음 코드 예시에서는, sdk.sendUserMessage 함수와 함께 사용자에게 보내는 메시지는 통화 변환을 위해 사용자 선택에 기반합니다. isTemplate 매개변수는 사용자 정의 형식 또는 기본 메시지 형식 중 어느 것을 사용할지 여부를 결정합니다.

    on_user_message : function(requestId, payload, callback) {
		message = payload.message.toLowerCase();console.log("MESSAGE",payload.message);
		//payload .context.session.BotContext.currency = "koko";
		if ( message == "Yes" || message == "yes")
		{
			var overrideMessagePayload = {
				body : " Enter the currency code for which the amount will be converted",
				isTemplate :false
			};
			data.overrideMessagePayload = overrideMessagePayload;
			currCode = true;
			return sdk.sendUserMessage(payload);
		}
		else if ( message == "No" || message == "no" )
		{
			 var overrideMessagePayload = {
				body : "Ok, Enter the country name so that I can fetch it on your behalf",
				isTemplate :false
			};
			payload.overrideMessagePayload = overrideMessagePayload;
			countryname = true;
			return sdk.sendUserMessage(payload);

플랫폼 버전 8.0 릴리스 후, User Meta Tags, Message Meta Tags 및 Session Meta Tags를 추가할 수 있습니다. 다음은 필요한 페이로드에 대한 구문입니다.

metaTags":{
     "userMetaTags":[
        {
            "name":"<string>",
           "value":"<string>"
       }
    ],
   "sessionMetaTags":[
      {
         "name":"<string>",
         "value":"<string>"
      }
    ],
 "messageMetaTags":[
     {
          "name":"<string>",
          "value":"<string>"
     }
  ]
}

sdk.sendBotMessage

이 함수는 봇에게 메시지를 보냅니다.
사용법
on_user_message 이벤트 콜백 내부에서 사용됩니다. on_user_message 이벤트는 사용자가 봇에게 메시지를 보낼 때 호출됩니다. SDK에서, message와 같은 페이로드 데이터는 수정한 후 봇 플랫폼으로 보낼 수 있습니다.
사용자 메시지에 대해 유효성 검사가 수행됩니다. 메시지는 3,000자를 초과할 수 없으며 각 단어는 1,200자를 초과할 수 없습니다.
구문:

sdk.sendBotMessage(payload, callback)

매개변수:

  • payload – 다음과 같은 JSON 응답 페이로드.
    { "message":"Message sent by the user", "channel":"Channel name", "context": <context object> }
  • callback – 업데이트된 메시지와 컨텍스트를 봇 플랫폼으로 다시 전송하는 데 사용되는 이벤트 완료 시 호출하는 함수.

예시
다음 코드 조각은 봇에게 사용자 응답을 보냅니다.

 {
   "message":"Message sent by the user",
   "channel":"Channel name",
   "context": <context object>
}

on_user_message 함수에서, 메시지는 사용자에게 직접 반환되며, 라이브 상담사로 전환되지 않으면, 봇으로 보냅니다.

    on_user_message: function(requestId, payload, callback) {
        sdk.sendBotMessage(payload, callback);
    },

플랫폼 버전 8.0 릴리스 후, User Meta Tags, Message Meta Tags 및 Session Meta Tags를 추가할 수 있습니다. 다음은 필요한 페이로드에 대한 구문입니다.

    on_user_message: function(requestId, payload, callback) {
        if (payload.message === "Hi") {
            payload.message = "Hello";
            //Sends back 'Hello' to user.
            return sdk.sendUserMessage(payload, callback);
        } else if (!payload.agent_transfer) {
            //Forward the message to bot
            return sdk.sendBotMessage(payload, callback);
        } else {
            payload.message = "Agent Message";
            return sdk.sendUserMessage(payload, callback);
        }
    };

sdk.AsyncResponse

이 함수는 봇 플랫폼으로 보낼 비동기식 응답을 준비합니다.
사용법
대화 작업 실행 흐름이 webhook 노드에 도달하는 경우, 봇 플랫폼은 SDK에 대한 on_webhook 이벤트 호출을 수행합니다. on_webhook 이벤트 호출은 두 가지 유형의 응답을 지원합니다.

  • 동기식 응답 – 비즈니스 로직 실행이 허용 가능한 시간 내에 완료될 수 있는 경우, SDK는 callback(null, payload) 함수를 사용하여 동기적으로 응답할 수 있습니다.
  • 비동기식 응답 – 비즈니스 로직 실행에 더 많은 시간이 필요한 경우, SDK는 callback(null, new sdk.AsyncResponse()) 함수를 호출하고 HTTP 코드 202를 봇 플랫폼으로 전송하여 비동기식 응답을 봇 플랫폼으로 보낼 수 있습니다. 응답이 준비되면, SDK는 sdk.respondToHook(payload) 함수를 호출할 수 있습니다.

구문:

sdk.AsyncResponse()
callback(null, new sdk.AsyncResponse())

매개변수:
없음.
예시
on_webhook 함수의 예시에서는, 봇이 사용자가 선택한 택시의 예약을 비동기식으로 대기합니다.

on_webhook : function(requestId, payload, componentName, callback) {
        var context = payload.context;
        if (componentName === 'FindNearbyCabs') {
            findCabs()
                .then(function(cabList) {
                    context.cabList = cabList;
                    callback(null, data);
                });
        } else if (componentName === 'BookTheCab') {
            sdk.saveData(requestId, payload)
                .then(function() {
                    bookTheCab(requestId, context.entities.selectedCab.id, context.session.UserSession.location, context.entities.whereTo);
                    callback(null, new sdk.AsyncResponse());
                });
        }
    }

sdk.respondToHook

이 함수는 봇 플랫폼으로 webhook 응답을 보냅니다.
사용법
대화 작업 실행 흐름이 webhook 노드에 도달하는 경우, 봇 플랫폼은 SDK에 대한 on_webhook 이벤트 호출을 수행합니다. on_webhook 이벤트 호출은 두 가지 유형의 응답을 지원합니다.

  • 동기식 응답 – 비즈니스 로직 실행이 허용 가능한 시간 내에 완료될 수 있는 경우, SDK는 callback(null, payload) 함수를 사용하여 동기적으로 응답할 수 있습니다.
  • 비동기식 응답 – 비즈니스 로직 실행에 더 많은 시간이 필요한 경우, SDK는 callback(null, new sdk.AsyncResponse()) 함수를 호출하고 HTTP 코드 202를 봇 플랫폼으로 전송하여 비동기식 응답을 봇 플랫폼으로 보낼 수 있습니다. 응답이 준비되면, SDK는 sdk.respondToHook(payload) 함수를 호출할 수 있습니다.

구문:

sdk.respondToHook(payload)

매개변수:

  • payload – 다음과 같은 JSON 응답 페이로드.
     {
       "taskId":"Dialog task ID",
       "nodeId":"Current node ID in the dialog flow",
       "channel":"Channel name",
       "context": <context object>
    }

예시
다음 코드 조각에서는, 택시 예약이 실패하면, 이벤트가 동기식으로 처리됩니다. 반대로, 택시 예약은 webhook을 통해 비동기식으로 처리됩니다.

function onBookingFailure(requestId) {
    sdk.getSavedData(requestId)
        .then(function(payload) {
            payload.context.successful = false;
            sdk.respondToHook(payload);
        });
}
//call cabBookingService with the requestId. This service is expected to respond asynchronously.
//'requestId' must be passed along all asynchronous flows, to allow the BotKit to respond
// back to the hook once the async process is completed.
function bookTheCab(requestId, cabId, userLoc, destination) {
    cabBookingService(requestId, cabId, userLoc, destination, {
        on_success: onBookingSuccess,
        on_failure: onBookingFailure
    });
}

sdk.registerBot

이 함수는 봇을 등록하고 실행 시 콜백 이벤트를 사용할 수 있도록 합니다.
사용법
BotKit SDK는 각 봇에 대해 하나의 Node.js 파일을 생성하도록 설계되었습니다. 해당 봇의 모든 콜백은 Node.js 파일에서 유지 관리됩니다. 봇을 등록하려면, 다음 변수와 함수를 다음과 같이 내보내야 합니다.

module.exports = {
      botId : “xxxxx”,
      botName : ““xxxxx”,
      on_user_message : function(requestId, data, callback) {
           //code goes here
      },
      on_bot_message : function(requestId, data, componentName, callback) {
           //code goes here
      },
     on_webhook : function(requestId, data, componentName, callback) {
           //code goes here
      },
}

구문:
봇을 등록하려면, 다음을 호출합니다

sdk.registerBot(require('./<Bot Name>.js'));

매개변수:

  • 등록할 봇의 Node.js 파일

예시
다음 코드 예시에서는 botIdbotName를 사용한 봇의 등록을 보여줍니다.

module.exports = {
    botId : botId,
    botName : botName,
    on_user_message : function(requestId, payload, callback) {
        debug('on_user_message');
        onUserMessage(requestId, payload, callback);
    },
    on_bot_message : function(requestId, payload, callback) {
        debug('on_bot_message');
        onBotMessage(requestId, payload, callback);
    },
    on_agent_transfer : function(requestId, payload, callback) { console.log("on agent transfer event");
        debug('on_webhook');
        onAgentTransfer(requestId, payload, callback);
    },
    gethistory: gethistory
};

sdk.saveData

이 함수는 Redis 인메모리 데이터 구조 저장소에 데이터를 저장합니다.
사용법
on_webhook 이벤트 호출에 비동기식으로 응답하는 경우, requestId를 사용하여 Redis 저장소에 페이로드를 저장할 수 있습니다. 비즈니스 로직 실행을 완료한 후, webhook 응답을 준비하는 동안 sdk.getSavedData(requestId)function 함수를 사용하여 데이터를 읽을 수 있습니다.
구문:

sdk.saveData(requestId, payload)

매개변수:

  • requestId – 비동기식 on_webhook 이벤트 호출의 requestId.
  • payload – 다음과 같은 JSON 응답 페이로드.
     {
       "taskId":"Dialog task ID",
       "nodeId":"Current node ID in the dialog flow",
       "channel":"Channel name",
       "context": <context object>
    }

예시
이 on_webhook 이벤트에서는, 택시 예약 요청이 Redis 스토어에 저장되고 예약의 비동기식 처리가 시작됩니다.

on_webhook : function(requestId, payload, componentId, callback) {
        var context = data.context;
        if (componentId === 'FindNearbyCabs') {
            findCabs()
                .then(function(cabList) {
                    context.cabList = cabList;
                    callback(null, payload);
                });
        } else if (componentName === 'BookTheCab') {
            sdk.saveData(requestId, payload)
                .then(function() {
                    //Assuming the cab booking was successful. A mock service to book the cab can be called here.
                    payload.successful = 'true';
                    payload.bookedCab = context.entities.selectedCab || {};
                    callback(null, payload);
                });
        }
    }

sdk.getSavedData

이 함수는 Redis 인메모리 데이터 구조 저장소에서 데이터를 읽습니다.
사용법
on_webhook 이벤트 호출에 비동기식으로 응답하는 경우, requestId를 사용하여 Redis 저장소에 페이로드를 저장할 수 있습니다. 비즈니스 로직 실행을 완료한 후, webhook 응답을 준비하는 동안 sdk.getSavedData(requestId)function 함수를 사용하여 데이터를 읽을 수 있습니다.
구문:

sdk.getSavedData(requestId, payload)

매개변수:

  • requestId – 비동기식 on_webhook 이벤트 호출의 requestId.
  • payload – 다음과 같은 JSON 응답 페이로드.
     {
       "taskId":"Dialog task ID",
       "nodeId":"Current node ID in the dialog flow",
       "channel":"Channel name",
       "context": <context object>
    }

예시
이 코드 예시에서, sdk.getSavedData 함수는 선택한 택시와 예약 정보를 반환하는 데 사용되거나, 비동기식 예약 webhook 이벤트가 실패하는 경우, 선택한 예약에 대한 실패 메시지를 사용자에게 보냅니다.

/*/
 * Responds to the webhook asynchronously with the success flag.
 */
function onBookingSuccess(requestId) {
    sdk.getSavedData(requestId)
        .then(function(payload) {
            payload.context.bookedCab = payload.entities.selectedCab;
            payload.context.successful = true;
            sdk.respondToHook(payload);
        });
}
function onBookingFailure(requestId) {
    sdk.getSavedData(requestId)
        .then(function(payload) {
            payload.context.successful = false;
            sdk.respondToHook(payload);
        });
}

sdk.getMessages

이 함수는 봇과 사용자 간에 이전 대화 기록을 가져올 때 사용됩니다. 공용 API 대화 기록(대화 기록 API는 여기를 참조하세요)
사용법
봇 과 사용자 간에 대화형 메시지를 시간 역순으로 가져옵니다. 이 API는 페이징을 지원합니다. 오프셋/건너뛰기 및 한 번에 특정 수의 메시지를 가져올 수 있도록 제한을 제공할 수 있습니다.
구문:

sdk.getMessages(requestData, callback)

매개변수:

  • requestData 다음과 같습니다.
    requestData.baseUrl + '/getMessages?' + "skip=" + offset + "&limit=" + limit + "&userId=" + userId+"&channelType"=channel-type

    위치

    • stream_id – 봇 빌더의 구성 설정 페이지에서 접근할 수 있는 봇 ID
    • user_id – 대화 기록에 접근할 수 있는 사용자 ID
    • skip – 건너뛸 메시지 수입니다.
    • limit – 각 페이지에 표시할 메시지 수.
    • channelType – 옵션, 대화가 호스팅 된 채널.
  • callback – 메시지 기록을 봇 플랫폼으로 다시 전송하는 데 사용되는 이벤트 완료 시 호출하는 함수.

//this example is from the LiveChat.js
//where the gethistory() function uses getMessage() to extract the messages
    var userId = req.query.userId;
    var data = userDataMap[userId];
    if(data) {
        data.limit = 100;
        return sdk.getMessages(data, function(err, resp){
            if(err){
                res.status(400);
                return res.json(err);
            }
            var messages = resp.messages;
            res.status(200);
            return res.json(messages);
        });

sdk.clearAgentSession

이 함수는 상담사 세션을 지우고 봇과의 대화를 다시 설정하는 데 사용됩니다.
사용법
상담사 전환 시나리오에서, 상담사가 사용자와의 대화를 종료하면, 타사 공급자로부터 chat_closed 이벤트가 실행됩니다. 이러한 경우, 이 함수는 봇과 대화를 다시 설정하기 위해 호출됩니다
구문:

sdk.clearAgentSession(requestData, callback)

매개변수:

  • requestData 다음과 같습니다.
    requestData.baseUrl+ '/clearAgentSession/' + requestData.requestId

    위치

    • requestId – 세션 id
  • callback – 이벤트 완료 시 호출할 함수.

//this example is from the LiveChat.js
//where the function is invoked to clear agent session when the chat is closed by the user
    if (event.type==="chat_closed"){
       console.log('chat_closed');
       delete userResponseDataMap[visitorId];
       delete _map[visitorId];
       sdk.clearAgentSession(data);
    }

플랫폼 버전 8.0 릴리스 후, User Meta Tags, Message Meta Tags 및 Session Meta Tags를 추가할 수 있습니다. 다음은 필요한 페이로드에 대한 구문입니다.

metaTags":{
     "userMetaTags":[
        {
            "name":"<string>",
           "value":"<string>"
       }
    ],
   "sessionMetaTags":[
      {
         "name":"<string>",
         "value":"<string>"
      }
    ],
 "messageMetaTags":[
     {
          "name":"<string>",
          "value":"<string>"
     }
  ]
}

sdk.startAgentSession

이 함수는 상담사 세션이 시작되었음을 플랫폼에 알리는 데 사용됩니다.
사용법
이 함수는 상담사 전환이 시작되고 상담사 전환이 진행 중임을 봇에게 알리려는 경우에 사용됩니다. 다음으로, 예를 들어, onMessages()에서 BotKit이 받은 데이터 개체는 상담사 세션을 true로 가집니다. 또한, sdk.clearAgentSession이 BotKit에서 호출되면, 플랫폼은 상담사 세션이 완료되었음을 알리고 BotKit이 받은 데이터 개체는 상담사 세션을 false로 설정합니다.
구문:

sdk.startAgentSession(requestData, callback)

매개변수:

  • requestData 다음과 같습니다.
    requestData.baseUrl + '/startAgentSession/' + requestData.requestId

    위치

    • requestId – 세션 id
  • callback – 이벤트 완료 시 호출할 함수.

//The following function call is used in the LiveChat.js for connectToAgent() function
//Invoking the startAgentSession before invoking the initChat function will ensure that
// the Bot is aware of the Agent transfer in progress
function connectToAgent(requestId, data, cb){
    var formdata = {};
    formdata.licence_id = config.liveagentlicense;
    formdata.welcome_message = "";
    var visitorId = _.get(data, 'channel.channelInfos.from');
    if(!visitorId){
       visitorId = _.get(data, 'channel.from');
      }
    userDataMap[visitorId] = data;
     data.message="An Agent will be assigned to you shortly!!!";
     sdk.sendUserMessage(data, cb);
     sdk.startAgentSession(data, cb);
    formdata.welcome_message = "Link for user Chat history with bot: "+ config.app.url +"/history/index.html?visitorId=" + visitorId;
    return api.initChat(visitorId, formdata)
     .then(function(res){
     _map[visitorId] = {
     secured_session_id: res.secured_session_id,
     visitorId: visitorId,
     last_message_id: 0
    };
   });
 }

플랫폼 버전 8.0 릴리스 후, User Meta Tags, Message Meta Tags 및 Session Meta Tags를 추가할 수 있습니다. 다음은 필요한 페이로드에 대한 구문입니다.

metaTags":{
     "userMetaTags":[
        {
            "name":"<string>",
           "value":"<string>"
       }
    ],
   "sessionMetaTags":[
      {
         "name":"<string>",
         "value":"<string>"
      }
    ],
 "messageMetaTags":[
     {
          "name":"<string>",
          "value":"<string>"
     }
  ]
}

sdk.resetBot

이 함수는 컨텍스트를 지우고 현재 세션을 묵시적으로 삭제하는 데 사용됩니다.
사용법
실행 시, 대화 실행 중에, 사용자 입력이 “reset bot” 명령어를 사용하여 봇을 지우려는 경우. 컨텍스트가 지워지고 작업이 삭제됩니다.
구문:

sdk.resetBot(requestData, callback)

매개변수:

  • requestData 다음과 같습니다.
    requestData.resetBotUrl
  • callback – 이벤트 완료 시 호출할 함수.

on_user_message : function(requestId, data, callback) {
     if (data.message==="reset bot"){
	sdk.resetBot(data, callback);
      }

sdk.extendRequestId

이 함수는 botKit이 플랫폼으로 메시지를 보내는 데 할당된 시간을 연장하는 데 사용됩니다.
사용법
이 함수는 상담사 전환이 시작되고 얼마 후 플랫폼이 메시지를 수신하지 못할 때 사용됩니다. 이것은 botKit이 플랫폼으로 메시지를 보내는 데 할당된 시간을 연장하여 해결할 수 있습니다.
구문:

sdk.extendRequestId(requestData, callback)

function onBotMessage(requestId, data, cb) {
    console.log("bot message",JSON.stringify(data));
    var visitorId = _.get(data, 'channel.from');
     event =  schedular.scheduleJob("*/4 * * * *", function() {
                pub.get(visitorId+':data',function(err,reply){
                    if(err) throw err;
                    sdk.extendRequestId(data,cb);
                })
    });
	}
 on_user_message: function(requestId, data, callback) { 
        var visitorId = _.get(data, 'channel.from');
        registerEvent(visitorId, data);
        if(event){
            event.cancel();
        }else{
            console.log(new Date(),'event not found');
        }
        event =  schedular.scheduleJob("*/4 * * * *", function() {
            pub.get(visitorId+':data',function(err,reply){
                if(err) throw err;
                    sdk.extendRequestId(data,callback);
            })
        });

참고: 15분 동안 활성 대화가 없는 경우 시간을 연장하는 것은 효과적이지 않습니다. 세션이 비활성화되면 불문하고 agent_transfer 모드가 재설정됩니다.

sdk.skipBotMessage

이 기능은 특정 비즈니스 사용 사례의 특정 메시지를 건너뛸 때 사용합니다.
사용법
실행 시, 대화 실행 중에, BotKit이 메시지를 보내고 계속 진행하기를 기다리는 대신, 시스템은 다음 단계로 진행합니다.

구문:

sdk.skipBotMessage(requestData, callback)

매개변수:

  • requestData – 데이터
  • callback – 이벤트 완료 시 호출할 함수.

if(data.message === "skipBotMessage"){ // condition for skipping a Bot message
	sdk.skipBotMessage(data, cb);
}

플랫폼 버전 8.0 릴리스 후, User Meta Tags, Message Meta Tags 및 Session Meta Tags를 추가할 수 있습니다. 다음은 필요한 페이로드에 대한 구문입니다.

metaTags":{
     "userMetaTags":[
        {
            "name":"<string>",
           "value":"<string>"
       }
    ],
   "sessionMetaTags":[
      {
         "name":"<string>",
         "value":"<string>"
      }
    ],
 "messageMetaTags":[
     {
          "name":"<string>",
          "value":"<string>"
     }
  ]
}

sdk.skipUserMessage

이 기능은 특정 비즈니스 사용 사례의 특정 메시지를 건너뛸 때 사용합니다.
사용법
실행 시, 대화 실행 중에, BotKit이 확인 메시지를 보내고 계속 진행하기를 기다리는 대신, 시스템은 다음 단계로 진행합니다.
구문:

sdk.skipUserMessage(requestData, callback)

매개변수:

  • requestData – 데이터
  • callback – 이벤트 완료 시 호출할 함수.

if(data.message === "skipUserMessage"){ // condition for skipping a user message
	sdk.skipUserMessage(data, cb);
}

플랫폼 버전 8.0 릴리스 후, User Meta Tags, Message Meta Tags 및 Session Meta Tags를 추가할 수 있습니다. 다음은 필요한 페이로드에 대한 구문입니다.

metaTags":{
     "userMetaTags":[
        {
            "name":"<string>",
           "value":"<string>"
       }
    ],
   "sessionMetaTags":[
      {
         "name":"<string>",
         "value":"<string>"
      }
    ],
 "messageMetaTags":[
     {
          "name":"<string>",
          "value":"<string>"
     }
  ]
}

sdk.closeConversationSession

이 함수는 대화 세션을 종료하는 데 사용됩니다.
사용법
구문:

sdk.closeConversationSession(requestData, callback)

매개변수:

  • requestData – 데이터
  • callback – 이벤트 완료 시 호출할 함수.

if(data.message === "closeConversationSession"){ // condition for skipping a user message
	sdk.closeConversationSession(data, cb);
}

플랫폼 버전 8.0 릴리스 후, User Meta Tags, Message Meta Tags 및 Session Meta Tags를 추가할 수 있습니다. 다음은 필요한 페이로드에 대한 구문입니다.

metaTags":{
     "userMetaTags":[
        {
            "name":"<string>",
           "value":"<string>"
       }
    ],
   "sessionMetaTags":[
      {
         "name":"<string>",
         "value":"<string>"
      }
    ],
 "messageMetaTags":[
     {
          "name":"<string>",
          "value":"<string>"
     }
  ]
}
메뉴