사전 요구 사항

Webex Contact Center를 ServiceNow CRM 콘솔과 통합하기 전에 다음 사항이 있는지 확인하세요.


 

아래 두 가지 방법 중 하나를 따르십시오.

개발자 인스턴스의 경우 개발자 인스턴스 가이드의 단계를 따르는 것이 좋습니다.

엔터프라이즈 라이선스 인스턴스를 소유한 경우 엔터프라이즈 라이선스 인스턴스에 대한 지침을 따르세요.

엔터프라이즈 라이선스 앱을 개발자 샌드박스 인스턴스와 혼합하지 않는 것이 좋습니다.

다음 섹션에서는 개발자 인스턴스용 ServiceNow 커넥터를 설치하는 단계를 설명합니다.

1

ServiceNow 개발자 포털 계정에 로그인하고 관리 콘솔을 엽니다.

2

내 인스턴스 계정 메뉴 영역에서 빌딩 시작을 클릭하세요.

3

개발자 인스턴스의 창 왼쪽 상단에 있는 필터 탐색기 필드에서 플러그인으로 이동합니다.

4

Openframe이라는 제목의 Openframe 플러그인을 검색하세요. 목록을 스크롤해야 할 수도 있습니다.

5

설치 를 클릭하여 Openframe 플러그인을 설치하세요.

6

플러그인 활성화 대화 상자에서 활성화를 클릭합니다.

7

플러그인 활성화가 완료되면 닫기 & 플러그인 활성화 대화 상자에서 양식 을 다시 로드하세요.

8

플러그인 활성화를 확인하려면 창 왼쪽 상단의 필터 탐색기 필드에서 OpenFrame으로 이동하세요. .

9

구성 을 클릭하고 OpenFrame 플러그인이 OpenFrame 구성 목록에 나타나는지 확인하세요.

1

Github 저장소( https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow)에서 최신 시스템 업데이트 세트 XML 파일을 다운로드하세요.

파일 이름: webexcc-servicenow-update-setV(X).xml

2

ServiceNow 인스턴스의 창 왼쪽 상단에 있는 필터 탐색기 필드에서 시스템 업데이트 세트 > 커밋할 세트 업데이트.

3

XML에서 업데이트 세트 가져오기 링크를 클릭하세요.

4

파일 선택을 클릭하고 시스템 업데이트 세트 XML 파일을 선택한 다음 업로드를 클릭하세요.

업데이트 세트는 검색된 업데이트 세트 목록에 나타나고 로드됨 상태입니다.
5

검색된 업데이트 세트 목록에서 업데이트 세트 파일 이름(링크)을 클릭하여 업데이트 세트를 엽니다.

6

창 오른쪽 상단에서 업데이트 세트 미리보기 를 클릭하여 업데이트 세트에 문제가 있는지 확인하세요.

7

미리보기가 완료되면 업데이트 세트 미리보기 대화 상자에서 닫기 를 클릭하세요.

8

업데이트 세트 커밋을 클릭하세요.

9

업데이트 세트 커밋이 완료되면 업데이트 세트 커밋 대화 상자에서 닫기 를 클릭하세요.

1

창 왼쪽 상단의 필터 탐색기 필드에 sys_properties.list 를 입력하고 Enter 키를 누릅니다.

2

시스템 속성 페이지에서 업데이트된 날짜를 기준으로 속성을 정렬합니다. 다음 Webex 문의 센터 속성이 표시되는지 확인하세요.

3

agentdesktop_url 을 클릭하여 시스템 속성 Agentdesktop_url 페이지를 엽니다.

4

필드에 작업 지역에 따라 Webex Contact Center Desktop의 URL을 입력합니다.

5

변경 사항을 저장하려면 업데이트 를 클릭하세요.

6

(선택 사항) 활동 테이블 이름을 변경하려면 필요에 따라 webexccactivitytable 속성을 편집합니다.

시스템 속성 페이지에서 webexccactivitytable을 클릭합니다.

필요에 따라 필드를 변경합니다.

7

(선택 사항) 다음 방법으로 사용자 그룹을 추가합니다.

  1. 창 왼쪽 상단의 필터 탐색기 필드에서 시스템 보안 아래의 그룹 으로 이동합니다.

  2. 새 사용자 그룹을 생성하거나 기존 사용자 그룹을 사용합니다.

  3. 편집을 클릭합니다.

  4. sn_openframe_user 컬렉션 을 검색하여 사용자 그룹으로 이동하세요.

  5. 저장을 클릭합니다.

  6. 사용자를 그룹 구성원으로 추가합니다.

1

필터 탐색기 필드에서 OpenFrame > 구성으로 이동합니다..

2

새로 만들기를 클릭합니다.

3

URL에 대해 다음 속성을 입력합니다.

  • 이름: Webex 컨택 센터 데스크탑

  • 제목: Webex 문의 센터

  • 너비: 550(권장)

  • 높이: 600(권장)

4

URL 필드 오른쪽에 있는 잠금 버튼을 클릭하고 #을 추가하세요. agentdesktop.do 를 URL로 사용하세요. (UI 페이지에 대한 구성을 가리키려면 이 단계를 수행하십시오.)

5

(선택 사항) 구성을 할당할 사용자/에이전트 그룹을 선택합니다.

6

제출을 클릭합니다. URL이 링크로 나타납니다.

7

OpenFrame 전화기를 사용하기 전에 ServiceNow 사용자 지정 데스크톱 레이아웃 JSON 파일을 Webex Contact Center 관리 포털에 업로드했는지 확인하세요. 자세한 내용은 Webex 문의 센터에서 ServiceNow 데스크톱 레이아웃 설정을 참조하세요.

1

https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow에서 ServiceNow용 데스크톱 레이아웃을 다운로드하세요.

2

필요한 경우 데스크탑 레이아웃 파일의 속성을 업데이트합니다.

3

Webex 연락 센터 관리 포털로 이동합니다.

4

관리 포털 탐색 모음에서 프로비저닝 > 데스크톱 레이아웃을 선택합니다.

5

새 레이아웃 을 클릭하고 데스크톱 레이아웃에 대한 세부정보를 입력합니다.

6

ServiceNow 데스크톱 레이아웃 JSON 파일을 업로드합니다.

7

구성을 저장하려면 저장 을 클릭하세요.

이제 ServiceNow 콘솔 내에서 Webex Contact Center Desktop을 시작할 수 있습니다.

8

필터 탐색기 필드에서 에이전트 작업 영역 > 에이전트 작업 영역 홈으로 이동합니다..

왼쪽 하단 전화 아이콘을 클릭하세요.

다음 섹션에서는 라이선스가 부여된 엔터프라이즈 인스턴스용 ServiceNow 커넥터를 설치하는 단계를 설명합니다.

1

ServiceNow 개발자 포털 계정에 로그인하고 관리 콘솔을 엽니다.

2

내 인스턴스 계정 메뉴 영역에서 빌딩 시작을 클릭하세요.

3

개발자 인스턴스의 창 왼쪽 상단에 있는 필터 탐색기 필드에서 플러그인으로 이동합니다.

4

Openframe이라는 제목의 Openframe 플러그인을 검색하세요. 목록을 스크롤해야 할 수도 있습니다.

5

Openframe 플러그인을 설치하려면 설치 를 클릭하세요.

6

플러그인 활성화 대화 상자에서 활성화를 클릭합니다.

7

플러그인 활성화가 완료되면 닫기 및amp; 플러그인 활성화 대화 상자에서 양식 을 다시 로드하세요.

8

플러그인 활성화를 확인하려면 창 왼쪽 상단의 필터 탐색기 필드에서 OpenFrame으로 이동하세요. .

9

구성 을 클릭하고 OpenFrame 플러그인이 OpenFrame 구성 목록에 나타나는지 확인하세요.

1

창 왼쪽 상단의 필터 탐색기 필드에 sys_properties.list를 입력합니다.

2

시스템 속성 페이지에서 업데이트 날짜별로 속성을 정렬합니다. 다음 Webex 문의 센터 속성이 표시되는지 확인하세요.

3

agentdesktop_url 을 클릭하여 시스템 속성 Agentdesktop_url 페이지를 엽니다.

4

필드에 작업 지역에 따라 Webex Contact Center Desktop의 URL을 입력합니다.

5

변경 사항을 저장하려면 업데이트 를 클릭하세요.

6

(선택 사항) 활동 테이블 이름을 변경하려면 필요에 따라 x_caci_webexcc.webexccactivitytable 속성을 편집합니다.

  1. 시스템 속성 페이지에서 x_caci_webexcc.webexccactivitytable을 클릭합니다.

  2. 필요에 따라 필드를 변경합니다.

7

(선택 사항) 다음 방법으로 사용자 그룹을 추가합니다.

  1. 창 왼쪽 상단의 필터 탐색기 필드에서 그룹시스템 보안으로 이동합니다.

  2. 수정 을 클릭하고 다음 역할을 추가합니다.

    • sn_openframe_user

    • x_caci_webexcc.agent

    • 에이전트_작업공간_사용자

    • x_caci_webexcc.webexcc_imp_activity_user

    • x_caci_webexcc.webex_contact_center

1

필터 탐색기 필드에서 OpenFrame > 구성으로 이동합니다..

2

새로 만들기를 클릭합니다.

3

URL에 대해 다음 속성을 입력합니다.

  • 이름: Webex 컨택 센터 데스크탑

  • 제목: Webex 문의 센터

  • 너비: 550(권장)

  • 높이: 600(권장)

4

URL 필드 오른쪽에 있는 잠금 버튼을 클릭하고 x_caci_webexcc_agentdesktop을 추가합니다. .do 를 URL로 사용하세요. (UI 페이지에 대한 구성을 가리키려면 이 단계를 수행하십시오.)

5

(선택 사항) 구성을 할당할 사용자/에이전트 그룹을 선택합니다.

6

제출을 클릭합니다. URL이 링크로 나타납니다.

7

필터 탐색기 필드에서 에이전트 작업 영역 > 에이전트 작업 영역 홈으로 이동합니다..

왼쪽 하단 전화 아이콘을 클릭하세요.

8

(선택 사항) 사용자 그룹 목록에서 Webex Contact Center Desktop에 액세스할 수 있는 사용자 그룹을 사용 가능 에서 이동합니다. 선택.

9

OpenFrame 전화기를 사용하기 전에 ServiceNow 사용자 지정 데스크톱 레이아웃 JSON 파일을 Webex Contact Center 관리 포털에 업로드했는지 확인하세요. 자세한 내용은 Webex 문의 센터에서 ServiceNow 데스크톱 레이아웃 설정을 참조하세요.

1

https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow에서 ServiceNow용 데스크톱 레이아웃을 다운로드하세요.

2

필요한 경우 데스크탑 레이아웃 파일의 속성을 업데이트합니다.

3

Webex 컨택센터 관리 포털로 이동합니다.

4

관리 포털 탐색 모음에서 프로비저닝 > 데스크톱 레이아웃을 선택합니다.

5

새 레이아웃 을 클릭하고 데스크톱 레이아웃에 대한 세부정보를 입력합니다.

6

ServiceNow 데스크톱 레이아웃 JSON 파일을 업로드합니다.

7

구성을 저장하려면 저장 을 클릭하세요.

이제 ServiceNow 콘솔 내에서 Webex Contact Center Desktop을 시작할 수 있습니다.

8

필터 탐색기 필드에서 에이전트 작업 영역 > 에이전트 작업 영역 홈으로 이동합니다..

왼쪽 하단 전화 아이콘을 클릭하세요.

1

필터 탐색기 필드에서 사건 > 사건을 공개합니다.

2

호출자 필드를 마우스 오른쪽 버튼으로 클릭하고 사전 구성을 클릭합니다.

3

쉼표로 구분된 속성 "ref_contributions=show_phone,을 추가하세요.

이제 ServiceNow 콘솔 내에서 Webex Contact Center Desktop 사용을 시작할 수 있습니다.

4

필터 탐색기 필드에서 에이전트 작업 영역 > 에이전트 작업 영역 홈으로 이동합니다..

왼쪽 하단 전화 아이콘을 클릭하세요.

ServiceNow 콘솔의 Agent Desktop

외부 전화를 걸기 전에 다음을 수행하십시오.

  • 외부 진입점을 생성하고 외부 진입점 전략을 설정합니다.

  • 에이전트 프로필에 대해 외부 ANI를 활성화합니다.

  • 외부 ANI를 다이얼 번호-진입 지점 매핑으로 설정합니다.

자세한 내용은 Cisco Webex Contact Center 설정 및 관리 가이드프로비저닝장을 참조하세요.

필터 탐색기 필드에서 에이전트 작업 영역 > 에이전트 작업 영역 홈으로 이동합니다..

왼쪽 하단 전화 아이콘을 클릭하세요.

데스크톱 사용 방법에 대한 자세한 내용은 Cisco Webex Contact Center Agent Desktop 사용자 가이드를 참조하세요.

타사 스토리지 파티셔닝

Google Chrome 및 Edge 116 이상에 대한 최근 업데이트에서 발생할 수 있는 문제로 인해 Webex 문의 센터의 CRM 커넥터에 대한 로그인 환경이 중단될 수 있습니다. 이 문제는 ServiceNow CRM 콘솔의 데스크톱 로그인에 영향을 미칩니다.

Google Chrome 브라우저에서 이 문제를 해결하려면:

  1. Google Chrome 브라우저를 열고 주소 표시줄에 chrome://flags/#third-party-storage-partitioning 을 입력하세요.

  2. 실험적인 타사 스토리지 파티셔닝 플래그를 비활성화합니다.

  3. Chrome을 닫고 다시 시작하세요.

  4. ServiceNow CRM 콘솔 내부의 데스크톱에 다시 로그인합니다.

Edge 브라우저에서 이 문제를 해결하려면:

  1. 브라우저를 열고 주소 표시줄에 edge://flags/#third-party-storage-partitioning 을 입력하세요.

  2. 실험적인 타사 스토리지 파티셔닝 플래그를 비활성화합니다.

  3. 변경 사항을 저장하고 브라우저를 다시 시작하십시오.

  4. ServiceNow CRM 콘솔 내부의 데스크톱에 다시 로그인합니다.

Firefox 브라우저에서 이 문제를 해결하려면:

  1. 브라우저를 열고 주소 표시줄에 about:config 를 입력하세요.

    경고 페이지가 나타날 수 있습니다. 위험을 감수하고 계속 을 클릭하여 about:config 페이지로 이동하세요.

  2. 상단의 검색 기본 설정 이름 상자에 network.cookie.cookieBehavior 를 입력합니다. about:config 페이지에서 기본 설정을 찾습니다.

  3. 기본 설정을 두 번 클릭하거나 수정 아이콘을 클릭하여 기본 설정을 편집합니다.

  4. 값을 0으로 변경합니다.

  5. 변경 사항을 저장하고 브라우저를 다시 시작하십시오.

  6. ServiceNow CRM 콘솔 내부의 데스크톱에 다시 로그인합니다.

개요

이 문서에서는 ServiceNow CRM 커넥터에 대한 비즈니스 규칙을 사용자 정의하는 여러 가지 방법을 다룹니다. ServiceNow와 관련된 비즈니스 규칙을 기반으로 사용 사례를 사용자 정의하는 방법을 자세히 설명합니다.

고객은 ServiceNow에서 이러한 사용 사례를 자체 관리해야 합니다. 구성은 ServiceNow에만 해당되며 Webex Contact Center 소프트웨어 또는 전문 지식이 아닙니다.


 

이는 비즈니스 규칙 수정을 돕기 위한 참조 문서입니다. ServiceNow 개발자는 비즈니스 규칙을 생성 및 관리하고 지원을 제공합니다.

Cisco는 샘플 문서만 제공합니다.

ServiceNow의 코드 변경

스크립트에는 변경 사항이 포함됩니다.
  1. 필터 탐색기로 이동하여 다음을 검색하세요. 스크립트에는 다음이 포함됩니다..

    시스템 UI 에서 스크립트 포함을 선택합니다.

  2. 이름 을 필터링하고 다음을 검색하세요. propUtils.

  3. 방법을 변경하세요 사용자GetSysId 스크립트에서.

    현재:

    UserGetSysId: function () { var Open_for; var user = new GlideRecord("sys_user"); user.addQuery(this.getParameter('field'),this.getParameter('value')); user.query(); if (user.next()) Open_for=user.sys_id; var grInt = new GlideRecord('interaction'); grInt.initialize(); grInt.designed_to= gs.getUserID(); grInt.type= '전화'; grInt.opened_for=opened_for; var sysid=grInt.insert(); 시스템 ID를 반환합니다. },

    사건의 새로운 샘플 코드:

    UserGetSysId: function () { var Open_for; //인시던트 관련 변경 사항 var sysidlist = {}; var user = new GlideRecordSecure("sys_user"); user.addQuery(this.getParameter('field'),this.getParameter('value')); user.query(); if(user.next()) {open_for=user.sys_id;//return user.sys_id; var inc = new GlideRecordSecure('사건'); inc.addQuery('caller_id',open_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='전화'; inc.short_description=''+ this.getParameter('value')에서 수신된 전화; sysidlist.incsysid=inc.insert(); } } var grInt = new GlideRecordSecure('interaction'); grInt.initialize(); grInt.designed_to= gs.getUserID(); grInt.type= '전화'; grInt.opened_for=opened_for; var sysid=grInt.insert(); sysidlist.sysid=sysid; return JSON.stringify(sysidlist); },

UI 페이지의 메소드 변경
  1. 필터 탐색기로 이동하여 UI 페이지를 검색하세요.

    시스템 UI 에서 UI 페이지를 선택합니다.

  2. 이름 을 필터링하고 다음을 검색하세요. 에이전트데스크탑.

  3. 변경 스크린팝 클라이언트 스크립트에서 함수를 사용하세요.

    현재 기능:

    // 스크린 팝 기능 screenpop(callerani,callSessionInfo) { if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani); } var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'UserGetSysId'); gaout.addParam('필드', '전화'); gaout.addParam('value', callerani); gaout.getXMLWait(); var sysid = gaout.getAnswer(); openFrameAPI.openServiceNowForm({ 엔터티: 'interaction', 쿼리: 'sys_id='+sysid });

    사건의 샘플 코드:

    // 스크린 팝 기능 screenpop(callerani,callSessionInfo) { if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani); } var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'UserGetSysId'); gaout.addParam('필드', '전화'); gaout.addParam('value', callerani); gaout.getXMLWait(); // 인시던트 관련 변경의 경우 var sysObj = JSON.parse(gaout.getAnswer()); if(sysObj.incsysid){ openFrameAPI.openServiceNowForm({ 엔터티: 'incident', 쿼리: 'sys_id='+sysObj.incsysid, 'interaction_sys_id': sysObj.sysid }); }else{ openFrameAPI.openServiceNowForm({ 엔터티: 'incident', 쿼리: 'sys_id=-1', 'interaction_sys_id': sysObj.sysid //'a2ba0ba62fd121106446cc96f699b6b8' }); } }

발신자 정보가 CRM에 존재하고 이 연락처로 이미 새 사건이 열린 경우 애플리케이션은 진행 중인 사건을 엽니다.

발신자 정보가 CRM에 존재하지 않는 경우 애플리케이션은 새 사건을 엽니다.

발신자 정보가 CRM에 있는 경우 애플리케이션은 미리 입력된 세부 정보가 포함된 새 사건을 엽니다.

개요

이 사용 사례에서는 ServiceNow 테이블에 추가 열(webexcc_imp_activity)을 추가하고 ServiceNow CRM 커넥터용 Webex CC 설치 시 sn_openframe_phone_log를 생성하는 프로세스를 자세히 설명합니다.

기본적으로 테이블에는 특정 기본 시스템 필드 및 값이 포함되어 있습니다.

WebexCC 흐름 디자이너 내에서 더 많은 비즈니스별 변수(CAD 변수)를 생성하고 ServiceNow 통화 후 활동 로그 내에 CAD 변수를 추가할 수 있을 뿐만 아니라 이를 통화 후 활동 테이블 데이터에 유지할 수 있습니다.


 

이는 참조 문서일 뿐이며 IVR 내에 고객 이름을 저장하고 이를 ServiceNow에 게시하는 Customer Name이라는 샘플 CAD 변수에 대해 이 작업을 수행하는 방법을 보여줍니다.

이 구성은 기존 커넥터에 대한 사용자 지정이므로 파트너+고객 ServiceNow 개발자가 구성하고 관리할 것으로 예상됩니다.

Cisco는 커넥터를 사용자 정의하고 확장하는 방법에 대한 기술만 제공합니다.

이 문서에서 Cisco 팀은 아래 설명된 기술을 사용하여 활동 로그 및 활동 테이블에 CAD 변수를 추가하는 지원을 검증했습니다.

WebexCC IMP 활동에 열 추가

  1. ServiceNow 개발자 버전에서 테이블을 편집합니다.

  2. 필터 탐색기로 이동하여 스튜디오를 검색하세요.

    선택 Webex Contact Center

    또는

  3. 선택 WebexCC IMP 활동 테이블

  4. 새 열을 추가합니다. 예를 들면 다음과 같습니다. 고객 이름

전화 로그에 열 추가

  1. 통화 기록 테이블을 편집합니다.

  2. 새 열을 추가합니다. 예를 들면 다음과 같습니다. 고객 이름.

WebexCC 활동 변환 지도

새 열을 추가합니다. 예를 들면 다음과 같습니다. 고객 이름 필드 매핑.

목록 열 개인화

Service Now에서 권장하는 대로 선택 작업을 생성에서 무시로 변경합니다.

전화 기록 목록 구성

스크립트 포함으로 이동


 

한 줄만 추가하세요. webexcc.u_customername=actInfo.CustomerName propUtils에.

샘플 스크립트

뒷받침하는 설명이 포함된 webexcc.u_customername=actInfo.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 Open_for; var user = new GlideRecord("sys_user"); user.addQuery( this.getParameter('field'),this.getParameter('value')); user.query(); if (user.next()) Open_for=user.sys_id;//return user.sys_id; // else / / null 반환; var grInt = new GlideRecord('interaction'); grInt.initialize(); grInt.designed_to= gs.getUserID(); grInt.type= 'phone'; grInt.opened_for=open_for; var sysid=grInt. insert(); 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; // 이 줄은 추가되었습니다 - 활동 로그에 캡처하기 위해 webexcc.u_customername=actInfo.CustomerName; sys_id=webexcc.insert(); //사고 기록에 대한 활동; 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(); } } } sys_id를 반환합니다. }, 유형: 'propUtils' });

Flow Designer에서 CAD 변수 만들기

데스크탑 레이아웃에 CAD 변수 추가

예제

"CadName1:SnowField1,CadName2:SnowField2" CadName1은 CustomerName입니다. SnowField1은 "actInfo.CustomerName" 위에 표시된 샘플 스크립트의 일부인 CustomerName으로도 사용됩니다.

데모 스크린샷

WebexCC 활동 테이블에서 새로 추가된 CAD 변수를 확인하십시오.

Flow Designer용 CAD 변수 생성

사고의 긴급성

사고 영향

Service Now 스크립트 업데이트

스크립트 포함 업데이트

  1. 필터 탐색기로 이동하여 스크립트 포함을 검색하세요.

    시스템 UI 에서 스크립트 포함옵션을 선택하세요.

  2. propUtils 를 사용하여 이름을 필터링합니다.

  3. 방법을 변경하세요 사용자GetSysId 스크립트 필드에 있습니다.

    현재 스크립트:

    UserGetSysId: function () { var Open_for; var user = new GlideRecord("sys_user"); user.addQuery(this.getParameter('field'),this.getParameter('value')); user.query(); if (user.next()) Open_for=user.sys_id; var grInt = new GlideRecord('interaction'); grInt.initialize(); grInt.designed_to= gs.getUserID(); grInt.type= '전화'; grInt.opened_for=opened_for; var sysid=grInt.insert(); 시스템 ID를 반환합니다. },

    사건의 새로운 샘플 코드:

    UserGetSysId: function () { var Open_for; var sysidlist = {}; var user = new GlideRecordSecure("sys_user"); user.addQuery(this.getParameter('field'),this.getParameter('value')); user.query(); if(user.next()) {open_for=user.sys_id;//return user.sys_id; var inc = new GlideRecordSecure('사건'); inc.addQuery('caller_id',open_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='전화'; inc.urgency=this.getParameter('IncUrgency'); inc.impact=this.getParameter('영향'); inc.short_description=''+ this.getParameter('value')에서 수신된 전화; sysidlist.incsysid=inc.insert(); } } var grInt = new GlideRecordSecure('interaction'); grInt.initialize(); grInt.designed_to= gs.getUserID(); grInt.type= '전화'; grInt.opened_for=opened_for; var sysid=grInt.insert(); sysidlist.sysid=sysid; return JSON.stringify(sysidlist);//sysid; },

UI 페이지의 메서드 변경
  1. 필터 탐색기로 이동하여 다음을 검색하세요. UI 페이지.

    선택 UI 페이지 아래의 옵션 시스템 UI.

  2. 필터링 UI 페이지 ~와 함께 이름 그리고 검색해 보세요 에이전트데스크톱.

  3. 변경 스크린팝 스크립트 필드에서 함수를 사용하세요.

    현재 기능:

    // 스크린 팝 기능 screenpop(callerani,callSessionInfo) { if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani); } var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'UserGetSysId'); gaout.addParam('필드', '전화'); gaout.addParam('value', callerani); gaout.getXMLWait(); var sysid = gaout.getAnswer(); openFrameAPI.openServiceNowForm({ 엔터티: 'interaction', 쿼리: 'sys_id='+sysid }); }

    사건의 샘플 코드:

    // 스크린 팝 기능 screenpop(callerani,callSessionInfo) { var Impact=3; if(callSessionInfo.callAssociatedData.Impact != null && callSessionInfo.callAssociatedData.Impact != 정의되지 않음) { Impact=callSessionInfo.callAssociatedData.Impact.value; } var IncUrgency=3; if(callSessionInfo.callAssociatedData.Urgency != null && callSessionInfo.callAssociatedData.Urgency != 정의되지 않음) { IncUrgency=callSessionInfo.callAssociatedData.Urgency.value; } if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani); } var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'UserGetSysId'); gaout.addParam('필드', '전화'); gaout.addParam('value', callerani); gaout.addParam('IncUrgency', IncUrgency); gaout.addParam('영향', 영향); gaout.getXMLWait(); // var sysid = gaout.getAnswer(); var sysObj = JSON.parse(gaout.getAnswer()); if(sysObj.incsysid){ openFrameAPI.openServiceNowForm({ 엔터티: 'incident', 쿼리: 'sys_id='+sysObj.incsysid, 'interaction_sys_id': sysObj.sysid }); }else{ openFrameAPI.openServiceNowForm({ 엔터티: 'incident', 쿼리: 'sys_id=-1', 'interaction_sys_id': sysObj.sysid }); } window.localStorage.setItem("screenpopinteraction",JSON.stringify(sysObj)); }

발신자 정보가 CRM에 존재하고 새 사건이나 진행 중인 사건이 없는 경우 애플리케이션은 새 사건을 엽니다.

ServiceNow에서 코드 변경

새 열을 WebexCC IMP 활동 테이블

열기 WebexCC IMP 활동 테이블

새 열 추가 - InteractionsNumber

새 열 추가 - IncidentNumber

업데이트를 클릭하세요.

새 열을 전화 기록 테이블

열기 전화 기록 테이블

새 열 추가 - InteractionsNumber

새 열 추가 - IncidentNumber

WebexCC 활동 변환 맵

열기 지도 변환 필터 탐색기에서

클릭 WebexCC 활동 변환 지도

새로 추가 - 상호 작용 번호 맵용

새로 추가 - 사건 번호 지도용

업데이트를 클릭합니다.

스크립트 포함 변경 사항

  1. 필터 탐색기로 이동하여 "스크립트 포함"을 검색하세요.

    시스템 UI에서 스크립트 포함 을 선택합니다.

  2. 다음으로 이름 을 필터링합니다. propUtils.

  3. 방법을 변경하세요 setWebexcctable.

    사건에 대한 새로운 샘플 코드:

    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()) { //사고 기록에 대한 활동; //var actInfoString =this.getParameter('actInfo'); var incsysid=actInfo.incident_sys_id; var 상호작용sysid=actInfo.interaction_sys_id; var incnum=""; var intenum=""; actInfo['interaction_sys_id'] 삭제; actInfo['incident_sys_id'] 삭제; if( 상호작용sysid!= null && 상호작용sysid != 정의되지 않음){ var inte = new GlideRecordSecure('interaction'); //inte.get('sys_id', 상호작용sysid ); inte.addQuery('sys_id', 상호작용sysid ); 인터쿼리(); if (inte.next()) { intenum=inte.number; // inte.setValue('state','Closed Complete'); inte.work_notes='상태를 종료로 업데이트합니다.'; inte.update(); } } if( incsysid!= null && incsysid != 정의되지 않음){ 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(); } sys_id를 반환합니다. },

UI 페이지의 메서드 변경

  1. 필터 탐색기로 이동하여 다음을 검색하세요. UI 페이지

    시스템 UI 에서 UI 페이지옵션을 선택합니다.

  2. 이름 으로 UI 페이지를 필터링하고 agentdesktop을 검색하세요.

  3. 변경 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 != 정의되지 않음) { 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('필드', '전화'); gaout.addParam('value', callerani); gaout.getXMLWait(); // var sysid = gaout.getAnswer(); var sysObj = JSON.parse(gaout.getAnswer()); if(sysObj.incsysid){ openFrameAPI.openServiceNowForm({ 엔터티: 'incident', 쿼리: 'sys_id='+sysObj.incsysid, 'interaction_sys_id': sysObj.sysid }); }else{ openFrameAPI.openServiceNowForm({ 엔터티: 'incident', 쿼리: '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 커넥터에 대한 모든 새로운 통화에 대해 새 사건 기록을 생성하십시오.

  1. 필터 탐색기에서 비즈니스 규칙 검색

  2. 새로 만들기를 클릭합니다.

    참조용 샘플 코드:

    함수 customcti() { var url = null; var 이름 = sysparm_caller_name; eid = sysparm_caller_id; var 전화 = sysparm_caller_phone; var taskID = sysparm_task_id; var fQuery = sysparm_query; if (fQuery == null) fQuery = ''; var 보기 = sysparm_view; if (view == null || view == '') view = "itil"; var 사용자ID = null; if (eid != null && eid != '') { userID = UserGetSysId("employee_number",eid); } if (userID == null && name != null && name != '') { userID = UserGetSysId("name", name); } if (userID == null && 전화 != null && 전화 != '') { userID = UserGetSysId("phone", 전화); } if (userID != null) { if (fQuery.length > 0) fQuery += "ˆ"; fQuery += "caller_id=" + 사용자ID; } if (url == null) { url = "incident.do?sys_id=-1"; if (fQuery != null) url += "&sysparm_query=" + fQuery; } 답변 = URL; 반환 URL; } function UserGetSysId(필드, 값) { var user = new GlideRecord("sys_user"); user.addQuery(필드, 값); user.query(); if (user.next())는 user.sys_id를 반환합니다. 그렇지 않으면 null을 반환합니다. }

    비즈니스 규칙의 샘플 구성

  3. 클라이언트 호출 가능 활성화

    사고에 대한 컴퓨터 전화 통신 통합(CTI) 처리 다음과 같이 표시됩니다. 진실.

  4. 사용자 정의 CTI 규칙으로 팝업 URL을 업데이트하세요. " cti.do?sysparm_cti_rule=사건 생성&sysparm_caller_phone= "

예제

그만큼 sysparm_cti_rule=이름 어디 ' 이름 '는 의 이름이다 기능 호출되는 것입니다 CTI 처리 중 기본 스크립트를 사용하는 대신

함수를 정의합니다. sys_script 표시된 항목 클라이언트 호출 가능.

함수에서 GlideRecord를 삽입, 업데이트 또는 삭제해야 하는 경우 별도의 비클라이언트 호출 가능 함수를 호출하여 업데이트를 수행하세요.


 

스크립트를 클라이언트 호출 가능하게 만들려면 sys_script 항목이 표시될 때 표시되는 양식에서 클라이언트 호출 가능 확인란을 선택해야 합니다.

클라이언트 호출 가능 확인란은 기본적으로 표시되지 않습니다. 보려면 기어 아이콘과 슬러시 버킷 메커니즘을 사용하여 양식에 표시되는 필드를 수정해야 합니다.

참조

사용자 정의 # 2 - Webex Contact Center 활동 테이블에 CAD 변수 추가

개요

이 문서에서는 ServiceNow CRM 커넥터용 Webex CC 설치 시 생성된 webexcc_activity라는 ServiceNow 테이블에 추가 열을 추가하는 프로세스에 대해 자세히 설명합니다.

기본적으로 테이블에는 기본 제공 시스템 필드와 값이 포함되어 있습니다.

WebexCC 흐름 디자이너 내에서 더 많은 비즈니스별 변수(CAD 변수)를 생성하고 ServiceNow 통화 후 활동 로그 내에 해당 CAD 변수를 추가하고 이를 통화 후 활동 테이블 데이터.


 
  • 이것은 참조 문서일 뿐이며 IVR 내에 고객 이름을 저장하고 이를 ServiceNow에 게시하는 Customer Name이라는 샘플 CAD 변수에 대해 이 작업을 수행하는 방법을 보여줍니다.

  • 파트너+고객 ServiceNow 개발자는 기존 커넥터에 대한 사용자 지정이므로 이 구성을 구성하고 관리합니다.

  • Cisco는 커넥터를 사용자 정의하고 확장하는 방법에 대한 기술만 제공합니다.

  • 이 기사에서 Cisco 팀은 아래 설명된 기술을 사용하여 활동 로그 및 활동 테이블에 CAD 변수를 추가하는 지원을 검증했습니다.

WebexCC 활동에 열 추가
  1. ServiceNow 개발자 버전에서 테이블을 편집합니다.

  2. 스튜디오 > Webex 문의 센터로 이동하세요.

  3. WebexCC 활동 테이블을 선택합니다.

  4. 예를 들어 고객 이름입니다.

  5. WebexCC 활동에 대한 목록 레이아웃을 선택합니다.

새 스크립트 포함 만들기

 

업데이트 세트 XML를 사용하는 경우에는 이 단계가 필요하지 않습니다. "webexcc.u_customername=actInfo.CustomerName"을 propUtils에 추가하려면 한 줄만 필요합니다.

샘플 스크립트

webexcc.u_customername=actInfo.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; // 이 줄은 추가되었습니다 - 활동 로그에 캡처하기 위해 webexcc.u_customername=actInfo.CustomerName; sys_id=webexcc.insert(); // 사건 기록에 대한 활동; 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(); } } } sys_id를 반환합니다. }, 유형: 'propUtils2' });
새 스크립트 이름으로 UI 페이지 편집

Flow Designer에서 CAD 변수 만들기

데스크탑 레이아웃에 CAD 변수 추가

데모 스크린샷

WebexCC 활동 테이블에서 새로 추가된 CAD 변수를 확인하십시오.