Сообщения о недоступности абонента
Откуда: 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))
Или есть вариант проще?
|
Откуда: Санкт-Петербург
Сообщений: 931
|
Re: Сообщения о недоступности абонента
а если дописать передачу в макрос доп параметра?;) и передавать дополнительные параметры команды dial()
Создам аварийную ситуацию. Дорого. На долго =)
|
Откуда: UA
Сообщений: 127
|
Re: Сообщения о недоступности абонента
Alekz: а если дописать передачу в макрос доп параметра?;) и передавать дополнительные параметры команды dial()
вы слегка мои способности переоценили :) Сейчас покурю маны на тему макросов.
P.S у мну еще почему-то при звонках с IAX клиентов номера не определяются :( Пробросить SIP наружу так и не удалось, видимо либо провайдер не пропускает эти пакеты, либо мой роутер корявый. У сервера 2 канала в МИР, попробую щас на втором пробросить...
|
Откуда: UA
Сообщений: 127
|
Re: Сообщения о недоступности абонента
Единственное что пришло в голову:
exten => 112,1,Macro(stdexten,,SIP/${EXTEN},m(adm))
[macro-stdexten]
exten => s,1,Dial(${ARG2},60,${ARG3})
С точки зрения программиста мне смутно верится что это заработает :) Но попробую.
|
Откуда: 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})
|
Откуда: Санкт-Петербург
Сообщений: 931
|
Re: Сообщения о недоступности абонента
1. Можно увидеть макрос?
2. последние строки диалплана можно сократит до трех.
3. Что есть проверка типа клиента? Как вы ее себе представляете?! Id "клиента" по сути и состоит из типа канала и идентификатора.
Создам аварийную ситуацию. Дорого. На долго =)
|
Откуда: 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 "клиента" по сути и состоит из типа канала и идентификатора.
Имел ввиду - определить тип канала.
|
Сообщений: 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;
};
|
Сообщений: 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})
|
Сообщений: 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
|
|