المحتويات

المقدمة

معلومات أساسية

المشكلة

الحل

تقدير حجم بيانات المستودع الحالي

تحديد عدد الصفوف في جداول مجلدات المستودع

تحديد عدد الصفحات المستخدمة بواسطة جداول مجلدات المستودع

تحديد عدد الصفحات المستخدمة بواسطة جداول ملفات عناصر المستودع

حساب

تطالبن

المقدمة

يصف هذا المستند مشكلة تمت مصادفتها عند ترقية أنظمة Cisco Unified Contact Center Express (UCCX) إلى الإصدار 8 والإصدارات الأحدث، ويتم تحميل عدد كبير من عناصر المستودع إلى النظام، أو عند محاولة تحميل عدد كبير من عناصر المستودع إلى النظام في الإصدار 8 والإصدارات الأحدث.

معلومات أساسية

يستخدم UCCX الإصدار 7.x والإصدارات الأحدث Microsoft SQL (MSSQL) كمحرك قاعدة البيانات. لا تميز MSSQL، فيما يتعلق بتخزين البيانات، بين البيانات من أنواع مختلفة. وعندما يقوم بتخزين البيانات في قاعدة بيانات بسعة 3 جيجابايت، يقوم MSSQL بتخزين جميع البيانات بغض النظر عن نوعها في كتلة واحدة بسعة 3 جيجابايت.

على النقيض من ذلك، تميز Informix، مشغل قاعدة البيانات المستخدم في UCCX الإصدار 8.0 والإصدارات الأحدث، بين البيانات من الأنواع المختلفة عند تخزينها على القرص. يتم تخزين بيانات قاعدة البيانات النموذجية (مثل السلاسل والأحرف والأعداد الصحيحة.) في مجموعة قرص مخصصة لقاعدة البيانات، بينما يتم تخزين بيانات الكائن الكبير الثنائي (BLOB)، إذا كان هناك أي بيانات موجودة في سجلات جدول قاعدة البيانات، في قسم منفصل من القرص، يسمى SBSPACE. المساحة الفرعية هي وحدة منطقية مكونة من مجموعة واحدة أو أكثر من مجموعات الأقراص التي تخزن بيانات الكائن الثنائي كبير الحجم. يقوم Informix بتخزين البيانات التقليدية وبيانات BLOB بشكل منفصل من أجل زيادة أداء قراءة وكتابة بيانات BLOB من وإلى قاعدة البيانات والقرص. عند إنشاء قاعدة بيانات تحتوي على بيانات BLOB، يجب على المسؤول تحديد حجم مجموعات الأقراص لقاعدة البيانات (لتخزين البيانات التقليدية) وحجم مساحة التخزين الفرعية بشكل منفصل.

بالنسبة لآليات تخزين البيانات، تقوم MSSQL بوضع كافة البيانات في دلو واحد بالحجم N، بينما يقوم Informix بتقسيم تخزين هذه البيانات إلى دولين: دلو واحد للمعلومات السياقية حول بيانات BLOB بالحجم X، ودلو آخر لكائنات BLOB نفسها بالحجم Y.

في UCCX، يتمتع المسؤول بخيار تحميل عناصر المستودع التي تتألف من المطالبات والمستندات والنصوص النصية. يتم تخزين محتويات هذه العناصر في جداول قاعدة البيانات المقابلة مثل بيانات BLOB والمعلومات السياقية حولها، مثل اسم الملف والمجلد ووقت التعديل الأخير وآخر مستخدم معدل وطول المجموع الاختباري.

يتم تخزين عناصر المستودع في قاعدة بيانات UCCX db_cra_repository. في UCCX الإصدار 7.x والإصدارات الأقدم التي تستخدم MSSQL، يبلغ حجم db_cra_repository 3 غيغابايت ويحتوي على معلومات المحتوى ومجموعة البيانات الثنائية الكبيرة (BLOB). في UCCX الإصدار 8.0 والإصدارات الأحدث التي تستخدم Informix، يبلغ حجم مجموعة تخزين البيانات المرفقة ب db_cra_repository 10.2 ميجابايت، وتقوم فقط بتخزين المعلومات السياقية حول عناصر المستودع. يتم تخزين محتوى عناصر المستودع بتنسيق blob في مساحة فرعية تسمى uccx_sbspace. في الإصدارات 8.0 من UCCX والإصدارات الأحدث، يصل حجم uccx_sbspace إلى 3 جيجابايت.

يكشف إخراج قرص show uccx dbserver على خادم UCCX الإصدار 8. 0+، عن التمييز بين معلمي البيانات هذين:

وفقا لمزيج البيانات في قاعدة بيانات MSSQL، من الممكن أن يتجاوز حجم بيانات BLOB المخزنة في قاعدة بيانات MSSQL الحجم المحدد للمساحة الفرعية في Informix عند محاولة الترحيل أو الترقية. وبالمثل، من الممكن أن تتجاوز المعلومات السياقية حول بيانات BLOB المخزنة في قاعدة بيانات MSSQL الحجم المحدد إداريا لتلك البيانات في مجموعة قاعدة بيانات Informix.

عند حدوث ذلك، تفشل الترقية أو الترحيل من UCCX الإصدار 7.x إلى UCCX الإصدار 8.x، إما لأن db_cra_repository أو uccx_sbspace ليس كبيرا بما يكفي لاستيعاب نفس المعلومات التي تم تخزينها في MSSQL. وعادة ما تكون هذه مشكلة في نظام UCCX يحتوي على عدد كبير من المطالبات. يجب أن تشارك بيانات المطالبة السياقية وبيانات الكائن الثنائي كبير الحجم (BLOB) في db_cra_repository وuccx_sbspace مع المستندات والنحو والبرامج النصية، ولكن أنواع المستودع الأخرى هذه تكون عادة صغيرة في الحجم والعدد.

على سبيل المثال، ضع في الاعتبار نظام UCCX الإصدار 7.x المزود بعشرات الآلاف من المطالبات، ولا يحتوي كل منها إلا على ثوان قليلة من الصوت. في UCCX الإصدار 7.x الذي يستخدم MSSQL، يتم تخزين المحتوى المتأهب والمعلومات السياقية في نفس الحزمة ذات 3 غيغابايت. نظرا لوجود العديد من المطالبات ذات الحجم الصغير، يمكن أن تخزن قاعدة البيانات 50 ميجابايت من المعلومات السياقية حول المطالبات، ولكن 2 غيغابايت فقط من بيانات BLOB التي تمثل الصوت الخاص بالمطالبات. وبالتالي، تشغل المطالبات الموجودة في المستودع ما يزيد قليلا عن 2 غيغابايت من الحد المسموح به لإنشاء قاعدة البيانات وهو 3 غيغابايت.

عند محاولة ترحيل هذا النظام إلى UCCX الإصدار 8.x و Informix، يفشل الترحيل لأن 50 ميجابايت من المعلومات السياقية تتجاوز حد 10.2 ميجابايت من DB_CRA_Repoory حتى على الرغم من أن 2 غيغابايت من المحتوى السريع تتناسب بشكل جيد مع حد UCCX_SBSPACE.

على العكس، يمكنك النظر إلى نظام UCCX الإصدار 7.x المزود بعدد أقل من المطالبات الطويلة ولكن لا يزال عددها أكبر. مع وجود عدد أقل من المطالبات ولكن بحجم أكبر، تكون نسبة محتوى المطالبة إلى المعلومات السياقية مختلفة. في الإصدار 7.x من UCCX و MSSQL، قد يأخذ محتوى المطالبة 2.8 غيغابايت من db_cra_repository، والمعلومات السياقية 3 ميغابايت. تتم ترقية هذا النظام بنجاح، نظرا لأن السعة التي تبلغ 3 ميجابايت تنطبق على db_cra_repository، ويتم تثبيت السعة التي تبلغ 2.8 جيجابايت في UCCX_sbspace المخصصة.

عادة، عند محاولة الترحيل إلى UCCX الإصدارات 8.x والإصدارات الأحدث، تتجاوز البيانات السياقية حول المطالبات التي تم تحميلها إلى UCCX الإصدارات 7.x أو النظام الأقدم حد الحجم db_cra_repository قبل أن يتجاوز محتوى المطالبة حد الحجم ل UCCX_sbspace. بالإضافة إلى ذلك، تبلغ المساحة الحرة الحقيقية المتاحة لعناصر المستودع المخصصة 6. 9 ميجابايت، حيث يستهلك التكوين الافتراضي 3. 4 ميجابايت من db_cra_repository.

المشكلة

عندما تحاول تحميل عناصر مستودع جديدة (مستندات و Grammars و Claims و Scripts) إلى نظام UCCX الذي يشغل الإصدار 8 أو الإصدارات الأحدث، تتلقى رسالة الخطأ هذه:

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، لأن قواعد البيانات التي تحتوي على مجموعات بيانات كبيرة في الإصدار 7.x من UCCX قد لا تنتقل بشكل صحيح إلى الإصدار 8.x من UCCX.

الحل

قبل الترحيل إلى UCCX الإصدار 8.x، يمكنك تقدير مقدار db_cra_repository وuccx_sbspace اللازم لتخزين عناصر المستودع الحالية في نظام UCCX الإصدار 7.x، لتضمين أي نمو مستقبلي.

تقدير حجم بيانات المستودع الحالي

للبدء، حدد عدد الصفوف في كل جدول من جداول المستودع التي تحتوي على معلومات عن كل من عناصر المستودع ومجلداته.

تحديد عدد الصفوف في جداول مجلدات المستودع

أستخدم Microsoft SQL Query Analyzer لتسجيل عدد الصفوف من جداول مجلد المستودع باستخدام الأوامر التالية:

- حدد count(*) من المستنداتالمجلداتبل

- حدد count(*) من Grammarsfoldertbl

- حدد Count(*) من RequestedFolderBl

- حدد Count(*) من ScriptFolderBl

تحديد عدد الصفحات المستخدمة بواسطة جداول مجلدات المستودع

يمثل Informix الحجم على القرص من حيث الصفحات. حدد عدد الصفحات التي يشغلها محتوى جداول مجلد المستودع بهذه الصيغة، واستبدال عدد الصفوف بالعدادات التي تم الحصول عليها من الأوامر المذكورة سابقا. قم بحساب هذه الصيغة لكل جدول، ثم أضف عدد الصفحات. لا يمكن تحديد عدد الصفحات بدقة إذا تم إضافة عدد الصفوف من كل جدول أولا، ثم تم إحتساب نتيجة الصيغة.

- # صفحات المستندات مجلداتالمجلداتبل = عدد الصفوف في المستندات مجلداتالدرtbl / (2020 / (180 + 4))

- # الصفحات Grammarsfoldertbl = عدد الصفوف في Grammsfoldertbl / (2020 / (180 + 4))

- # الصفحاتالمجلد = عدد الصفوف في الموجهات الطرفيةBL / (2020 / (180 + 4))

- # الصفحات التفاعلية = عدد الصفوف في البرامج التفاعلية /(2020 / (180 + 4))

# مستندات الصفحاتالمجلداتالمجلداتبل bl + # صفحات النحةالمجلداتالمجلداتبل + # صفحات مجلداتالمجلداتالمجلداتالمجلداتإجمالي عدد الصفحات لجداول المجلدات

تحديد عدد الصفحات المستخدمة بواسطة جداول ملفات عناصر المستودع

قم بإكمال نفس الحساب لتحديد العدد الإجمالي للصفحات الخاصة بجداول الملفات التي تحتوي على عناصر المستودع الفعلية. أدخل هذه الأوامر باستخدام Microsoft SQL Query Analyzer:

- حدد count(*) من Documentsfiletbl

- تحديد count(*) من Grammarsfiletbl

- حدد count(*) من المطالبة filetbl

- تحديد Count(*) من ScriptFileBL

حدد عدد الصفحات التي يشغلها محتوى جداول ملفات المستودع بهذه الصيغة، واستبدال عدد الصفوف بالعدادات التي تم الحصول عليها من الأوامر المذكورة سابقا. قم بحساب الصيغة لكل جدول، ثم أضف عدد الصفحات.

- # صفحات المستندات Filetbl = عدد الصفوف في المستندات / (2020 / (229 + 4))

- # الصفحات Grammarsfiletbl = عدد الصفوف في Grammarsfiletbl / (2020 / (229 + 4))

- # الصفحات PromptFilterBL = عدد الصفوف في PromptFileBL / (2020 / (229 + 4))

- # صفحات ScriptFiletbl = عدد الصفوف في ScriptFiletbl / (2020 / (229 + 4))

# مستندات الصفحاتالملفات + # صفحات Grammarsfiletbl + # صفحات الأوامر Filetbl + # Pages Scriptsfiletbl = إجمالي عدد الصفحات لجداول الملفات

حساب

قم بإجراء هذه الحسابات لإنهاء تقدير حجم بيانات المستودع الحالي:

1. تحديد العدد الإجمالي للصفحات اللازمة لتخزين المستودع الحالي في Informix مع:

إجمالي عدد الصفحات = إجمالي عدد الصفحات لجداول الملفات + إجمالي عدد الصفحات لجداول المجلدات

2. تحديد المساحة الإجمالية، بالميغابايت، التي تستهلكها الصفحات:

العدد الإجمالي للصفحات x 2 = الحجم الإجمالي بالميغابايت

إذا أظهرت الحسابات أن المعلومات السياقية حول عناصر المستودع ومجلداته التي يتم تحميلها حاليا في الإصدار 7.x من UCCX تتجاوز 3.4 ميغابايت، فيوصى بإعادة حساب تصميم عنصر المستودع. على الرغم من أن المساحة الحرة المتاحة للمعلومات السياقية حول عناصر المستودع في db_cra_repository تبلغ 6. 9 ميغابايت، ينصح بترك 50٪ متاحة للنمو المستقبلي. وتحسب تقديرات النمو والحد الأقصى المسموح به من المساحة المشغولة لكل عملية نشر، استنادا إلى عوامل النمو المتوقعة.

تطالبن

ونظرا لأن المطالبات هي عادة أكبر مستهلك لمساحة المستودع، تتم مناقشة الطرق المستخدمة لتقليل عدد المطالبات في المستودع في بقية هذه المقالة.

إذا كانت المطالبات التي يتم تحميلها حاليا في مستودع UCCX الإصدار 7.x تشغل جزءا كبيرا من مساحة التخزين الكلية للمستودع، فقم بإعادة تصميم المطالبة وتخزينها واستردادها قبل ترحيلك إلى UCCX الإصدار 8.x. عند محاولة إعادة تحليل تصميم المطالبة، ضع في الاعتبار الخيارات التالية:

- تقليل عدد مجلدات المطالبة. كما هو موضح في العمليات الحسابية السابقة، يشغل كل مجلد من مجلدات المطالبة صف في قاعدة بيانات المستودع، وبالتالي يستهلك مساحة مقابل حد db_cra_repository. إذا قمت بتقليل عدد المجلدات، يمكنك توفير مساحة للملفات.

- مشاركة مطالبات الكلمات أو العبارات الشائعة عبر التطبيقات/البرامج النصية لتقليل عدد المطالبات المطلوبة في النظام.

- أستخدم المطالبات التي يوفرها النظام لمعرفة القواسم المشتركة بين المطالبات، مثل الأرقام والعملات.

- قم بتخزين المطالبات على خادم ويب منفصل داخل المؤسسة، واستردادها وتشغيلها عند الطلب باستخدام XML للصوت (VXML).

يتم إستخدام VXML لاسترداد مطالبات وتشغيلها حسب الطلب من موقع خارج المربع. إذا قمت بتخزين كميات كبيرة من المطالبات على خادم ويب منفصل، يمكنك:

- قم بالقضاء على مشاكل الترحيل المذكورة سابقا، حيث لم تعد المطالبات مخزنة في db_cra_repository.

- توفير إمكانية وصول أكبر وسهولة الإدارة.

- اعمل على تقليل وقت إصدار المحول والترقية والترحيل والنسخ الاحتياطي.

على الرغم من وجود العديد من الخيارات من أجل ضبط تخصيص الاستجابة الصوتية التفاعلية (IVR) في VXML، يتم إستخدام برنامج UCCX النصي وتطبيق VXML لاسترداد موجه من خادم ويب خارج المربع وإتشغيله للمتصل كأساس لمزيد من التطوير. وكمثل البرامج النصية المخصصة الأخرى في UCCX، يتم تقديم البرامج النصية المقدمة في هذا القسم كدليل ولا يدعمها مركز المساعدة الفنية (TAC) من Cisco.

ملاحظة: يتم إستدعاء تطبيق VXML من برنامج نصي UCCX باستخدام خطوة المستعرض الصوتي. يتم توفير مزيد من المعلومات حول خطوة المستعرض الصوتي في أدلة البرمجة السريعة لمركز الاتصال الموحد من Cisco.

تستهلك خطوة المستعرض الصوتي مستند VXML. يجب إنشاء هذا المستند كنتيجة للخطوة إنشاء مستند عنوان URL، ويجب إستضافته على خادم ويب خارجي ل UCCX. على الرغم من أنه قد تم كتابة تطبيق VXML لقبول إدخال المتصل من خلال التردد المتعدد للطنين المزدوج (DTMF)، إلا أن هذا التطبيق تم تصميمه فقط لتشغيل موجه يتم إستضافته خارج المربع. ومع ذلك، يمكن توسيعه ليشمل وظائف إضافية. يفترض أن بقية نص UCCX، قبل إستدعاء خطوة المتصفح الصوتي، له المنطق المطلوب لتحديد أي موجه يتم تشغيله، ومتغير السلسلة مضبوط على اسم الملف موجه.

بما أن وثيقة VXML ثابتة، لكن المطالبة التي يتم تشغيلها من خلالها ديناميكية، يتم إستخدام لغة برمجة نصية من جانب الخادم لإنشاء وثيقة VXML. يمكن أن تكون هذه أية لغة برمجة نصية من جانب الخادم لها القدرة على تعيين رأس نوع المحتوى لاستجابة طلب XML. في هذا المثال، يتم إستخدام بروتوكول PHP.

تتم كتابة صفحة PHP لقبول معلمة URL في طلب GET الذي يمثل اسم موجه الصوت الذي يتم تشغيله. تقوم صفحة PHP بربط قالب VXML مع تمرير اسم الملف موجه في معلمات عنوان URL الحصول على طلب من أجل تشكيل وثيقة VXML كاملة. ثم يضبط رأس نوع المحتوى للاستجابة ل 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 مكون بشكل جيد، يجب الوصول إلى صفحة المثال PHP باستخدام طلب GET الذي يحتوي على معلمة WAV وقيمة String، مع افتراض تسمية صفحة المثال PHP باسم generatevxml.php:

http://

/path/generatevxml.php?wav=MenuPrompt

تأكد من أن MenuPrompt.wav موجود في الموقع على خادم الويب الخارجي المحدد في قالب VXML الموجود في صفحة PHP.

في البرنامج النصي UCCX، أستخدم الخطوة إنشاء مستند URL لإجراء طلب GET ل generatevxml.phpإنشاء عنوان URL الأساسي ل http://<servername أو عنوان IP>/path/generatevxml.php؟wav= باستخدام اسم الملف Prompt المشتق من منطق البرمجة النصية السابق، ووضع النتيجة في متغير مستند.

قم بإنشاء خطوة المستعرض الصوتي التي تستهلك متغير المستند.

عند إستدعاء هذا البرنامج النصي، يتم الوصول إلى كل من generatevxml.php وMenuPrompt.wav على خادم الويب من UCCX، يتم تشغيل موجه الأمر MenuPrompt.wav للمتصل.

عند إستخدام تطبيقات VXML لتخزين موجهات الأوامر خارج العبوة، بحيث يتم الوصول إليها فقط عند الحاجة لتشغيلها للمتصل، فإنها تسمح بمزيد من الكفاءة وسهولة الإدارة وقابلية الصيانة. هذه مشكلة للنظر فيها في حالة ترقية نظام UCCX الإصدار 7.x إلى نظام UCCX الإصدار 8.x، وعدد المطالبات يصل إلى أن محتوى المعلومات السياقية أكبر من db_cra_repository أو UCCX_sbspace.