기술 설계 문서 템플릿

기술 설계 문서(TDD)는 시스템에 대해 자세히 설명합니다. 이러한 문서는 사용자 정의 가상 상담원 통합을 계획할 때 중요한 부분입니다. 이 페이지는 사용자 정의 가상 상담원 통합을 위한 TDD 작성 가이드입니다.

이 TDD 템플릿의 각 섹션에는 해당 섹션에 대해 의도한 콘텐츠에 관한 예시 또는 추가 정보가 들어 있습니다. 가능한 경우 예시는 텍스트 가상 상담원 통합 예시와 관련이 있습니다.

이 TDD 가이드와 통합 예시를 사용자 정의 통합을 계획하는 시작 지점으로 삼을 수 있습니다. 그러나 예시에 불과하기 때문에 이 TDD와 샘플 프록시 터널은 특정한 환경에 맞춰 설계되지 않았습니다. 따라서 TDD와 프록시 터널을 작성할 때 조직의 고유한 네트워크 아키텍처와 요구사항을 고려해야 합니다. 환경의 필요에 맞춰 섹션을 추가하거나 삭제해야 할 수 있습니다.

개요

이 기술 설계 문서에서는 NICE CXone과(와) [사용 중인 가상 상담원]의 사용자 정의 통합에 대해 설명합니다. 통합에는 이 문서에서 설명해야 하는 다음 구성 요소가 포함됩니다.

  • 아키텍처(프록시 터널/게이트웨이 미들웨어 포함)
  • CXone 구성 요구 사항(스킬, 컨택 포인트 및 채널 포함)
  • 사용자 정의 가상 상담원 통합을 위한 가상 상담원 허브 및 엔드포인트(사용자 정의 교환 엔드포인트)
  • Studio 스크립트(Snippet 코드 포함)
  • 인증 요구사항.
  • 가상 상담원 구성, 엔드포인트, 메시지 발신 세부사항
  • Digital Experience 리치 미디어 콘텐츠 JSON 스키마
  • 요청 및 응답 스키마 매핑
  • [아키텍처 및 통합에 고유한 기타 구성 요소].

아키텍처 개요

할 일: 통합에 대한 개요 다이어그램을 작성합니다. 상호작용 처리와 관련된 환경의 모든 구성 요소를 포함합니다. 여기에는 프록시 터널, 가상 상담원, 인증 서버 등이 포함됩니다. 개요 설명을 포함합니다. 특정 부분을 더 자세히 설명해야 하는 경우 추가 다이어그램을 작성합니다.

예시

ACD 채팅 채널에 대한 텍스트 가상 상담원 통합 샘플입니다. 이 샘플은 통합 예시에 불과하기 때문에 실제 통합과 다른 점이 몇 가지 있습니다.

이는 승인이 필요 없는 간단한 통합입니다.

CXone 구성

할 일: 채널닫힘 컨택이 상담원이나 Bot과 인터랙션하는 방법입니다. 채널은 음성, 이메일, 채팅, 소셜 미디어 등이 될 수 있습니다., 스킬닫힘 상담원 스킬, 능력 및 지식에 기반한 인터랙션의 전달을 자동화하는 데 사용됩니다., 컨택 포인트닫힘 인바운드 컨택이 인터랙션을 개시하는 데 사용되는 진입점(예: 전화번호, 이메일 주소)입니다., 캠페인 및 기타 모든 관련 CXone 구성 설정을 나열합니다. 통합에서 Digital Experience (디지털) 채널을 사용하는 경우 Digital Experience 채널 및 필요한 디지털 스킬 또는 라우팅 대기열닫힘 시스템은 라우팅 큐를 사용하여 케이스를 어떤 상담원에게 라우팅할지 결정합니다. 시스템 관리자는 라우팅 큐를 생성합니다. 이를 통해 특정 케이스를 해당 케이스 유형에 전문 지식을 가진 상담원에게 라우팅합니다.을 포함합니다. 자세한 내용은 리소스 페이지의 CXone 구성 요구사항을 참조하십시오.

예시

  • 채널ACD 채팅.
  • 스킬: IBChat_CEESample이라고 하는 채팅 스킬.
  • 컨택 포인트: IBChat_CEESample라고 하는 채팅 컨택 포인트
  • 캠페인CEESample.

채널 요구사항

이 통합은 예시에 불과하기 때문에 채팅 프로필이 필요 없습니다. 그러나 실제 통합에서 이 섹션은 채팅 프로필에 대한 요구사항을 지정합니다. 채팅 프로필은 채팅 창의 모양을 정의합니다. 또한 이 섹션에는 말풍선이 있을 수 있는 웹사이트의 페이지와 기타 관련 요구사항이 나열됩니다.

가상 상담원 허브 구성

할 일: 가상 상담원의 웹후크 URL과 가상 상담원이 요청과 함께 보내야 하는 매개 변수를 나열합니다. 다른 타임아웃이 필요하다고 결정한 경우 이 섹션에 추가하십시오. 가상 상담원 허브의 사용자 정의 교환 엔드포인트에 대한 전체 구성 프로세스에 대한 설명은 구현 페이지에 나와 있습니다.

예시

  • 웹후크 URLhttps://https://4db3-5-46-62-207.nrgok.io/proxy/performbotexchange
  • 엔드포인트 매개 변수: 필요 없음
  • 사용자 정의 헤더(통합 버전 2.0.0 및 3.0.0만 해당): 필요 없음
  • 타임아웃: 변경할 필요 없음
  • 승인 헤더: 필요 없음
  • OAuth 구성: 필요 없음
    • OAuth URL: 해당 없음
    • OAuth 요청 매개 변수: 해당 없음
    • OAuth 헤더: 해당 없음

통합 버전 1.0.0에서는 가상 상담원 허브에서가 아니라 스크립트에서 동적 인증을 구성해야 합니다.

Studio 스크립트

할 일: 사용자 정의 가상 상담원 통합에 대해 설계한 스크립트의 스크린샷을 설명과 함께 추가합니다. 여기에는 필요에 따라 변수에 대한 설명, 스니펫 코드, 기타 세부사항이 포함됩니다. 자세한 내용은 스크립트 가이드라인 및 요구사항을 참조하십시오.

채팅 스크립트 예시

샘플 통합에서 사용되는 것과 같은 스크립트입니다. 이 스크립트를 고유한 스크립트 작성 시 기준으로 사용할 수 있습니다. 음성 디지털 가상 상담원에 대한 스크립트 예시도 제공됩니다.

이 스크립트 다운로드하기.

이 스크립트는 가상 상담원 통합에 필요한 동적 데이터 개체를 여러 개 생성하는 Snippet 작업으로 시작합니다.

  • intentInfo
  • nextPromptSequence
  • nextPromptBehaviors
  • customPayload
  • botSessionState

첫 번째 Textbot Exchange 작업은 환영 의도에 따라 응답하도록 가상 상담원에 대한 의도닫힘 컨택이 말하거나 입력하는 내용의 의미나 목적이며 컨택이 전달하고자 하는 내용이나 원하는 내용입니다.를 설정합니다. 가상 상담원이 회신하면 botSessionStatecustomPayload 개체를 채우고 .asjson() 기능을 사용하여 이러한 개체를 JSON으로 변환합니다.

첫 번째 Textbot Exchange 작업에는 다음과 같은 세 가지 분기가 있습니다.

  • Error: 오류 분기는 오류를 처리하고 컨택에게 적절한 메시지를 제공합니다.
  • Return Control to Script: 이 분기는 가상 상담원이 대화가 완료되었거나 컨택을 실시간 상담원에게 전환해야 한다는 신호를 보내는 경우 사용됩니다.
  • Prompt and Collect Next Response: 이 분기는 아래 설명처럼 대화를 계속 진행합니다.

이 스크립트는 botsessionState, customPayloadFromBot, intentInfonextPrompt 개체에서 가상 상담원으로부터 수신한 데이터를 전달합니다. Askcaller 작업은 가상 상담원의 응답(nextPrompt)으로 컨택에게 프롬프트를 표시합니다. 이 작업에는 다음 네가지 분기가 있습니다.

  • Error
  • Return Control to Script
  • Caller Responded
  • Default

모든 분기는 RES 변수에 저장된 컨택의 다음 요청을 비롯하여 적절한 정보를 가상 상담원에게 보내는 두 번째 Textbot Exchange 작업으로 이동합니다. Textbot Exchange에는 스크립트의 작업 중 첫 번째 인스턴스와 동일한 분기가 있습니다.

서비스 엔드포인트 인증

할 일: 가상 상담원 서비스의 인증 요구사항을 결정합니다. 인증이 필요한 경우 TDD의 이 섹션을 완료하십시오. 환경에 맞는 인증 요구사항을 설명하는 다이어그램을 작성합니다. 여기에는 인증 요청에 필요한 세부사항이 포함됩니다. 다음 정보가 포함될 수 있습니다.

  • 인증 유형(헤더 또는 토큰)
  • 필요한 모든 헤더에 대한 키-값 쌍. 사용자 정의 교환 버전 1.0.0을 사용하는 경우 헤더에 대한 값만 있으면 됩니다.
  • 가상 상담원에 대한 모든 구성 요구사항(헤더를 사용하는 경우) 또는 인증 서버(토큰을 사용하는 경우)
  • 인증 서버 URL(토큰을 사용하는 경우)
  • O 인증 요청 본문 및 헤더에 필요한 키-값 쌍
  • 다른 O 인증 설정을 사용자 정의해야 하거나 하려는 경우 변경 사항을 지정합니다. 헤더 이름, 헤더 값 접두사 및 토큰 만료 시간을 변경할 수 있습니다.

자세한 내용은 리소스 페이지의 인증 섹션을 참조하십시오.

비인증(공개) 서비스 엔드포인트 예시

샘플 통합에는 인증이 필요하지 않습니다. 다음 다이어그램은 공개 서비스 엔드포인트가 어떤 모습일 수 있는지 예를 들어 보여 줍니다.

이 예에서 요청은 가상 상담원 허브에서 발생합니다. 가장 먼저 API 게이트웨이와 상호작용하고 가상 상담원 서비스와 상호작용합니다.

승인된 서비스 엔드포인트의 예시

가상 상담원 서비스에서 요청을 수신하기 위해 인증을 요구하는 경우 요청 시마다 승인 헤더를 보내야 합니다. 또한 동적 인증을 사용할 수도 있는데, 여기에는 인증 서버(토큰 제공자)가 필요합니다. 헤더를 사용하는 통합 아키텍처는 이전 섹션에서 설명한 공개 서비스 엔드포인트의 예와 유사합니다. 다음 다이어그램은 동적 인증 구현의 예시를 보여줍니다.

이 예에서는 스크립트가 시작할 때 토큰을 제공하는 인증 서버에 대해 REST 요청이 생성됩니다. 토큰은 사용자 정의 교환 엔드포인트로 전송됩니다. 토큰이 유효하기만 하면 가상 상담원 서비스로 요청을 보낼 수 있습니다.

프록시 터널

할 일: 다음을 비롯하여 프록시 터널에 대한 세부사항을 결정합니다.

  • 프록시 터널을 호스트할 방법
  • 프록시 터널을 개발할 언어, 필요한 애플리케이션, 종속성, SDK, 확장 팩 등
  • 프록시 터널 장애조치 전략

예시

프록시 터널 호스팅

예시 프록시 터널은 텍스트 가상 상담원 통합 예시를 설정한 사람의 로컬 시스템에서 호스트됩니다.

언어

프록시 터널은 C#으로 개발됩니다. 그러기 위해서는 VS 코드 편집기와 .NET SDK가 필요합니다.

장애조치 전략

이 통합은 예시에 불과하기 때문에 장애조치 전략이 필요 없습니다.

가상 상담원 사용 사례 - 프록시-가상 상담원 엔드포인트 매핑

할 일: 상호작용 중 각 지점에서 사용되는 응답 및 요청을 설명하는 자세한 시퀀스 다이어그램을 작성합니다. CXone 및 가상 상담원 서비스에서 사용자 정의 통합에 필요한 요청 및 응답 스키마를 문서화합니다. 이 섹션의 예는 에 대한 스키마만 표시합니다CXone. 자세한 내용은 리소스 페이지의 프록시 터널 섹션시퀀스 다이어그램 섹션을 참조하십시오 .

예시

시퀀스 다이어그램과 뒤이어 나오는 모든 내용은 이 문서를 게시할 당시 제공된 Swagger를 기반으로 한 예시입니다. 사용자 정의 가상 상담원 통합을 위해 항상 공개적으로 사용 가능한 Swagger 중앙에서 바깥쪽을 가리키는 화살표가 있는 사각형입니다.에 문서화된 스키마를 사용합니다. 사용자 정의 교환 엔드포인트 스키마는 주기적으로 업데이트될 수 있습니다. 이러한 업데이트가 사용자 정의 통합에 미치는 영향에 대한 자세한 정보는 리소스 페이지를 참조하십시오.

요청 및 응답 스키마

이 페이지에는 요청에 대한 스키마가 스키마 문서화의 예시로 나와 있습니다. 사용자 정의 가상 상담원 통합 스키마에 대한 자세한 설명은 스키마 페이지를 참조하십시오.

요청- ExternalIntegrationBotExchangeRequest

매개변수

유형

설명

virtualAgentId 문자열

가상 상담원 허브에서 사용자 정의 교환 엔드포인트 구성 앱에 제공되는 이름입니다. 이 이름은 앱이 호출하는 가상 상담원을 식별합니다.

botConfig Object botConfig에서 정의되는 매개 변수는 이 문서의 다른 섹션에서 설명합니다.
userInput 문자열 스크립트가 할당된 컨택 포인트닫힘 인바운드 컨택이 인터랙션을 개시하는 데 사용되는 진입점(예: 전화번호, 이메일 주소)입니다.에서 수신한 사용자의 텍스트 입력입니다.
userInputType Enum 스크립트에서 제공하는 사용자 입력 유형입니다.
executionInfo ActionExecutionInfo 스크립트 내에서 작업닫힘 고객 데이터 모음, 메시지 또는 음악 재생 또는 상담원에게 컨택 라우팅과 같은 Studio 스크립트 내에서 프로세스를 수행합니다.의 실행에 대한 원격 측정 데이터입니다.
systemTelemetryData SystemTelemetryData 디버깅에 사용할 수 있는 데이터입니다. CXone 인프라에 대한 정보를 포함하고 있습니다.
base64wavFile 문자열 요청의 헤더와 사용자 발화닫힘 컨택이 말하거나 입력하는 내용입니다. 오디오를 포함하는 Base 64 인코딩 WAV 파일을 포함합니다.
botSessionState Object 가상 상담원으로부터 수신한 왕복 세션 정보 변수에 사용할 수 있습니다.
customPayload Object Studio 스크립트의 컨텍스트에서 추가 변수 및 매개 변수를 보내는 데 사용할 수 있습니다.
mediaType 문자열 실행 중인 스크립트의 미디어 유형을 나타냅니다.

요청- ActionExecutionInfo

매개변수

유형

설명

contactID 정수 상호작용의 고유 식별자입니다.
busNo 정수 테넌트닫힘 고급 조직 그룹화는 CXone 환경을 위해 기술 지원, 청구 및 글로벌 설정을 관리하는 데 사용됩니다.의 고유 식별자입니다.
requestId 정수

특정 상호작용에서 각 요청을 식별하는 반복되는 숫자입니다.

 

actionType 문자열 사용자 정의 교환 엔드포인트에 대한 요청을 생성하는 작업 유형입니다.
actionId 정수 스크립트에서 작업닫힘 고객 데이터 모음, 메시지 또는 음악 재생 또는 상담원에게 컨택 라우팅과 같은 Studio 스크립트 내에서 프로세스를 수행합니다.에 대한 고유한 식별자입니다. 작업 ID는 작업이 스크립트에 추가되는 순서를 기반으로 합니다.
scriptName 문자열 스크립트의 이름입니다.

요청 - SystemTelemetryData

매개변수

유형

설명

consumerProccessHost 문자열 API를 호출하는 애플리케이션의 호스트 이름입니다.
consumerProcessName 문자열 API 호출자의 프로세스 또는 애플리케이션 이름입니다. 예: EsnMediaServer.exe.
consumerProcessVersion 문자열 API를 호출하는 애플리케이션에 대한 버전 정보입니다.
inContactClusterAlias 문자열 적용 가능하고 확인 가능한 경우 NICE CXone 클러스터 별칭(예: C7 또는 M33)을 입력합니다.
inContactScriptEngineHost 문자열 적용 가능하고 확인 가능한 경우 NICE CXone 스크립트 엔진 호스트 이름(예: lax-c4cor01 또는 aoa-c32cor01)을 입력합니다.
consumerMetaData Object API 소비자에 대한 임의의 확장 가능한 데이터입니다.

디지털 채널에 대한 리치 미디어 콘텐츠

Digital Experience(디지털) 채널에 대한 사용자 정의 가상 상담원 통합을 설정하는 경우 메시지에서 리치 미디어 콘텐츠를 지원하도록 선택할 수 있습니다. 리치 미디어 콘텐츠에는 목록 선택기, 이미지, 시간 선택기 등과 같은 콘텐츠가 포함됩니다.

할 일: 리치 미디어 콘텐츠를 보내도록 디지털 스크립트를 구성합니다. 지원하려는 리치 미디어를 결정하여 TDD의 이 섹션에 콘텐츠에 대한 스키마를 추가합니다.

예시

샘플 통합에서는 Digital Experience 채널을 사용하지 않습니다. 그러나 다음은 디지털 채팅 채널에서 빠른 응답을 위한 JSON 스키마의 예입니다.

"messageContent": {
"type": "PLUGIN",
"payload": {
	"elements": [
	 {
		"id": "Ukm0hRAiA",
		"type": "QUICK_REPLIES",
		"elements": [
				{
					"id": "Akm0hRAiX",
					"type": "TEXT",
					"text": "This is some text"
				},
				{
					"id": "Nkm0hRAiE",
					"type": "BUTTON",
					"text": "Button 1",
					"postback": "click-on-button-1"
				},
				{
				
					"id": "TkGJ6CAiN",
					"type": "BUTTON",
					"text": "Button 2",
					"postback": "click-on-button-2"
				},
				{
					"id": "EyCyTRCi4",
					"type": "BUTTON",
					"text": "Button 3",
					"postback": "click-on-button-3"
				}
			 ]
			}
		]
 	}
}