> For the complete documentation index, see [llms.txt](https://docs.pascom.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.pascom.net/en/setup/acd/skill-based-routing.md).

# Skills based routing setup

Skills Based Routing is an advanced call routing strategy that directs calls to the contact center agents who are best qualified to fulfill the incoming caller's requirements.

## Training Video

{% embed url="<https://www.youtube.com/watch?v=x1XDszqEmoA>" %}

## Concept

Skills Based Routing is an Automated Call Distribution strategy often deployed in [Call Centers](https://www.pascom.net/en/call-contact-center/) to route inbound callers to the agent(s) who are best qualified (skilled) to fulfill the callers requirements.

Functions:

* Skills of agents within a team
* Queues which support Skills Based Routing
* Inline Scripts (Single lined scripts which can be added and respectively integrated into an action before/after)
* Generic Labels (Labels which can be set for a caller, e.g. as information for the agents, prioritizing a caller, VIP customer etc...)
* Call Router (checked whether a condition triggers any actions)
* Works with team call strategies: ring all, one after another, randomly.

## Example 1

### Overview

The caller selects their preferred language using an IVR menu and will then be forwarded onto the support team. With skill based routing, only phones belonging to support agents with the associated language skill will ring.

<figure><img src="https://2713225-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVIw0BpSv358R2Pr2HflD%2Fuploads%2Fgit-blob-1acc368692344e2f54e092ab809a8c9f49353806%2Fexample-1.en.png?alt=media" alt="Skills Based Routing" width="80%"><figcaption></figcaption></figure>

### Configuration

#### 1. Add Skills

The first step is to define the required skills, which in the example above is languages. To do this, select **ACD - Automatic Call Distribution** > **Call Labels** > **Add** -> Skill.

| Parameter             | Description                                                                                                                                |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| Label Name            | Name given to the label                                                                                                                    |
| Display in app        | Yes/no - determines whether an app user should be able to see the label or not.                                                            |
| Add action conditions | Yes/no - determines whether action conditions should be added or not. When yes, these action conditions can be used by actions themselves. |

#### 2. Assign Users

Under the `User Skills` tab you can assign that newly added lable to specific users.

Skills can also be assigned to users by following: **Users** > **User List** > Select required user(s) > **Edit** > Skills Tab.

In order to ensure that skills are taken in account when distributing calls within a team, the team must be configured to use the script "Skill Based Routing": **Users** > **Teams** > select Team / Queue > click **Edit** and under the **Basic Data** tab select **skill based routing** from the drop down menu under "Routing Script".

{% hint style="info" %}
Using skills has numerous benefits such as only needing one queue, even though your callers require different skills for example different languages. Through using skill based routing only the phones of those agents that fulfill the required skills will ring, ensuring improved customer care etc.
{% endhint %}

#### 3. IVR Options Menus

In order set the caller's language, we need to set up an [IVR Menu](/en/setup/acd/ivr.md): **ACD** > **IVR** > **Add**

Once the ***IVR*** menu has been added, you will now need to add the required option entries. To do this select the IVR you just created and then click on the ***Entries*** button.

Now add three further entries:

number **1** for *german*\
number **2** for *english*\
number **3** for *french*.

**i** for *invalid* (invalid entry) and **t** for *timeout* have already been added and need only be edited.

Now the entries need to be edited and configured with actions. As an example, we are editing the *english* entry:

<figure><img src="https://2713225-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVIw0BpSv358R2Pr2HflD%2Fuploads%2Fgit-blob-a4a07c0fd22973a3ca6c2209903c9db5365248ef%2Fivr-entry.en.png?alt=media" alt="configure PASCOM IVR entries" width="80%"><figcaption></figcaption></figure>

Firstly we need to set the label: **Add** > **Set Label**:

As the skill name, use *english*. The expression indiciates the minimum skill level that an agent must have before they have calls routed to them.

You can also set the channel language here, meaning your callers will only hear prompts / announcements in the language they have selected.

{% hint style="info" %}
Should a label be set for a caller, this label applies until the call is ended.
{% endhint %}

{% hint style="info" %}
If so configured, labels can then be displayed to queue agents via the PASCOM app. Any number of labels can be set per caller.
{% endhint %}

## Example 2

### Overview

This example scenario expands on the example above. After the language IVR, the customer number will also be requested which will be used to distinguish between VIP and non VIP customers. VIP customers will be connected directly to the support team, while calls from non VIP customers must be checked to see whether they are calling inside of normal business hours before being connected to the support team.

![Skill Based Routing](https://2713225-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVIw0BpSv358R2Pr2HflD%2Fuploads%2Fgit-blob-461c0b5681ee1855e639fbbd9a816f4abdd01432%2Fexample-2.en.png?alt=media)

#### 1. Configuration

1. After selecting their language, a caller must be prompted to enter their customer number. This is achieved by using a **Generic Label** which can be configured under **ACD** > **Call Labels** > **ACD** > **Generic Label**.

<figure><img src="https://2713225-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVIw0BpSv358R2Pr2HflD%2Fuploads%2Fgit-blob-2e7a2e89dc6bb649998cdae8243e79034fa38cf0%2Flabel-generic.en.png?alt=media" alt="Generic Label" width="80%"><figcaption></figcaption></figure>

The generic label has a **Channel Variable** (in this case MDC\_LABEL-9) which we need to note for further configurations. The variable name can be found by selecting the label in the overview and clicking on **Edit**:

<figure><img src="https://2713225-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVIw0BpSv358R2Pr2HflD%2Fuploads%2Fgit-blob-0c7d90c7a9a8858a27fc5e5cf51fa40be2a40ae9%2Fgeneric-label.en.png?alt=media" alt="Variable name" width="80%"><figcaption></figcaption></figure>

#### 2. Action Conditions: VIP Customers

To differentiate between VIP and non-VIP customers, we need to use a **Generic Label with Action Conditions**: **ACD** > **Call Labels** > **ACD** > **Generic Label** and set the ***Create Action Condition*** to **yes**.

<figure><img src="https://2713225-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVIw0BpSv358R2Pr2HflD%2Fuploads%2Fgit-blob-3dd85d9297d7385f96f6e3b97778f2d24f169514%2Flabel-condition.en.png?alt=media" alt="Action conditions" width="80%"><figcaption></figcaption></figure>

#### 3. Request Customer Number

The IVR entries will no longer directly route to the Support queue. Firstly, we need to request the customer number. This function is performed by using a Call Router:

<figure><img src="https://2713225-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVIw0BpSv358R2Pr2HflD%2Fuploads%2Fgit-blob-a4a07c0fd22973a3ca6c2209903c9db5365248ef%2Fivr-entry.en.png?alt=media" alt="PASCOM IVR with Skill based Routing" width="80%"><figcaption></figcaption></figure>

#### 4. Checking Conditions with the Call Router

The **Call Router** is used in order to check conditions and trigger the corresponding actions. The first step is to use an **Inline Script** that requests the customer number.

{% hint style="info" %}
An Inline Script allows a single line Asterisk script to be simultaneously integrated into actions.
{% endhint %}

With help from, for example a script,the entered customer number can be verified in order to apply either the *VIP Customer* or *non VIP customer* label to the call. A caller assigned with the VIP call label (and therefore the associated action conditions) will directly connected to the support team. Callers with the non-VIP customer label attached must first go through the business hours time checks before being connected or not connected to the support team.

<figure><img src="https://2713225-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVIw0BpSv358R2Pr2HflD%2Fuploads%2Fgit-blob-5c44685afef46d1c6d45057688ef9e860e70e869%2Fcall-router-2.en.png?alt=media" alt="PASCOM Action Conditions" width="80%"><figcaption></figcaption></figure>

The business hours checks are also performed using a Call Router as shown below:

<figure><img src="https://2713225-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVIw0BpSv358R2Pr2HflD%2Fuploads%2Fgit-blob-2d49afcd1d5b5e81977cdbce629697c25a7c229b%2Fcall-router-1.en.png?alt=media" alt="PASCOM Business Hours Checks" width="80%"><figcaption></figcaption></figure>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.pascom.net/en/setup/acd/skill-based-routing.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `build a script that syncs our docs to a CMS` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
