звонки из разных контекстов между собой - как?
звонки из разных контекстов между собой - как?
Сообщений: 35
|
звонки из разных контекстов между собой - как?
прошу не бить ногами за возможно глупый вопрос. но что-то не выходит у меня «каменный цветок» :(
имеется asterisk 1.4.20.1
контекст – int (в который входят все внутренние пользователи, имеют номер вида ХХХХ)
[macro-mystdexten];
exten => s,1,Dial(${ARG2},${ARG3},tT)
exten => s,2,Goto(s-${DIALSTATUS},1)
exten => s-NOANSWER,1,VoiceMail(${ARG4}|u)
exten => s-BUSY,1,VoiceMail(${ARG4}|b)
exten => _s-.,1,Goto(s-NOANSWER,1)
[int]
exten => 8001,1,Macro(mystdexten,8001,SIP/8001,15,8001@int)
…
exten => 9001,1,Macro(mystdexten,9001,SIP/9001,15,9001@int)
…
все работает без проблем, звонки в город, на войсмейл, на другой астериск и т.п.
назрела необходимость поделить контекст [int] на несколько контекстов, чтобы можно было разруливать звонки в город/межгород и т.п. получили:
[int1]
exten => 8001,1,Macro(mystdexten,8001,SIP/8001,15,8001@int)
…
[int2]
exten => 9001,1,Macro(mystdexten,9001,SIP/9001,15,9001@int)
…
кусок из sip.conf:
[set1](!)
type=friend
host=dynamic
nat=no
canreinvite=no
allow=gsm
allow=ulaw
allow=alaw
callgroup=8
pickupgroup=8
[8001](set1) ;
username=8001
secret=*****
context=int1
callerid="line1" <8001>
mailbox=8001@int
[9001](set1) ;
username=9001
secret=*****
context=int2
callerid="line2" <9001>
mailbox=9001@int
из консоли sip reload, dialplan reload. внешние звонки работают нормально, а вот внутренние перестали, позвонить с 8001 на 9001 (и наоборот) не могу:
[Jul 31 21:47:14] NOTICE[707]: chan_sip.c:14033 handle_request_invite: Call from '8001' to extension '9001' rejected because extension not found.
[Jul 31 21:47:20] NOTICE[707]: chan_sip.c:14033 handle_request_invite: Call from '9001' to extension '8001' rejected because extension not found.
понятно что нужно include один контекст в другой. но как это сделать правильно, чтобы скажем [int1] получил возможность звонить только абонентам [int2] и не мог воспользоваться возможностью звонить в город через линии абонентов [int2] – для меня большая загадка.
придайте мне плз нужный вектор взаимодействия, а то уж извелся весь. o`reilly.-.asterisk.the.future.of.telephony.2nd.ed.pdf – как то про это умалчивает, да и поиск не очень помог.
|
Сообщений: 1573
|
Re: звонки из разных контекстов между собой - как?
[set1](!)
[8001](set1) ;
[9001](set1) ;
уберите все лишнее ...
|
Сообщений: 35
|
Re: звонки из разных контекстов между собой - как?
хм....
интересно, а что именно здесь лишнее?
|
Сообщений: 1573
|
Re: звонки из разных контекстов между собой - как?
если нет пробела между квадратными скобками и круглыми (судя по всему - нет), то:
CLI>sip reload
[Aug 1 15:49:17] WARNING[3259]: config.c:690 process_text_line: Inheritance requested, but category 'set1' does not exist, line 860 of /etc/asterisk/sip.conf
а вообще, есть стандарт - придерживайтесь, проблем будет меньше ...
|
Сообщений: 35
|
Re: звонки из разных контекстов между собой - как?
ээээ..... пожалуй приведу в качестве примера, отделил пробелом
*CLI> sip reload
Reloading SIP
== Parsing '/usr/local/etc/asterisk/sip.conf': Found
== Parsing '/usr/local/etc/asterisk/users.conf': Found
[Aug 1 14:56:15] WARNING[48266]: chan_sip.c:17185 reload_config: Section 'xxxx' lacks type
== Parsing '/usr/local/etc/asterisk/sip_notify.conf': Found
так что с этой точки зрения запись в файле конфигурации - верна.
а вот указанное вами сообщение выше, выдается если вы не объявили (или неправильно объявили) категорию (общую группу) настроек. в данном случае set1.
к тому же, это не имеет никакого отношения к моему вопросу.. :(
|
Сообщений: 1573
|
Re: звонки из разных контекстов между собой - как?
к тому же, это не имеет никакого отношения к моему вопросу.. :(
Имеет, к тому же самое прямое ... Уберите, перегрузите и попробуйте сделать вызов
а вот указанное вами сообщение выше, выдается если вы не объявили (или неправильно объявили) категорию (общую группу) настроек. в данном случае set1.
О каких группах, категориях идет речь?
http://voip.rus.net/tiki-index.php?page=Asterisk+config+sip.conf
|
Сообщений: 35
|
Re: звонки из разных контекстов между собой - как?
Имеет, к тому же самое прямое ... Уберите, перегрузите и попробуйте сделать вызов
ну если вы так настаиваете, мне не тяжело:
[8001]
username=8001
secret=*****
context=int1
callerid="line1" <8001>
mailbox=8001@int
type=friend
host=dynamic
nat=no
canreinvite=no
allow=gsm
allow=ulaw
allow=alaw
callgroup=8
pickupgroup=8
[9001]
username=9001
secret=*****
context=int2
callerid="line2" <9001>
mailbox=9001@int
type=friend
host=dynamic
nat=no
canreinvite=no
allow=gsm
allow=ulaw
allow=alaw
callgroup=8
pickupgroup=8
надеюсь последовательность строк в приведенном примере значения не имеет?
*CLI> sip reload
Reloading SIP
== Parsing '/usr/local/etc/asterisk/sip.conf':Found
== Parsing '/usr/local/etc/asterisk/users.conf':Found
== Parsing '/usr/local/etc/asterisk/sip_notify.conf':Found
делаем звонок:
[Aug 1 20:44:41] NOTICE[707]: chan_sip.c:14033 handle_request_invite: Call from '8001' to extension '9001' rejected because extension not found.
[Aug 1 20:44:53] NOTICE[707]: chan_sip.c:14033 handle_request_invite: Call from '9001' to extension '8001' rejected because extension not found.
почему-то в исходе эксперимента у меня сомнений не было. собственно говоря неудивительно. потому как крутить нужно extensions.conf
О каких группах, категориях идет речь?
возможно несовсем верно выразился применив слово категория/группа, правильнее было бы сказать - темплейт. но то что хотел сказать лучше прочесть из первоисточника:
o`reilly.-.asterisk.the.future.of.telephony.2nd.ed стр.116
мой вопрос остался открыт :(
|
Сообщений: 1573
|
Re: звонки из разных контекстов между собой - как?
Зоркий сокол наконец увидел (1,2) ... :)
поменяйте в пирах контексты местами ..., т.е.
[8001]
...
context=int2
...
[9001]
...
context=int1
...
А вообще изначально проблем бы не было, если бы использовали шаблоны:
exten => _XXXX,1,Macro(mystdexten,${EXTEN},SIP/${EXTEN},15,${EXTEN}@int)
o`reilly.-.asterisk.the.future.of.telephony.2nd.ed стр.116
Понял о чем речь ...
|
Сообщений: 35
|
Re: звонки из разных контекстов между собой - как?
поменяйте в пирах контексты местами ..., т.е.
хм... как менять местами контексты в пирах - если контекстов больше двух? например добавится int3, int4, int5 или более того? вот и Я думаю что никак :)
А вообще изначально проблем бы не было, если бы использовали шаблоны:
exten => _XXXX,1,Macro(mystdexten,${EXTEN},SIP/${EXTEN},15,${EXTEN}@int)
дык проблем то изначально и небыло, все были в одном контексте, звонки гуляли во все стороны. красота!!!! проблемы появятся когда будет подключение городских линий, выход на sip-провайдеров или на другие сервера asterisk-а. к примеру когда int1 должен будет иметь доступ только к pstn-out-01, int2 к pstn-out-02 и gsm-out-02, а int3 только к gsm-out-03. где pstn-out-01 - одни городские линии, pstn-out-02 - другие городские линии и т.п. связь между ними только в том, что все они терминируются на одном физическом сервере astriska!!! (разнести на разные asterisk-и не предлагать ;)
если Я все правильно понимаю, то решается все это разделением пользователей на разные контексты, типа:
[int1]
exten => 8001,1,Macro(mystdexten,8001,SIP/8001,15,8001@int)
...
include => pstn-out-01
[int2]
exten => 9001,1,Macro(mystdexten,9001,SIP/9001,15,9001@int)
...
include => pstn-out-02
include => gsm-out-02
[int3]
exten => 1001,1,Macro(mystdexten,1001,SIP/1001,15,1001@int
...
include => gsm-out-03
и на самом деле в каждом из контекстов более одного пользователя, намного более. по одному привел просто в качестве примера. описание всех пользователей не несет смысловой нагрузки, а лишь занимает место, удлиняет топик и мешает концентрации.. :)
|
Сообщений: 1573
|
Re: звонки из разных контекстов между собой - как?
Вы либо меня не понимаете, либо ...
У вас, допустим, в пире 8001 указан контекст - int1
Теперь посмотрите, в диалплан в этот контекст:
[int1]
exten => 8001,1,Macro(mystdexten,8001,SIP/8001,15,8001@int)
…
Сейчас понятно, что этот (8001) юзер не сможет позвонить на екстен - 9001, потому, как он не описан в этом контексте?
А если вы сделаете в конекстах int1 и int2 ... шаблоны (хотя так и нужно делать, если в системе планируется более 2 пользователей ...)
[int1]
exten => _XXXX,1,Macro(mystdexten,${EXTEN},SIP/${EXTEN},15,${EXTEN}@int)
...
[int2]
exten => _XXXX,1,Macro(mystdexten,${EXTEN},SIP/${EXTEN},15,${EXTEN}@int)
...
то не нужно будет прописывать каждый екстен ... и можно ничего больше не менять. Любой пользователь такого контекста сможет набрать любой 4-х значный номер.
Ну а если хотите оставить так, как было, то поменяйте контексты, местами. Это можно сделать в пирах, как уже говорил, либо в диалплане ...
|
|