Call Waiting оповещение звонящему
Сообщений: 6521
|
Re: Call Waiting оповещение звонящему
Я понял, но содрогнулся. Второй звонок принимать надо, но как-то оповещать что человек на месте, но говорит по другой линии. IMHO - только датчик движения вмонтированый в телефон.
Сырая непродуманная бизнес-логика сразу оказывает влияние на модель поведения, и сразу выдаёт сырые задания на программирование этих процессов.
|
Сообщений: 866
|
Re: Call Waiting оповещение звонящему
ну можно наверное входящий звонок не сразу в группу включать а только когда ответили - у Dial есть какие-то опции так что можно при ответе макро выполнить.
тогда это, наверное, решит задачу учитывать только реально имеющие место разговоры... но странно это как-то...
|
Откуда: Киев
Сообщений: 1096
|
Re: Call Waiting оповещение звонящему
я имел в виду, что не стоит вообще заморачиваться все это реализовывать. Сам по себе CW на * уже не нужен(ИМХО, причины выше). Если развернуть эту мысль дальше...
Если смотреть со стороны звонящего, то ему все равно чем занят адресат, если он сразу не берет трубку, видя что у него вторая линия. А ожидать пока адресат наговориться мало кто станет.
в итоге автор ТЗ просто сделает красивую, но ненужную фишку. Надеюсь, уже понятна моя логика :)
|
Сообщений: 866
|
Re: Call Waiting оповещение звонящему
Если смотреть со стороны звонящего, то ему все равно чем занят адресат,
ну вы не можете быть вкурсе административных политик в данной конкретной фирме :) Может там начальство сказало "сделать чтобы было понятно занят или нет" и особо не поспоришь... Я тоже считаю что автор хочет странную фичу но имхо это не правильно рассказывать ему что же на самом деле ему нужно :=)
|
Сообщений: 1573
|
Re: Call Waiting оповещение звонящему
dimas: ну можно наверное входящий звонок не сразу в группу включать а только когда ответили - у Dial есть какие-то опции так что можно при ответе макро выполнить.
Это идея!
А вот и решение:
exten => _1XX,1,GotoIf($[${GROUP_COUNT(CURRENT)} > 0]?:dial)
exten => _1XX,n,Playback(abonent-govorit-po-drugoi-linii)
exten => _1XX,n(dial),Goto(ext-local,${EXTEN},1)
[ext-local]
...
exten => _1XX,n,Dial(SIP/${EXTEN},60,M(check))
...
[macro-check]
exten => s,1,Set(GROUP()=CURRENT)
|
Откуда: Хабаровск
Сообщений: 82
|
Re: Call Waiting оповещение звонящему
Всем БОЛЬШОЕ спасибо, все получилось именно так как и хотелось! )) Особенная благодарность cron333 и dimas
ded: Я понял, но содрогнулся. Второй звонок принимать надо, но как-то оповещать что человек на месте, но говорит по другой линии. IMHO - только датчик движения вмонтированый в телефон.
Сырая непродуманная бизнес-логика сразу оказывает влияние на модель поведения, и сразу выдаёт сырые задания на программирование этих процессов.
ded, Вы зануда..))
Если кому-нибудь будет интересно, для FreePbx:
1. В General Settings нужно добавить опцию Dial - M(checkCW)
В Asterisk Dial command options и Asterisk Outbound Dial command options
2. В extensions_custom.conf вписать
[macro-checkCW]
exten => s,1,Set(GROUP()=CURRENT)
3. Установить модуль Dialplan Injection
4. Добавить инъекцию на внутреннюю нумерацию
GotoIf($[${GROUP_COUNT(CURRENT)} < 1]?dial)
Playback(abonent-govorit-po-drugoi-linii)
ResetCDR()
(dial),Goto(ext-local,${EXTEN},1)
|
Откуда: Хабаровск
Сообщений: 82
|
Re: Call Waiting оповещение звонящему
Данное решение не корректно работает как выяснилось. До этого проверял на тестовом где было всего 3-и абонента.
Решить все таки удалось, но немного через .опу. Если кому понадобится (в чем я не уверен -)), то могу описать как.
|
Сообщений: 1573
|
Re: Call Waiting оповещение звонящему
В чем проявилась некорректность? Здесь вроде бы заблудиться негде ...
P.S. Количество абонентов никак не влияет на правильность/неправильность диал.плана ...
|
Откуда: Хабаровск
Сообщений: 82
|
Re: Call Waiting оповещение звонящему
Все входящие вызовы прошедшие через macro-checkCW попадают в одну кучу. Например, 5 абонентов ведут разговор, я набираю номер свободного абонента - GROUP_COUNT(CURRENT) = 6. Исходящие вообще не учитывались т.к. в macro-checkCW прилетал только набранный номер. А при тестировании на 3-х, большего одного разговора в принципе не могло быть, вот и сложилось впечатление, что все отлично. Решил так:
1. Нужно передать аргументом в macro-checkCW номер с которого звонили (вот тут пришлось попотеть т.к. у меня FreePbx)
2. Входящие и исходящие учитывать в разных группах
[macro-checkCW]
exten => s,1,Set(GROUP(tocall)=${CALLERID(number)})
exten => s,n,Set(GROUP(fromcall)=${ARG1})
3. Проверять через ${GROUP_COUNT(${EXTEN})}
|
Сообщений: 1573
|
Re: Call Waiting оповещение звонящему
markt: Все входящие вызовы прошедшие через macro-checkCW попадают в одну кучу. Например, 5 абонентов ведут разговор, я набираю номер свободного абонента - GROUP_COUNT(CURRENT) = 6.
ну так нужно сделать отдельный подсчет, например так:
exten => _1XX,1,GotoIf($[${GROUP_COUNT(CURRENT _${EXTEN})} > 0]?:dial)
exten => _1XX,n,Playback(abonent-govorit-po-drugoi-linii)
exten => _1XX,n(dial),Goto(ext-local,${EXTEN},1)
[ext-local]
...
exten => _1XX,n,Dial(SIP/${EXTEN},60,M(check ^${EXTEN}))
...
[macro-check]
exten => s,1,Set(GROUP()=CURRENT _${ARG1})
markt: Исходящие вообще не учитывались т.к. в macro-checkCW прилетал только набранный номер. А при тестировании на 3-х, большего одного разговора в принципе не могло быть, вот и сложилось впечатление, что все отлично.
Зачем вам использовать тот же макросс при исходящих? Можно устанавливать группу в контексте для исходящих:
exten => _X.,1,Set(GROUP()=CURRENT _${CALLERID(num)}))
exten => _X.,n,Dial ...
хотя можно и макросс:
exten => _X.,1,Macro(check,${CALLERID(num)})
exten => _X.,n,Dial ...
|
|