Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

История изменений [назад]

нажмите, чтобы скрыть/показать версии 1
изначальная версия
редактировать

спросил 2014-01-20 12:57:47 +0400

sattellite Gravatar sattellite

http://bks.tv/

Выдать сигнал занято, если один из каналов занят.

Есть в диалплане функция Dial:

exten => _XXXXX,1,Dial(SIP/${EXTEN}&SIP/${EXTEN}l1,,Ttfg)

Это сделано для случая доступности с мобильного устройства. То есть номер XXXXXl1 всегда подключен. А вот номер XXXXX только с мобильного устройства в любой момент времени. При ситуации, что мобильный номер не зарегистрирован, а стационарный свободен - слышны длинные гудки, так как стационарный отвечает, что начал дозвон. И это нормально. А вот при ситуации, что мобильный номер не зарегестрирован, а стационарный занят, то абсолютная тишина. В косноли видно, что стационарный отбился с busy, а с мобильным есть попытка соединения, но отваливается вызов в итоге по таймауту.

ВОПРОС: Как отбивать в линию сигнал занято, если один из каналов занят?

[Решено] Выдать сигнал занято, если один из каналов занят.

Есть в диалплане функция Dial:

exten => _XXXXX,1,Dial(SIP/${EXTEN}&SIP/${EXTEN}l1,,Ttfg)

Это сделано для случая доступности с мобильного устройства. То есть номер XXXXXl1 всегда подключен. А вот номер XXXXX только с мобильного устройства в любой момент времени. При ситуации, что мобильный номер не зарегистрирован, а стационарный свободен - слышны длинные гудки, так как стационарный отвечает, что начал дозвон. И это нормально. А вот при ситуации, что мобильный номер не зарегестрирован, а стационарный занят, то абсолютная тишина. В косноли видно, что стационарный отбился с busy, а с мобильным есть попытка соединения, но отваливается вызов в итоге по таймауту.

ВОПРОС: Как отбивать в линию сигнал занято, если один из каналов занят?

UPD: Все отлично стало работать. Огромное спасибо octopas за подсказанный хак. Итоговое решение выглядит так:

exten => _XXXXX,1,Set(__ORIGINALCHANNEL=${CHANNEL})
exten => _XXXXX,n,Dial(Local/${EXTEN}@bridgepeer&Local/${EXTEN}l1@bridgepeer,,Ttfg)

[bridgepeer]
exten => _[0-9]!,1,Dial(SIP/${EXTEN})
exten => _[0-9]!,n,ExecIf($["${DIALSTATUS}"=="BUSY"]?AGI(busy.pl,${ORIGINALCHANNEL}))

В busy.pl отправляю в канал Hangup.

# cat busy.pl

#!/usr/bin/perl
$|++;
use Asterisk::AGI;
$agi=new Asterisk::AGI;
$agi->hangup($ARGV[0]);
1;

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.