Страница 1 из 2
CDR dst = 's'
Добавлено: 31 авг 2017, 11:19
simneo
Добрый день!
Виду в CDR получаю строки в которых вместо номера в поле dst стоит 's' (не знаю как правильно назвать что такое 's')
Хотя в контексте я виду А и Б номер
Код: Выделить всё
exten => _7X,1,NoOp(To: ${EXTEN} -- From: ${CALLERID(num)} -- Content: ${CONTEXT})
Если звонок переправить в контект дефолтный FREE_PBX:
exten => s,n,Goto(from-internal,${BNUM},1)
тогда все нормально. Все поля заполнены более менее корректно.
Если только мне нужно сделать со звонком вот так:
Код: Выделить всё
same => n(blocked),NoOp((7${ARG1}) Посыл КПВ!)
same => n,Playback(custom/kpv)
same => n,Hangup()
получаю dst = 's' и в полях cnum и cnam пусто
Почему так происходит и как исправить?
Re: CDR dst = 's'
Добавлено: 31 авг 2017, 11:30
ded
Если зарегистрирован номер Б у провайдера криво (нет его после slash в строке регистрации
register => number:pass@provider.org/9012345678
то исполняется дефолтная обработка 's' (start) в определённом контексте
exten => s,1,(NoOp()
exten => s,n,Goto(from-internal,${BNUM},1)
и получаете dst = 's'
Судя по Goto(from-internal, Вы там какую-то неправильную химию натворили. Не принимаются внешние звонки в контекст from-interna обычно, если только это не внутрикорпоративный маршрут.
Re: CDR dst = 's'
Добавлено: 31 авг 2017, 11:37
simneo
Я функционал FREE PBX вообще не трогал, все контексты в оригинале. Создавал правила только исключительно из бэкофиса (вебморда)
Как раз наоборот, если я делаю
то в поле dst все проставляется нормально
В какой контекст на ваш взгляд нужно передать звонок во FREE PBX?
Повторюсь, правила созданы в пункте исходящая маршрутизация из вебморды
P.S
Я получаю звонки из транка по IP
Указываю в транке контекст куда должен попасть звонок
В этом контексте я создаю маски по которым можно звонить и все что прошло по маскам отдаю в контекст FREE PBX - from-internal
Re: CDR dst = 's'
Добавлено: 31 авг 2017, 12:03
ded
Принимать внешние звонки в контекст from-trunk
Повторюсь:
ded писал(а):Если зарегистрирован номер Б у провайдера криво (нет его после slash в строке регистрации
register => number:pass@provider.org/9012345678
то исполняется дефолтная обработка 's' (start) в определённом контексте.
Re: CDR dst = 's'
Добавлено: 31 авг 2017, 12:07
ded
simneo писал(а):В какой контекст на ваш взгляд нужно передать звонок во FREE PBX?
Повторюсь, правила созданы в пункте исходящая маршрутизация из вебморды
P.S
Я получаю звонки из транка по IP
Указываю в транке контекст куда должен попасть звонок
В этом контексте я создаю маски по которым можно звонить и все что прошло по маскам отдаю в контекст FREE PBX - from-internal
Вы определитесь: получаю звонки из транка по IP - это входящая (в АТС) маршрутизация. Правила в пункте исходящая маршрутизация - это для абонентов этой АТС, а не для входящих звонков.
Может Вы пытаетесь делать транзитные соединения? Из одного транка в другой транк? Обычным образом это блокируется намеренно, чтобы не допустить взлома станции и разорения исходящими на Соломоновы острова и Зимбабве.
Re: CDR dst = 's'
Добавлено: 31 авг 2017, 12:33
simneo
Я делаю это намеренно
Номеров у правайдера не зарегистрировано
Транк выглядит следующим образом:
type=peer
port=5060
insecure=port,invite
host=XX.XX.XX.XX
disallow=all
context=XXXXXXXXXX
canreinvite=no
allow=g729&g723
Мне нужно принять звонок из транка и перемаршрутизировать его в другое место
Вопрос остается открытый
Если в моем контексте то я завершаю звонко тогда не вижу destination
если в контексте FREE PBX все нормально
Почему? Ведь исходные данные в виде звонка одни и теже
Re: CDR dst = 's'
Добавлено: 31 авг 2017, 12:42
ded
Обычно у велосипеда руль слева, а сиденье - справа. Если перевернуть - то наоборот. Соответственно, можно ехать налево, а если перевернуть - то направо.
Вы приделали второй руль и ещё одно седло, и вопрос звучит - почему нельзя ехать одновременно вправо и влево? Ведь колеса то по прежнему два? Я делаю это преднамеренно!
Автоводитель: - разве здесь нет левого поворота?
Инспектор ГИБДД: - есть, но он платный.
Ответ - платный, ОК?
exten => _Х.,1,NoOp()
exten => _Х.,n,Goto(from-internal,${BNUM},1)
успехов Вам, больших и малых! И - читать Книгу о вкусной и здоровой пище (Будущее телефонии).
Re: CDR dst = 's'
Добавлено: 31 авг 2017, 13:42
simneo
Ну вы конечно замудрили, и руля то не два
А два велосипеда
Есть транк (вх/исх)
Есть dongle (вх/исх)
Что считать исходящая маршрутизация в контексте FREE PBX?
Звонок приходит на транк (входящий) я его принимаю в контексте который сам написал
Начало и конец удалил с контента
Тут я передаю его в контекст from-internal
этот контекст работает с dongle и выполняет свою задачу как исходящая маршрутизация (звонит исходящий звонок)
Что я сделал не так?
В этом форуме второй раз задаю вопрос и результат один - предлагают платную
Если мы разговариваем публично, цена вопроса?
Вопрос то простой. Когда звонок завершается в моем контексте CDR формируется неполный
Когда завершается в контексте FREE PBX CDR формируется корректный
Почему? Ведь входящие данные одни и теже (сам звонок)
Re: CDR dst = 's'
Добавлено: 31 авг 2017, 14:33
ded
ded писал(а):Что я сделал не так?
Вот что: написал контекст, не понимая до конца что пишет и зачем пишет:
в контексте который сам написал
Начало и конец удалил с контента
exten => s,n,Goto(from-internal,${BNUM},1)
Вот я вывалю Вам кусок кода, да ещё начало и конец удалю, чтобы потрудней гадать было. И скажу - а где тут я ошибся?
simneo писал(а):Мне нужно принять звонок из транка и перемаршрутизировать его в другое место
Писать надо было подробней, так как в последнем сообщении -
Мне нужно принять звонок из донгла и перемаршрутизировать его по SIP через провайдера (или другой донгл?) другому абоненту.
Re: CDR dst = 's'
Добавлено: 01 сен 2017, 11:07
simneo
Мне нужно принять звонок из донгла и перемаршрутизировать его по SIP через провайдера (или другой донгл?) другому абоненту.
А я так и не писал
Полный код контекста:
Код: Выделить всё
[sub_black_list]
exten => s,1,NoOp(--- MACRO --- BLACKLIST ---)
#same => n,MYSQL(connect connid ${DBhost} ${DBuser} ${DBpass} ${DBname})
same => n,MYSQL(connect connid localhost XXX XXX asterisk_user utf8)
same => n,MYSQL(query resultid ${connid} SELECT 'Yes' as result from asterisk_user.user_blacklist a where a.callerid='7${ARG1}')
same => n,MYSQL(Fetch fetchid ${resultid} blacklistid)
same => n,NoOp(FetchID: ${fetchid} Var1: ${blacklistid} ConnID: ${connid} ResultID: ${resultid})
same => n,GotoIf($["${blacklistid}" = "Yes"]?blacklisted)
same => n,MYSQL(clear ${resultid})
same => n,MYSQL(disconnect ${connid})
same => n,Goto(end)
same => n(blacklisted),NoOp((7${ARG1}) Заблокирован!)
same => n,MYSQL(clear ${resultid})
same => n,MYSQL(disconnect ${connid})
same => n,Hangup()
same => n(end),NoOp(-- Clear --)
same => n,Return()
exten => _79XXXXXXXXX,1,NoOp(To: ${EXTEN} -- From: ${CALLERID(num)} -- Content: ${CONTEXT})
exten => _79XXXXXXXXX,n,Set(BNUM=8${EXTEN:1})
exten => _79XXXXXXXXX,n,NoOp(BNUM: ${BNUM})
exten => _79XXXXXXXXX,n,Goto(s,1)
# Проверка номера
exten => s,1,GoSub(sub_black_list,s,1(${BNUM:1}))
# Выход FREEPBX
exten => s,n,Goto(from-internal,${BNUM},1)
exten => s,n,Hangup()
Вот в такой контекст я принимаю звонок из транка