Questo documento descrive un problema rilevato durante l'aggiornamento dei sistemi Cisco Unified Contact Center Express (UCCX) alle versioni 8 e successive e quando un numero elevato di elementi del repository viene caricato nel sistema o quando si tenta di caricare un numero elevato di elementi del repository nel sistema nelle versioni 8 e successive.
UCCX versione 7.x e successive utilizzano Microsoft SQL (MSSQL) come motore di database. In termini di archiviazione dei dati, MSSQL non distingue tra dati di tipi diversi. Quando i dati vengono memorizzati in un database da 3 GB, MSSQL memorizza tutti i dati, indipendentemente dal tipo, in un blocco da 3 GB.
Informix, invece, il modulo di gestione di database utilizzato in UCCX versione 8.0 e successive, distingue tra i diversi tipi di dati quando li memorizza sul disco. I dati tipici del database, ad esempio Stringhe, Caratteri e Numeri interi, vengono memorizzati in un blocco di disco dedicato al database, mentre i dati BLOB (Binary Large Object), se presenti nei record della tabella del database, vengono memorizzati in una sezione separata del disco, denominata spazio secondario. Uno spazio secondario è un'unità logica composta da uno o più blocchi di disco in cui sono memorizzati i dati BLOB. Informix memorizza i dati tradizionali e i dati BLOB separatamente per migliorare le prestazioni di lettura e scrittura dei dati BLOB da e verso il database e il disco. Quando viene creato un database che contiene dati BLOB, l'amministratore deve specificare separatamente le dimensioni dei blocchi del disco per il database (per memorizzare i dati tradizionali) e le dimensioni dello spazio secondario.
Per i meccanismi di archiviazione dei dati, MSSQL suddivide tutti i dati in un singolo bucket di dimensioni N, mentre Informix suddivide l'archiviazione dei dati in due bucket: un bucket per le informazioni contestuali sui dati BLOB di dimensione X e un altro bucket per gli oggetti BLOB stessi di dimensione Y.
In UCCX, l'amministratore ha la possibilità di caricare elementi del repository costituiti da prompt, documenti, grammatiche e script. Il contenuto di questi elementi viene memorizzato nelle tabelle di database corrispondenti come dati BLOB e informazioni contestuali su di essi, ad esempio il nome del file, la cartella, l'ora dell'ultima modifica, l'utente dell'ultima modifica, la lunghezza e il checksum.
Gli elementi del repository vengono memorizzati nel database UCCX db_cra_repository. Nelle versioni 7.x e precedenti di UCCX che utilizzano MSSQL, db_cra_repository ha una dimensione di 3 GB e contiene le informazioni contestuali e BLOB. In UCCX versioni 8.0 e successive che utilizzano Informix, il blocco di archiviazione dati collegato al db_cra_repository ha una dimensione di 10,2 MB e memorizza solo le informazioni contestuali sugli elementi del repository. Il contenuto degli elementi del repository viene archiviato in formato BLOB in uno spazio secondario denominato uccx_sbspace. Nelle versioni UCCX 8.0 e successive, lo spazio uccx_sbspace ha una dimensione di 3 GB.
L'output del comando show uccx dbserver disk su un server UCCX versione 8.0+ rivela la distinzione tra questi due archivi dati:
A seconda della combinazione di dati nel database MSSQL, è possibile che le dimensioni dei dati BLOB memorizzati nel database MSSQL superino le dimensioni definite dello spazio secondario in Informix quando si tenta di eseguire una migrazione o un aggiornamento. Analogamente, è possibile che le informazioni contestuali sui dati BLOB memorizzati nel database MSSQL superino le dimensioni specificate a livello amministrativo per tali dati nel blocco di database Informix.
In questo caso, l'aggiornamento o la migrazione da UCCX versione 7.x a UCCX versione 8.x ha esito negativo perché db_cra_repository o uccx_sbspace non è sufficientemente grande per contenere le stesse informazioni archiviate in MSSQL. Si tratta in genere di un problema in un sistema UCCX che contiene un numero elevato di richieste. I dati di tipo Prompt contestuale e BLOB devono condividere db_cra_repository e uccx_sbspace con Documenti, Grammatiche e Script, ma questi altri tipi di repository sono in genere di dimensioni e numeri ridotti.
Ad esempio, si consideri un sistema UCCX versione 7.x con decine di migliaia di richieste, ognuna con pochi secondi di audio. In UCCX versione 7.x che utilizza MSSQL, il contenuto del prompt e le informazioni contestuali vengono archiviati nello stesso blocco da 3 GB. Poiché sono presenti molti prompt di piccole dimensioni, il database potrebbe memorizzare 50 MB di informazioni contestuali sui prompt, ma solo 2 GB di dati BLOB che rappresentano l'audio dei prompt. Pertanto, i prompt nel repository occupano poco più di 2 GB del limite di 3 GB impostato durante la creazione del database.
Quando si tenta di migrare il sistema a UCCX versione 8.x e Informix, la migrazione non riesce in quanto i 50 MB di informazioni contestuali superano il limite di 10,2 MB del db_cra_repository anche se i 2 GB di contenuto Prompt rientrano ampiamente nel limite del uccx_sbspace.
Al contrario, si consideri un sistema UCCX versione 7.x con un numero inferiore di prompt, ma ancora numerosi. Con un numero minore di richieste ma di dimensioni maggiori, il rapporto tra il contenuto di richiesta e le informazioni contestuali è diverso. In UCCX versione 7.x e MSSQL, il contenuto del prompt potrebbe occupare 2,8 GB del db_cra_repository, e le informazioni contestuali 3 MB. Il sistema viene aggiornato correttamente, poiché i 3 MB si adattano al db_cra_repository, mentre i 2,8 GB si adattano allo spazio sucx_sbspace allocato.
In genere, quando si tenta di eseguire la migrazione a UCCX versione 8.x e successive, i dati contestuali relativi ai prompt caricati nel sistema UCCX versione 7.x o precedente superano il limite di dimensioni di db_cra_repository prima che il contenuto del prompt superi il limite di dimensioni di uccx_sbspace. Inoltre, lo spazio disponibile per gli elementi del repository personalizzato è di 6,9 MB, in quanto la configurazione predefinita utilizza 3,4 MB di db_cra_repository.
Quando si tenta di caricare nuovi elementi del repository (documenti, grammatiche, prompt, script) in un sistema UCCX che esegue la versione 8 o successive, viene visualizzato questo messaggio di errore:
The files uploaded are not valid or not structured
according to languages. Please check the help
documentation for more details.
La migrazione da UCCX versione 7.0(2) e precedenti a UCCX versione 8.0 e successive modifica il sistema operativo e il motore di database su cui viene eseguita l'applicazione. Il modulo di gestione di database utilizzato in UCCX versione 8.0 e successive memorizza i dati in modo diverso rispetto a UCCX versione 7.x e successive. Questo ha implicazioni sulla migrazione di UCCX, in quanto i database che contengono dataset di grandi dimensioni in UCCX versione 7.x potrebbero non essere migrati correttamente in UCCX versione 8.x.
Prima di eseguire la migrazione a UCCX versione 8.x, stimare la quantità di db_cra_repository e uccx_sbspace necessaria per memorizzare gli elementi del repository corrente nel sistema UCCX versione 7.x, in modo da includere eventuali future espansioni.
Per iniziare, determinare il numero di righe in ciascuna delle tabelle del repository che contengono informazioni sia sugli elementi del repository che sulle cartelle.
Utilizzare Microsoft SQL Query Analyzer per registrare il numero di righe dalle tabelle delle cartelle del repository con i seguenti comandi:
Informix considera le dimensioni su disco in termini di pagine. Determinare il numero di pagine occupate dal contenuto delle tabelle delle cartelle del repository con questa formula e sostituire il numero di righe per i conteggi ottenuti dai comandi precedentemente menzionati. Calcolare questa formula per ogni tabella e aggiungere il numero di pagine. Non è possibile determinare con precisione il numero di pagine se il numero di righe di ogni tabella viene aggiunto per primo e quindi viene calcolato il risultato della formula.
# Pagine documentifocartellabella + # Pagine grammaticafartellabella + # Pagine prompt foldertbl + # Pagine scriptsfoldertbl = Numero totale di pagine per le tabelle delle cartelle
Completare lo stesso calcolo per determinare il numero totale di pagine per le tabelle file che contengono gli elementi effettivi del repository. Immettere i seguenti comandi con Microsoft SQL Query Analyzer:
Determinare il numero di pagine occupate dal contenuto delle tabelle dei file del repository con questa formula e sostituire il numero di righe con i conteggi ottenuti dai comandi precedentemente menzionati. Calcolare la formula per ogni tabella e aggiungere il numero di pagine.
# Pagine documentifiletbl + # Pagine grammaticafiletbl + # Pagine prompt filetbl + # Pagine scriptsfiletbl = Numero totale di pagine per le tabelle file
Per completare la stima corrente delle dimensioni dei dati del repository, eseguire i seguenti calcoli:
Se i calcoli mostrano che le informazioni contestuali relative agli elementi e alle cartelle del repository attualmente caricati in UCCX versione 7.x superano i 3,4 MB, si consiglia di eseguire il refactoring della progettazione degli elementi del repository. Sebbene lo spazio disponibile per le informazioni contestuali sugli elementi del repository in db_cra_repository sia di 6,9 MB, si consiglia di lasciare il 50% disponibile per la crescita futura. Le stime di crescita e lo spazio occupato massimo consentito vengono calcolati per installazione, in base ai fattori di crescita previsti.
Poiché i prompt sono in genere il consumer più grande dello spazio del repository, i metodi utilizzati per ridurre il numero di prompt nel repository sono illustrati nel resto di questo articolo.
Se i prompt attualmente caricati nel repository UCCX versione 7.x occupano una parte significativa dello spazio di storage complessivo del repository, eseguire il refactoring di Progettazione prompt, storage e recupero prima di migrare a UCCX versione 8.x. Quando tentate di effettuare il refactoring della progettazione del prompt, tenete presenti le seguenti opzioni:
Il formato VXML viene utilizzato per recuperare e riprodurre i prompt su richiesta da una posizione esterna. Se si memorizzano grandi quantità di richieste in un server Web separato, è possibile:
Sebbene esistano molte opzioni per instrumentare la personalizzazione di Interactive Voice Response (IVR) in VXML, lo script UCCX e l'applicazione VXML utilizzati per recuperare un prompt da un server Web esterno e riprodurlo al chiamante vengono utilizzati come base per ulteriori sviluppi. Analogamente ad altri script personalizzati in UCCX, gli script forniti in questa sezione vengono forniti come guida e non sono supportati da Cisco Technical Assistance Center (TAC).
Il passaggio Voice Browser utilizza un documento VXML. Questo documento deve essere creato come risultato del passaggio Crea documento URL e deve essere ospitato in un server Web esterno a UCCX. Sebbene l'applicazione VXML sia scritta per accettare l'input del chiamante tramite DTMF (Dual Tone Multi Frequency), questa applicazione è progettata solo per riprodurre un prompt che è ospitato in modalità off-box. Tuttavia, può essere ampliata per includere funzionalità aggiuntive. Si presume che il resto dello script UCCX, prima che il passaggio Voice Browser venga richiamato, abbia la logica necessaria per determinare quale prompt viene riprodotto e una variabile String impostata sul nome file Prompt.
Poiché il documento VXML è statico, ma il prompt riprodotto attraverso di esso è dinamico, per crearlo viene utilizzato un linguaggio di script sul lato server. Può trattarsi di qualsiasi linguaggio di script sul lato server che abbia la capacità di impostare l'intestazione Content-type della risposta XML GET Request. Nell'esempio viene utilizzato PHP.
La pagina PHP viene scritta per accettare un parametro URL in una richiesta GET che rappresenta il nome del prompt audio riprodotto. La pagina PHP concatena il modello VXML con il nome file Prompt passato nei parametri URL della richiesta GET per formare il documento VXML completo. Imposta quindi l'intestazione Content-type della risposta su XML e il corpo della risposta su 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;
?>
Per produrre un documento VXML ben formato, è necessario accedere alla pagina PHP di esempio con una richiesta GET che contiene un parametro wav e un valore String, presupponendo che la pagina PHP di esempio sia denominata generatevxml.php:
http:///path/generatevxml.php?wav=MenuPrompt
Verificare che il file MenuPrompt.wav si trovi nel percorso del server Web esterno specificato nel modello VXML contenuto nella pagina PHP.
Nello script UCCX, usare il passo Create URL Document per eseguire una richiesta GET di generatevxml.php concatenando l'URL di base di http://<Servername or IP Address>/path/generatevxml.php?wav= con il nome file Prompt derivato dalla logica di script precedente, quindi inserire il risultato in una variabile di documento.
Creare un passaggio di Voice Browser che utilizza la variabile di documento.
Quando viene chiamato questo script, a condizione che sia generatevxml.php che MenuPrompt.wav siano accessibili sul server Web da UCCX, il prompt MenuPrompt.wav viene eseguito al chiamante.
Quando si utilizzano applicazioni VXML per archiviare i prompt in modo che vi si possa accedere solo quando necessario per poterli riprodurre al chiamante, è possibile ottenere una maggiore efficienza, gestibilità e facilità di manutenzione. Si tratta di un problema da considerare se un sistema UCCX versione 7.x viene aggiornato a un sistema UCCX versione 8.x e il numero di Prompt è tale che il contenuto delle informazioni contestuali è maggiore di db_cra_repository o di uccx_sbspace.
Revisione | Data di pubblicazione | Commenti |
---|---|---|
1.0 |
12-Sep-2013 |
Versione iniziale |