Страница 1 из 1

Подмена внешнего CID. Сделано. Возможны ли подводные камни?

Добавлено: 02 фев 2017, 12:23
tol_iwan
Проблему по форуму почитал, нашел несколько реализаций. Сделал по своему. Интересует могут ли возникнуть проблемы, может что не учел.
Суть в следующем. SIP-транк к провайдеру. Используется только для исходящих. Провайдер пропускает тот CALLERID, который ему приходит. Нужно для разных внутренних телефонов иметь разные CALLERID - по городам, отделам и прочему. Это не проблема - меняем CALLERID(num) на нужный и шлем вызов. Далее возникает проблема со статистикой, т.к. там номер звонящего начинает отображаться не внутренний, а подставленный внешний. Собственно о решении этой задачи и спрашиваю.
Что нашел на форуме:
1. Если номер для всех подменяется на один, то можно в транке указать fromuser=номер, тогда все путем. Не устраивает, что номер не у всех один.
2. Запихивать в статистику внутренний номер в userfield и играться с ним. Работает, но не хочется лезть в поля статистики, т.к. тут можно починить, а в другом месте поломать. Чтоб все было нормально надо перелопатить диалплан.
3. Если freepbx - указать для внутреннего номера соответсвующее поле подмены номера для исходящих. Тут затрудняюсь описать результат - у меня голый asterisk.
4. Придумал сам(может и описано где-то - я не встретил). Делаю одинаковые транки(type=friend), различающимся только полем fromuser=номер. Т.е. логины/пароли, хосты - все одинаковое. Соответственно указываю в диалплане при исходящем нужный для вызова транк и все путем. Вопрос - нет ли у данной схемы подводных камней - можно ли так клонировать транк? По моим знаниям вроде все нормально должно быть: транк используется только для выхода, т.е. при каждом вызове беруться параметры для этого вызова из разных мест.

Re: Подмена внешнего CID. Сделано. Возможны ли подводные кам

Добавлено: 02 фев 2017, 13:51
april22
Делал на FreePBX. Не претендую на оригинальность.
я строил подобное .
30 номеров на выход (теми ? чем я могу закрыться)

далее творил макрос

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

[cid]
exten => s,1,NoOp(-------${ARG1}-------${OUT_${DIAL_TRUNK}}-----------------${CALLERID(number)}----------------)
exten => s,n,Set(CALLERID(number)=1)
exten => s,n,NoOp(тут будет всякая подстановка определителя )
exten => s,n,Set(CALLERID(number)=${DB(USER/${ARG1}/callerid)})
exten => s,n,Execif($["${CALLERID(number)}"=""]?Hangup())
exten => s,n,NoOp(----!!!!!!!!!!!!!!!!!!!!!---------${CALLERID(number)}---------------- )
перед диалом в [macro-dialout-trunk] делал (контекст перенес в extensions_override_freepbx.conf ) Не стал основной код ковырять на FreePBX

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

exten => s,n,ExecIF($["${OUT_${DIAL_TRUNK}}"="${OUT_4}"]?Macro(cid,${CALLERID(number)},${OUT_${DIAL_TRUNK}})


переменную
${OUT_4} - брал после заведения транка из [globals] файла extensions_additional.conf. Через который мне надо делать подмену.

соответствие номеров и юзеров храню в AStDB.

хотел переделать на AGI, но мудрость админов, каждый раз останавливает ;-)

Re: Подмена внешнего CID. Сделано. Возможны ли подводные кам

Добавлено: 02 фев 2017, 16:19
ded
... брал беременную переменную
${OUT_4} ... это слишком кастом.
Во freePBX всё это уже элегантно решается указанием у каждого экстена его внешнего номера, поле Outbound CID
И статистика пишется тоже верно при этом.

Re: Подмена внешнего CID. Сделано. Возможны ли подводные кам

Добавлено: 02 фев 2017, 16:44
april22
но там внутренний порядка 250 номеров, а многим и нельзя в мир звонить.
Еще одна преграда .

ну вот как сделал - так сделал. Не судите строго.

Вариант с прописыванием в морде - знаю. Рассматривал, но верил что дойду до AGI , и некой внешней мордочки. Но ....

Re: Подмена внешнего CID. Сделано. Возможны ли подводные кам

Добавлено: 05 фев 2017, 13:09
whoim
april22 писал(а):Делал на FreePBX
зачем так сложно? Достаточно создать несколько правил в outbound routes и на каждое прописать нужный outbound callerid, на транке оставить пустым.
Одному правилу можно тоже оставить пустым, для forward-ов, тогда будет передаваться номер позвонившего, при пробросе на мобилы сотрудникам будет виден реальный номер.
Все штатными средствами, разруливать через префиксы или масками callee - стороны.

В статистике все красиво.