Quality Routing

From Kolmisoft Wiki
Jump to navigationJump to search

IMPORTANT: Quality Routing is available with Advanced Routing Addon

Quality Routing allows to order Providers by quality. This is a very flexible way of routing because quality is determined by mathematical formulas that contain various parameters.

These parameters are used to calculate the Quality Index by which Providers are ordered in LCR.

Quality is calculated for LCR - Provider pair. This means that single Provider can have different Quality Index values in different LCRs.



Quality Routing Rules

You can view and create Quality Routing Rules in ADDONS -> Advanced Routing -> Quality Routing

Mor quality routing list.png

Routing Rules can be assigned in LCR settings, by setting "Order" to "Quality" and then selecting your rule. In the Quality Routing list you can see how many LCRs have a specific Quality Routing Rule assigned to them in a USED column.

Press Add new Quality Routing Rule and you will be redirected to a page where you will be able to define your own Quality Routing Rules.

Mor quality routing edit.png

General

  • Name - name for your Quality Routing Rule
  • Quality Index Formula - formula by which Quality Index is calculated (if entered formula is incorrect input borders will turn red)

Quality Index Parameters

Quality Index Parameter value represents for how many last Calls each Parameter is calculated. Lower amount of last Calls used in Quality Index Parameters will result in faster response to Quality Index change but it will be less accurate. Higher amount of last Calls used in Quality Index Parameters will result in more accurate Quality Index but it will change slower. Currently each Quality Index Parameter can be calculated for maximum 200 last Calls.

Information on Formula's Parameters

Here you can find a list of Quality Index Parameters that can be used in formulas.



Quality Index

Quality Index is an evaluation of Quality Index Formula that is calculated for each LCR - Provider pair. When Quality Routing Algorithm is in use Providers are ordered by Quality Index in LCR. To calculate Quality Index, these Parameters can be used:

  • TOTAL_CALLS - number of total Calls
  • TOTAL_ANSWERED - number of answered Calls
  • TOTAL_FAILED - number of failed Calls (read section about failed Calls)
  • TOTAL_BILLSEC - total Call duration (in seconds)
  • ASR - answer seizure ratio (%)
  • ACD - average Call duration (in seconds)
  • PRICE - Provider’s Call price (Tariff Rate) in default Currency

Note that each variable is calculated for LCR - Provider pair. This means that the same Provider can have X total Calls in one LCR and Y total Calls in another LCR.

Quality Index Formula is written in mathematical expressions, for example:

TOTAL_CALLS + (ASR * ACD * PRICE) / 2

This formula is just an example to show how formulas are written and is not intended to be used in production for Quality Routing.

For each Quality Index Parameter you can set a specific amount of last Calls used in the calculation. For example if you set 50 Calls for ASR then the last 50 Calls made through LCR - Provider pair will be used to calculate ASR. Lower amount of last Calls used in Quality Index Parameters will result in faster response to Quality Index change but it will be less accurate. Higher amount of last Calls used in Quality Index Parameters will result in more accurate Quality Index but it will change slower. Currently each Quality Index Parameter can be calculated for maximum 200 last Calls.



Quality Routing Stats

Quality Routing Stats page allows to check current quality statistics for selected LCR. You can select specific Quality Formula and it will be applied to LCR. Quality Routing Statistics table can be ordered by Quality Index so that you could know which Providers will be dialed first.

Mor quality routing stats.png

Note that if your formula contains a PRICE variable, you will be asked to enter a Destination number in a Destination input field (only when viewing stats). This number will be used to calculate the PRICE variable. Provider’s rate will be assigned to the PRICE variable. If the Rate is not found or the Destination number is not entered, PRICE variable will have a value of 0.

This page is useful if you just want to know quality statistics in LCR or if you want to experiment with different Quality Routing formulas. You can even check Quality Routing formulas that are not assigned to any LCR.

Another way to test your Quality Routing formulas is to create a test User, assign Quality Routing and do Call Tracing. In the output you will find useful information on how Providers are ordered.



Order

Providers are ordered by Quality Index (QI) in a descending order (Providers with higher QI will be dialed first).

Division can be used to achieve ascending order. For example, you want to order Providers by lowest total call duration so that Providers with lowest call duration are called first. One way to do this is to use this formula:

1 / TOTAL_BILLSEC



Situation when quality is unknown

Quality is calculated for LCR – Provider pair. That means that the same Provider can have different quality in different LCRs. But what happens when you create new LCR and assign some Providers to it? What is the quality for each Provider in this particular LCR? We don‘t know since there are no calls made through this new LCR.

In this case MOR will generate initial quality stats for each Provider by retrieving calls from the database that were made through any LCR. In database there is no relationship between Provider and LCR. Just by looking in a database we don‘t know which LCR was used when making a call therefore each time the quality is calculated from the database it will be more general and may differ from what it is in particular LCR. In practice this is not a big problem since quality is calculated by most recent calls and these calls are differentiated between LCR. Initial general quality statistics will be eventually replaced by LCR specific quality statistics.

Another case is when we add completely new Provider that does not have any calls. We can not calculate initial quality from the database since there are no calls made through this Provider. In this case the initial Quality Index will be 0 and there is a risk that this Provider will always be at the end of routing list.

There is a way to temporarily force higher Quality Index to Providers that have none or few calls. Let’s analyze situation where we are routing calls by ASR (for last 50 Calls) and add new Provider. In this case our Quality Routing Formula is:

ASR

Quality Index (QI) is ASR - Providers with higher ASR will be dialed first. If we add a new Provider it will have an initial QI 0 (ASR 0) and it will be at the end of routing list. Let’s modify our Quality Routing Formula by including TOTAL_CALLS variable:

ASR + 100 * (50 - TOTAL_CALLS)

Now QI will depend not only on ASR but on total Calls made as well. If Provider has 0 Calls then Formula is ASR + 5000 but when Provider has 50 Calls, Formula is ASR. Note that number 50 here is chosen by the number of last Calls variable will hold so variable TOTAL_CALLS will have the minimum value of 0 and the maximum value of 50. When every Provider in LCR makes 50 or more calls our modified formula will represent only ASR. This way we can force all Providers to be dialed at least N times (similar to Round-robin algorithm) and after enough Calls are accumulated we can do routing by quality.



Failed Calls

Calls may fail due to various reasons, for example code 223 Providers call limit reached. This particular hangup reason does not reflect Provider’s quality since this is an internal reason why a Call failed. These MOR specific hangup reasons (codes between 200 and 299) are not calculated in Quality Routing. One exception is code 241 Local Caller canceled the call before call was answered. This code is accepted in Quality Routing as it may reflect Provider’s quality. Each real attempt to dial Provider is calculated in Quality Routing.

Note that most statistics in MOR count internal hangup reasons (codes between 200 and 299) as FAILED calls.