Вход | Регистрация
Вы здесь: Главная / Форум / Главный форум по Asterisk / Конфигурация и настройка / звонки из разных контекстов между собой - как?

звонки из разных контекстов между собой - как?

звонки из разных контекстов между собой - как?
1 2>
Сообщений: 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 – как то про это умалчивает, да и поиск не очень помог.
2008-07-31 23:21

Сообщений: 1573

Re: звонки из разных контекстов между собой - как?

[set1](!)
[8001](set1) ;
[9001](set1) ;

уберите все лишнее ...
2008-08-01 00:13

Сообщений: 35

Re: звонки из разных контекстов между собой - как?

хм....
интересно, а что именно здесь лишнее?
2008-08-01 15:02

Сообщений: 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

а вообще, есть стандарт - придерживайтесь, проблем будет меньше ...
2008-08-01 15:52

Сообщений: 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.

к тому же, это не имеет никакого отношения к моему вопросу.. :(
2008-08-01 16:05

Сообщений: 1573

Re: звонки из разных контекстов между собой - как?

к тому же, это не имеет никакого отношения к моему вопросу.. :(
Имеет, к тому же самое прямое ... Уберите, перегрузите и попробуйте сделать вызов

а вот указанное вами сообщение выше, выдается если вы не объявили (или неправильно объявили) категорию (общую группу) настроек. в данном случае set1.


О каких группах, категориях идет речь?

http://voip.rus.net/tiki-index.php?page=Asterisk+config+sip.conf
2008-08-01 16:33

Сообщений: 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

мой вопрос остался открыт :(
2008-08-01 21:58

Сообщений: 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


Понял о чем речь ...
2008-08-01 22:53

Сообщений: 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

и на самом деле в каждом из контекстов более одного пользователя, намного более. по одному привел просто в качестве примера. описание всех пользователей не несет смысловой нагрузки, а лишь занимает место, удлиняет топик и мешает концентрации.. :)
2008-08-02 01:04

Сообщений: 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-х значный номер.
Ну а если хотите оставить так, как было, то поменяйте контексты, местами. Это можно сделать в пирах, как уже говорил, либо в диалплане ...
2008-08-02 01:26

1 2>
Добавить страницу в закладки:  Delicious Google Slashdot Yahoo Yandex.ru Reddit Digg Technorati Bobrdobr.ru Newsland.ru Smi2.ru Rumarkz.ru Vaau.ru Memori.ru Rucity.com Moemesto.ru News2.ru Mister-Wong.ru Myscoop.ru 100zakladok.ru