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

Подсчет исход. мин в транке.

Добавлено: 17 июл 2011, 18:53
ss777
Подскажите, кто решал такую задачу. Имеется 10 городских номеров подключенных SIP транком, нужно считать количество исходящих минут по каждому номеру, проблема заключается в том, что в CDR таблицу при исходящем звонке в поля callid и src записывается внутренний номер, а не внешний который присваивается абоненту в соответствующем блоке extension. С подсчетом входящих проблем нет.

Re: Подсчет исход. мин в транке.

Добавлено: 17 июл 2011, 19:39
ss777
Не понял что именно еще сделать.
Вот тестовый блок, в нем при исходящем звонке внут. номеру 1010 назначается внешний номер 751015, но в CDR таблице записано, что исходящий был не с 751015(что и нужно), а с 1010.

exten => _N.,1,NoOp(Call from ${CALLERID(all)} to ${EXTEN})
exten => _N.,n,GotoIf($["${CALLERID(num)}" = "1010"]?co751015:end)
exten => _N.,n(co751015),Set(CALLERID(num)=751015)
exten => _N.,n,Dial(${OPER}/${EXTEN})
exten => _N.,n(end),Congestion()
exten => _N.,n,Hangup()

Re: Подсчет исход. мин в транке.

Добавлено: 17 июл 2011, 19:54
ded
ss777 писал(а): Имеется 10 городских номеров подключенных SIP транком
Тут тонкости: это может быть один SIP транк, и номера DID в нём просто передаются, соответственно, при исходящих - городской номер указываются в качестве Caller ID.
Или это 10 SIP транков, каждый со своей регистрацией. Тогда для нужного Caller ID исходящий посылается с соответствующим username.

Как вариант можно предложить в диалплане добавлять городской номер в Caller ID Name

exten => _N./1010,1,Set(CALLERID(name)=751015)
exten => _N./1010,n,NoOp(Call from ${CALLERID(all)} to ${EXTEN})
exten => _N./1010,n,Dial(${OPER}/${EXTEN})
exten => _N./1010,n(end),Congestion()
exten => _N./1010,n,Hangup()

Re: Подсчет исход. мин в транке.

Добавлено: 17 июл 2011, 20:06
ss777
Спасибо всем за то, что откликнулись. Это один SIP транк (5-ть каналов/10 номеров). тут ещё подсказали. Я не знал о существовании функции CDR, я ж новичок. Думаю пока мне этого хватит.
ded прошу прощения, я не понял зачем нужно писать в Caller ID Name, почему не в number? Разве в данном случае в CDR в полe callid запишется именно этот Name или все же запишется Name внут. абонента? Почему тогда у меня этой exten => _N.,n(co751015),Set(CALLERID(num)=751015) строкой не заносился в CDR внешний номер.

Re: Подсчет исход. мин в транке.

Добавлено: 17 июл 2011, 20:47
ded
Зачем нужно писать в Caller ID Name, почему не в number? Вы написали что
проблема заключается в том, что в CDR таблицу при исходящем звонке в поля callid и src записывается внутренний номер,
Если в CDR CIDnum записывается внутренний номер, тов поле CIDname можем писать при этом внешний номер.
Вот если звонит внутренний номер 1010, то при такой обработке не нужные никакие GotoIf
exten => _N./1010,1,Set(CALLERID(name)=1010)
exten => _N./1010,n,Set(CALLERID(num)=751015)
exten => _N./1010,n,NoOp(Call from ${CALLERID(all)} to ${EXTEN})
такой трюк, чтобы получить информативно такие записи например
Call from "1010" <751015> to 23456
и это можно уже фильтровать в CDR.

Re: Подсчет исход. мин в транке.

Добавлено: 17 июл 2011, 20:48
ded
ss777 писал(а): Почему тогда у меня этой exten => _N.,n(co751015),Set(CALLERID(num)=751015) строкой не заносился в CDR внешний номер?
Скорее всего неверный синтаксис, анализировать что там не правильно - не интересно sorry ^(==:(