Добрый день коллеги!
Обнаружил вот такую интересную штуку.
Дано sip провайдер манго телеком.
От него приходят два городских номера.
В панели манги каждый номер переадресуется на свою sip учетку.
Тем не менее ошибка или грук из разряда фантастики.
Когда приходит звонок на учетку "А" в системе видно что задействован транк "А", но когда приходит звонок на учетку "Б" в системе видно что используется транк "А".
Из за этого отчеты по входящим звонкам как вы догадаетесь не верны.
Прошу руку помощи!
Спасибо
Ниже привожу логи из консоли
sip show registry
Host dnsmgr Username Refresh State Reg.Time
mangosip.ru:5060 N A16576383P1 285 Registered Thu, 31 Mar 2011 09:57:18
mangosip.ru:5060 N A16602104P1 285 Registered Thu, 31 Mar 2011 09:57:03
2 SIP registrations.
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
== Using SIP VRTP TOS bits 136
== Using SIP VRTP CoS mark 6
-- Executing [5851052@from-trunk:1] Set("SIP/9262636-0000171d", "__FROM_DID=5851052") in new stack
-- Executing [5851052@from-trunk:2] Gosub("SIP/9262636-0000171d", "app-blacklist-check,s,1") in new stack
-- Executing [s@app-blacklist-check:1] GotoIf("SIP/9262636-0000171d", "0?blacklisted") in new stack
-- Executing [s@app-blacklist-check:2] Set("SIP/9262636-0000171d", "CALLED_BLACKLIST=1") in new stack
-- Executing [s@app-blacklist-check:3] Return("SIP/9262636-0000171d", "") in new stack
-- Executing [5851052@from-trunk:3] ExecIf("SIP/9262636-0000171d", "0 ?Set(CALLERID(name)=74956474818)") in new stack
-- Executing [5851052@from-trunk:4] Set("SIP/9262636-0000171d", "__CALLINGPRES_SV=allowed_not_screened") in new stack
-- Executing [5851052@from-trunk:5] Set("SIP/9262636-0000171d", "CALLERPRES()=allowed_not_screened") in new stack
-- Executing [5851052@from-trunk:6] Goto("SIP/9262636-0000171d", "timeconditions,2,1") in new stack
-- Goto (timeconditions,2,1)
-- Executing [2@timeconditions:1] GotoIfTime("SIP/9262636-0000171d", "08:00-21:00,*,*,*?ivr-6,s,1") in new stack
-- Goto (ivr-6,s,1)
-- Executing [s@ivr-6:1] Set("SIP/9262636-0000171d", "MSG=custom/GKSEELINE") in new stack
-- Executing [s@ivr-6:2] Set("SIP/9262636-0000171d", "LOOPCOUNT=0") in new stack
-- Executing [s@ivr-6:3] Set("SIP/9262636-0000171d", "__DIR-CONTEXT=") in new stack
-- Executing [s@ivr-6:4] Set("SIP/9262636-0000171d", "_IVR_CONTEXT_ivr-6=") in new stack
-- Executing [s@ivr-6:5] Set("SIP/9262636-0000171d", "_IVR_CONTEXT=ivr-6") in new stack
-- Executing [s@ivr-6:6] GotoIf("SIP/9262636-0000171d", "0?begin") in new stack
-- Executing [s@ivr-6:7] Answer("SIP/9262636-0000171d", "") in new stack
-- Executing [s@ivr-6:8] Wait("SIP/9262636-0000171d", "1") in new stack
-- Executing [s@ivr-6:9] Set("SIP/9262636-0000171d", "TIMEOUT(digit)=3") in new stack
-- Digit timeout set to 3.000
-- Executing [s@ivr-6:10] Set("SIP/9262636-0000171d", "TIMEOUT(response)=1") in new stack
-- Response timeout set to 1.000
-- Executing [s@ivr-6:11] Set("SIP/9262636-0000171d", "__IVR_RETVM=") in new stack
-- Executing [s@ivr-6:12] ExecIf("SIP/9262636-0000171d", "1?Background(custom/GKSEELINE)") in new stack
-- <SIP/9262636-0000171d> Playing 'custom/GKSEELINE.gsm' (language 'ru')
== Spawn extension (ivr-6, s, 12) exited non-zero on 'SIP/9262636-0000171d'
-- Executing [h@ivr-6:1] Hangup("SIP/9262636-0000171d", "") in new stack
== Spawn extension (ivr-6, h, 1) exited non-zero on 'SIP/9262636-0000171d'
ats*CLI>
Disconnected from Asterisk server
Executing last minute cleanups
ниже звонок на второй номер
- Executing [9262636@from-trunk:1] Set("SIP/9262636-00001725", "__FROM_DID=9262636") in new stack
-- Executing [9262636@from-trunk:2] Gosub("SIP/9262636-00001725", "app-blacklist-check,s,1") in new stack
-- Executing [s@app-blacklist-check:1] GotoIf("SIP/9262636-00001725", "0?blacklisted") in new stack
-- Executing [s@app-blacklist-check:2] Set("SIP/9262636-00001725", "CALLED_BLACKLIST=1") in new stack
-- Executing [s@app-blacklist-check:3] Return("SIP/9262636-00001725", "") in new stack
-- Executing [9262636@from-trunk:3] ExecIf("SIP/9262636-00001725", "0 ?Set(CALLERID(name)=74956474818)") in new stack
-- Executing [9262636@from-trunk:4] Set("SIP/9262636-00001725", "__CALLINGPRES_SV=allowed_not_screened") in new stack
-- Executing [9262636@from-trunk:5] Set("SIP/9262636-00001725", "CALLERPRES()=allowed_not_screened") in new stack
-- Executing [9262636@from-trunk:6] Goto("SIP/9262636-00001725", "timeconditions,1,1") in new stack
-- Goto (timeconditions,1,1)
-- Executing [1@timeconditions:1] GotoIfTime("SIP/9262636-00001725", "09:00-21:00,*,*,*?ivr-4,s,1") in new stack
-- Goto (ivr-4,s,1)
-- Executing [s@ivr-4:1] Set("SIP/9262636-00001725", "MSG=custom/file2gsm") in new stack
-- Executing [s@ivr-4:2] Set("SIP/9262636-00001725", "LOOPCOUNT=0") in new stack
-- Executing [s@ivr-4:3] Set("SIP/9262636-00001725", "__DIR-CONTEXT=") in new stack
-- Executing [s@ivr-4:4] Set("SIP/9262636-00001725", "_IVR_CONTEXT_ivr-4=") in new stack
-- Executing [s@ivr-4:5] Set("SIP/9262636-00001725", "_IVR_CONTEXT=ivr-4") in new stack
-- Executing [s@ivr-4:6] GotoIf("SIP/9262636-00001725", "0?begin") in new stack
-- Executing [s@ivr-4:7] Answer("SIP/9262636-00001725", "") in new stack
-- Executing [s@ivr-4:8] Wait("SIP/9262636-00001725", "1") in new stack
-- Executing [s@ivr-4:9] Set("SIP/9262636-00001725", "TIMEOUT(digit)=3") in new stack
-- Digit timeout set to 3.000
-- Executing [s@ivr-4:10] Set("SIP/9262636-00001725", "TIMEOUT(response)=1") in new stack
-- Response timeout set to 1.000
-- Executing [s@ivr-4:11] Set("SIP/9262636-00001725", "__IVR_RETVM=") in new stack
-- Executing [s@ivr-4:12] ExecIf("SIP/9262636-00001725", "1?Background(custom/file2gsm)") in new stack
-- <SIP/9262636-00001725> Playing 'custom/file2gsm.gsm' (language 'ru')
== Spawn extension (ivr-4, s, 12) exited non-zero on 'SIP/9262636-00001725'
-- Executing [h@ivr-4:1] Hangup("SIP/9262636-00001725", "") in new stack
настройки обоих транков покажи
Настройки транка номера 9262636
type=peer
secret=
nat=no
insecure=invite
host=mangosip.ru
hassip=yes
hasiax=no
hasexten=no
fromuser=A16602104P1
fromdomain=mangosip.ru
dtmfmode=rfc2833
disallow=all
defaultuser=A16602104P1
context=from-trunk
canreinvite=nonat
allow=alaw&ulaw&g729
настройки транка номера 5851052
type=peer
secret=
nat=no
insecure=invite
host=mangosip.ru
hassip=yes
hasiax=no
hasexten=no
fromuser=A16576383P1
fromdomain=mangosip.ru
dtmfmode=rfc2833
disallow=all
defaultuser=A16576383P1
context=from-trunk
canreinvite=nonat
allow=alaw&ulaw&g729
Я хочу получить графический отчет. Захожу в Reports > Graphic Repor > выбираю Trunks > и выбираю транк.
В этой статистике я должен получить без детализации сколько звонков было на тракн. Так вот проблема звонки с разных номеров приходят на один транк
Я писал как у меня сделано подобное, переменная _FROMDID, которая имеет значение номера на который пришел звонок _FROMDID=9262636 и _FROMDID=5851052 в твоем случае может позволить определить на какой номер был совершен звонок. У меня FreePBX я немного модифицировал диалплан и по завершению вызова пишу эту переменную в CDR в свободное для меня поле accountcode [macro-hangupcall] exten => s,n(theend),Set(CDR(accountcode)=${FROM_DID})
А сами отчеты уже формирую отдельными средствами посредством запросов к таблице CDR,
условием что dst
это один из внутренних номеров, значит это был входящий звонок
попытаюсь обьяснить порблему. вот посмотрите, у вас в обих тарнках провайдер один, правильно? вот от этого провайдера идет входящий звонок. КАК астериск может понять, что звонок на другой транк? адрес и порт совпадают. больше ничего о провайдере он не знает. если вы думаете что провайдер посылает username- это может и так(5% шанс), но астериск это не сверяет. ибо звонок входящий и он являеться клиентской стороной.
выход из этой ситуации - посмотреть чем отличаються звонки реально- это если они вообще отичаются. и поставить какойто флажок. после записать его в сдр и поменять сами сдр либо поменять веб чтоб он этот флажок использовал. в любом случае это не совсем тривиально сделать, и требует неких начальных познаний в сопуствующих технологих. имхо вам проще нанять специалиста, для которого это 20 минут работы. для вас это может быть несколько дней. и не факт что вы это сделаете. хотите сами? начните вот с такого:
порчитайте ответ про from _ did и попытайтесь понять что человек хотел вам сказать.
Задан: 2011-03-31 09:48:34 +0400
Просмотрен: 2,852 раз
Обновлен: Mar 31 '11
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.