CTIOperationResponse - 범위가 지정됨, 전역
CTIOperationResponse 스크립트 포함은 현재 CTIOperationResponse 개체에 대한 데이터를 설정하고 가져오는 메서드를 제공합니다.
CTIOperationResponse 개체를 사용하여 프레임워크 내의 ServiceNow 음성 작업 처리기와 메시지 변환기 간에 정보를 전달합니다.
일반적으로 작업 처리기는 연결된 요청을 처리할 때 CTIOperationResponse 개체의 값을 설정해야 합니다. 그런 다음 메시지 변환기는 CTIOperationRequest 개체에서 값을 가져오고 CTI(컴퓨터 전화 통신 통합자) 공급자로 다시 전송되는 CTI 관련 페이로드를 빌드합니다.
- Amazon Web Services(AWS) Lambda 프록시(AWS Lambda 함수 호출)
- AWS Lex 봇(고객 입력 가져오기)
다음 작업 처리기 스크립트는 다양한 CTIOperationResponse 메서드를 사용하여 CTIOperationResponse 개체에 값을 설정하는 방법을 보여 줍니다.
(function(/*CTIOperationRequest*/ request, /*CTIOperationResponse*/ response) {
try {
var state = request.getParameter('$state');
if(!state) {
state = 'new';
}
var phone = request.getParameter('contact.phone');
var username = request.getParameter('contact.username');
var someDataPresent = phone || username;
if(!someDataPresent) {
throw 'phone or username must be supplied';
}
if('new' === state) {
var userGr = null;
if(phone || username) {
userGr = new GlideRecordSecure('sys_user');
var qc = null;
if(phone) {
qc = userGr.addQuery('phone', phone);
qc.addOrCondition('mobile_phone', phone);
qc.addOrCondition("home_phone", phone);
}
if(username) {
if(qc) {
qc.addOrCondition('user_name', username);
} else {
qc = userGr.addQuery('user_name', username);
}
}
// If there was criteria then run the query
if(qc) {
userGr.query();
} else {
userGr = null;
}
}
var foundUser = userGr && userGr.next();
var phonelogGr = new GlideRecord('sn_openframe_phone_log');
phonelogGr.initialize();
phonelogGr.setValue('call_id', request.getParameter('contact.id'));
phonelogGr.setValue('phone_number', phone);
if(foundUser) {
phonelogGr.setValue('contact', userGr.getUniqueValue());
}
phonelogGr.insert();
var interactionGr = new GlideRecordSecure('interaction');
interactionGr.initialize();
interactionGr.setValue('type', 'phone');
interactionGr.setValue('short_description', 'User Contact via Phone: ' + phone);
interactionGr.setValue('channel_metadata_table', 'sn_openframe_phone_log');
interactionGr.setValue('channel_metadata_document',phonelogGr.getUniqueValue());
if(foundUser) {
interactionGr.setValue('opened_for', userGr.getUniqueValue());
response.setSessionAttribute('snc_user_first_name', userGr.getValue('first_name'));
response.setSessionAttribute('snc_user_last_name', userGr.getValue('last_name'));
response.setSessionAttribute('snc_user_sys_id', userGr.getUniqueValue());
} else {
response.setSessionAttribute('snc_user_sys_id', "USER_NOT_FOUND");
}
interactionGr.setValue('state', 'new');
var interactionId = interactionGr.insert();
response.setStatusCode(200);
response.setMessage('success');
response.setSessionAttribute('interactionTable', 'interaction');
response.setSessionAttribute('interactionId', interactionId);
}
} catch(e) {
ctx.setError(e);
}
})(request, response);작업 핸들러 생성에 대한 자세한 내용은 을 참조하십시오자동화된 호출자 상호작용을 위한 연락처 플로우 구성.
다음 메시지 변환기 스크립트는 CTIOperationResponse 개체에 설정된 값을 가져와서 CTI 특정 페이로드에 저장한 다음 CTI 공급자에게 다시 전송됩니다.
(function (/*CTIOperationResponse*/operationResponse, /*HTTPResponse*/ httpResponse) {
// AWS Connect Lambda expects name value pairs only
var out = {};
for(var k in operationResponse.getSessionAttributes()) {
out[k] = operationResponse.getSessionAttributes()[k];
}
out.statusCode = operationResponse.getStatusCode();
out.message = operationResponse.getMessage();
httpResponse.setBody(out);
})(operationResponse, httpResponse);이 스크립트 포함은 sn_cti_core 네임스페이스에서 실행됩니다. CTIOperationRequest 스크립트 포함 ServiceNow 음성 에 액세스하려면 먼저 Core(sn_cti_core) 플러그인을 설치해야 합니다. 이 설치에 대한 자세한 내용은 ServiceNow 음성 애플리케이션 설치를 참조하십시오.
에 ServiceNow 음성대한 자세한 내용은 ServiceNow Voice를 참조하십시오.
CTIOperationResponse - CTIOperationResponse(문자열 원본)
CTIOperationResponse 개체를 인스턴스화합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
var response = new sn_cti_core.CTIOperationResponse();
response.setMinorVersion(3);
CTIOperationResponse - getAuthToken()
CTIOperationResponse 개체에 설정된 인증 토큰을 반환합니다.
이 토큰은 처리기 auth_required 의 플래그가 true로 설정된 경우 프레임워크에서 ServiceNow 음성 요청된 작업 처리기를 실행하기 전에 현재 ServiceNow 음성 사용자를 인증하는 데 사용됩니다. 플래그는 auth_required 운영 핸들러 [sn_cti_operation_handler] 테이블의 필드입니다. 인증 토큰의 수명은 통화 세션의 수명 동안이어야 하지만 CTI 제공자에 의해 결정됩니다.
고유한 인증 작업 처리기를 만들어 구현에 필요한 모든 인증/권한 부여 처리를 정의할 수 있습니다. 인증 토큰이 생성되는 방법에 관계없이 메시지 번역기는 토큰을 CTI 페이로드에 다시 전달해야 합니다. 또한 CTI 공급자는 이 인증 토큰을 로컬에 저장하고 인증이 필요한 각 작업 요청에 전달해야 합니다.
인스턴스 제공 인증 작업 처리기를 사용하는 경우 처리기는 사용자가 입력한 4자리 핀을 기반으로 인증 토큰 만들기를 시작합니다. 그런 다음 CTIOperationResponse 개체의 sessionAttributes 개체에서 인증 토큰을 설정합니다. 연결된 메시지 변환기는 sessionAttributes 객체를 CTI 특정 페이로드로 변환한 다음 CTI 제공자에게 보냅니다.
- Amazon Web Services(AWS) Lambda 프록시(AWS Lambda 함수 호출)
- AWS Lex 봇(고객 입력 가져오기)
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 문자열 | 이전에 CTIOperationRequest 개체에 설정된 인증 토큰입니다. 설정하지 않으면 null을 반환합니다. |
var response = new sn_cti_core.CTIOperationResponse();
var token = response.getAuthToken();
CTIOperationResponse - getError()
현재 CTIOperationResponse 개체와 연결된 오류 개체를 반환합니다.
이 정보를 사용하여 CTI(컴퓨터 전화 통합 시스템) 제공자에게 반환되는 페이로드를 공식화할 수 있습니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 객체 | 운영 오류 정보입니다. 이 개체의 형식은 CTI 제공자에 의해 결정됩니다. 오류가 없으면 null을 반환합니다. |
(function( /*CTIProviderResponseExecutionContext*/ ctx, /*CTIOperationRequest*/ operationRequest, /*CTIOperationResponse*/ operationResponse, /*HTTPResponse*/ httpResponse) {
var sessionAttributes = {},
intentResponse;
var statusCode = -1;
var message = 'Unprocessed';
if (operationResponse) {
statusCode = operationResponse.getStatusCode();
sessionAttributes = operationResponse.getSessionAttributes();
message = operationResponse.getMessage();
var error = operationResponse.getError();
if (error) {
sessionAttributes.error = error;
}
}
if (sn_cti_core.CTIRequestDispatcher.Constants.HTTP.Status.AUTH_REQUIRED.code === statusCode) {
//first call for a secure action without authentication token
sessionAttributes.statusCode = 401;
sessionAttributes.message = message;
intentResponse = {
sessionAttributes: sessionAttributes,
dialogAction: {
type: 'Close',
fulfillmentState: 'Fulfilled',
message: {
contentType: 'PlainText',
content: 'This operation requires authentication. Say authenticate for authentication.'
}
}
};
} else if ('DialogCodeHook' === operationRequest.getParameter('$$invocationSource')) {
//pass back authToken and interactionId
sessionAttributes.authToken = operationRequest.getAuthToken();
sessionAttributes.interactionId = operationRequest.getInteractionSysId();
var originalSlots = operationRequest.getParameter('$$slots');
var responseParameters = operationResponse ? operationResponse.getParameters() : {};
responseParameters = responseParameters ? responseParameters : {};
// See if we processing happened and we got a dialogAction
var responseDialogAction = responseParameters['dialogAction'];
// Default dialog action
var dialogAction = {
type: 'Delegate',
slots: originalSlots
};
// If the response doesn't contain an override replay the inputs
if (responseDialogAction) {
// We bypassed dialoghook so delegate and pass through inputs
dialogAction = responseDialogAction;
}
intentResponse = {
sessionAttributes: sessionAttributes,
dialogAction: dialogAction
};
} else {
// Override required session attributes
sessionAttributes.statusCode = statusCode;
sessionAttributes.message = message;
// Build response template
intentResponse = {
sessionAttributes: sessionAttributes,
dialogAction: {
type: 'Close',
fulfillmentState: 'Fulfilled',
message: {
contentType: 'PlainText',
content: message
}
}
};
}
httpResponse.setBody(intentResponse);
})(ctx, operationRequest, operationResponse, httpResponse);
CTIOperationResponse - getInteractionSysId()
CTIOperationResponse 개체에 설정된 통화 세션과 연결된 상호 작용 기록의 sys_id 반환합니다.
이 메서드를 호출하기 전에 CTIOperationResponse - setInteractionSysId(String Id) 메서드를 호출해야 합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 문자열 | CTIOperationResponse 개체에 설정된 상호 작용 기록의 Sys_id입니다. 상호작용 기록 sys_id 설정되지 않은 경우 메서드는 null을 반환합니다. 테이블: 상호작용 [interaction] |
var request = new sn_cti_core.CTIOperationResponse();
var interactionId = request.getInteractionSysId();
CTIOperationResponse - getMajorVersion()
현재 CTIOperationResponse 개체에 설정된 컴퓨터 전화 통신 통합기(CTI) 소프트웨어의 주 버전을 반환합니다.
소프트웨어 버전에 따라 다른 페이로드가 필요할 수 있으므로 인스턴스에 연결된 ServiceNow CTI 제공자가 여러 버전의 소프트웨어를 실행하는 경우 이 방법을 사용합니다. 페이로드가 소프트웨어 버전 간에 약간만 다른 경우 단일 메시지 변환기만 사용하는 것이 합리적일 수 있습니다. 그런 다음 메시지 변환기 내에서 요청을 수행하는 소프트웨어의 버전만 확인하면 페이로드 차이를 처리할 수 있습니다. 필요한 페이로드가 버전마다 크게 다른 경우 여러 메시지 변환기를 사용하는 것이 더 효과적일 수 있습니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 번호 | CTI 소프트웨어의 주 버전 번호입니다. 주 버전이 설정되지 않은 경우 1을 반환합니다. |
var request = new sn_cti_core.CTIOperationResponse();
var majorVersion = response.getMajorVersion();
CTIOperationResponse - getMessage()
현재 CTIOperationResponse 개체에 설정된 메시지 문자열을 반환합니다.
일반적으로 작업이 완료되면 사용자에게 다시 말하는 메시지입니다. CTIOperationResponse - setMessage(String message) 메서드를 사용하여 이 값을 설정할 수 있습니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 문자열 | 메시지 텍스트입니다. 메시지가 없으면 null을 반환합니다. |
(function (/*CTIOperationResponse*/operationResponse, /*HTTPResponse*/ httpResponse) {
// AWS Connect Lambda expects name value pairs only
var out = {};
for(var k in operationResponse.getSessionAttributes()) {
out[k] = operationResponse.getSessionAttributes()[k];
}
out.statusCode = operationResponse.getStatusCode();
out.message = operationResponse.getMessage();
httpResponse.setBody(out);
})(operationResponse, httpResponse);
CTIOperationResponse - getMinorVersion()
현재 CTIOperationResponse 개체에 설정된 CTI(컴퓨터 전화 통합 시스템) 소프트웨어의 부 버전을 반환합니다.
소프트웨어 버전에 따라 다른 페이로드가 필요할 수 있으므로 인스턴스에 연결된 ServiceNow CTI 제공자가 여러 버전의 소프트웨어를 실행하는 경우 이 방법을 사용합니다. 페이로드가 소프트웨어 버전 간에 약간만 다른 경우 단일 메시지 변환기만 사용하는 것이 합리적일 수 있습니다. 그런 다음 메시지 변환기 내에서 요청을 수행하는 소프트웨어의 버전만 확인하면 페이로드 차이를 처리할 수 있습니다. 필요한 페이로드가 버전마다 크게 다른 경우 여러 메시지 변환기를 사용하는 것이 더 효과적일 수 있습니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 번호 | 이 상호작용과 연결된 페이로드의 부 버전 번호입니다. 부 버전이 설정되지 않은 경우 0을 반환합니다. |
var request = new sn_cti_core.CTIOperationResponse();
var minorVersion = request.getMinorVersion();
CTIOperationResponse - getParameter(문자열 키)
현재 CTIOperationResponse 개체에 이전에 설정된 지정된 키의 값을 반환합니다.
get/set 매개 변수 메서드를 사용하면 작업 처리기와 메시지 변환기 간에 거의 모든 문자열 또는 숫자 값을 전달할 수 있습니다. 매개 변수 개체에는 현재 작업 응답과 직접 상관 관계가 있는 0개 이상의 키/값 데이터 쌍이 포함될 수 있습니다. 작업 핸들러는 이러한 값을 생성할 때 필요한 키/값 쌍을 결정합니다. CTIOperationResponse - setParameter(String key, Object value) 메서드를 사용하여 현재 CTIOperationResponse 개체에 매개 변수를 설정합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 키 | 문자열 | 반환할 키 값의 이름입니다. |
| 유형 | 설명 |
|---|---|
| 문자열 | 전달된 키의 값입니다. 이러한 키가 없으면 null을 반환합니다. |
var request = new sn_cti_core.CTIOperationResponse();
var parm = request.getParameter('contact.phone');
CTIOperationResponse - getParameters()
이전에 현재 CTIOperationResponse 개체에 설정된 모든 매개 변수에 대한 키-값 쌍을 반환합니다.
get/set 매개 변수 메서드를 사용하면 작업 처리기와 메시지 변환기 간에 거의 모든 문자열 또는 숫자 값을 전달할 수 있습니다. 매개 변수 개체에는 현재 작업 응답과 직접 상관 관계가 있는 0개 이상의 키/값 데이터 쌍이 포함될 수 있습니다. 작업 핸들러는 이러한 값을 생성할 때 필요한 키/값 쌍을 결정합니다. CTIOperationResponse - setParameter(String key, Object value) 메서드를 사용하여 현재 CTIOperationResponse 개체에 매개 변수를 설정합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 객체 | 이전에 CTIOperationResponse 개체에 설정된 키-값 쌍의 맵입니다. 이 키-값 쌍은 자유 형식이며 작업 처리기의 필요에 따라 정의됩니다. 반환되는 값은 문자열 또는 숫자입니다. |
(function( /*CTIProviderResponseExecutionContext*/ ctx, /*CTIOperationRequest*/ operationRequest, /*CTIOperationResponse*/ operationResponse, /*HTTPResponse*/ httpResponse) {
var sessionAttributes = {},
intentResponse;
var statusCode = -1;
var message = 'Unprocessed';
if (operationResponse) {
statusCode = operationResponse.getStatusCode();
sessionAttributes = operationResponse.getSessionAttributes();
message = operationResponse.getMessage();
var error = operationResponse.getError();
if (error) {
sessionAttributes.error = error;
}
}
if (sn_cti_core.CTIRequestDispatcher.Constants.HTTP.Status.AUTH_REQUIRED.code === statusCode) {
//first call for a secure action without authentication token
sessionAttributes.statusCode = 401;
sessionAttributes.message = message;
intentResponse = {
sessionAttributes: sessionAttributes,
dialogAction: {
type: 'Close',
fulfillmentState: 'Fulfilled',
message: {
contentType: 'PlainText',
content: 'This operation requires authentication. Say authenticate for authentication.'
}
}
};
} else if ('DialogCodeHook' === operationRequest.getParameter('$$invocationSource')) {
//pass back authToken and interactionId
sessionAttributes.authToken = operationRequest.getAuthToken();
sessionAttributes.interactionId = operationRequest.getInteractionSysId();
var originalSlots = operationRequest.getParameter('$$slots');
var responseParameters = operationResponse ? operationResponse.getParameters() : {};
responseParameters = responseParameters ? responseParameters : {};
// See if processing happened and we got a dialogAction
var responseDialogAction = responseParameters['dialogAction'];
// Default dialog action
var dialogAction = {
type: 'Delegate',
slots: originalSlots
};
// If the response doesn't contain an override replay the inputs
if (responseDialogAction) {
// We bypassed dialoghook so delegate and pass through inputs
dialogAction = responseDialogAction;
}
intentResponse = {
sessionAttributes: sessionAttributes,
dialogAction: dialogAction
};
} else {
// Override required session attributes
sessionAttributes.statusCode = statusCode;
sessionAttributes.message = message;
// Build response template
intentResponse = {
sessionAttributes: sessionAttributes,
dialogAction: {
type: 'Close',
fulfillmentState: 'Fulfilled',
message: {
contentType: 'PlainText',
content: message
}
}
};
}
httpResponse.setBody(intentResponse);
})(ctx, operationRequest, operationResponse, httpResponse);
CTIOperationResponse - getSessionAttribute(문자열 키)
현재 CTIOperationResponse 개체에 설정된 지정된 세션 특성 키의 값을 반환합니다.
get/set 세션 특성 메서드를 사용하면 작업 처리기와 메시지 변환기 간에 거의 모든 문자열 또는 숫자 값을 전달할 수 있습니다. 연락처 플로우 내에서 세션 속성에 액세스할 수도 있습니다. sessionAttribute 개체에는 컴퓨터 전화 통신 통합 공급자가 정의한 세션 동안 유효한 연락처의 전화 번호와 같은 0개 이상의 키/값 데이터 쌍이 포함될 수 있습니다. 작업 핸들러는 처리 중에 이러한 값을 사용할 때 필요한 세션 속성 키/값 쌍을 결정합니다. 일반적으로 작업 처리기는 CTIOperationResponse - setSessionAttribute(String key, Object value) 메서드를 호출하여 CTIOperationResponse 개체에서 이러한 속성을 설정하고 메시지 변환기는 이 메서드를 사용하여 속성을 사용합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 키 | 문자열 | 반환할 키 값의 이름입니다. |
| 유형 | 설명 |
|---|---|
| 문자열 | 전달된 키의 값입니다. 이러한 키가 없으면 null을 반환합니다. |
var response = new sn_cti_core.CTIOperationResponse();
var phoneAttribute = response.getSessionAttribute('contact.phone');
CTIOperationResponse - getSessionAttributes()
현재 CTIOperationResponse 개체에 이전에 설정된 모든 세션 특성에 대한 키-값 쌍을 반환합니다.
get/set 세션 특성 메서드를 사용하면 작업 처리기와 메시지 변환기 간에 거의 모든 문자열 또는 숫자 값을 전달할 수 있습니다. 연락처 플로우 내에서 세션 속성에 액세스할 수도 있습니다. sessionAttribute 개체에는 컴퓨터 전화 통신 통합 공급자가 정의한 세션 동안 유효한 연락처의 전화 번호와 같은 0개 이상의 키/값 데이터 쌍이 포함될 수 있습니다. 작업 핸들러는 처리 중에 이러한 값을 사용할 때 필요한 세션 속성 키/값 쌍을 결정합니다. 일반적으로 작업 처리기는 CTIOperationResponse - setSessionAttribute(String key, Object value) 메서드를 호출하여 CTIOperationResponse 개체에서 이러한 속성을 설정하고 메시지 변환기는 이 메서드를 사용하여 속성을 사용합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 객체 | 이전에 CTIOperationResponse 개체에 설정된 키-값 쌍의 맵입니다. 이 키-값 쌍은 자유 형식이며 작업 처리기의 필요에 따라 정의됩니다. 반환되는 값은 문자열 또는 숫자입니다. |
(function (/*CTIOperationResponse*/operationResponse, /*HTTPResponse*/ httpResponse) {
// AWS Connect Lambda expects name value pairs only
var out = {};
for(var k in operationResponse.getSessionAttributes()) {
out[k] = operationResponse.getSessionAttributes()[k];
}
out.statusCode = operationResponse.getStatusCode();
out.message = operationResponse.getMessage();
httpResponse.setBody(out);
})(operationResponse, httpResponse);
CTIOperationResponse - getStatusCode()
현재 CTIOperationResponse 개체에 설정된 상태 코드를 반환합니다.
이러한 상태 코드는 표준 HTTP 상태 코드(예: 성공의 경우 200, 권한 부여가 필요한 경우 401)와 일치해야 합니다. 일반적으로 결과 상태 코드는 작업 처리기에 의해 결정되며 CTIOperationResponse - setStatusCode(String statusCode) 메서드를 사용하여 CTIOperationResponse 개체에 설정됩니다. 그런 다음 메시지 변환기는 이 메서드를 사용하여 컴퓨터 전화 통신 통합자 공급자에게 반환된 페이로드에 상태 코드를 포함합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 번호 | 현재 작업의 상태 코드입니다. 상태 코드가 설정되지 않은 경우 -1을 반환합니다. |
(function (/*CTIOperationResponse*/operationResponse, /*HTTPResponse*/ httpResponse) {
// AWS Connect Lambda expects name value pairs only
var out = {};
for(var k in operationResponse.getSessionAttributes()) {
out[k] = operationResponse.getSessionAttributes()[k];
}
out.statusCode = operationResponse.getStatusCode();
out.message = operationResponse.getMessage();
httpResponse.setBody(out);
})(operationResponse, httpResponse);
CTIOperationResponse - setAuthToken(문자열 토큰)
현재 CTIOperationResponse 개체에 인증 토큰을 설정합니다.
이 토큰은 처리기 auth_required 의 플래그가 true로 설정된 경우 프레임워크에서 ServiceNow 음성 요청된 작업 처리기를 실행하기 전에 현재 ServiceNow 음성 사용자를 인증하는 데 사용됩니다. 플래그는 auth_required 운영 핸들러 [sn_cti_operation_handler] 테이블의 필드입니다. 인증 토큰의 수명은 통화 세션의 수명 동안이어야 하지만 CTI 제공자에 의해 결정됩니다.
고유한 인증 작업 처리기를 만들어 구현에 필요한 모든 인증/권한 부여 처리를 정의할 수 있습니다. 인증 토큰이 생성되는 방법에 관계없이 메시지 번역기는 토큰을 CTI 페이로드에 다시 전달해야 합니다. 또한 CTI 공급자는 이 인증 토큰을 로컬에 저장하고 인증이 필요한 각 작업 요청에 전달해야 합니다.
인스턴스 제공 인증 작업 처리기를 사용하는 경우 처리기는 사용자가 입력한 4자리 핀을 기반으로 인증 토큰 만들기를 시작합니다. 그런 다음 CTIOperationResponse 개체의 sessionAttributes 개체에서 인증 토큰을 설정합니다. 연결된 메시지 변환기는 sessionAttributes 객체를 CTI 특정 페이로드로 변환한 다음 CTI 제공자에게 보냅니다.
- Amazon Web Services(AWS) Lambda 프록시(AWS Lambda 함수 호출)
- AWS Lex 봇(고객 입력 가져오기)
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 문자열 | 플래그가 설정된 작업을 인증하는 데 사용할 인증 토큰입니다 auth_required . |
var response = new sn_cti_core.CTIOperationResponse();
var authenticate = <Your authentication code here>; // Authenticate the user
if (authenticated) {
var claims = {
"interactionId":interactionGr.sys_id.toString()
};
var jwt = new sn_cti_core.AuthHelpers().generateJWT(claims);
response.setAuthToken(jwt);
}
CTIOperationResponse - setError(객체 오류)
현재 CTIOperationResponse 개체의 오류 개체를 설정합니다.
구성요소의 오류 개체를 사용하여 컴퓨터 전화 통합 시스템(CTI) 공급자에게 보낼 페이로드를 공식화할 수 있습니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 오류 | 객체 | 요청된 작업을 처리하는 동안 검색된 오류에 대한 정보입니다. 이 개체의 형식은 CTI 제공자에 의해 결정됩니다. |
| 유형 | 설명 |
|---|---|
| void |
var response = new sn_cti_core.CTIOperationResponse();
response.setError(new Error("You did not supply a field"));
CTIOperationResponse - setInteractionSysId(문자열 ID)
현재 CTIOperationResponse 개체에 대한 작업 요청과 연결된 상호 작용 기록의 sys_id 설정합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| sys_id | 문자열 | 현재 상호작용에 대해 설정할 sys_id입니다. |
| 유형 | 설명 |
|---|---|
| void |
var response = new sn_cti_core.CTIOperationResponse();
response.setInteractionSysId('98529cc55380001048e5ddeeff7b120b');
CTIOperationResponse - setMajorVersion(Number, majorVersion)
연결된 CTI(컴퓨터 전화 통신 통합자) 공급자 소프트웨어의 주 버전을 설정하여 연결된 CTIOperationResponse 개체에서 요청합니다.
소프트웨어 버전에 따라 다른 페이로드가 필요할 수 있으므로 인스턴스에 연결된 ServiceNow CTI 제공자가 여러 버전의 소프트웨어를 실행하는 경우 이 방법을 사용합니다. 페이로드가 소프트웨어 버전 간에 약간만 다른 경우 단일 메시지 변환기만 사용하는 것이 합리적일 수 있습니다. 그런 다음 메시지 변환기 내에서 요청을 수행하는 소프트웨어의 버전만 확인하면 페이로드 차이를 처리할 수 있습니다. 필요한 페이로드가 버전마다 크게 다른 경우 여러 메시지 변환기를 사용하는 것이 더 효과적일 수 있습니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 주 버전 | 번호 | 작업을 요청하는 CTI 제공자 소프트웨어의 주 버전입니다. 이 값이 이전에 설정되지 않은 경우 1을 반환합니다. |
| 유형 | 설명 |
|---|---|
| void |
var request = new sn_cti_core.CTIOperationResponse();
request.setMajorVersion(2);
CTIOperationResponse - setMessage(문자열 메시지)
현재 CTIOperationResponse 개체에 텍스트 메시지를 설정합니다.
일반적으로 이 메시지는 작업이 완료되면 사용자에게 다시 말하고 연결된 작업 처리기에 의해 설정됩니다. 그런 다음 메시지 변환기는 CTIOperationResponse - getMessage() 메소드를 사용하여 메시지를 확보하고 컴퓨터 전화 통신 통합 제공자에게 다시 전달합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 메시지 | 문자열 | 메시지 텍스트 |
| 유형 | 설명 |
|---|---|
| void |
(function(/*CTIOperationRequest*/ request, /*CTIOperationResponse*/ response, /*Context*/ ctx) {
var notes = '', lang = request.getLanguage();
try {
var interactionGr = request.getInteractionRecord();
var now_GR = new GlideRecord('sys_user');
if(interactionGr && now_GR.get(interactionGr.opened_for.toString())) {
if(now_GR.locked_out == true) {
notes += gs.getMessageLang("User record found locked. Unlocking the account.\n", lang);
now_GR.locked_out=false;
now_GR.update();
response.setStatusCode(200);
response.setMessage(gs.getMessageLang("Your account has been unlocked.", lang));
} else {
notes += gs.getMessageLang("User record not locked.\n", lang);
response.setStatusCode(200);
response.setMessage(gs.getMessageLang("Your account doesn't seem to be locked.", lang));
}
} else {
notes += gs.getMessageLang("User record not found. Transfer to agent\n", lang);
response.setStatusCode(302);
response.setMessage(gs.getMessageLang("I am unable to find your record. Let me transfer to someone who can help.", lang));
}
if(interactionGr) {
interactionGr.work_notes = notes;
interactionGr.update();
}
} catch(e) {
ctx.setError(e);
}
})(request, response, ctx);
CTIOperationResponse - setMinorVersion(Number minorVersion)
연결된 CTI(컴퓨터 전화 통신 통합자) 공급자 소프트웨어의 부 버전을 설정하여 연결된 CTIOperationResponse 개체에서 요청합니다.
소프트웨어 버전에 따라 다른 페이로드가 필요할 수 있으므로 인스턴스에 연결된 ServiceNow CTI 제공자가 여러 버전의 소프트웨어를 실행하는 경우 이 방법을 사용합니다. 페이로드가 소프트웨어 버전 간에 약간만 다른 경우 단일 메시지 변환기만 사용하는 것이 합리적일 수 있습니다. 그런 다음 메시지 변환기 내에서 요청을 수행하는 소프트웨어의 버전만 확인하면 페이로드 차이를 처리할 수 있습니다. 필요한 페이로드가 버전마다 크게 다른 경우 여러 메시지 변환기를 사용하는 것이 더 효과적일 수 있습니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 부 버전 | 번호 | 작업을 요청하는 CTI 제공자 소프트웨어의 부 버전입니다. 이 값이 이전에 설정되지 않은 경우 0을 반환합니다. |
| 유형 | 설명 |
|---|---|
| void |
var response = new sn_cti_core.CTIOperationResponse();
response.setMinorVersion(3);
CTIOperationResponse - setParameter(문자열 키, 객체 값)
연결된 CTIOperationResponse 개체에 지정된 키-값 쌍을 설정합니다.
get/set 매개 변수 메서드를 사용하면 작업 처리기와 메시지 변환기 간에 거의 모든 문자열 또는 숫자 값을 전달할 수 있습니다. 매개 변수 개체에는 현재 작업 요청과 직접 관련된 0개 이상의 키/값 데이터 쌍이 포함될 수 있습니다. 작업 핸들러는 이러한 값을 사용할 때 필요한 키/값 쌍을 결정합니다. 일반적으로 작업 처리기는 이 메서드를 호출하여 CTIOperationResponse 개체에서 이러한 매개 변수를 설정하고 메시지 변환기는 CTIOperationResponse - getParmeter(String 키) 또는 CTIOperationResponse - getSParameters() 메서드를 사용하여 이러한 매개 변수를 사용합니다.
JSON.parse(JSON.stringify(object)) 작업에서 살아남을 수 있는 객체만 저장해야 합니다. 이 조건을 충족하지 않는 개체는 전체 작업 처리 체인을 통해 올바르게 전파되지 않을 수 있습니다.var x = {
"string": 'abc',
"int": 123,
"float": 1.234,
"number": new Number(3),
"boolean": true,
"date": new Date(2006, 0, 2, 15, 4, 5),
"object": {
"string": 'abc',
"int": 123,
"float": 1.234,
"number": new Number(3),
"boolean": true,
"date": new Date(2006, 0, 2, 15, 4, 5)
},
"function": function(abc) {
}
}
var stringify = JSON.stringify(x);
gs.info(stringify);
var hydrate = JSON.parse(stringify);
var stringify2 = JSON.stringify(hydrate);
gs.info(stringify2);
{"string":"abc","int":123,"float":1.234,"number":3,"boolean":true,"date":"2006-01-02T23:04:05.000Z","object":{"string":"abc","int":123,"float":1.234,"number":3,"boolean":true,"date":"2006-01-02T23:04:05.000Z"}}
{"string":"abc","int":123,"float":1.234,"number":3,"boolean":true,"date":"2006-01-02T23:04:05.000Z","object":{"string":"abc","int":123,"float":1.234,"number":3,"boolean":true,"date":"2006-01-02T23:04:05.000Z"}}
| 이름 | 유형 | 설명 |
|---|---|---|
| 키 | 문자열 | 관련 값을 저장할 키의 이름입니다. |
| 값 | 객체 | 키에 대해 저장할 값입니다. 유효한 데이터 유형:
|
| 유형 | 설명 |
|---|---|
| void |
var response = new sn_cti_core.CTIOperationResponse();
response.setParameter('contact.phone', '+15552222345');
response.setParameter('contact.okToCall', true);
response.setParameter('contact.address', {
street: '1234 Main St'
city: 'API City',
zip: 91335
});
CTIOperationResponse - setSessionAttribute(문자열 키, 객체 값)
연결된 CTIOperationResponse 개체에 지정된 세션 특성 키-값 쌍을 설정합니다.
get/set 세션 특성 메서드를 사용하면 작업 처리기와 메시지 변환기 간에 거의 모든 문자열 또는 숫자 값을 전달할 수 있습니다. sessionAttribute 개체는 컴퓨터 전화 통신 통합 공급자 정의 세션 동안 유효한 0개 이상의 키/값 데이터 쌍을 포함할 수 있습니다. 연락처 플로우 내에서 세션 속성에 액세스할 수도 있습니다. 작업 핸들러는 이러한 값을 사용할 때 필요한 세션 속성 키/값 쌍을 결정합니다. 일반적으로 작업 처리기는 이 메서드를 호출하여 CTIOperationResponse 개체에서 이러한 속성을 설정하고, 메시지 변환기는 CTIOperationResponse - getSessionAttribute(String 키) 또는 CTIOperationResponse - getSessionAttribute() 메서드를 사용하여 속성을 가져옵니다.
JSON.parse(JSON.stringify(object)) 작업에서 살아남을 수 있는 객체만 저장해야 합니다. 이 조건을 충족하지 않는 개체는 전체 작업 처리 체인을 통해 올바르게 전파되지 않을 수 있습니다.var x = {
"string": 'abc',
"int": 123,
"float": 1.234,
"number": new Number(3),
"boolean": true,
"date": new Date(2006, 0, 2, 15, 4, 5),
"object": {
"string": 'abc',
"int": 123,
"float": 1.234,
"number": new Number(3),
"boolean": true,
"date": new Date(2006, 0, 2, 15, 4, 5)
},
"function": function(abc) {
}
}
var stringify = JSON.stringify(x);
gs.info(stringify);
var hydrate = JSON.parse(stringify);
var stringify2 = JSON.stringify(hydrate);
gs.info(stringify2);
{"string":"abc","int":123,"float":1.234,"number":3,"boolean":true,"date":"2006-01-02T23:04:05.000Z","object":{"string":"abc","int":123,"float":1.234,"number":3,"boolean":true,"date":"2006-01-02T23:04:05.000Z"}}
{"string":"abc","int":123,"float":1.234,"number":3,"boolean":true,"date":"2006-01-02T23:04:05.000Z","object":{"string":"abc","int":123,"float":1.234,"number":3,"boolean":true,"date":"2006-01-02T23:04:05.000Z"}}
| 이름 | 유형 | 설명 |
|---|---|---|
| 키 | 문자열 | 관련 값을 설정할 세션 속성 키의 이름입니다. |
| 값 | 객체 | 설정할 값입니다. 유효한 데이터 유형:
|
| 유형 | 설명 |
|---|---|
| void |
var response = new sn_cti_core.CTIOperationResponse();
response.setSessionAttribute('contact.phone', '+15552222345');
response.setSessionAttribute('contact.okToCall', true);
response.setSessionAttribute('contact.address', {
street: '1234 Main St'
city: 'API City',
zip: 91335
});
CTIOperationResponse - setStatusCode(숫자, statusCode)
CTIOperationResponse 개체에 대한 현재 작업 요청의 상태 코드를 설정합니다.
정수 값을 사용하여 상태를 정의할 수 있지만 HTTP 상태 코드(예: 200 = 정상/성공, 400 = 잘못된 요청, 401 = 권한 없음)를 에뮬레이트하는 것이 좋습니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| statusCode | 번호 | 요청된 작업의 상태를 고유하게 식별하는 정수입니다. |
| 유형 | 설명 |
|---|---|
| void |
(function(/*CTIOperationRequest*/ request, /*CTIOperationResponse*/ response, /*Context*/ ctx) {
var notes = '', lang = request.getLanguage();
try {
var interactionGr = request.getInteractionRecord();
var now_GR = new GlideRecord('sys_user');
if(interactionGr && now_GR.get(interactionGr.opened_for.toString())) {
if(now_GR.locked_out == true) {
notes += gs.getMessageLang("User record found locked. Unlocking the account.\n", lang);
now_GR.locked_out=false;
now_GR.update();
response.setStatusCode(200);
response.setMessage(gs.getMessageLang("Your account has been unlocked.", lang));
} else {
notes += gs.getMessageLang("User record not locked.\n", lang);
response.setStatusCode(200);
response.setMessage(gs.getMessageLang("Your account doesn't seem to be locked.", lang));
}
} else {
notes += gs.getMessageLang("User record not found. Transfer to agent\n", lang);
response.setStatusCode(302);
response.setMessage(gs.getMessageLang("I am unable to find your record. Let me transfer to someone who can help.", lang));
}
if(interactionGr) {
interactionGr.work_notes = notes;
interactionGr.update();
}
} catch(e) {
ctx.setError(e);
}
})(request, response, ctx);