GETTING STARTED
Kore.ai XO Platform
Virtual Assistants Overview
Natural Language Processing (NLP)
Concepts and Terminology
Quick Start Guide
Accessing the Platform
Navigating the Kore.ai XO Platform
Building a Virtual Assistant
Help & Learning Resources
Release Notes
Current Version
Recent Updates
Previous Versions
CONCEPTS
Design
Storyboard
Overview
FAQs
Conversation Designer
Overview
Dialog Tasks
Mock Scenes
Dialog Tasks
Overview
Navigate Dialog Tasks
Build Dialog Tasks
Node Types
Overview
Intent Node
Dialog Node
Dynamic Intent Node
GenAI Node
GenAI Prompt
Entity Node
Form Node
Confirmation Node
Message Nodes
Logic Node
Bot Action Node
Service Node
Webhook Node
Script Node
Process Node
Agent Transfer
Node Connections
Node Connections Setup
Sub-Intent Scoping
Entity Types
Entity Rules
User Prompts or Messages
Voice Call Properties
Knowledge AI
Introduction
Knowledge Graph
Introduction
Terminology
Build a Knowledge Graph
Manage FAQs
Knowledge Extraction
Import or Export Knowledge Graph
Prepare Data for Import
Importing Knowledge Graph
Exporting Knowledge Graph
Auto-Generate Knowledge Graph
Knowledge Graph Analysis
Answer from Documents
Alert Tasks
Small Talk
Digital Skills
Overview
Digital Forms
Digital Views
Introduction
Widgets
Panels
Session and Context Variables
Context Object
Intent Discovery
Train
NLP Optimization
ML Engine
Overview
Model Validation
FM Engine
KG Engine
Traits Engine
Ranking and Resolver
Training Validations
NLP Configurations
NLP Guidelines
LLM and Generative AI
Introduction
LLM Integration
Kore.ai XO GPT Module
Prompts & Requests Library
Co-Pilot Features
Dynamic Conversations Features
Intelligence
Introduction
Event Handlers
Contextual Memory
Contextual Intents
Interruption Management
Multi-intent Detection
Amending Entities
Default Conversations
Conversation Driven Dialog Builder
Sentinment Management
Tone Analysis
Default Standard Responses
Ignore Words & Field Memory
Test & Debug
Overview
Talk to Bot
Utterance Testing
Batch Testing
Conversation Testing
Conversation Testing Overview
Create a Test Suite
Test Editor
Test Case Assertion
Test Case Execution Summary
Glossary
Health and Monitoring
NLP Health
Flow Health
Integrations
Actions
Actions Overview
Asana
Configure
Templates
Azure OpenAI
Configure
Templates
BambooHR
Configure
Templates
Bitly
Configure
Templates
Confluence
Configure
Templates
DHL
Configure
Templates
Freshdesk
Configure
Templates
Freshservice
Configure
Templates
Google Maps
Configure
Templates
Here
Configure
Templates
HubSpot
Configure
Templates
JIRA
Configure
Templates
Microsoft Graph
Configure
Templates
Open AI
Configure
Templates
Salesforce
Configure
Templates
ServiceNow
Configure
Templates
Stripe
Configure
Templates
Shopify
Configure
Templates
Twilio
Configure
Templates
Zendesk
Configure
Templates
Agents
Agent Transfer Overview
Custom (BotKit)
Drift
Genesys
Intercom
NiceInContact
NiceInContact(User Hub)
Salesforce
ServiceNow
Configure Tokyo and Lower versions
Configure Utah and Higher versions
Unblu
External NLU Adapters
Overview
Dialogflow Engine
Test and Debug
Deploy
Channels
Publishing
Versioning
Analyze
Introduction
Dashboard Filters
Overview Dashboard
Conversations Dashboard
Users Dashboard
Performance Dashboard
Custom Dashboards
Introduction
Custom Meta Tags
Create Custom Dashboard
Create Custom Dashboard Filters
LLM and Generative AI Logs
NLP Insights
Task Execution Logs
Conversations History
Conversation Flows
Conversation Insights
Feedback Analytics
Usage Metrics
Containment Metrics
Universal Bots
Introduction
Universal Bot Definition
Universal Bot Creation
Training a Universal Bot
Universal Bot Customizations
Enabling Languages
Store
Manage Assistant
Team Collaboration
Plan & Usage
Overview
Usage Plans
Templates
Support Plans
Invoices
Authorization
Conversation Sessions
Multilingual Virtual Assistants
Get Started
Supported Components & Features
Manage Languages
Manage Translation Services
Multiingual Virtual Assistant Behavior
Feedback Survey
Masking PII Details
Variables
Collections
IVR Settings
General Settings
Assistant Management
Manage Namespace
Data
Overview
Data Table
Table Views
App Definitions
Data as Service
HOW TOs
Build a Travel Planning Assistant
Travel Assistant Overview
Create a Travel Virtual Assistant
Design Conversation Skills
Create an ‘Update Booking’ Task
Create a Change Flight Task
Build a Knowledge Graph
Schedule a Smart Alert
Design Digital Skills
Configure Digital Forms
Configure Digital Views
Train the Assistant
Use Traits
Use Patterns
Manage Context Switching
Deploy the Assistant
Use Bot Functions
Use Content Variables
Use Global Variables
Use Web SDK
Build a Banking Assistant
Design Conversation Skills
Create a Sample Banking Assistant
Create a Transfer Funds Task
Create a Update Balance Task
Create a Knowledge Graph
Set Up a Smart Alert
Design Digital Skills
Configure Digital Forms
Configure Digital Views
Add Data to Data Tables
Update Data in Data Tables
Add Data from Digital Forms
Train the Assistant
Composite Entities
Use Traits
Use Patterns for Intents & Entities
Manage Context Switching
Deploy the Assistant
Configure an Agent Transfer
Use Assistant Functions
Use Content Variables
Use Global Variables
Intent Scoping using Group Node
Analyze the Assistant
Create a Custom Dashboard
Use Custom Meta Tags in Filters
Migrate External Bots
Google Dialogflow Bot
APIs & SDKs
API Reference
API Introduction
Rate Limits
API List
koreUtil Libraries
SDK Reference
SDK Introduction
Web SDK
How the Web SDK Works
SDK Security
SDK Registration
Web Socket Connect and RTM
Tutorials
Widget SDK Tutorial
Web SDK Tutorial
BotKit SDK
BotKit SDK Deployment Guide
Installing the BotKit SDK
Using the BotKit SDK
SDK Events
SDK Functions
Tutorials
BotKit - Blue Prism
BotKit - Flight Search Sample VA
BotKit - Agent Transfer
  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>"
     }
  ]
}
메뉴