目錄

簡介

背景資訊

問題

解決方案

估計當前儲存庫資料大小

確定儲存庫資料夾表中的行數

確定儲存庫資料夾表使用的頁數

確定儲存庫專案檔案表使用的頁數

計算

提示

簡介

本文描述將Cisco Unified Contact Center Express(UCCX)系統升級到版本8及更高版本時，以及將大量儲存庫專案上傳到系統時，或嘗試將大量儲存庫專案上傳到版本8及更高版本中的系統時遇到的問題。

背景資訊

UCCX版本7.x及更高版本使用Microsoft SQL(MSSQL)作為資料庫引擎。MSSQL在資料儲存方面並不區分不同型別的資料。當在3 GB資料庫中儲存資料時，MSSQL將所有資料（無論其型別如何）儲存在一個3 GB資料塊中。

相比之下，UCCX 8.0版及更高版本中使用的資料庫引擎Informix在磁碟上儲存不同型別的資料時會加以區分。典型的資料庫資料（如字串、字元和整數）儲存在專用於資料庫的磁碟區塊中，而二進位制大對象(BLOB)資料（如果資料庫表記錄中存在任何資料）儲存在磁碟的單獨部分（稱為子空間）中。子空間是由儲存BLOB資料的一個或多個磁碟塊組成的邏輯單元。Informix單獨儲存傳統資料和BLOB資料，以提高從資料庫和磁碟讀取和寫入BLOB資料的效能。建立包含BLOB資料的資料庫時，管理員必須分別指定資料庫的磁碟塊大小（以便儲存傳統資料）和子空間大小。

對於資料儲存機制，MSSQL將所有資料放入一個大小為N的資料桶，而Informix將此資料的儲存分為兩個資料桶：一個儲存桶儲存有關大小為X的BLOB資料的上下文資訊，另一個儲存桶儲存大小為Y的BLOB對象本身。

在UCCX中，管理員可以選擇上傳包含提示、文檔、文法和指令碼的儲存庫專案。這些專案的內容將作為BLOB資料和關於它們的上下文資訊（如檔名、資料夾、上次修改時間、上次修改使用者、長度和校驗和）儲存在相應的資料庫表中。

儲存庫專案儲存在UCCX資料庫db_cra_repository中。在使用MSSQL的UCCX版本7.x及更低版本中，db_cra_repository的大小為3 GB，包含上下文資訊和BLOB資訊。在使用Informix的UCCX版本8.0及更高版本中，連線到db_cra_repository的資料儲存區塊大小為10.2 MB，且僅儲存有關儲存庫專案的上下文資訊。儲存庫專案的內容以BLOB格式儲存在名為uccx_sbspace的子空間中。在UCCX 8.0及更高版本中，uccx_sbspace的大小為3 GB。

在UCCX版本8.0+伺服器上，show uccx dbserver disk的輸出顯示了這兩個資料儲存之間的區別：

根據MSSQL資料庫中的資料混合，在嘗試遷移或升級時，儲存在MSSQL資料庫中的BLOB資料大小可能會超過Informix中定義的子空間大小。同樣，儲存在MSSQL資料庫中的BLOB資料的上下文資訊可能會超過Informix資料庫區塊中該資料的管理性指定大小。

發生這種情況時，從UCCX版本7.x升級或遷移到UCCX版本8.x失敗，因為db_cra_repository或uccx_sbspace的大小不足以容納儲存在MSSQL中的相同資訊。這通常是包含大量提示的UCCX系統中的問題。上下文提示和BLOB資料必須與文檔、文法和指令碼共用db_cra_repository和uccx_sbspace，但是這些其他儲存庫型別的大小和數量通常都很小。

例如，假設一個UCCX版本7.x系統有成千上萬個提示，每個提示只有幾秒鐘的音訊。在使用MSSQL的UCCX版本7.x中，提示內容和上下文資訊儲存在同一個3 GB區塊中。因為有許多小尺寸的提示，資料庫可能儲存50 MB有關提示的上下文資訊，但只有2 GB的BLOB資料表示提示的音訊。因此，儲存庫中的提示佔用的資料庫建立時設定的3-GB限制的2 GB多一點。

嘗試將此系統遷移到UCCX版本8.x和Informix時，遷移將失敗，因為50 MB的上下文資訊超過db_cra_repository的10.2 MB限制，即使2 GB的提示內容完全符合uccx_sbspace的限制。

相反，請考慮具有較少但仍較多長提示的UCCX版本7.x系統。Prompts較少但大小較大時，Prompt內容與上下文資訊的比率不同。在UCCX版本7.x和MSSQL中，提示符內容可能佔用2.8 GB的db_cra_repository，而上下文資訊3 MB。由於3 MB可以安裝在db_cra_repository中，而2.8 GB可以安裝在uccx_sbspace中，因此此系統成功升級。

通常，當您嘗試遷移到UCCX版本8.x及更高版本時，有關上載到UCCX版本7.x或更低版本的系統的提示的上下文資料在提示內容超過uccx_sbspace的大小限制之前，會超過db_cra_repository的大小限制。此外，自定義儲存庫專案可用的實際可用空間為6.9 MB，因為預設配置佔用db_cra_repository的3.4 MB。

問題

當您嘗試將新的儲存庫專案（文檔、語法、提示、指令碼）上載到運行版本8或更高版本的UCCX系統時，會收到以下錯誤消息：

The files uploaded are not valid or not structured

according to languages. Please check the help

documentation for more details.

從UCCX版本7.0(2)及更低版本遷移到8.0及更高版本的過程改變了運行應用程式的作業系統和資料庫引擎。UCCX 8.0及更高版本中使用的資料庫引擎儲存資料的方式與UCCX 7.x及更高版本不同。這會對UCCX的遷移產生影響，因為UCCX版本7.x中包含大型資料集的資料庫可能無法正確遷移到UCCX版本8.x。

解決方案

在遷移到UCCX版本8.x之前，請估計在UCCX版本7.x系統中儲存當前儲存庫專案所需的db_cra_repository和uccx_sbspace量，以便包括任何未來的增長。

估計當前儲存庫資料大小

若要開始，請確定每個Repository表中同時包含Repository專案和資料夾資訊的行數。

確定儲存庫資料夾表中的行數

使用Microsoft SQL查詢分析器，使用以下命令記錄儲存庫資料夾表中的行數：

- 從文檔中選擇計數(*)

- 從GRAMMARSFOLDERTBL中選擇COUNT(*)

- 從PROMPTSFOLDERTBL中選擇COUNT(*)

- 從SCRIPTSFOLDERTBL中選擇COUNT(*)

確定儲存庫資料夾表使用的頁數

Informix在頁面方面考慮磁碟大小。使用此公式確定「資料檔案庫」資料夾表的內容所佔用的頁數，並用行數代替從前面的命令中獲得的計數。為每個表計算此公式，並新增頁數。如果首先新增每個表的行數，然後計算公式結果，則不可能準確地確定頁數。

- # pages documentsfoldertbl =文檔中的行數/(2020 /(180 + 4))

- # pages grammarsfoldertbl =Number of Rows in grammarsfoldertbl /(2020 /(180 + 4))

- # pages promtsfoldertbl = promtsfoldertbl中的行數/(2020 /(180 + 4))

- # pages scriptsfoldertbl = Number of Rows in scriptsfoldertbl/(2020 /(180 + 4))

# Pages documentsfoldertbl + # Pages grammarsfoldertbl + # Pages promptsfoldertbl + # Pages scriptsfoldertbl =文件夾表的總頁數

確定儲存庫專案檔案表使用的頁數

完成相同計算，以確定包含實際儲存庫專案的檔案表的總頁數。使用Microsoft SQL查詢分析器輸入以下命令：

- 從DOCUMENTSFILETBL中選擇COUNT(*)

- 從GRAMMARSFILETBL中選擇COUNT(*)

- 從PROMPTSFILETBL中選擇COUNT(*)

- 從SCRIPTSFILETBL中選擇COUNT(*)

使用此公式確定「資料檔案庫」檔案表的內容所佔用的頁數，並用從前面提到的命令中獲得的計數替換Number of Rows。為每個表計算公式並新增頁數。

- # pages documentsfiletbl = documentsfiletbl中的行數/(2020 /(229 + 4))

- # pages grammarsfiletbl =Number of Rows in grammarsfiletbl /(2020 /(229 + 4))

- # pages prompstfiletbl =prompstfiletbl中的行數/(2020 /(229 + 4))

- # pages scriptsfiletbl = Number of Rows in scriptsfiletbl/(2020 /(229 + 4))

# Pages documentsfiletbl + # Pages grammarsfiletbl + # Pages promptsfiletbl + # Pages scriptsfiletbl =檔案表的總頁數

計算

執行這些計算，以完成當前儲存庫資料大小估計：

1. 確定在Informix中儲存當前儲存庫所需的總頁數，包括：

總頁數=檔案表的總頁數+資料夾表的總頁數

2. 確定頁面使用的總空間(MB):

總頁數x 2 =總大小(MB)

如果計算顯示當前在UCCX版本7.x中上載的儲存庫專案和資料夾的上下文資訊超過3.4 MB，則建議重新設計儲存庫專案設計。儘管db_cra_repository中儲存庫專案的上下文資訊的可用空間為6.9 MB，但建議保留50%的可用空間供未來增長使用。基於預期增長係數對每個部署計算增長估計和最大允許佔用空間。

提示

由於提示通常是儲存庫空間的最大使用者，因此本文的其餘部分將討論用於減少儲存庫中提示數量的方法。

如果當前上傳到UCCX版本7.x儲存庫中的提示佔整個儲存庫儲存空間的重要部分，請在遷移到UCCX版本8.x之前重新思考提示的設計、儲存和檢索。當您嘗試重構提示符設計時，請考慮以下選項：

- 減少「提示」資料夾的數量。如前面的計算中所示，每個Prompt資料夾在儲存庫資料庫中佔據一行，因此會根據db_cra_repository限制消耗空間。如果減少資料夾數，則可以釋放檔案空間。

- 跨應用程式/指令碼共用常見單詞或短語的提示，以減少系統中需要的提示數。

- 使用系統提供的提示來顯示提示之間的共性，例如數字和貨幣。

- 將提示儲存在企業內的獨立Web伺服器上，並使用Voice XML(VXML)按需檢索和播放必要的提示。

使用VXML從出廠位置按需檢索和播放提示。如果在單獨的Web伺服器上儲存大量提示，則可以：

- 消除前面提到的遷移問題，因為提示不再儲存在db_cra_repository中。

- 提供更出色的訪問能力和更輕鬆的管理。

- 減少交換機版本、升級、遷移和備份時間。

雖然有許多選項用於在VXML中實現Interactive Voice Response(IVR)定製，但作為進一步開發的基礎，使用UCCX指令碼和VXML應用程式從機外Web伺服器檢索提示並向呼叫方播放。與UCCX中的其他自定義指令碼類似，本節中提供的指令碼將作為指南提供，並且不受思科技術支援中心(TAC)的支援。

附註：使用Voice Browser步驟從UCCX指令碼呼叫VXML應用。有關語音瀏覽器步驟的詳細資訊，請參閱Cisco Unified Contact Center Express程式設計指南。

語音瀏覽器步驟使用VXML文檔。此文檔必須作為建立URL文檔步驟的結果建立，並且必須託管在UCCX外部的Web伺服器上。雖然編寫VXML應用程式是為了通過雙音多頻(DTMF)接受主叫方輸入，但此應用程式僅用於播放在機上託管的提示。但是，它可以擴展以包括附加功能。假定在呼叫Voice Browser步驟之前，UCCX指令碼的其餘部分具有確定播放哪個提示所需的邏輯，並且有一個字串變數設定為提示檔名。

由於VXML文檔是靜態的，但通過它播放的提示符是動態的，因此使用伺服器端指令碼語言來建立VXML文檔。這可以是能夠設定XML GET Request響應的Content-type標頭的任何伺服器端腳本語言。本示例使用PHP。

編寫PHP頁面是為了在GET Request中接受URL引數，該參數列示播放的音訊提示名稱。PHP頁將VXML模板與在GET Request URL引數中傳遞的Prompt檔名串聯，以便形成完整的VXML文檔。然後，它將響應的Content-type標頭設定為XML，並將響應的正文設定為VXML內容。

<?php

$wav_filename = $_GET['wav'];

$xml_string = '<?xml version="1.0"?>

<vxml xmlns="http://www.w3.org/2001/vxml" version="2.0">

<form>

<block>

<prompt bargein="true">

<audio src="http://<Servername or IP Address>/

<Path>/'.$wav_filename.'.wav" />

</prompt>

</block>

</form>

</vxml>';

header('Content-type: text/xml');

echo $xml_string;

?>

為了生成格式正確的VXML文檔，必須使用包含引數wav和String值的GET Request來訪問示例PHP頁，並假設示例PHP頁名為generatevxml.php:

http://

/path/generatevxml.php?wav=MenuPrompt

確保MenuPrompt.wav位於PHP頁面中包含的VXML模板中指定的外部Web伺服器上的位置。

在UCCX指令碼中，使用Create URL Document步驟執行GET Request of generatevxml.php，使用從以前的指令碼邏輯派生的提示檔名將http://<Servername or IP Address>/path/generatevxml.php?wav=的基本URL串聯，並將結果放入文檔變數中。

建立使用文檔變數的語音瀏覽器步驟。

呼叫此指令碼時，如果generatevxml.php和MenuPrompt.wav都可以從UCCX的Web伺服器上訪問，則MenuPrompt.wav提示會向呼叫方播放。

當使用VXML應用程式將「提示」儲存到裝置外，以便僅在需要時才訪問這些提示，以便向呼叫方播放這些提示時，它實現了更高的效率、可管理性和可維護性。如果UCCX版本7.x系統升級為UCCX版本8.x系統，並且提示符數量使得上下文資訊的內容大於db_cra_repository或uccx_sbspace，則這是一個需要考慮的問題。