Страница 1 из 2

Dialplan - выборочный запрет исходящих звонков

Добавлено: 13 май 2014, 13:47
tonny_bennet
Здравствуйте.

Есть необходимость поставить телефон на проходной и на посту охраны. Соответственно с одного из них можно будет звонить только на внутренние номера, а с другого только на некоторые внутренних номеров. Погуглил. Создал тестовую учётку 155. Залез в extensions_custom.conf (Elastix).

Просто запретить вызовы на все телефоны с номера 155 получилось:

Код: Выделить всё

[from-internal-custom]
   exten => _./155,1,Playback(invalid)				
   exten => _./155,2,Hangup()
А вот как теперь разрешить звонить на все трёхзначные внутренние номера? И как разрешить звонить только на 101, 102 и 142? Какой логики стоит придерживаться в моём случае и как это реализовать правильно?

Попробовал возвращать звонок обратно в from-internal: exten => 142/155,1,Goto(from-internal,155,1) - не работает.

Заработало если просто позвонить на этот телефон exten => 142/155,1,Dial(SIP/142,60), но у этого звонка нет CallerID и на экране телефона отображается Device.
Помогите пожалуйста разобраться.

Re: Dialplan - выборочный запрет исходящих звонков

Добавлено: 13 май 2014, 14:00
zzuz
Для начала определитесь, что Вы хотите. Копаться в дебрях конфигурационных файлах или настраивать всё через Freepbx.
В первом случае подойдет "голая" установка астериска , во втором всё замечательно делается через веб-интерфейс.

Re: Dialplan - выборочный запрет исходящих звонков

Добавлено: 13 май 2014, 15:18
tonny_bennet
Практически все настройки я сделал через веб-интерфейс Elastix. Я читал про модуль, позволяющий кастомизировать настройки в FreePBX, но почему-то мне показалось, что сложнее будет его ставить и потом разбираться в нём чем поправить несколько строк в файле extensions_custom.conf. Опять же я с опытом настройки Elastix и теми задачами которые ставит мне руководство, я понимаю что до всего функционала у веб-интерфейса доступа нет и рано или поздно всё же придётся разбираться в контекстах и т.д.

Вы думаете всё же стоит поставить Custom Contexts и не мучаться?

Re: Dialplan - выборочный запрет исходящих звонков

Добавлено: 13 май 2014, 15:31
ded
А Вы уже мучаетесь. И ещё будете много.
Вот волшебный порошок, первая доза, как всегда - бесплатно!

Код: Выделить всё

[from-internal-custom]
exten => _XXX/155,1,Goto(ext-local,${EXTEN},1) 
exten => i,1,Playback(invalid)            
exten => i,2,Hangup()
exten => _X./155,1,Hangup()

;   exten => _./155,1,Playback(invalid)            
;   exten => _./155,2,Hangup()

Re: Dialplan - выборочный запрет исходящих звонков

Добавлено: 13 май 2014, 15:47
april22
ded писал(а):Вот волшебный порошок, первая доза, как всегда - бесплатно!
А ded то , диллер. :D

Re: Dialplan - выборочный запрет исходящих звонков

Добавлено: 13 май 2014, 17:53
tonny_bennet
ded, спасибо за дозу, она меня натолкнула на нужные мысли :)

Код: Выделить всё

;с телефона 155 можно позвонить только на 142,101 и 102
exten => 142/155,1,Goto(ext-local,${EXTEN},1)

exten => 101/155,1,Goto(ext-local,${EXTEN},1)

exten => 102/155,1,Goto(ext-local,${EXTEN},1)
; набрав любой другой номер будет сообщение о неправильном наборе и повесят трубку.
exten => _./155,1,Playback(invalid)            
exten => _./155,2,Hangup()
Соответственно создав номер 121 и добавив правила

Код: Выделить всё

;с телефона 121 можно позвонить только на внутренние трёхзначные номера начинающиеся с 1
 exten => _1XX/121,1,Goto(ext-local,${EXTEN},1)
; набрав любой другой номер будет сообщение о неправильном наборе и повесят трубку.
exten => _./121,1,Playback(invalid)            
exten => _./121,2,Hangup()
, я разрешу ему звонить только на внутренние трёхзначные номера начинающиеся с 1.

Это всё заработало уже :)

Насколько я понял, правила:

Код: Выделить всё

exten => i,1,Playback(invalid)           
exten => i,2,Hangup()
распространяются на всё, что есть в контексте from-internal-custom? И при наборе любого несуществующего екстеншена (i) система проиграет сообщение и отобъёт вызов. По идее в from-internal уже есть что-то подобное и система говорит: "Соединение невозможно. Пожалуйста проверьте номер и перезвоните".

Почему вы указали правило запрета exten => _X./155,1,Hangup() с одним X а не просто точку (_.) как у меня? В чём разница то?
ded писал(а):А Вы уже мучаетесь.
Мне кажется Вы в слове "учитесь" слишком много ошибок сделали. ;)

Re: Dialplan - выборочный запрет исходящих звонков

Добавлено: 13 май 2014, 18:19
ded
tonny_bennet писал(а):Вы думаете всё же стоит поставить Custom Contexts и не мучаться?
ded писал(а):А Вы уже мучаетесь. И ещё будете много.
tonny_bennet писал(а):Почему вы указали правило запрета exten => _X./155,1,Hangup() с одним X а не просто точку (_.) как у меня? В чём разница то?
Предлагаю читать книжку про настоящее и будущее. Я имею ввиду не катрены Нострадамуса.
Там описана разница.

Когда есть базовые знания, нам легче общаться на одном языке, верно?

Re: Dialplan - выборочный запрет исходящих звонков

Добавлено: 15 май 2014, 00:50
tonny_bennet
tonny_bennet писал(а):верно?
Верно.

Re: Dialplan - выборочный запрет исходящих звонков

Добавлено: 15 май 2014, 13:29
tonny_bennet
ded писал(а):Предлагаю читать книжку про настоящее и будущее.
Прочитал часть про диалпланы. Доступно. Понял почему exten => _X./155,1,Hangup(), а не exten => _./155,1,Hangup().

Но там по большому счёту расписано как создавать подобную систему. А у меня похоже на вмешательство.Т.е. Elastix насоздавал контексты и екстеншены, а я их немного правлю. Отсюда возник вопрос: если мне нужно разрешить не звонок на внутренний номер из контекста ext-local, а звонок на телефон очереди. Предположим номер очереди 199. Я помещаю звонок в очередь: exten => 199/155,1,Queue(199,t,,) (параметры взял из лога Asterisk, когда просто позвонил на 199)

В итоге музыка играет, но телефон оператора в очереди не звонит. В логах вот такие записи идут повторяясь:

Код: Выделить всё

    -- Executing [h@from-queue:1] Set("Local/101@from-queue-00000015;2", "QAGENT=h") in new stack
    -- Executing [h@from-queue:2] Goto("Local/101@from-queue-00000015;2", ",1") in new stack
    -- Goto (from-queue,h,1)
    -- Executing [h@from-queue:1] Set("Local/101@from-queue-00000015;2", "QAGENT=h") in new stack
    -- Executing [h@from-queue:2] Goto("Local/101@from-queue-00000015;2", ",1") in new stack
    -- Goto (from-queue,h,1)
    -- Executing [h@from-queue:1] Set("Local/101@from-queue-00000015;2", "QAGENT=h") in new stack
    -- Executing [h@from-queue:2] Goto("Local/101@from-queue-00000015;2", ",1") in new stack
    -- Goto (from-queue,h,1)
    -- Executing [h@from-queue:1] Set("Local/101@from-queue-00000015;2", "QAGENT=h") in new stack
    -- Executing [h@from-queue:2] Goto("Local/101@from-queue-00000015;2", ",1") in new stack
    -- Goto (from-queue,h,1)
    -- Executing [h@from-queue:1] Set("Local/101@from-queue-00000015;2", "QAGENT=h") in new stack
    -- Goto (from-queue,101,1)
    -- Executing [101@from-queue:1] Set("Local/101@from-queue-00000017;2", "QAGENT=101") in new stack
    -- Executing [h@from-queue:2] Goto("Local/101@from-queue-00000016;2", ",1") in new stack
    -- Executing [101@from-queue:2] Goto("Local/101@from-queue-00000017;2", ",1") in new stack
    -- Executing [h@from-queue:2] Goto("Local/101@from-queue-00000015;2", ",1") in new stack
    -- Goto (from-queue,h,1)
    -- Executing [h@from-queue:1] Set("Local/101@from-queue-00000016;2", "QAGENT=h") in new stack
Куда направить вызов если я хочу позвонить в очередь?

Re: Dialplan - выборочный запрет исходящих звонков

Добавлено: 15 май 2014, 13:45
ded
Курочить сложные конструкции freePBX - нехорошее дело, всё же стоит поставить Custom Contexts и не мучаться.