Автор Тема: Манипуляция данными  (Прочитано 10699 раз)

samsan

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Манипуляция данными
« : 21 Апрель 2017, 08:23:50 »
Доброго времени!

Просьба к уважаемым гуру направить на путь истинный новичка в LDAP:

Возникло желание запустить справочную книгу для телефонии. В  стандартном варианте особых проблем не возникло.
Однако - использование справочника предполагается для телефонов с разными локациями. Как следствие, в зависимости от локации, номера и префиксы при обмене с телефонной книгой должны обрабатыватья и формироваться, из универсального 10- значного формата,  для каждой локации отдельно.
Первая попытка состояла в настройке персональный фильтров для каждого телефона - увы не удачно из за особенностей формирования фильтров на телефоне.
Второй возможный вариант по моим представлениям, это обработка запроса на поиск и возврат данных в зависимости от имени пельзователя использованного при регистрации на сервере.
Однако пока не могу найти механизмы с помощью которых можно реализовать это задачу (
Это можно сделать с помощью BDB? Использовать Perl?

Дайте пожалуйста ссылочку-подсказку )


egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Re: Манипуляция данными
« Ответ #1 : 21 Апрель 2017, 09:40:58 »
Здравствуйте! Для анализа задачи нужно больше информации.
1. Покажите запись каталога, в которой хранится телефонный номер, исходный формат номера.
2. В каталоге кроме телефонного справочника хранится что-то ещё?
3. С помощью какой программы Вы получаете номера на телефонах?
4. В каком виде должен быть представлен исходный номер на телефоне 1, телефоне 2 и т.д.

Егор

samsan

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Манипуляция данными
« Ответ #2 : 21 Апрель 2017, 11:48:12 »
Егор,

>1. Покажите запись каталога, в которой хранится телефонный номер, исходный формат номера.
>2. В каталоге кроме телефонного справочника хранится что-то ещё?
dn: uid=674742, ou=people, dc=yealink,dc=rcs4
uid: 674742
telephoneNumber: 9785044064
mobile: 79131112223344
pager: 9785064064
objectClass: inetOrgPerson
sn: Иванов И.И.
cn: старший помошник
o: РЦС
uo: Отдел связи


>3. С помощью какой программы Вы получаете номера на телефонах?
Немного не ясен вопрос. На IP  телефонах имеется встроенный клиент LDAP
При поступлении входящего звонка либо при наборе номера на сервер формируется запрос
( Filter: (|(pager=44064*)(telephoneNumber=44064*)(mobile=44064*)) ). Результаты поиска отображаются на дисплее телефона (Yealink T28).

>4. В каком виде должен быть представлен исходный номер на телефоне 1, телефоне 2 и т.д.
Исходнй номер может быть представлен во множестве форматов. Зависит от того по какой сети поступил вызов (местная корп, зоновая корп, городская, междугородняя. ) Полностью все виды префиксов и соттветствия префиксов в разных сетях описываются давольно емкими таблицами.

Пример,  телефон А находится в тойже локации, телефон Б в другой.(другой город и другая корп зона):
Формат хранения 9785044064

Возможные форматы для входящего звонка с этого номера

на телефон А:
44064         местный корп
2294064    местный городской

на телефон Б:
05044064             зоновый корп
(7)3832294064    межгород

возможные форматы набора этого номера

с телефона А:
44064         местный корп
9 2294064  метн городской

стелефона Б:
0 5044064             зоновый корп
98 3832294064    межгород



samsan

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Манипуляция данными
« Ответ #3 : 21 Апрель 2017, 11:54:31 »
Егор,
Забыл уточнить. Речь конечно идет об OpenLdap server.

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Re: Манипуляция данными
« Ответ #4 : 22 Апрель 2017, 11:43:01 »
Здравствуйте!
Цитировать
При поступлении входящего звонка либо при наборе номера на сервер формируется запрос
Не очень понятно, что Вам нужно получить из каталога при входящем звонке? При исходящем, как я понял, нужно при вводе нескольких цифр получать подсказку с вариантами номеров из справочника, один из которых можно принять и сделать звонок. Правильно ли я понимаю?

Возьмём вариант с исходящим звонком. Я не зря спрашивал про программное обеспечение LDAP-клиента: в зависимости от возможностей его настройки задачу либо в принципе не решить, либо стоит браться за её решение. Если настройка позволяет задавать фильтры только приведённого Вами типа:
Цитировать
(|(pager=44064*)(telephoneNumber=44064*)(mobile=44064*))
то, как Вы сами понимаете, необходимая запись просто не будет найдена. Нужно, чтобы было хотя бы так:
(|(pager=*44064*)(telephoneNumber=*44064*)(mobile=*44064*))

Если фильтры настраиваются и запись из каталога поднимается, и остаётся только из "общего" формата сделать конкретный для зоны, то стандартные механизмы манипуляции данными тут, к сожалению, не подойдут. Придётся писать посредника (прокси) на back-shell или back-perl, который примет запрос от клиента, сделает свой запрос в каталог, выполнит преобразование данных и вернёт преобразованные записи клиенту. На back-perl я, честно говоря, ни разу не пробовал, на back-shell есть некоторый опыт, например, можно посмотреть здесь. В общем, попытаться можно. Perl, как я понял, Вам предпочтительнее, так как таблица преобразований сложная. Что ж, не боги горшки обжигают, можно и с ним разобраться. Если что, готов помочь. Пишите.

Егор



samsan

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Манипуляция данными
« Ответ #5 : 26 Апрель 2017, 04:39:13 »
Егор,

Большое спасибо!
Back-perl - то что мне нужно.
Буду разбираться )