本文描述將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查詢分析器,使用以下命令記錄儲存庫資料夾表中的行數:
Informix在頁面方面考慮磁碟大小。使用此公式確定「資料檔案庫」資料夾表的內容所佔用的頁數,並用行數代替從前面的命令中獲得的計數。為每個表計算此公式,並新增頁數。如果首先新增每個表的行數,然後計算公式結果,則不可能準確地確定頁數。
# Pages documentsfoldertbl + # Pages grammarsfoldertbl + # Pages promptsfoldertbl + # Pages scriptsfoldertbl =文件夾表的總頁數
完成相同計算,以確定包含實際儲存庫專案的檔案表的總頁數。使用Microsoft SQL查詢分析器輸入以下命令:
使用此公式確定「資料檔案庫」檔案表的內容所佔用的頁數,並用從前面提到的命令中獲得的計數替換Number of Rows。為每個表計算公式並新增頁數。
# Pages documentsfiletbl + # Pages grammarsfiletbl + # Pages promptsfiletbl + # Pages scriptsfiletbl =檔案表的總頁數
執行這些計算,以完成當前儲存庫資料大小估計:
如果計算顯示當前在UCCX版本7.x中上載的儲存庫專案和資料夾的上下文資訊超過3.4 MB,則建議重新設計儲存庫專案設計。儘管db_cra_repository中儲存庫專案的上下文資訊的可用空間為6.9 MB,但建議保留50%的可用空間供未來增長使用。基於預期增長係數對每個部署計算增長估計和最大允許佔用空間。
由於提示通常是儲存庫空間的最大使用者,因此本文的其餘部分將討論用於減少儲存庫中提示數量的方法。
如果當前上傳到UCCX版本7.x儲存庫中的提示佔整個儲存庫儲存空間的重要部分,請在遷移到UCCX版本8.x之前重新思考提示的設計、儲存和檢索。當您嘗試重構提示符設計時,請考慮以下選項:
使用VXML從出廠位置按需檢索和播放提示。如果在單獨的Web伺服器上儲存大量提示,則可以:
雖然有許多選項用於在VXML中實現Interactive Voice Response(IVR)定製,但作為進一步開發的基礎,使用UCCX指令碼和VXML應用程式從機外Web伺服器檢索提示並向呼叫方播放。與UCCX中的其他自定義指令碼類似,本節中提供的指令碼將作為指南提供,並且不受思科技術支援中心(TAC)的支援。
語音瀏覽器步驟使用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,則這是一個需要考慮的問題。
修訂 | 發佈日期 | 意見 |
---|---|---|
1.0 |
12-Sep-2013 |
初始版本 |