Contact Center AI Platform (CCAI 플랫폼)은 ServiceNow CRM과의 통합을 제공합니다.
ServiceNow 개발자 설정
권장 최소 ServiceNow 버전 요구사항: Tokyo patch 1
기본 인증 사용자 설정
ServiceNow 관리자 계정에 2단계 인증이 사용 설정되어 있고 해당 사용자와 연결되어 있을 수 있습니다. 따라서 CCAI Platform에서 관리자 액세스 권한을 얻는 데 사용할 수 없습니다. 이 용도로 ServiceNow에서 사용자 계정을 만들어야 합니다.
인증 정보가 있는 기본 사용자를 만듭니다.
사용자 > 새로 만들기로 이동합니다.
세부정보를 입력하고 웹 서비스 액세스만을 선택합니다.
사용자 ID와 비밀번호를 기록해 둡니다.
ServiceNow의 필수 역할
ServiceNow의 기본 역할은 플랫폼 내에서 특정 액세스 권한을 제공하도록 사전 구성되어 있습니다. 관리자는 특정 권한을 부여하는 역할을 만들어 구성할 수 있습니다. 이 권한은 해당 역할이 있는 사용자 및 그룹이 할 수 있는 작업을 관리합니다.
이 통합을 수행하려면 ServiceNow에 다음 역할이 있어야 합니다.
user_admin: 이 역할은 ServiceNow 인스턴스 내에서 사용자, 그룹, 위치, 회사를 관리해야 하는 관리자를 위해 설계되었습니다.
sn_incident_read: 이 역할은 인시던트 관리 애플리케이션 및 관련 기능에 대한 읽기 전용 액세스 권한을 제공합니다. 사용자가 인시던트 레코드를 볼 수 있습니다.
sn_incident_write: 이 역할은 인시던트 관리 애플리케이션 및 관련 기능에 대한 쓰기 액세스 권한을 부여하여 사용자가 인시던트 레코드를 만들고 수정할 수 있도록 합니다.
personalize_dictionary: 이 역할을 사용하면 특정 비즈니스 요구사항에 맞게 사전 항목과 라벨을 맞춤설정할 수 있습니다.
function_field_admin: 이 역할은 보고서 디자이너 내에서 함수 필드를 만들고, 수정하고, 볼 필요가 있는 사용자를 위한 것입니다. 플랫폼 목록이나 양식에서 함수 필드를 만들거나 삭제하는 기능은 제공하지 않습니다.
인스턴스 뷰 구성
다음 섹션에서는 인스턴스 뷰에 필요한 구성 변경사항을 간략하게 설명합니다.
(선택사항) 즐겨찾기 추가
즐겨찾기는 ServiceNow 인스턴스 내에서 가장 자주 사용하는 링크를 빠르게 찾는 방법입니다. 즐겨찾기를 추가하려면 탐색기 패널의 필드 옆에 있는 별표 아이콘을 선택합니다. 나중에 즐겨찾기만 표시하도록 탐색기 패널을 필터링하려면 탐색기 패널의 필터 탐색기 필드 바로 아래에 있는 별표 아이콘을 선택하면 됩니다.
유용한 즐겨찾기의 예:
- 인시던트: 맞춤 CRM의 레코드와의 연결
- 사용자: 맞춤 CRM의 계정과의 연결입니다.
- REST API 탐색기: API를 테스트하는 좋은 방법입니다.
맞춤 필드 수동으로 추가
변경하려는 객체 뷰 내의 왼쪽 상단에 있는 펼치기 아이콘 (3개의 가로선)을 선택합니다. 셀프 서비스 보기 또는 기본 보기에서 이 작업을 수행할 수 있습니다.
메뉴에서 구성 > 양식 디자인을 선택하여 양식 디자이너를 엽니다.
왼쪽 열에서 필드 유형 탭을 선택합니다.
추가하려는 맞춤 필드 유형을 드래그합니다.
필드 유형을 원하는 섹션에 드롭한 후 톱니바퀴 아이콘을 선택하여 설정을 확인합니다.
창 안에서 라벨을 변경하고 이름을 기록해 둡니다. 이름은 CCAI Platform 앱 설정에서 사용됩니다.
화면 오른쪽 상단에서 저장을 선택합니다.
세션 데이터를 CRM에 매핑
Dialogflow를 사용하여 CCAIP에서 적절한 세션 데이터를 매핑하고 다음 매개변수를 사용해야 합니다.
가상 에이전트 데이터
{
"ujet": {
"session_variable": {
"capture_target": "payload",
"payload": {
"value_one": "$session.params.payload_value_one"
};
"capture_type": [ "comment", "field" ] // optional, default of ["comment"]
}
}
}
메타데이터
https://INSTANCE.service-now.com/api/now/table/sys_dictionary?sysparm_query=name%3Dsys_user https://INSTANCE.service-now.com/api/now/table/sys_dictionary?sysparm_query=name%3Dincident
라벨: column_label
API 키: element
맞춤 필드는 sys_user 또는 incident의 응답에 있는 표준 필드와 동일한 수준입니다.
CCAI Platform에서 CRM으로 파일 업로드하기
https://INSTANCE_URL.service-now.com/api/now/attachment/upload
메서드: POST
요청 데이터 형식: property
응답 데이터 위치: data.result
유형: Multi-part form
첨부파일 유형: Attachment Url
첨부파일 URL: download_link
매개변수: table below
요청 예시:
{
file: FILE_DATA,
table_name: incident,
table_sys_id: RECORD_ID
}
에이전트 어댑터 통합 (맞춤 양식)
다음 단계에서는 ServiceNow 인스턴스에서 에이전트 어댑터와 클릭 투 콜 기능을 사용 설정하는 과정을 안내합니다.
OpenFrame 설치 및 구성
모두 > 시스템 애플리케이션 > 모든 사용 가능한 애플리케이션 > 모두로 이동합니다.
OpenFrame을 검색합니다.
OpenFrame을 설치합니다.
설치가 완료되면 모두 > OpenFrame > 구성으로 이동합니다.
URL을 사용하여 구성을 만듭니다. Servicenow 인스턴스 내에 여러 구성이 있는 경우 사용자가 새로 생성된 구성에 액세스하지 못할 수 있습니다. 그룹과 OpenFrame 구성 주문 목록을 확인하여 사용자가 어떤 구성을 사용하고 있는지 확인합니다.
검색에
sys_properties.list를 입력합니다.glide.ui.concourse.onmessage_enforce_same_origin_whitelist를 수정합니다.값 목록에 새 URL을 추가합니다.
sn_openframe.cross.origin.access를 수정합니다.값 목록에
autoplay을 추가합니다.
사용자를 위한 다음 UI 환경 사용 설정
탐색 메뉴에
sys_properties.list를 입력하고 Enter 키를 누릅니다.시스템 속성
glide.ui.polaris.experience를 true로 설정합니다.시스템의 사용자 환경설정
glide.ui.polaris.use을 false로 설정합니다.사용자의 사용자 환경설정
glide.ui.polaris.use을 true로 설정합니다. (사용자 환경설정 행을 만들 수 있습니다.)
시스템 속성 업데이트
탐색 메뉴에
sys_properties.list을 입력하고 Enter를 클릭합니다.glide.ui.concourse.onmessage_enforce_same_origin_whitelist를 수정합니다.값 목록에 URL을 추가합니다. 여러 값은 쉼표로 구분해야 합니다.
sn_openframe.cross.origin.access를 수정합니다.값 목록에 자동 재생을 추가합니다.
glide.ui.polaris.experience를 수정합니다.사용 설정하면 일부 기능이 작동하지 않으므로 false로 변경합니다.
양식 상단에 클릭 투 콜 추가
시스템 UI > UI 작업으로 이동합니다.
새 작업 만들기를 선택합니다.
그림에 표시된 양식에서 클릭 투 콜이 포함될 표를 선택합니다.

연락처 또는 사용자를 참조하는 양식의 경우
g_form.getReferenceAPI를 사용하여 사용자의 전화번호에 액세스합니다. 맞춤 테이블의 경우 참조 ID와 결과 속성이 다를 수 있습니다. CCAI 플랫폼과의 통신은 동일하므로 페이로드와 데이터 구조는 다음과 동일하게 유지되어야 합니다.function clickToDial() { var user = g_form.getReference('caller_id',function(res) { var phone = res.phone || res.mobile_phone; var payload = {"name": "clicktodial", "number": phone}; var data = {"payload": payload, "method": "openframe_communication" }; CustomEvent.fireAll("openframe_request", data); }); }전화할 번호가 양식 내에 있는 양식의 경우
g_form.getValueAPI를 사용하여 관련 값을 가져옵니다. 사용자 테이블의 UI 작업 예시입니다. 맞춤 테이블의 경우 양식 필드 이름이 다를 수 있습니다. CCAI 플랫폼과의 통신은 동일하므로 페이로드와 데이터 구조는 다음과 동일하게 유지되어야 합니다.function clickToDial() { var phone = g_form.getValue('phone') || g_form.getValue('mobile_phone'); var payload = {"name": "clicktodial", "number": phone}; var context = {"payload": payload, "method" : "openframe_communication" }; CustomEvent.fireAll("openframe_request", context); }
참조 옆에 클릭 투 콜 추가
연락처 참조 옆에 있는 통화 버튼은 양식 내에서 수정해야 합니다. 필드를 마우스 오른쪽 버튼으로 클릭하고 사전 구성으로 이동합니다. 속성의 경우
ref_contributions값에show_phone또는show_phone_customer_service값을 추가합니다.UI 매크로에서
show_phone및show_phone_customer_service을 수정합니다.다음을 바꿉니다.
이전:
var task = {"entity": p.attr('data-task-table'), "query" :"sys_id="+p.attr('data-task-id')+"$[AMP]sysparm_view="+p.attr('data-task-view'),"value":p.attr('data-task-value'),"label":p.attr('data-task-label')};
var company = {"entity": p.attr('data-company-table'),"query":"sys_id="+p.attr('data-company-id')+"$[AMP]sysparm_view="+p.attr('data-task-view'),"value":p.attr('data-company-value'),"label":p.attr('data-company-label')};
var caller = {"entity": p.attr('data-caller-table'),"query": "sys_id="+p.attr('data-caller-id')+"$[AMP]sysparm_view="+p.attr('data-task-view'),"value":p.attr('data-caller-value'),"label":p.attr('data-caller-label')};
var callContext = [];
callContext.push(task);
callContext.push(company);
callContext.push(caller);
var metaData = {"phoneNumber":p.attr('data-caller-phone'),"taskId":p.attr('data-task-id')};
var data = {"metaData":metaData , "data": callContext};
var payload = {"type": "OUTGOING_CALL", "data" : data};
var createInteractionData ={};
createInteractionData.interactionSysId = -1;
createInteractionData.direction = 'outbound';
createInteractionData.context_document = p.attr('data-task-id');
createInteractionData.context_table = p.attr('data-task-table');
createInteractionData.account = p.attr('data-company-id');
if(p.attr('data-caller-table') === 'customer_contact')
createInteractionData.contact = p.attr('data-caller-id');
createInteractionData.opened_for = p.attr('data-caller-id');
var ga = new GlideAjax('sn_openframe.OpenFrameAjaxUtility');
ga.addParam('sysparm_name', 'createInteractionWithPropertyCheck');
ga.addParam('context', JSON.stringify(createInteractionData));
ga.getXML(function(serverResponse) {
var result = serverResponse.responseXML.getElementsByTagName("result");
var output = JSON.parse(result[0].getAttribute("data"));
if(output.status == "success"){
var interaction = {"entity": "interaction", "query" :"sys_id="+output.fields.interactionSysId, "value":output.fields.number, "label":"Interaction", "display":false};
payload.data.data.push(interaction);
}
var context = {"payload": payload, "method" : "openframe_communication" };
jslog("context with interaction : "+ JSON.stringify(context));
CustomEvent.fireAll("openframe_request", context);
});
신규:
var phone = p.attr('data-caller-phone')
var payload = {"name": "clicktodial", "number": phone};
var data = {"payload": payload, "method": "openframe_communication" };
CustomEvent.fireAll("openframe_request", data);
CRM 설정
다음 단계에서는 CCAI Platform 포털을 사용하여 API를 ServiceNow에 연결하는 방법을 보여줍니다.
CCAI Platform 포털에서 설정 > 개발자 설정 > CRM으로 이동합니다.
'에이전트 플랫폼' 섹션에서 ServiceNow를 선택합니다.
ServiceNow 도메인 필드에 ServiceNow 도메인 정보를 입력합니다. 이는 필요에 따라 개발자 인스턴스 또는 공급업체 인스턴스일 수 있지만 인스턴스와 직접적인 상관관계가 있으며 ServiceNow 포털 웹 주소(
https://{your instance}.servicenow.com)의 첫 번째 부분입니다.ServiceNow Cloud Selection 필드에서 기본 티켓 유형의 경우
Incident를 선택합니다.Custom를 선택하면 추가 옵션이 표시됩니다. 인시던트는 작업 테이블의 확장 프로그램입니다. 맞춤 객체는 인시던트의 확장 프로그램이어야 합니다.인증 사용자 인증 정보 필드에 사용자 이름과 비밀번호를 입력합니다.
클라우드 선택 필드 유형으로
Incident를 선택한 경우 다음 필드가 표시됩니다.- 계정 조회 객체에는
Object Type,Phone Number lookup fields,Phone number primary field의 드롭다운 필드가 3개 포함되어 있습니다.
- 계정 조회 객체에는
클라우드 선택 필드 유형으로
Custom를 선택한 경우 다음 필드가 표시됩니다.- 레코드 객체 조회:
- 기본 레코드 객체 유형:
task또는incident테이블 유형을 선택합니다. - 레코드 객체 유형: 인시던트 테이블이 확장된 경우 이 필드에 데이터가 채워지며, 필요한 경우 선택할 수 있습니다.
- 기본 레코드 객체 유형:
- 계정 조회 객체에는
Object Type,Phone Number lookup fields,Phone number primary field의 드롭다운 필드가 3개 포함되어 있습니다.
- 레코드 객체 조회:
맞춤 사용자 ID 필드: 모바일 또는 웹 SDK 세션에 맞춤 사용자 조회 필드를 사용 설정하려면 이 체크박스를 선택합니다.
전화번호 형식: 전화번호를 표시하는 데 사용할 형식을 선택할 수 있습니다.
세션 메타데이터 파일: CRM 기록에 세션 메타데이터를 첨부하려면 이 체크박스를 선택합니다.
저장을 클릭하여 선택사항을 저장합니다. 맞춤 사용자 ID 필드 체크박스를 선택한 경우 레코드의 맞춤 필드를 만들 수 있습니다. 이렇게 하면 페이지의 문제 해결 코드 및 문제 해결 메모 섹션 아래에 있는 각 ServiceNow 인시던트 하단에 맞춤 필드 탭이 추가됩니다.
레코드의 맞춤 입력란
이는 양식 디자이너에서 ServiceNow 인스턴스에 대해 이미 생성된 맞춤 필드입니다. 다른 맞춤 입력란을 만드는 방법에 관한 안내는 ServiceNow 문서의 ServiceNow CRM 설정, 섹션 맞춤 입력란 수동 추가를 참고하세요.
| 필드 | 유형 | 정의 |
|---|---|---|
u_ujet_custom_field_after_call_work |
문자열 | 통화 후 작업 시간 |
u_ujet_custom_field_call_duration |
문자열 | 통화 시간 |
u_ujet_custom_field_comm_id |
정수 | 연락처 유형에 따른 통화 또는 채팅 ID |
u_ujet_custom_field_rating |
정수 | 고객만족도 점수 |
u_ujet_custom_field_email_via_web |
문자열 | 웹에서 보낸 이메일 |
u_ujet_custom_field_feedback |
문자열 | 의견 보내기 |
u_ujet_custom_field_from_phone_number |
문자열 | 발신자의 전화번호 |
u_ujet_custom_field_hold_duration |
문자열 | Total Hold Time(총 대기 시간) |
u_ujet_custom_field_menu_path |
문자열 | 메뉴 선택 |
u_ujet_custom_field_queue_name |
문자열 | 대기열 이름 |
u_ujet_custom_field_session_type |
문자열 | 세션 유형 |
u_ujet_custom_field_verification |
참/거짓 | 인증 완료 확인 |
u_ujet_custom_field_wait_time |
문자열 | 총 대기 시간 |
OAuth 설정
OAuth를 구성하려면 ServiceNow에서 OAuth 애플리케이션을 만드는 단계를 따르세요. 그런 다음 개발자 설정 > CRM > 인증 방법에서 사용자 인증 정보 (OAuth 클라이언트 ID 및 OAuth 클라이언트 보안 비밀번호)를 입력합니다.
Service Now에서 OAuth 애플리케이션 만들기
ServiceNow 계정에서 모두 > 시스템 OAuth > 애플리케이션 레지스트리로 이동합니다.
OAuth 애플리케이션을 만들고 외부 클라이언트용 OAuth API 엔드포인트 만들기를 선택합니다.
다음 필드를 구성합니다.
이름: 고유한 이름을 입력합니다.
클라이언트 ID: 클라이언트 ID는 ServiceNow OAuth 서버에서 자동으로 생성됩니다.
클라이언트 보안 비밀번호: OAuth 애플리케이션의 클라이언트 보안 비밀번호입니다. 자동 생성하려면 비워 두세요.
새로고침 토큰 수명: 새로고침 토큰이 유효한 시간(초)입니다.
액세스 토큰 수명: 액세스 토큰이 유효한 시간(초)입니다.
리디렉션 URL: 환경 URL과 하위 디렉터리를 입력합니다. 예를 들면
https://servicenow.yourcompany.co/v1/servicenow/oauth_callback입니다.토큰 제한 시행: 액세스 토큰 사용을 ServiceNow 문서에 있는 REST API 액세스 정책에 정의된 API로 제한합니다. 이 옵션을 선택 해제하면 다른 REST API에서 액세스 토큰을 사용할 수 있습니다.
제출을 클릭합니다.
애플리케이션을 만든 후 레코드로 돌아가 클라이언트 ID와 새로 만든 클라이언트 보안 비밀번호를 가져옵니다.
개발자 설정에서 설정 업데이트
개발자 설정 > CRM으로 이동합니다.
이전 단계에 따라 설정이 입력되고 구성되었는지 확인합니다.
인증 방법에서 OAuth를 클릭합니다.
OAuth 클라이언트 ID 및 OAuth 클라이언트 보안 비밀번호를 입력합니다. (위의 5단계 참고)
저장을 클릭합니다.
사용자 인증 정보 연결을 클릭합니다.
가상 상담사의 맞춤 필드 매핑
가상 상담사를 사용하는 경우 맞춤 필드 매핑 화면에서 이 필드를 구성합니다. 이렇게 하면 가상 상담사 변수가 가상 상담사 세션 페이로드에서 ServiceNow로 전송될 수 있습니다. 변수 이름은 문자열일 수 있으며, 여기에 나열된 필드 라벨은 예시입니다.
맞춤 필드 매핑 화면에서 초기 가상 상담사 구성에 사용한 페이로드 정의로 만든 변수와 ServiceNow 내의 관련 변수 간의 연결을 구성합니다.
| 필드 매핑 제목 | CRM 필드 라벨 | 맞춤 데이터 필드 라벨 |
|---|---|---|
| 가상 에이전트 의견 | ccaip_custom_field_incident_feedback |
va_feedback |
기타 설정 구성
설정 드롭다운 메뉴에서 CCAI 플랫폼을 ServiceNow 인스턴스에 올바르게 통합할 수 있는 다른 설정을 확인할 수 있습니다. 각 섹션 구성에 관한 자세한 내용은 다음 목록의 링크를 참고하세요.
테스트 출력
이제 CCAI Platform 포털 화면 상단의 관련 버튼을 클릭하여 통화 및 채팅 흐름의 기능을 확인할 수 있습니다. 이 테스트를 실행할 때는 팝업 차단기가 사용 중지되어 있어야 합니다.
ServiceNow에 인시던트가 생성되고 통화 또는 채팅 연락처가 인시던트의 활동 섹션에 표시됩니다. 이 백엔드 활동이 고객에게 표시되지 않도록 인시던트 댓글이 아닌 작업 메모로 표시되어야 합니다.
케이스 설명이 'CCAI 플랫폼을 사용하여 전화' 또는 'CCAI 플랫폼을 사용하여 채팅'으로 자동 입력되며 상담사가 업데이트해야 할 수도 있습니다.
통화 또는 채팅의 결과에 만족하면 해결 코드와 메모를 입력한 후 (ServiceNow 해결 코드 및 메모 필드가 구성된 경우) 케이스를 종료할 수 있습니다.
케이스가 종료되었는지 확인하려면 브라우저에서 back 탐색 버튼을 클릭해야 할 수 있습니다. 케이스를 해결한 후 자동으로 종료되고 고객 레코드 페이지로 이동하는 것은 ServiceNow 인스턴스에서 예상되는 동작입니다.