웨벡스 컨택 센터를 ServiceNow와 통합하세요 (버전 1—레거시)
전제조건
소프트폰 인터페이스에 지원되는 최소 크기는 500픽셀이에요. 500px보다 낮은 값은 디스플레이 또는 기능 문제를 일으킬 수 있어요.
Webex 컨택 센터를 ServiceNow CRM 콘솔과 통합하기 전에 다음이 있는지 확인하십시오.
-
Webex 컨택 센터에 접속할 수 있어요.
-
관리자는 https://admin.webex.com 제어 허브와 Webex 고객 센터에 액세스할 수 있어요. Management Portal Management PortalURL은 님 지역마다 달라요.
-
데스크톱에 접속할 수 있는 상담원이에요. 데스크탑의 URL은 당신 지역마다 달라요.
-
콘텐츠 보안 정책 허용 목록에 추가된 다음 도메인에 대한 상담원 접근:
-
*.service-now.com
허용 목록을 정의하는 방법에 대한 자세한 내용은 Webex 문의 센터의 보안 설정 문서를 참조하십시오.
-
-
서비스나우 개발자 포털 계정이에요. 계정을 만들려면 ServiceNow 개발자 포털 https://developer.servicenow.com/dev.do 가서 가입하고 구축 시작을 클릭하세요.
-
-
서비스나우 업데이트 세트 (XML)
-
서비스나우 컨택 센터 데스크톱 레이아웃 (JSON)
-
- Webex 컨택 센터에서 지원하는 ServiceNow 에디션은 밴쿠버, 유타, 토키아, 워싱턴, 제나두예요. 자세한 내용은 Webex 컨택 센터와 ServiceNow의 통합을 참조하십시오.
아래 두 방법 중 하나를 따라하세요.
- 개발자 인스턴스의 경우 개발자 인스턴스 가이드에 있는 단계를 따르는 것이 좋아요.
- 기업 라이선스 인스턴스를 소유하고 있다면 기업 라이선스 인스턴스 가이드라인을 따르세요.
엔터프라이즈 라이선스 앱과 개발자 샌드박스 인스턴스를 함께 사용하는 것은 권장하지 않아요.
채팅과 이메일 같은 디지털 채널은 CRM 커넥터에서 지원되지 않아요. 이것은 이 커넥터를 사용하는 모든 CRM 통합에 적용돼요. 그에 따라 배포 및 고객 참여 워크플로를 계획하세요.
다음 섹션에서는 개발자 인스턴스용 ServiceNow 커넥터를 설치하는 단계를 설명해요.
| 1 |
ServiceNow 개발자 포털 계정으로 로그인하고 관리 콘솔을 여세요. |
| 2 |
계정 메뉴의 내 인스턴스 영역에서 빌딩 시작을 클릭해요.
|
| 3 |
개발자 인스턴스에서 창 왼쪽 상단의 필터 네비게이터 필드에서 플러그인으로 이동하세요.
|
| 4 |
제목이 오픈프레임인 오픈프레임 플러그인을 검색해 보세요. 목록을 스크롤해야 할 수도 있어요.
|
| 5 |
오픈프레임 플러그인을 설치하려면 설치를 클릭하세요. |
| 6 |
플러그인 활성화 대화상자에서 활성화를 클릭해요.
|
| 7 |
플러그인 활성화가 완료되면 플러그인 활성화 대화상자에서 양식 닫기 및 새로고침 클릭해 주세요.
|
| 8 |
플러그인 활성화를 확인하려면 창 왼쪽 상단의 필터 네비게이터 필드에서 OpenFrame으로 이동하세요. |
| 9 |
구성을 클릭하고 오픈프레임 구성 목록에 오픈프레임 플러그인이 나타나는지 확인하세요.
|
| 1 |
파일 이름: WebeXCC-Service-Now-Update-seTV (X) .xml
|
| 2 |
ServiceNow 인스턴스의 창 왼쪽 상단에 있는 필드에서 시스템 업데이트 세트 > 커밋할 업데이트 세트로 이동하세요.
|
| 3 |
XML에서 업데이트 세트 가져오기 링크를 클릭해요.
|
| 4 |
파일 선택을 클릭하고 시스템 업데이트 세트 XML 파일을 선택한 다음 업로드를 클릭해요.
업데이트 세트가 검색된 업데이트 세트 목록에 나타나고 로드됨 상태예요.
|
| 5 |
검색된 업데이트 세트 목록에서 업데이트 세트 파일 이름 (링크) 을 클릭하여 업데이트 세트를 여세요.
|
| 6 |
창 오른쪽 위에서 업데이트 세트 미리보기를 클릭하여 업데이트 세트에 문제가 있는지 확인하세요.
|
| 7 |
미리보기가 완료되면 업데이트 세트 미리보기 대화 상자에서 닫기를 클릭해요.
|
| 8 |
업데이트 세트 커밋을 클릭해요.
|
| 9 |
업데이트 세트 커밋이 완료되면 업데이트 세트 커밋 대화 상자에서 닫기를 클릭해요 .
|
| 1 |
창 왼쪽 상단의 필터 네비게이터 필드에 입력하고 엔터 누르세요.
|
| 2 |
시스템 속성 페이지에서 속성을 업데이트 날짜별로 정렬해요. 다음 Webex 문의 센터 속성을 볼 수 있는지 확인하세요.
|
| 3 |
시스템 속성 agentdesktop_url 페이지를 agentdesktop_url열려면 클릭하세요. |
| 4 |
값 필드에 운영 지역에 따라 Webex 컨택 센터 데스크톱의 URL을 입력하세요.
|
| 5 |
변경 사항을 저장하려면 업데이트를 클릭해요. |
| 6 |
(선택 사항) 활동 테이블 이름을 변경하려면 필요에 따라 webexccActivity테이블 속성을 편집하세요. 시스템 속성 페이지에서 webexcc활동 테이블을 클릭하세요. 필요에 따라 값 필드를 변경하세요.
|
| 7 |
(선택 사항) 다음과 같은 방법으로 사용자 그룹을 추가해요.
|
| 1 |
필터 네비게이터
|
| 2 |
새로 만들기를 클릭해요.
|
| 3 |
URL에 다음 속성을 입력하세요.
|
| 4 |
URL 필드 오른쪽에 잠금 버튼을 클릭하고
|
| 5 |
(선택 사항) 구성을 할당할 사용자/에이전트 그룹을 선택해요.
|
| 6 |
제출 클릭해요. URL이 링크로 보여요.
|
| 7 |
오픈프레임 휴대폰을 사용하기 전에 ServiceNow 사용자 지정 데스크톱 레이아웃 JSON 파일을 Webex 고객 센터에 업로드했는지 확인하세요. Management Portal 자세한 내용은 Webex 문의 센터에서 ServiceNow 데스크탑 레이아웃 설정을 참조하십시오. |
| 1 |
|
| 2 |
필요한 경우 데스크탑 레이아웃 파일의 속성을 업데이트하세요. |
| 3 |
Webex 컨택 센터로 가세요. Management Portal |
| 4 |
Management Portal내비게이션 바에서 선택하세요.
|
| 5 |
새 레이아웃을 클릭하고 데스크톱 레이아웃의 세부 정보를 입력하세요. |
| 6 |
서비스나우 데스크톱 레이아웃 JSON 파일을 업로드하세요. |
| 7 |
저장을 클릭하여 구성을 저장해요. 이제 ServiceNow 콘솔 내에서 Webex 컨택 센터 데스크톱을 시작할 수 있어요. |
| 8 |
필터 네비게이터 필드에서 이동해요.
|
다음 섹션은 라이선스가 부여된 엔터프라이즈 인스턴스에 ServiceNow 커넥터를 설치하는 단계를 설명해요.
| 1 |
ServiceNow 개발자 포털 계정으로 로그인하고 관리 콘솔을 여세요. |
| 2 |
계정 메뉴의 내 인스턴스 영역에서 빌딩 시작을 클릭해요.
|
| 3 |
개발자 인스턴스에서 창 왼쪽 상단의 필터 네비게이터 필드에서 플러그인으로 이동하세요.
|
| 4 |
제목이 오픈프레임인 오픈프레임 플러그인을 검색해 보세요. 목록을 스크롤해야 할 수도 있어요.
|
| 5 |
오픈프레임 플러그인을 설치하려면 설치를 클릭하세요. |
| 6 |
플러그인 활성화 대화상자에서 활성화를 클릭해요.
|
| 7 |
플러그인 활성화가 완료되면 플러그인 활성화 대화상자에서 양식 닫기 및 새로고침 클릭해 주세요.
|
| 8 |
플러그인 활성화를 확인하려면 창 왼쪽 상단의 필터 네비게이터 필드에서 OpenFrame으로 이동하세요. |
| 9 |
구성을 클릭하고 오픈프레임 구성 목록에 오픈프레임 플러그인이 나타나는지 확인하세요.
|
엔터프라이즈 라이선스가 있는 인스턴스는 ServiceNow 스토어에서 직접 Webex 고객 센터 애플리케이션을 설치할 수 있어요.
|
|
| 1 |
창 왼쪽 상단의 필터 네비게이터 필드에 를 입력하세요
|
| 2 |
시스템 속성 페이지에서 속성을 업데이트 날짜별로 정렬해요. 다음 Webex 문의 센터 속성을 볼 수 있는지 확인하세요.
|
| 3 |
시스템 속성 agentdesktop_url 페이지를 agentdesktop_url열려면 클릭하세요. |
| 4 |
값 필드에 운영 지역에 따라 Webex 컨택 센터 데스크톱의 URL을 입력하세요.
|
| 5 |
변경 사항을 저장하려면 업데이트를 클릭해요. |
| 6 |
(선택 사항) 활동 테이블 이름을 변경하려면 필요에 x_caci_webexcc따라.webexccActivity테이블 속성을 편집하세요.
|
| 7 |
(선택 사항) 다음과 같은 방법으로 사용자 그룹을 추가해요.
|
| 1 |
필터 네비게이터
|
| 2 |
새로 만들기를 클릭해요.
|
| 3 |
URL에 다음 속성을 입력하세요.
|
| 4 |
URL 필드 오른쪽에 잠금 버튼을 클릭하고
|
| 5 |
(선택 사항) 구성을 할당할 사용자/에이전트 그룹을 선택해요.
|
| 6 |
제출 클릭해요. URL이 링크로 보여요.
|
| 7 |
필터 네비게이터 필드에서 이동해요.
|
| 8 |
(선택 사항) 사용자 그룹 목록에서 Webex Contact Center 데스크톱에 액세스할 수 있는 사용자 그룹을 사용 가능에서 선택됨으로 이동해요. |
| 9 |
오픈프레임 휴대폰을 사용하기 전에 ServiceNow 사용자 지정 데스크톱 레이아웃 JSON 파일을 Webex 고객 센터에 업로드했는지 확인하세요. Management Portal 자세한 내용은 Webex 문의 센터에서 ServiceNow 데스크탑 레이아웃 설정을 참조하십시오. |
| 1 |
|
| 2 |
필요한 경우 데스크탑 레이아웃 파일의 속성을 업데이트하세요. |
| 3 |
Webex 컨택 센터로 가세요. Management Portal |
| 4 |
Management Portal내비게이션 바에서 선택하세요.
|
| 5 |
새 레이아웃을 클릭하고 데스크톱 레이아웃의 세부 정보를 입력하세요. |
| 6 |
서비스나우 데스크톱 레이아웃 JSON 파일을 업로드하세요. |
| 7 |
저장을 클릭하여 구성을 저장해요. 이제 ServiceNow 콘솔 내에서 Webex 컨택 센터 데스크톱을 시작할 수 있어요. |
| 8 |
필터 네비게이터 필드에서 이동해요.
|
| 1 |
필터 네비게이터 필드에서 인시던트 > 미해결 인시던트로 이동해요. |
| 2 |
발신자 필드를 마우스 오른쪽 버튼으로 클릭하고 사전 구성을 클릭해요.
|
| 3 |
쉼표로 구분된 속성
이제 ServiceNow 콘솔 내에서 Webex 컨택 센터 데스크톱을 사용할 수 있어요. |
| 4 |
필터 네비게이터 필드에서 이동해요.
|
- 세일즈포스 (SFDC) 와 마이크로소프트 다이내믹스 (MS 다이내믹스) 커넥터용으로만 WebRTC를 Agent Desktop 사용한 로그인을 지원해요.
- 현재 이 기능은 상담원에게만 적용돼요.
Agent Desktop서비스나우 콘솔에서
발신 전화 걸기 전에 다음 작업을 하세요.
-
아웃다이얼 엔트리 포인트를 만들고 아웃다이얼 엔트리 포인트 전략을 세워보세요.
-
상담원 프로필에 아웃다이얼 ANI를 활성화해요.
-
아웃다이얼 ANI를 다이얼 번호와 엔트리 포인트 매핑으로 설정해요.
자세한 내용은 Cisco Webex Contact Center설정 및 관리 가이드의 프로비저닝 장을 참조하세요.
필터 네비게이터 필드에서 이동해요.
데스크톱 사용 방법에 대한 자세한 내용은 Webex 문의 센터 도움말의 상담원 탭을 참조하십시오.
개요
이 문서에서는 ServiceNow CRM 커넥터의 비즈니스 규칙을 사용자 지정하는 몇 가지 방법을 설명해요. ServiceNow에만 적용되는 비즈니스 규칙을 기반으로 사용 사례를 사용자 지정하는 방법을 자세히 설명해요.
고객이 ServiceNow에서 이러한 사용 사례를 직접 관리해야 해요. 구성은 ServiceNow에만 해당되며 Webex 컨택 센터 소프트웨어나 전문 지식이 아니에요.
이것은 비즈니스 룰 수정을 돕는 참조 문서예요. ServiceNow 개발자가 비즈니스 룰을 만들고 관리하며 지원을 제공할 거예요.
시스코는 샘플 문서만 제공해요.
다음 섹션에서는 개발자 및 엔터프라이즈 인스턴스용 액션 위젯을 설정, 활성화 및 관리하는 방법에 대한 세부 정보를 제공해요.
액션 위젯용 업데이트 세트 커밋해요
라이선스가 부여된 엔터프라이즈 인스턴스의 경우, ServiceNow 스토어에서 최신 Webex 고객 센터 앱을 설치하세요.
개발자 인스턴스의 액션 위젯을 설정하려면 github 리포지토리에 있는 최신 시스템 업데이트 세트 XML 파일을 다운로드하세요: https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow/ActionsWidget. 파일 이름은 webexcc-servicenow-update-setv7-1-ActionsWidget.xml 예요. 액션 위젯의 업데이트 세트를 커밋하려면 업데이트 세트 커밋의 2~9단계를 참조하세요.
액션 위젯 활성화
액션 위젯을 활성화하려면 isWidgetDisplayEnabled 속성을 사용하세요. 사용자 지정 데스크톱 레이아웃의 헤드리스 섹션에서 이 속성의 값을 수정하면 안 돼요. 사용자 지정 데스크톱 레이아웃의 헤드리스 섹션에서 속성이 항상 false로 설정되어 있어요. 사용자 지정 데스크톱 레이아웃의 패널 섹션에서만 속성값을 업데이트해야 해요.
사용자 정의 데스크톱 레이아웃에서 작업 위젯을 활성화하면 다음 작업을 수행할 수 있어요.
- 활동 기록 관리—발신자와 관련된 활동 기록 목록을 보려면 활동 기록 보기/편집을 클릭하세요.
- CRM 개체 연결 - 활동 기록에 연결을 클릭하여 통화 유형 (인바운드 또는 아웃바운드), 통화 개체, 통화 메모 등과 같은 CRM 개체를 활동 기록에 추가해요.
- 인시던트 관리—인시던트 생성을 누르세요. 발신자 세부 정보가 미리 채워져 새 인시던트가 생성돼요. 사고에 필요한 업데이트를 할 수 있어요. 요구 사항에 따라 사건별, HR 모듈 등으로 기록 유형을 수정할 수 있어요. 레코드 유형을 변경하려면 작업 위젯 구성에서 TypeOfRecord 속성 값을 수정하세요. 예를 들자면:
{ "comp": "md-tab-panel", "attributes": { "slot": "panel", "class": "widget-pane" }, "children": [ { "comp": "agentx-custom-desktop", "script": "https://cx-crmconnector.ciscoccservice.com/servicenow/v5/dist/index.js", "properties": { "isWidgetDisplayEnabled": true, "typeOfRecord" : "Create Incident" }, "wrapper": { "title": "SNOW Actions !", "maximizeAreaName": "app-maximize-area" } } ] } - 실시간 통화 메모 추가—통화에 대한 추가 정보를 텍스트 영역에 캡처하고 통화를 마무리할 수 있어요. 활동 기록에 이러한 메모가 통화 메모로 추가된 것을 볼 수 있어요.
서비스나우 코드 변경
스크립트에 변경 사항이 포함돼요-
필터 네비게이터로 가서
스크립트 포함을
검색하세요.시스템 UI에서 스크립트 포함을 선택하세요.
-
이름을 필터링하고
PropuTils를
검색하세요. -
스크립트에서
userGetSysID
메소드를 변경하세요.현재:
UserGetSysId : function () { var opened_for; var user = new GlideRecord("sys_user"); user.addQuery(this.getParameter('field'),this.getParameter('value')); user.query(); if (user.next()) opened_for=user.sys_id; var grInt = new GlideRecord('interaction'); grInt.initialize(); grInt.assigned_to= gs.getUserID(); grInt.type= 'phone'; grInt.opened_for= opened_for; var sysid=grInt.insert(); return sysid; },사고에 대한 새 샘플 코드:
UserGetSysId : function () { var opened_for; //Incident related changes var sysidlist = {}; var user = new GlideRecordSecure("sys_user"); user.addQuery(this.getParameter('field'),this.getParameter('value')); user.query(); if(user.next()) { opened_for=user.sys_id;//return user.sys_id; var inc = new GlideRecordSecure('incident'); inc.addQuery('caller_id', opened_for); inc.addQuery('state','IN','1,2'); inc.orderByDesc('sys_created_on'); inc.query(); if (inc.next()) { sysidlist.incsysid=inc.getUniqueValue(); }else{ inc.initialize(); inc.caller_id=opened_for; inc.contact_type='phone'; inc.short_description='Call Received From '+ this.getParameter('value'); sysidlist.incsysid=inc.insert(); } } var grInt = new GlideRecordSecure('interaction'); grInt.initialize(); grInt.assigned_to= gs.getUserID(); grInt.type= 'phone'; grInt.opened_for= opened_for; var sysid=grInt.insert(); sysidlist.sysid=sysid; return JSON.stringify(sysidlist); },
-
필터 네비게이터로 가서 검색하세요.
UI page시스템 UI에서 UI 페이지를 선택해요.
-
이름을 필터링하고
에이전트/데스크톱을
검색하세요. -
클라이언트 스크립트에서
스크린팝
함수를 변경하세요.현재 기능:
// screen pop function screenpop(callerani,callSessionInfo) { if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani); } var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'UserGetSysId'); gaout.addParam('field', 'phone'); gaout.addParam('value', callerani); gaout.getXMLWait(); var sysid = gaout.getAnswer(); openFrameAPI.openServiceNowForm({ entity: 'interaction', query: 'sys_id='+sysid });사건 샘플 코드:
// screen pop function screenpop(callerani,callSessionInfo) { if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani); } var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'UserGetSysId'); gaout.addParam('field', 'phone'); gaout.addParam('value', callerani); gaout.getXMLWait(); // For Incident-related change var sysObj = JSON.parse(gaout.getAnswer()); if(sysObj.incsysid){ openFrameAPI.openServiceNowForm({ entity: 'incident', query: 'sys_id='+sysObj.incsysid, 'interaction_sys_id': sysObj.sysid }); }else{ openFrameAPI.openServiceNowForm({ entity: 'incident', query: 'sys_id=-1', 'interaction_sys_id': sysObj.sysid //'a2ba0ba62fd121106446cc96f699b6b8' }); } }
CRM에 발신자 정보가 있고 이 연락처로 이미 새 인시던트가 접수되면 애플리케이션에서 진행 중인 인시던트를 여세요.
발신자 정보가 CRM에 없으면 애플리케이션에서 새 인시던트를 엽니다.
발신자 정보가 CRM에 있으면 애플리케이션에서 세부 정보가 미리 채워진 새 인시던트를 엽니다.
개요
이 사용 사례는 ServiceNow 테이블에 열을 추가하고 ServiceNow CRM 커넥터용 Webex CC를 설치할 sn_openframe_phone_log 때 생성하는 프로세스를 자세히 설명합니다. webexcc_imp_activity
기본적으로 테이블에는 특정 시스템 필드와 값이 포함되어 있어요.
WebExCC 플로우 디자이너에서 비즈니스별 변수 (CAD 변수) 를 더 만들고 ServiceNow 통화 후 활동 로그 내에 CAD 변수를 추가할 수 있고, 이것을 통화 후 활동 테이블 데이터에 유지할 수 있어요.
이것은 참조 문서일 뿐이고 대화형 음성응답 내에 고객 이름을 저장하고 ServiceNow에 게시하는 고객 이름이라는 샘플 CAD 변수에 대해 이 작업을 수행하는 방법을 보여줍니다.
이 구성은 기존 커넥터에 대한 사용자 정의이므로 파트너+고객 ServiceNow 개발자가 구성하고 관리할 것으로 예상됩니다.
시스코는 커넥터 사용자 지정 및 확장 방법에 대한 기술만 제공해요.
이 기사 기준으로 Cisco 팀이 아래에 설명된 기술을 사용하여 활동 로그 및 활동 테이블에 CAD 변수 추가에 대한 지원을 검증했어요.
WebeXCC IMP 액티비티에 칼럼 추가해요
-
ServiceNow 개발자 버전에서 테이블을 편집하세요.

-
필터 네비게이터로 가서 스튜디오를 검색하세요.

웹엑스 컨택 센터를
선택해요
또는



-
WebExCC
IMP 액티비티 테이블을 선택해 주세요.
-
새 칼럼 추가해 주세요. 예를 들어,
고객 이름


전화 로그에 열 추가해요
-
전화 로그 테이블을 편집해요.


-
새 칼럼 추가해요, 예를 들어,
고객 이름
.

WebeXCC 액티비티 트랜스폼 맵

새 열을 추가해 주세요. 예를 들어, 고객이름 필드 매핑
.


목록 열 맞춤 설정하세요

Service Now에서 권장하는 대로 Choice 동작을 만들기에서 무시로 변경하세요.


전화 로그 목록 구성하세요

스크립트 인클루드로 이동
webexcc 한 줄만 추가하세요.u_customername=액트인포.프로
푸틸즈 고객 이름이에요.



라인 보세요: webexcc.u_customername=액트인포.고객 이름, 응원 의견 포함.
var propUtils = Class.create();
propUtils.prototype = Object.extendsObject(global.AbstractAjaxProcessor,{
getWebexccProp : function () {
var webexccprop = {};
webexccprop.instanceurl= 'https://'+gs.getProperty('instance_name')+'.service-now.com/';
webexccprop.url=gs.getProperty('x_caci_webexcc.agentdesktop_url');
// webexccprop.popupurl=gs.getProperty('x_caci_webexcc.screenpop_url');
return JSON.stringify(webexccprop);
},
UserGetSysId : function () {
var opened_for;
var user = new GlideRecord("sys_user");
user.addQuery(this.getParameter('field'),this.getParameter('value'));
user.query();
if (user.next())
opened_for=user.sys_id;//return user.sys_id;
// else
// return null;
var grInt = new GlideRecord('interaction');
grInt.initialize();
grInt.assigned_to= gs.getUserID();
grInt.type= 'phone';
grInt.opened_for= opened_for;
var sysid=grInt.insert();
return sysid;
},
setWebexcctable : function () {
var sys_id=0;
var actInfo = JSON.parse(this.getParameter('actInfo'));
var webexcc = new GlideRecordSecure(gs.getProperty('x_caci_webexcc.webexccactivitytable'));
webexcc.addQuery("callobject", actInfo.CallObject);
webexcc.query();
if(!webexcc.next()) {
webexcc.ani = actInfo.ani;
webexcc.dnis =actInfo.dnis;
webexcc.queuename =actInfo.queuename;
webexcc.wrapuptime =actInfo.wrapuptime;
webexcc.callduration =actInfo.CallDurationInSeconds;
webexcc.ringingtime =actInfo.ringingtime;
webexcc.activitydate =actInfo.ActivityDate;
webexcc.callobject =actInfo.CallObject;
webexcc.calltype =actInfo.CallType;
webexcc.calldisposition=actInfo.CallDisposition;
// This line is Added - to capture it in the Activity Log
webexcc.u_customername=actInfo.CustomerName;
sys_id=webexcc.insert();
//Activities on Incident record;
var actInfoString =this.getParameter('actInfo');
var suser = new GlideRecordSecure("sys_user");
suser.addQuery("phone", this.getParameter('ani'));
suser.query();
if(suser.next()) {
var inc = new GlideRecordSecure('incident');
inc.addQuery('caller_id', suser.sys_id);
inc.orderByDesc('sys_created_on');
inc.query();
if (inc.next()) {
var jsonPretty = JSON.stringify(JSON.parse(actInfoString),null,2);
inc.comments =jsonPretty;
inc.update();
}
}
}
return sys_id;
},
type: 'propUtils'
});
플로우 디자이너에서 CAD 변수 만들어요

데스크탑 레이아웃에 CAD 변수 추가해요
예시
"CadName1:SnowField1,CadName2:SnowField2"
CadName1 is CustomerName
SnowField1 is also used as CustomerName which is part of sample scirpt showen above "actInfo.CustomerName".

데모 스크린샷
WebExCC 활동 테이블에서 새로 추가된 CAD 변수를 보세요.



플로우 디자이너를 위한 CAD 변수 만들기
사고 긴급성
사고 영향

서비스 나우 스크립트 업데이트
대본 업데이트에는 다음이 포함돼요
-
필터 네비게이터로 가서 검색하세요.
script includes시스템 UI에서 스크립트 포함 옵션을 선택해요.

-
이름을 필터로 필터링해요
propUtils.
-
스크립트 필드에서
UserGetSysID
메소드를 변경하세요.
현재 스크립트:
UserGetSysId : function () { var opened_for; var user = new GlideRecord("sys_user"); user.addQuery(this.getParameter('field'),this.getParameter('value')); user.query(); if (user.next()) opened_for=user.sys_id; var grInt = new GlideRecord('interaction'); grInt.initialize(); grInt.assigned_to= gs.getUserID(); grInt.type= 'phone'; grInt.opened_for= opened_for; var sysid=grInt.insert(); return sysid; },사고에 대한 새 샘플 코드:
UserGetSysId : function () { var opened_for; var sysidlist = {}; var user = new GlideRecordSecure("sys_user"); user.addQuery(this.getParameter('field'),this.getParameter('value')); user.query(); if(user.next()) { opened_for=user.sys_id;//return user.sys_id; var inc = new GlideRecordSecure('incident'); inc.addQuery('caller_id', opened_for); inc.addQuery('state','IN','1,2'); inc.orderByDesc('sys_created_on'); inc.query(); if (inc.next()) { sysidlist.incsysid=inc.getUniqueValue(); }else{ inc.initialize(); inc.caller_id=opened_for; inc.contact_type='phone'; inc.urgency=this.getParameter('IncUrgency'); inc.impact=this.getParameter('Impact'); inc.short_description='Call Received From '+ this.getParameter('value'); sysidlist.incsysid=inc.insert(); } } var grInt = new GlideRecordSecure('interaction'); grInt.initialize(); grInt.assigned_to= gs.getUserID(); grInt.type= 'phone'; grInt.opened_for= opened_for; var sysid=grInt.insert(); sysidlist.sysid=sysid; return JSON.stringify(sysidlist);//sysid; },
-
필터 네비게이터로 가서 검색하세요.
UI pages시스템 UI에서 UI 페이지 옵션을 선택해요.

-
UI 페이지를 이름으로 필터링하고 검색하세요
agentdesktop.
-
스크립트 필드에서
스크린팝
함수를 변경하세요.
현재 기능:
// screen pop function screenpop(callerani,callSessionInfo) { if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani); } var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'UserGetSysId'); gaout.addParam('field', 'phone'); gaout.addParam('value', callerani); gaout.getXMLWait(); var sysid = gaout.getAnswer(); openFrameAPI.openServiceNowForm({ entity: 'interaction', query: 'sys_id='+sysid }); }사건 샘플 코드:
// screen pop function screenpop(callerani,callSessionInfo) { var Impact=3; if(callSessionInfo.callAssociatedData.Impact != null && callSessionInfo.callAssociatedData.Impact != undefined) { Impact=callSessionInfo.callAssociatedData.Impact.value; } var IncUrgency=3; if(callSessionInfo.callAssociatedData.Urgency != null && callSessionInfo.callAssociatedData.Urgency != undefined) { IncUrgency=callSessionInfo.callAssociatedData.Urgency.value; } if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani); } var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'UserGetSysId'); gaout.addParam('field', 'phone'); gaout.addParam('value', callerani); gaout.addParam('IncUrgency', IncUrgency); gaout.addParam('Impact', Impact); gaout.getXMLWait(); // var sysid = gaout.getAnswer(); var sysObj = JSON.parse(gaout.getAnswer()); if(sysObj.incsysid){ openFrameAPI.openServiceNowForm({ entity: 'incident', query: 'sys_id='+sysObj.incsysid, 'interaction_sys_id': sysObj.sysid }); }else{ openFrameAPI.openServiceNowForm({ entity: 'incident', query: 'sys_id=-1', 'interaction_sys_id': sysObj.sysid }); } window.localStorage.setItem("screenpopinteraction",JSON.stringify(sysObj)); }
발신자 정보가 CRM에 있고 신규 인시던트나 진행 중인 인시던트가 없으면 애플리케이션에서 새 인시던트를 엽니다.


서비스나우에서 코드 바꾸세요
WebExCC
IMP 액티비티 테이블에 새 열 추가해요.
WebExCCIMP 액티비티 테이블을 여세요.





업데이트를 클릭하세요.


전화 기록
테이블에 새 열 추가해요
전화 로그
테이블 열어요





WebeXCC 액티비티 트랜스폼 맵
필터 네비게이터에서 트랜스폼 맵
열기


WebeXCC
액티비티 트랜스폼맵을 클릭하세요




업데이트 클릭해요.

스크립트 변경 내용 포함돼요
-
필터 네비게이터로 가서 “스크립트 포함”을 검색하세요.
시스템 UI에서 스크립트 포함을 선택하세요.

-
프로풋틸즈로
이름을 필터링해요.
-
메소드
세트 WebExccTable
변경하세요.
사고에 대한 새 샘플 코드:
setWebexcctable : function () { var sys_id=0; var actInfo = JSON.parse(this.getParameter('actInfo')); var webexcc = new GlideRecordSecure(gs.getProperty('webexccactivitytable')); webexcc.addQuery("u_callobject", actInfo.CallObject); webexcc.query(); if(!webexcc.next()) { //Activities on Incident record; //var actInfoString =this.getParameter('actInfo'); var incsysid=actInfo.incident_sys_id; var interactionsysid=actInfo.interaction_sys_id; var incnum=""; var intenum=""; delete actInfo['interaction_sys_id']; delete actInfo['incident_sys_id']; if( interactionsysid!= null && interactionsysid != undefined){ var inte = new GlideRecordSecure('interaction'); //inte.get('sys_id', interactionsysid ); inte.addQuery('sys_id', interactionsysid ); inte.query(); if (inte.next()) { intenum=inte.number; // inte.setValue('state','Closed Complete'); inte.work_notes='Update State to closed.'; inte.update(); } } if( incsysid!= null && incsysid != undefined){ var inci = new GlideRecordSecure('incident'); inci.addQuery('sys_id', incsysid ); inci.query(); if (inci.next()) { incnum=inci.number; var jsonPretty = JSON.stringify(actInfo,null,2); //JSON.stringify(JSON.parse(actInfoString),null,2); inci.comments =jsonPretty; inci.update(); } }else{ var suser = new GlideRecordSecure("sys_user"); suser.addQuery("phone", this.getParameter('ani')); suser.query(); if(suser.next()) { var inc = new GlideRecordSecure('incident'); inc.addQuery('caller_id', suser.sys_id); inc.addQuery('state','IN','1,2'); inc.orderByDesc('sys_created_on'); inc.query(); if (inc.next()) { var jsonPretty = JSON.stringify(actInfo,null,2); inc.comments =jsonPretty; inc.update(); } } } webexcc.u_ani = actInfo.ani; webexcc.u_dnis =actInfo.dnis; webexcc.u_queuename =actInfo.queuename; webexcc.u_wrapuptime =actInfo.wrapuptime; webexcc.u_callduration =actInfo.CallDurationInSeconds; webexcc.u_ringingtime =actInfo.ringingtime; webexcc.u_activitydate =actInfo.ActivityDate; webexcc.u_callobject =actInfo.CallObject; webexcc.u_calltype =actInfo.CallType; webexcc.u_calldisposition=actInfo.CallDisposition; webexcc.u_incidentnumber=incnum; webexcc.u_interactionsnumber=intenum; sys_id=webexcc.insert(); } return sys_id; },
UI 페이지의 방법 변경
-
필터 네비게이터로 가서
UI
페이지 검색해요.시스템 UI에서 UI 페이지 옵션을 선택해요.

-
UI 페이지를 이름으로 필터링하고 검색하세요
agentdesktop.
-
스크립트에서
NowActivity와 스크린팝
함수를 변경하세요.
현재 기능:
function nowActivities(actInfo, ani) { var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'setWebexcctable'); gaout.addParam('actInfo', JSON.stringify(actInfo)); gaout.addParam('ani', stripPrefixes(ani)); gaout.getXML(SetCCsysId); }사건 샘플 코드:
function nowActivities(actInfo, ani) { var sysObjstr = window.localStorage.getItem("screenpopinteraction"); if(sysObjstr != null && sysObjstr != undefined) { var sysObjjson=JSON.parse(sysObjstr); actInfo.interaction_sys_id=sysObjjson.sysid; actInfo.incident_sys_id=sysObjjson.incsysid; } var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'setWebexcctable'); gaout.addParam('actInfo', JSON.stringify(actInfo)); gaout.addParam('ani', stripPrefixes(ani)); gaout.getXML(SetCCsysId); } function screenpop(callerani,callSessionInfo) { if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani); } var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'UserGetSysId'); gaout.addParam('field', 'phone'); gaout.addParam('value', callerani); gaout.getXMLWait(); // var sysid = gaout.getAnswer(); var sysObj = JSON.parse(gaout.getAnswer()); if(sysObj.incsysid){ openFrameAPI.openServiceNowForm({ entity: 'incident', query: 'sys_id='+sysObj.incsysid, 'interaction_sys_id': sysObj.sysid }); }else{ openFrameAPI.openServiceNowForm({ entity: 'incident', query: 'sys_id=-1', 'interaction_sys_id': sysObj.sysid }); } window.localStorage.setItem("screenpopinteraction",JSON.stringify(sysObj)); }
업데이트 후 결과

다음 사용자 지정은 버전 1.0.5 이하에 적용돼요. 새 버전 1.0.7 이상에 대한 사용자 지정의 경우 위 단계를 따르세요.
커스터마이징 # 1 - 통화 흐름 사용 사례에 사용자 지정 비즈니스 규칙 추가하세요
모든 통화마다 새로운 사건 기록을 만드세요.ServiceNow에서 WebExCC CRM 커넥터로 새로 전화를 걸 때마다 새 사고 기록을 생성하세요.
필터 탐색기에서 비즈니스 룰을 검색하세요.

새로 만들기를 클릭해요.

참조용 샘플 코드:
function customcti() { var url = null; var name = sysparm_caller_name; eid = sysparm_caller_id; var phone = sysparm_caller_phone; var taskID = sysparm_task_id; var fQuery = sysparm_query; if (fQuery == null) fQuery = ''; var view = sysparm_view; if (view == null || view == '') view = "itil"; var userID = null; if (eid != null && eid != '') { userID = UserGetSysId("employee_number",eid); } if (userID == null && name != null && name != '') { userID = UserGetSysId("name", name); } if (userID == null && phone != null && phone != '') { userID = UserGetSysId("phone", phone); } if (userID != null) { if (fQuery.length > 0) fQuery += "^"; fQuery += "caller_id=" + userID; } if (url == null) { url = "incident.do?sys_id=-1"; if (fQuery != null) url += "&sysparm_query=" + fQuery; } answer = url; return url; } function UserGetSysId(field, value) { var user = new GlideRecord("sys_user"); user.addQuery(field, value); user.query(); if (user.next()) return user.sys_id; else return null; }비즈니스 룰의 샘플 구성

클라이언트 콜러블 활성화해요

컴퓨터 텔레포니 통합 (CTI) 사고 처리가 True로 표시되어 있어요.

사용자 지정 CTI 규칙으로 스크린팝 URL을 업데이트하세요 "cti.do?sysparm_cti_rule=인시던트 생성 & = sysparm_caller_phone”

sysparm_cti_rule=name은, 여기서 '이름'은 함수 이름인데 CTI 처리를 위해 기본 스크립트를 사용하지 않고 호출해야 해요.
클라이언트 콜러블로 표시된 sys_script항목에서 함수를 정의하세요.
함수에 GlideRecord를 삽입, 업데이트 또는 삭제해야 하는 경우 별도의 비클라이언트 호출 가능 함수를 호출하여 업데이트를 수행하세요.
클라이언트가 호출할 수 있는 스크립트를 만들려면 항목이 표시될 때 표시되는 양식의 클라이언트 콜러블 확인란을 선택해야 해요. sys_script
클라이언트 콜러블 체크박스는 기본적으로 표시되지 않아요. 보려면 기어 아이콘과 슬러시 버킷 메커니즘을 사용하여 양식에 표시되는 필드를 수정해야 해요.
사용자 지정 # 2 - Webex 고객 센터 활동 테이블에 CAD 변수 추가
개요이 문서에서는 ServiceNow CRM 커넥터용 Webex CC를 설치할 때 생성되는 ServiceNow 테이블에 열을 추가하는 프로세스를 자세히 설명해요. webexcc_activity
기본적으로 테이블에는 기본 시스템 필드와 값이 포함돼요.
잠재적으로 WebExCC 플로우 디자이너에서 비즈니스별 변수 (CAD 변수) 를 더 만들고 ServiceNow 통화 후 활동 로그에 CAD 변수를 추가하고 이것을 통화 후 활동 테이블 데이터에 유지할 수 있어요.
-
이것은 참조 문서일 뿐이고 대화형 음성응답 내에 고객 이름을 저장하고 ServiceNow에 게시하는 고객 이름이라는 샘플 CAD 변수에 대해 이 작업을 수행하는 방법을 보여줍니다.
-
이 구성은 기존 커넥터에 대한 사용자 정의이므로 파트너+고객 ServiceNow 개발자가 구성하고 관리해요.
-
시스코는 커넥터를 사용자 정의하고 확장하는 방법에 대한 기술만 제공해요.
-
이 기사 기준으로 Cisco 팀이 아래에 설명된 기술을 사용하여 활동 로그 및 활동 테이블에 CAD 변수 추가에 대한 지원을 검증했어요.
ServiceNow 개발자 버전에서 테이블을 편집하세요.

가세요.



WebExCC 활동 테이블을 선택해 주세요.

예를 들어, 고객 이름.


WebExCC 액티비티 목록 레이아웃을 선택해요.

업데이트 세트 XML을 사용하는 경우 이 단계는 필요하지 않아요. "webexcc를 한 줄만 추가하면 돼요.u_customername=액트인포.고객 이름"을 프로 푸틸즈로.



샘플 스크립트
라인 참조: webexcc.u_customername=액트인포.고객 이름, 응원 의견 포함.
var propUtils2 = Class.create();
propUtils2.prototype = Object.extendsObject(global.AbstractAjaxProcessor,{
getWebexccProp : function () {
var webexccprop = {};
webexccprop.instanceurl= 'https://'+gs.getProperty('instance_name')+'.service-now.com/';
webexccprop.url=gs.getProperty('x_caci_webexcc.agentdesktop_url');
webexccprop.popupurl=gs.getProperty('x_caci_webexcc.screenpop_url');
return JSON.stringify(webexccprop);
},
setWebexcctable : function () {
var sys_id=0;
var actInfo = JSON.parse(this.getParameter('actInfo'));
var webexcc = new GlideRecordSecure(gs.getProperty('x_caci_webexcc.webexccactivitytable'));
webexcc.addQuery("callobject", actInfo.CallObject);
webexcc.query();
if(!webexcc.next()) {
webexcc.ani = actInfo.ani;
webexcc.dnis =actInfo.dnis;
webexcc.queuename =actInfo.queuename;
webexcc.wrapuptime =actInfo.wrapuptime;
webexcc.callduration =actInfo.CallDurationInSeconds;
webexcc.ringingtime =actInfo.ringingtime;
webexcc.activitydate =actInfo.ActivityDate;
webexcc.callobject =actInfo.CallObject;
webexcc.calltype =actInfo.CallType;
webexcc.calldisposition=actInfo.CallDisposition;
// This line is Added - to capture it in the Activity Log
webexcc.u_customername=actInfo.CustomerName;
sys_id=webexcc.insert();
// Activities on Incident record;
var actInfoString =this.getParameter('actInfo');
var suser = new GlideRecordSecure("sys_user");
suser.addQuery("phone", this.getParameter('ani'));
suser.query();
if(suser.next()) {
var inc = new GlideRecordSecure('incident');
inc.addQuery('caller_id', suser.sys_id);
inc.orderByDesc('sys_created_on');
inc.query();
if (inc.next()) {
var jsonPretty = JSON.stringify(JSON.parse(acting string),null,2);
inc.comments =jsonPretty;
inc.update();
}
}
}
return sys_id;
},
type: 'propUtils2'
});
새 스크립트 이름으로 UI 페이지 편집해요
플로우 디자이너에서 CAD 변수 만들어요
데스크탑 레이아웃에 CAD 변수 추가
데모 스크린샷
WebExCC 활동 테이블에서 새로 추가된 CAD 변수를 보세요.

CRM 커넥터는 데스크톱 레이아웃 JSON에 지정된 위젯 버전에 따라 작동해요. 데스크탑 레이아웃 내의 위젯 버전을 업데이트하는 것이 매우 중요해요.
관리자는 이 CRM 커넥터의 모든 데스크톱 레이아웃이 이 위젯 버전을 사용하도록 해야 해요.If the layout is not updated to use the latest version, functionality will no longer be supported and may cease to work correctly.
- 마지막 서비스나우 업데이트 —.1.0_v5.0.3.jsonServiceNow_Desktop_0. 2024년 3월 기준으로, 패키지 버전은 1.0.9예요
- 마지막 XML 업데이트—WebeXCC-Service Now-Update-SETV7-1-ActionsWidget.xml, 2024년 6월











































