VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Варианты исходящей маршрутизации

Новичком считается только что прочитавший «Астериск - будущее телефонии»
http://asterisk.ru/knowledgebase/books
и пытающийся сделать большее

Модераторы: april22, Zavr2008

Ответить
redlinerus
Сообщения: 5
Зарегистрирован: 17 апр 2023, 21:47

Варианты исходящей маршрутизации

Сообщение redlinerus »

Здравствуйте!

Есть FreePBX 15, от операторов связи подключено 10 транков в разных регионах.
В регионах есть офисы, сотрудники могут перемещаться между офисами (командировки) со своими внутренними номерами (софтфоны на ноуте или мобильном), регистрация номеров только во внутренней сети.
FreePBX базово админят несколько человек (заводят номера, включают переадресации и тд).

Пытаюсь сделать маршрутизацию, что бы каждый офис при исходящий звонках (город, мобильный и тд) шел в свой транк оператора региона.
Прочитал, подсказали, несколько реализаций такого, как можно сделать, но столкнулся с некоторыми непониманием, прошу поправить, подсказать.
  1. Через Custom Contex:
    • Сделать контекст для каждого исходящего маршрута
    • В контексте разрешить исходящий маршрут
    • Повесить этот контекст на номера офиса в определенном регионе
  2. Через модуль FreePBX Class of Service:
    • Сделать CoS для каждого исходящего маршрута
    • В CoS разрешить исходящий маршрут для номеров офиса в определенном регионе
  3. Через Outbound Routes -> Dial Patterns:
    • В каждом Outbound Routes прописать в Dial Patterns CallerID номера офиса в определенном регионе
  4. С помощью API и dialplan
    • Передавать вызываемый номер в num.voxlink.ru
    • В ответ получать регион в котором находится вызываемый номер
    • В dialplan направлять вызов в транк который подходит для данного региона
С num.voxlink.ru и dialplan, пока вообще не понял как это реализовывать =(

В реализации с num.voxlink.ru, все очень красиво должно получиться, в любых офисах исходящая маршрутизация будет идти через оптимального провайдера связи (так как укажите), но не понимаю как действовать, если сервис умрет или связь пропадет (забанят, отключат сам сервис, что-то еще).

В остальных реализациях, для себя вижу проблему:
  1. При заведении новых номеров для офисов, если админы где-то забудут указать номер (Contex, CoS, DialPattern), то он будет бегать "как хочет" по исходящим маршрутам
  2. При реализации через Outbound Routes -> Dial Patterns:
    • Если номера офиса будут в разнобой, то будет огромный Dial Patterns
    • Был номер 888 в офисе МСК
    • Его удалили, через год завели номер 888 заново, но для офиса в СПб
    • В Dial Patterns CallerID он остался в маршруте для МСК
  3. Если менеджер поедет в командировку в другой регион, то исходящие звонки будут идти через провайдера связи офиса постоянного его прибывания, а не через провайдера связи по месту его командировки
Есть ли возможность в asterisk (FreePBX), как-то сделать исходящую маршрутизацию, которая будет основываться на ip адресации телефонов офиса?
Допустим сеть 172.16.0.0/24 всегда заворачивать в транк МСК, а 172.16.1.0/24 в транк СПб.

Таким образом возможно будет избежать проблем, забыли что-то указать при создании номера на FreePBX и когда менеджеры будут перемещаться между офисами, будет использоваться транк провайдера связи по месту командировки.

Спасибо.
Аватара пользователя
Zavr2008
Сообщения: 2211
Зарегистрирован: 27 янв 2011, 00:35
Контактная информация:

Re: Варианты исходящей маршрутизации

Сообщение Zavr2008 »

На самом деле несколько надуманная проблема - сейчас обычно маршрутизируют по номерам B - куда звонят.
Опять же если беспокойство есть о бегунах и перезвонах клиентом манагеру - - астер то общий, можно сделать на Redis запоминание кто там кого обзванивал и обратную прямую маршрутизацию.

Для статических сотрудников сделайте по Outbond Route.
Еще там у каждого сотрудника в Extension есть поле Outbound CallerId - по нему можно и сделать выбор транка. Для бегающих.
Российские E1 шлюзы Alvis. Модернизация УПАТС с E1,Подключение к ИС "Антифрод" E1 PRI/SS#7 УВР Телестор, Грифин и др..
redlinerus
Сообщения: 5
Зарегистрирован: 17 апр 2023, 21:47

Re: Варианты исходящей маршрутизации

Сообщение redlinerus »

Не думаю что проблема надумана, возможно для провайдеров телефонии такой метод с маршрутизацией по ip адресам и не подойдет.
Для фирм с количеством пользователей от 200 и несколькими офисами, думаю, что приемлем.
До этого у нас стояла Avaya там как раз было такое, что маршрутизацию можно было привязывать к ip network region, описывалась сеть и что куда можно ей ходить.
Спрашиваю именно про автоматизацию, что бы админам не писать огромный лист с Dial Patterns CallerID или пробегаться по списку Extension и не смотреть не забыли ли другие админы прописать Outbound CallerId или Contex при создании номера.
Есть несколько мест "из коробки", где можно это сделать, но возникает человеческий фактор (забыл, неправильно указал и тд.).

Вопрос таков:
Вообще были ли такие запросы ранее? =)
Можно ли как-то в dialplan передать ip адрес телефонного аппарата, потом по какой-то логике на основе ip адреса отправлять его в определенный транк?

Спасибо.
ded
Сообщения: 15621
Зарегистрирован: 26 авг 2010, 19:00

Re: Варианты исходящей маршрутизации

Сообщение ded »

Подерживать большие телефонные структуры - сложно, это трудный хлеб.
redlinerus писал(а):Вообще были ли такие запросы ранее? =)
Были.
redlinerus писал(а):Можно ли как-то в dialplan передать ip адрес телефонного аппарата, потом по какой-то логике на основе ip адреса отправлять его в определенный транк?
Можно.
Если у вас распределённая инфраструктура VPN, и адресация всех подразделений разная
192.168.1.0/24
192.168.2.0/24
192.168.3.0/24
192.168.4.0/24
192.168.5.0/24
динамическая маршрутизация внутри по ospf / eigrp, то передавать ip адрес телефонного аппарата для логики выбора оригинации вызова имеет смысл. А если этого нет, тел. аппараты в подразделениях будут выдавать внутренние адреса, не очень влияющие на решения по выбору транков, тогда как?
redlinerus
Сообщения: 5
Зарегистрирован: 17 апр 2023, 21:47

Re: Варианты исходящей маршрутизации

Сообщение redlinerus »

ded, спасибо за ответ.

У нас несколько удаленных офисов, сеть между дата центром и офисами по туннелям, маршрутизация OSPF, для каждого офиса отдельная /24 сеть.

Установлен Freepbx 15, во внутрь самого Asterisk сильно не залезал, правил контексты, что бы подставлялась 8 в начало номера, добавлял скрипт для записи разговоров в разные каналы, все по гайдам.

Понимаю что надо куда-то дописывать логику в dialplan, но куда ... , тем более во freepbx =(

Если ткнете где почитать или ссылку, буду премного благодарен.
ded
Сообщения: 15621
Зарегистрирован: 26 авг 2010, 19:00

Re: Варианты исходящей маршрутизации

Сообщение ded »

redlinerus писал(а):правил контексты, что бы подставлялась 8 в начало номера, добавлял скрипт для записи разговоров в разные каналы,
- Чтобы подставлялась 8 в начало номера?
В начало номера А (CallerID)? Или в начало номера Б (Destination)? Зачем? Есть шаблоны в исх. маршрутизации для этого.
И зачем добавлять скрипт для записи разговоров в разные каналы,если на уровне вэб-интерфейса это просто регулируется птичками Писать входящие, писать исходящие?
Что за гайды загадочные? Кем писаны?

Читайте классику на ночь: Руководство FreePBX 13.
http://www.asterisk.ru/knowledgebase/books
redlinerus
Сообщения: 5
Зарегистрирован: 17 апр 2023, 21:47

Re: Варианты исходящей маршрутизации

Сообщение redlinerus »

Гайды от Voxlink, я просто привел в пример что я смог сделать(не в рамках этой темы), что бы был примерный уровень моего понимания в asterisk. =)
ded писал(а):В начало номера А (CallerID)? Или в начало номера Б (Destination)? Зачем? Есть шаблоны в исх. маршрутизации для этого.
8 перед номером CallerID из транков (РФ), что бы DID однообразный был + CDR красиво и с телефона обратный звонок с кнопки меню можно сделать, не описывая много паттернов в исходящей маршрутизации (https://voxlink.ru/kb/asterisk-configuration/did-cid/)
ded писал(а):И зачем добавлять скрипт для записи разговоров в разные каналы, если на уровне вэб-интерфейса это просто регулируется птичками Писать входящие, писать исходящие?
Запись звонков из "коробки" в моно. (https://voxlink.ru/kb/freepbx/mp3-freepbx/)
В разные каналы надо для аналитики звонков.
ded писал(а):Читайте классику на ночь: Руководство FreePBX 13.
http://www.asterisk.ru/knowledgebase/books
Спасибо за ссылку, по модулям и общей логики работы FreePBX понимаю, могу разобрать логи, посмотреть "почему транк не вяжется" или "голос может не ходить", надо понять работу самого Asterisk, как начинается звонок, почему он идет именно в такой контекст (допустим from-internal), почему должно запускаться именно такое-то приложение, почему из from-internal, ушел в другой контекст ну и тд. (предположу что посоветуете «Астериск - будущее телефонии» =))

Еще раз, спасибо.
ded
Сообщения: 15621
Зарегистрирован: 26 авг 2010, 19:00

Re: Варианты исходящей маршрутизации

Сообщение ded »

redlinerus писал(а):ded писал(а):
В начало номера А (CallerID)? Или в начало номера Б (Destination)? Зачем? Есть шаблоны в исх. маршрутизации для этого.

8 перед номером CallerID из транков (РФ), что бы DID однообразный был + CDR красиво и с телефона обратный звонок с кнопки меню можно сделать, не описывая много паттернов в исходящей маршрутизации (https://voxlink.ru/kb/asterisk-configuration/did-cid/)

Процедура называется Нормализация CallerID
Не нужны никакие скрипты, нормализация выполняется как предобработка в контексте, куда приходят вызовы из мира., например [from-trunk-megafon]

Код: Выделить всё

exten => 79012345678,1,NoOp(CallerID is ${CALLERID(all)})
exten => 79012345678,n,Set(CALLERID(all)=8${CALLERID(all):1})
exten => 79012345678,n,NoOp(CallerID now is ${CALLERID(all)})

exten => +79012345678,1,NoOp(CallerID is ${CALLERID(all)})
exten => +79012345678,n,Set(CALLERID(all)=8${CALLERID(all):2})
exten => +79012345678,n,NoOp(CallerID now is ${CALLERID(all)})
Приведённый пример основан на предположениях, в каком виде прибегает у вас CallerID, не надо его копипастить.
redlinerus
Сообщения: 5
Зарегистрирован: 17 апр 2023, 21:47

Re: Варианты исходящей маршрутизации

Сообщение redlinerus »

Видимо не правильно сказал, именно скрипт используется для записи звонков в разные каналы (стерео), а для подстановки 8, запись в dialplan, контекст кладу на транк.

Код: Выделить всё

[from-operator-add8]
exten => _.,1,Set(CALLERID(all)=8${CALLERID(num):-10:10})
exten => _.,2,Set(CALLERID(ANI-all)=${CALLERID(num)})
exten => _.,3,Goto(from-trunk,${EXTEN},1) ;
По теме, не могу понять куда писать обработку в dialplan когда идет исходящий вызов на внешнего пользователя.

Начал читать «Asterisk - Полное руководство». 5-e издание.
Ответить
© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH