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

Сообщения о недоступности абонента

Откуда: UA
Сообщений: 127

Re: Сообщения о недоступности абонента

dimas:

веб интерфейс - зло :)
allow/disallow - именно для этого. и именно ими и нужно управлять. Что мешает раз уж вы веб используете - прямо в нем настроить?
Наверно так и сделаю, я понял что руками вводить проще, чем с вебом парится :)

Тут еще одна проблемка назрела насчет статуса абонента :( Как быть с теми у кого музыка вместо гудка?
exten => _XXX,1,Macro(stdexten,,SIP/${EXTEN})
exten => 112,1,Dial(SIP/${EXTEN},60,m(adm))

Так, если звонить абоненту с "музыкой", когда он не доступен, то ничего не говорит. Просто снимает трубку, держит пару сек и сбрасывает.
Если во 2м правиле поставить 2, то все говорит, но музыка на звонке не играет (когда абонент включен).

Вижу единственный вариант - для каждого абонента с "музыкой" писать свой макрос ?
[macro-stdexten1];
exten => s,1,Dial(${ARG2},60,m(adm))

Или есть вариант проще?
2009-02-17 14:45

Avatara of Alekz
Откуда: Санкт-Петербург
Сообщений: 931

Re: Сообщения о недоступности абонента

а если дописать передачу в макрос доп параметра?;) и передавать дополнительные параметры команды dial()
Создам аварийную ситуацию. Дорого. На долго =)
2009-02-17 16:21

Откуда: UA
Сообщений: 127

Re: Сообщения о недоступности абонента

Alekz:

а если дописать передачу в макрос доп параметра?;) и передавать дополнительные параметры команды dial()
вы слегка мои способности переоценили :) Сейчас покурю маны на тему макросов.

P.S у мну еще почему-то при звонках с IAX клиентов номера не определяются :( Пробросить SIP наружу так и не удалось, видимо либо провайдер не пропускает эти пакеты, либо мой роутер корявый. У сервера 2 канала в МИР, попробую щас на втором пробросить...
2009-02-17 17:05

Откуда: UA
Сообщений: 127

Re: Сообщения о недоступности абонента

Единственное что пришло в голову:

exten => 112,1,Macro(stdexten,,SIP/${EXTEN},m(adm))

[macro-stdexten]
exten => s,1,Dial(${ARG2},60,${ARG3})

С точки зрения программиста мне смутно верится что это заработает :) Но попробую.
2009-02-17 17:25

Откуда: UA
Сообщений: 127

Re: Сообщения о недоступности абонента

masters:

Единственное что пришло в голову:

exten => 112,1,Macro(stdexten,,SIP/${EXTEN},m(adm))

[macro-stdexten]
exten => s,1,Dial(${ARG2},60,${ARG3})

С точки зрения программиста мне смутно верится что это заработает :) Но попробую.
Я в шоке, но это работает ))

Теперь проблема №3. Когда в макрос попадают IAX вызовы - он делает им статус s-CHANUNAVAIL, хотя клиент онлайн.

-- Executing [702@numberplan-custom-1:1] Macro("IAX2/701-7021", "stdexten||SIP/702") in new stack
-- Executing [s@macro-stdexten:1] Dial("IAX2/701-7021", "SIP/702|60|") in new stack
[Feb 17 16:42:21] WARNING[2887]: app_dial.c:1236 dial_exec_full: Unable to create channel of type 'SIP' (cause 3 - No route to destination)
== Everyone is busy/congested at this time (1:0/0/1)
-- Executing [s@macro-stdexten:2] Goto("IAX2/701-7021", "s-CHANUNAVAIL|1") in new stack
-- Goto (macro-stdexten,s-CHANUNAVAIL,1)
-- Executing [s-CHANUNAVAIL@macro-stdexten:1] BackGround("IAX2/701-7021", "ss-noservice") in new stack
-- <IAX2/701-7021> Playing 'ss-noservice' (language 'ru')
-- Executing [s-CHANUNAVAIL@macro-stdexten:2] Hangup("IAX2/701-7021", "") in new stack
== Spawn extension (macro-stdexten, s-CHANUNAVAIL, 2) exited non-zero on 'IAX2/701-7021' in macro 'stdexten'
== Spawn extension (macro-stdexten, s-CHANUNAVAIL, 2) exited non-zero on 'IAX2/701-7021'
-- Hungup 'IAX2/701-7021'


Как перед вызовом макроса можно определить тип клиента???

Разве что по номерам различать? Например я знаю что с 100 по 150 у меня SIP-клиенты, а 151-800 это IAX.

exten => 112,1,Macro(stdexten,,SIP/${EXTEN},m(adm))
exten => _10X,1,Macro(stdexten,,SIP/${EXTEN})
exten => _11X,1,Macro(stdexten,,SIP/${EXTEN})
exten => _12X,1,Macro(stdexten,,SIP/${EXTEN})
exten => _13X,1,Macro(stdexten,,SIP/${EXTEN})
exten => _14X,1,Macro(stdexten,,SIP/${EXTEN})
exten => _15X,1,Macro(stdexten,,IAX2/${EXTEN})
exten => _16X,1,Macro(stdexten,,IAX2/${EXTEN})
exten => _17X,1,Macro(stdexten,,IAX2/${EXTEN})
exten => _18X,1,Macro(stdexten,,IAX2/${EXTEN})
exten => _19X,1,Macro(stdexten,,IAX2/${EXTEN})
exten => _XXX,1,Macro(stdexten,,IAX2/${EXTEN})
2009-02-17 17:48

Avatara of Alekz
Откуда: Санкт-Петербург
Сообщений: 931

Re: Сообщения о недоступности абонента

1. Можно увидеть макрос?
2. последние строки диалплана можно сократит до трех.
3. Что есть проверка типа клиента? Как вы ее себе представляете?! Id "клиента" по сути и состоит из типа канала и идентификатора.
Создам аварийную ситуацию. Дорого. На долго =)
2009-02-17 18:12

Откуда: UA
Сообщений: 127

Re: Сообщения о недоступности абонента

Alekz:

1. Можно увидеть макрос?
exten => s,1,Dial(${ARG2},60,${ARG3})
exten => s,2,Goto(s-${DIALSTATUS},1)
exten => s-NOANSWER,1,BackGround(pls-try-call-later)
exten => s-NOANSWER,2,Hangup
exten => s-CHANUNAVAIL,1,BackGround(ss-noservice)
exten => s-CHANUNAVAIL,2,Hangup
exten => s-BUSY,1,Background(pls-try-call-later)
exten => s-BUSY,2,Hangup
exten => _s-.,1,Goto(s-NOANSWER,1)

Alekz:

2. последние строки диалплана можно сократит до трех.


Да, я протупил. Для IAX хватит и 1го правила.

exten => _10X,1,Macro(stdexten,,SIP/${EXTEN})
exten => _11X,1,Macro(stdexten,,SIP/${EXTEN})
exten => _12X,1,Macro(stdexten,,SIP/${EXTEN})
exten => _13X,1,Macro(stdexten,,SIP/${EXTEN})
exten => _14X,1,Macro(stdexten,,SIP/${EXTEN})
exten => _XXX,1,Macro(stdexten,,IAX2/${EXTEN})

Alekz:

3. Что есть проверка типа клиента? Как вы ее себе представляете?! Id "клиента" по сути и состоит из типа канала и идентификатора.


Имел ввиду - определить тип канала.
2009-02-17 18:21

Сообщений: 866

Re: Сообщения о недоступности абонента

Можно звонить сразу на SIP/702&IAX/702 зазвонит тот который есть.

издержки - ругаться будет в консоль на то что либо IAX'а либо SIP'а такого нет.

Я делаю так:

// Call a locally registered SIP/IAX user.
//
// Avoid calling this macro unless you are sure the user is regisetred locally. This is because
// 1. ChanIsAvail complaints when we are querying non-existant extension (like 7xxx)
// 2. ChanIsAvail actually creates IAX peers for known extensions
//
macro dial-user( ext ) {

ChanIsAvail(SIP/${ext}&IAX2/${ext});
Noop(AVAILSTATUS=${AVAILSTATUS}, AVAILORIGCHAN=${AVAILORIGCHAN});

if ("${AVAILSTATUS}" != "0") {
Congestion;
DIALSTATUS = "CHANUNAVAIL";
return;
}

Dial(${AVAILORIGCHAN},15,);
Noop(DIALSTATUS=${DIALSTATUS});

return;
};
2009-02-17 18:38

Сообщений: 1573

Re: Сообщения о недоступности абонента

Эти строки:
exten => _10X,1,Macro(stdexten,,SIP/${EXTEN})
exten => _11X,1,Macro(stdexten,,SIP/${EXTEN})
exten => _12X,1,Macro(stdexten,,SIP/${EXTEN})
exten => _13X,1,Macro(stdexten,,SIP/${EXTEN})
exten => _14X,1,Macro(stdexten,,SIP/${EXTEN})
exten => _XXX,1,Macro(stdexten,,IAX2/${EXTEN})

Можно заменить на:
exten => _1[01234]X,1,Macro(stdexten,,SIP/${EXTEN})
exten => _XXX,1,Macro(stdexten,,IAX2/${EXTEN})

P.S. Но мне кажется, что в вашем случае можно сделать и так:

exten => _XXX,1,Macro(stdexten,,SIP/${EXTEN}&IAX2/${EXTEN})
2009-02-17 19:29

Сообщений: 866

Re: Сообщения о недоступности абонента

exten => _XXX,1,Macro(stdexten,,SIP/${EXTEN}&IAX2/${EXTEN})
срать на консоль будет про то что IAX2/999 недоступен или SIP/999 недоступен - в зависимости от того как он реально подключен. Не смертельно, но анноит.

По хорошему нужно прописывать в sip.conf

regxontext = sipregs

в iax.conf:

regxontext = iaxregs

и делать что-то вроде

[sipusers]
includes => sipregs
exten => _XXX,2,Dial(SIP/${EXTEN})
exten => _XXX,n,Hangup

[iaxusers]
includes => iaxregs
exten => _XXX,2,Dial(IAX2/${EXTEN})
exten => _XXX,n,Hangup

[users]
includes => sipusers
includes => iaxusers

и кидать звонки уже в users
2009-02-17 19:42

Добавить страницу в закладки:  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