вместо s,1 вписать vensys,1 и так далее для всего остального.
meral ( 2012-05-15 23:07:31 +0400 )редактироватьДобрый вечер всем! Для разделения звонков по EXT, приходящих через один транк, использую инструкции из сайта FreePBX.
Файл: extensions_custom.conf
[custom-get-did-from-sip]
;Get the DID of a SIP trunk when the provider doesnt send it
exten => s,1,Noop(Fixing DID using information from SIP TO header)
exten => s,n,Set(pseudodid=${SIP_HEADER(To)})
exten => s,n,Set(pseudodid=${CUT(pseudodid,@,1)})
exten => s,n,Set(pseudodid=${CUT(pseudodid,:,2)})
exten => s,n,Goto(from-trunk,${pseudodid},1)
Но не тут то было. Заметил, что Elastix сам создает на каждый транк Context типа: context=from-trunk-sip-ИмяТранка
Хорошо, нашел:
[from-trunk-sip-ИмяТранка]
include => from-trunk-sip-ИмяТранка-custom
exten => _.,1,Set(GROUP()=OUT_8)
exten => _.,n,Goto(from-trunk,${EXTEN},1)
и записал в файл extensions_custom.conf
[from-trunk-sip-ИмяТранка-custom]
exten => s,1,Noop(Fixing DID using information from SIP TO header)
exten => s,n,Set(pseudodid=${SIP_HEADER(To)})
exten => s,n,Set(pseudodid=${CUT(pseudodid,@,1)})
exten => s,n,Set(pseudodid=${CUT(pseudodid,:,2)})
exten => s,n,Goto(from-trunk,${pseudodid},1)
Не работает. Добавил то же в файл extensionsoverrideelastix.conf Не помогает.
Что я не так делаю? asterisk 1.8.11.0 + freepbx 2.8.1 + elastix 2.3.0
есть куча вариантов.
самый простой - у вас звонок приходит не в s context как вы написали,а например на номер 123456. что с вашим диалпланом работаь не будет.
вообещ начните с общей книги по астериску. и посмотрите вывод на консоли
asterisk -vvvvr
И на этом спасибо. Действительно, только учусь.
Лог таков:
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
-- Executing [vensys@from-trunk-sip-ИмяТранка:1] Set("SIP/ИмяТранка-00000000", "GROUP()=OUT_8") in new stack
-- Executing [vensys@from-trunk-sip-ИмяТранка:2] Goto("SIP/ИмяТранка-00000000", "from-trunk,vensys,1") in new stack
-- Goto (from-trunk,vensys,1)
-- Executing [vensys@from-trunk:1] Set("SIP/ИмяТранка-00000000", "__FROM_DID=vensys") in new stack
-- Executing [vensys@from-trunk:2] NoOp("SIP/ИмяТранка-00000000", "Received an unknown call with DID set to vensys") in new stack
-- Executing [vensys@from-trunk:3] Goto("SIP/ИмяТранка-00000000", "s,a2") in new stack
-- Goto (from-trunk,s,2)
-- Executing [s@from-trunk:2] Answer("SIP/ИмяТранка-00000000", "") in new stack
-- Executing [s@from-trunk:3] Wait("SIP/ИмяТранка-00000000", "2") in new stack
-- Executing [s@from-trunk:4] Playback("SIP/ИмяТранка-00000000", "ss-noservice") in new stack
-- <SIP/ИмяТранка-00000000> Playing 'ss-noservice.gsm' (language 'en')
вместо s,1 вписать vensys,1 и так далее для всего остального.
meral ( 2012-05-15 23:07:31 +0400 )редактироватьОператор прислал инструкцию:
exten => _.,1,Set(TOHDR=${SIP_HEADER(To)})
exten => _.,2,Set(SWITCH=${REGEX("222502292" ${TOHDR})})
exten => _.,3,GotoIf($["${SWITCH}" = "1"]?from-internal,203,1)
Но вопрос с том, что не обрабатывается custom context. Согласно лога дальше
[from-trunk-sip-ИмяТранка]
include => from-trunk-sip-ИмяТранка-custom
exten => _.,1,Set(GROUP()=OUT_8)
exten => _.,n,Goto(from-trunk,${EXTEN},1)
не следует. Как сделать так, чтобы сначало выполнялся customs context из файла extensions_custom.conf
или на крайний случай из extensions_override_elastix.conf
.
Использую пока стандартную инсталляцию с ISO-диска без каких-либо изменений.
До этого использовал и пока использую железяку ZX50, которая внутри имеет Asterisk 1.4 и проблему решил созданием транка на каждый номер. Но это не выход, иметь 25 транков.
судя по вашим вопросам только нанять когото. ибо совершенно не понятно что происходит.
meral ( 2012-05-15 23:07:02 +0400 )редактироватьЗато автор поразил нас бессмысленнм набором букв в диаплане. Тоже ничего, хоть какое-то на сегодня развлечение)
zzuz ( 2012-05-16 00:15:42 +0400 )редактироватьНа специализированные форумы обращаются менее опытные, дабы получить помощь от более опытных. Вижу некоторые отвечающие или не владеют темой, или ищут доп. заработок, или им просто нечего делать. Посмеяться можно на сайте анекдот.ру.
Повторяю вопрос: Как заставить обрабатываться custom context из файла extensions_custom.conf в конфигурации asterisk 1.8.11.0 + freepbx 2.8.1 + elastix 2.3.0 в первую очередь? используется для извлечения DID номера из заголовка, поскольку оператор его не отправляет.
Я настраивал достаточно интегрированных систем, но в основном через GUI-интерфейс с минимальными правками конфиг. файлов. Заранее спасибо за конструктивную помощь.
bsa ( 2012-05-16 01:10:11 +0400 )редактироватьВсе звонки попадают во from-trunk , далее в from-pstn-custom , вот там DID и отлавливайте . Пример правильного диаплана с удовольствием приведу , если только Вы мне обьясните что это за строчка exten = _.,2,Set(SWITCH=${REGEX("222502292" ${TOHDR})})
?
да тут вообещ никто не владеет темой. я вон там вам ответил что надо сделать.
meral ( 2012-05-16 02:13:25 +0400 )редактироватьСпасибо, уже близко. Буду очень благодарен, если поможете с правильным диалпланом. У меня нет сейчас from-pstn-custom. А что за строка, привожу без изменений...
Dla połączeń przychodzących należy wydobyć informacje o numerze z nagłówka "To:"
exten => _.,1,Set(TOHDR=${SIP_HEADER(To)}) ///(pobranie nagłówka)
exten => _.,2,Set(SWITCH=${REGEX("221234567" ${TOHDR})}) ///(badanie czy połączenie przyszło na numer np. 221234567)
Potem można skoczyć do odpowiedniego kontekstu i extension dla tego numeru:
exten => _.,3,GotoIf($["${SWITCH}" = "1"]?kontekst,extension,1) ///(przekazanie do kontekstu, extena na priorytet 1)
Dla połączeń wychodzących trzeba odpowiednio ustawić prezentacje (w panelu musi być "- użyj z bramki -"):
exten => _.,1,Set(CALLERID(number)=48221234567)
Но мне больше понравилась инструкция:
<a href="http://www.freepbx.org/support/documentation/howtos/how-to-get-the-did-of-a-sip-trunk-when-the-provider-doesnt-send-it-and-">http://www.freepbx.org/support/documentation/howtos/how-to-get-the-did-of-a-sip-trunk-when-the-provider-doesnt-send-it-and-</a>
bsa (
2012-05-16 15:27:42 +0400
)редактироватьОписания вашей бредовой строки так и непонятно, тем более скопированной фиг знает откуда. Так что разбирайтесь.
zzuz ( 2012-05-16 22:54:39 +0400 )редактироватьесли нет from-pstn-custom , так создайте , если конечно вам ваш язвительный характер позволяет.
zzuz ( 2012-05-16 22:56:11 +0400 )редактироватьТот же вопрос: 'http://asteriskforum.ru/viewtopic.php?printertopic=1&t=9431&start=0&postdays=0&postorder=asc&vote=viewresult"
Отзовитесь, кто знает ответ.
Или куда вставить custom context, чтобы он обрабатывался перед 'from-trunk'?
bsa ( 2012-05-17 01:17:35 +0400 )редактироватьПутем проб и ошибок добавил в extensions_custom.conf:
[from-pstn-custom]
exten => _.,1,NoOp(Fixing DID using information from SIP TO header)
exten => _.,n,NoOp(Original CallerID = ${CALLERID(num)})
exten => _.,n,NoOp(Original TOHDR = ${TOHDR})
exten => _.,n,Set(pseudodid=${SIP_HEADER(To)})
exten => _.,n,Set(pseudodid=${CUT(pseudodid,@,1)})
exten => _.,n,Set(pseudodid=${CUT(pseudodid,:,2)})
exten => _.,n,Set(CALLERID(num)=48${pseudodid:1})
exten => _.,n,NoOp(Original CallerID = ${CALLERID(num)})
exten => _.,n,Goto(ext-did,${CALLERID(num)},1)
теперь работает. Тестирую
bsa ( 2012-05-18 01:55:36 +0400 )редактироватьо. видите налицо прогрес в понимании астериска и прогрес в оформлении коментариев. если что,то dumpchan екстеншен вам в помощь.
meral ( 2012-05-18 11:19:19 +0400 )редактироватьрано я радовался. При входящих звонках все ОК. Когда набираешь с внутреннего номера любой из своих номеров из списка DID, бедная зацикливается и пашет, как угорелая. Получилось остановить ее только core restart now
bsa ( 2012-05-19 12:08:46 +0400 )редактироватьАстериск, непонятно каким образом, делает инклюды... выполните команду:
dialplan show from-trunk-sip-ИмяТранка
Скорее всего у Вас будет такой вывод:
[ Context 'from-trunk-sip-ИмяТранка' created by 'pbx_config' ]
'_.' => 1. Set(GROUP()=OUT_8) [pbx_config]
2. Goto(from-trunk,${EXTEN},1) [pbx_config]
Include => 'from-trunk-sip-ИмяТранка-custom' [pbx_config]
Поэтому до выполнения вашего кастом контекста дело не дойдет. Ну и судя по логу, у вас _FROMDID=vensys, а не _FROMDID=s
meral Вам уже писал, что нажо заменить s,1 на vensys,1 и т.д. Перепишите контекст [from-trunk-sip-ИмяТранка] в extensions_override _freepbx.conf таким образом:
[from-trunk-sip-ИмяТранка]
exten => vensys,1,Noop(Fixing DID using information from SIP TO header)
exten => vensys,n,Set(pseudodid=${SIP_HEADER(To)})
exten => vensys,n,Set(pseudodid=${CUT(pseudodid,@,1)})
exten => vensys,n,Set(pseudodid=${CUT(pseudodid,:,2)})
exten => vensys,n,Goto(from-trunk-sip-ИмяТранка-original,${pseudodid},1)
[from-trunk-sip-ИмяТранка-original]
include => from-trunk-sip-ИмяТранка-custom
exten => _.,1,Set(GROUP()=OUT_8)
exten => _.,n,Goto(from-trunk,${EXTEN},1)
Olpag, сорри, не заметил сразу ответ. Действительно, неизвестно как он обрабатывает эти инклюды. Вроде уже все перепробовал. Работает только [from-pstn-custom], но при наборе своих номеров, зацикливается. В остальных вариантах просто не обрабатывает. Например, сейчас:
PBX*CLI> dialplan show from-trunk-sip-FreecoNet_(vensys) [ Context 'from-trunk-sip-FreecoNet_(vensys)' created by 'pbx_config' ]
'_.' => 1. Set(GROUP()=OUT_8) [pbx_config]
2. Goto(from-trunk,${EXTEN},1) [pbx_config]
Include => 'from-trunk-sip-FreecoNet_(vensys)-custom' [pbx_config]
-= 1 extension (2 priorities) in 1 context. =-
'[from-trunk-sip-FreecoNet(vensys)-custom]' находится в 'extensionsoverride_freepbx.conf'
PBX*CLI> dialplan show from-trunk-sip-FreecoNet_(vensys)-custom [ Context 'from-trunk-sip-FreecoNet_(vensys)-custom' created by 'pbx_config' ]
'_.' => 1. Noop(Fixing DID using information from SIP TO header) [pbx_config]
2. Set(pseudodid=${SIP_HEADER(To)}) [pbx_config]
3. Set(pseudodid=${CUT(pseudodid,@,1)}) [pbx_config]
4. Set(pseudodid=${CUT(pseudodid,:,2)}) [pbx_config]
5. Goto(from-trunk-sip-FreecoNet_(vensys),${pseudodid},1) [pbx_config]
-= 1 extension (5 priorities) in 1 context. =-
Но в результате получаю ту же картину. При записи в файл 'extensionscustom.conf' или изменении "." на "vensys" ничего не меняется:
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
-- Executing [vensys@from-trunk-sip-FreecoNet_(vensys):1] Set("SIP/FreecoNet_(vensys)-00000001", "GROUP()=OUT_8") in new stack
-- Executing [vensys@from-trunk-sip-FreecoNet_(vensys):2] Goto("SIP/FreecoNet_(vensys)-00000001", "from-trunk,vensys,1") in new stack
-- Goto (from-trunk,vensys,1)
-- Executing [vensys@from-trunk:1] Set("SIP/FreecoNet_(vensys)-00000001", "__FROM_DID=vensys") in new stack
-- Executing [vensys@from-trunk:2] NoOp("SIP/FreecoNet_(vensys)-00000001", "Received an unknown call with DID set to vensys") in new stack
-- Executing [vensys@from-trunk:3] Goto("SIP/FreecoNet_(vensys)-00000001", "s,a2") in new stack
-- Goto (from-trunk,s,2)
-- Executing [s@from-trunk:2] Answer("SIP/FreecoNet_(vensys)-00000001", "") in new stack
-- Executing [s@from-trunk:3] Wait("SIP/FreecoNet_(vensys)-00000001", "2") in new stack
-- Executing [s@from-trunk:4] Playback("SIP/FreecoNet_(vensys)-00000001", "ss-noservice") in new stack
Это глюк у меня или у Elastix? и как с ним бороться?
Перечитайте внимательно мой ответ!!! в extensions_override _freepbx.conf надо написать контекст from-trunk-sip-ИмяТранка, а не from-trunk-sip-ИмяТранка-custom. И туда же добавить второй контекст from-trunk-sip-ИмяТранка-original . Я вам уже написал готовое решение
Olpag ( 2012-05-20 17:56:54 +0400 )редактироватьЗадан: 2012-05-15 01:02:02 +0400
Просмотрен: 9,754 раз
Обновлен: May 19 '12
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.
Что значит "Не работает"? Что пишет в консоли? dialplan reload делали? И отформатируйте код, смотреть невозможно.
Aven ( 2012-05-15 01:08:40 +0400 )редактировать