Дерево страниц
Перейти к концу метаданных
Переход к началу метаданных

Задача:

От абонентов приходят вызовы на ECSS-10 на разные В-номера. Софтсвитч обращается в базу данных и:

  • если там не находит А-номер звонящего, то добавляет к В-номеру 11 и оправляет вызов в соответствующий транк;
  • если А-номер звонящего присутствует, то добавляет к В-номеру 22 и оправляет вызов в соответствующий транк;

База будет содержать 5000-50000 абонентов и наполняться сторонним приложением.

Решение:

В качестве базы номеров будем использовать базу  MySQL. Также нам потребуется RADIUS-сервер (например, freeradius), который будет вызывать внешний скрипт для доступа к MySQL и проверки наличия номера. Также RADIUS будет присваивать некий тэг в зависимости от наличия номера. ECSS-10 будет анализировать тэг и маршрутизировать вызов в нужный транк.

Настройки:

Freeradius

  • /etc/freeradius/3.0/clients.conf

В конец файла добавить секцию:

client <LISTEN_IP> {
secret = <SECRET>
shortname = <SHORT_NAME>
} 

client 192.168.0.7 {
secret = secret123
shortname = ecss1
}
  • /etc/freeradius/3.0/users

В конец файла добавить секцию:

p.city Auth-Type := Accept
Exec-Program-Wait = "/usr/local/sbin/check_number %{Calling-Station-Id}"

где p.city - имя домена

  • перезапустить freeradius


Создать скрипт для доступа к mysql и проверки наличия номера в таблице по пути /usr/local/sbin/check_number:

#! /bin/sh

request="select count(*) > 0 from numbers where number = \"${1}\""

count=`echo ${request} | mysql -ucalls_db -pcalls_db -D ecss_calls_db -sh 10.24.146.180`

echo "Eltex-AVpair += \"CallManagement:tag=tag_${count}\"" 


В БД calls_db создать таблицу numbers:

CREATE TABLE `numbers` (`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, number varchar(24) NOT NULL, primary key (`id`)) ENGINE=InnoDB;

%% Задание номеров:
insert into numbers(number) values("799");


Настроить RADIUS сервер в домене на софтсвиче

domain/p.city/aaa/radius/declare ryabkov_home 192.168.0.7 access eltex_secret


Начать использовать этот сервер при маршрутизации.

В ответ RADIUS сервер возвращает два тега: tag_1 - если номер найден в базе. tag_0 - если не найден. Далее этот тег можно использовать при маршрутизации.

  • Нет меток