Список форумов Asterisk Forum Asterisk Forum
The Asterisk Open Source PBX - Russian Community
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ПравилаПравила   ГруппыГруппы   ИзбранноеИзбранное    LinksСсылки   РегистрацияРегистрация 
 RSSRSS   ПрофильПрофиль   Войти и проверить личные сообщения   ВходВход 

Уведомлением о режиме CallWaiting+SIP аппараты

 
Список форумов Asterisk Forum -> Asterisk GUI    вывод темы на печать
Предыдущая тема :: Следующая тема  
Автор Сообщение
Alexey_Astashov



Зарегистрирован:
22.10.2009
Сообщения: 134

Статус: Оффлайн 

СообщениеДобавлено: Ср Май 22, 2013 18:21    Заголовок сообщения: Уведомлением о режиме CallWaiting+SIP аппараты

Используется связка Asterisk 11.3.0+FreePBX 2.11+DialPlan Injection

Кто-то в свое время посоветовал для каждого телефона у которого используется CallWaiting применить связку DialPlanInjection
и присвоить вот такое значение для каждого номера в отдельности:

Код:
Macro(checkCW,${EXTEN})
GotoIf($[{GROUP_COUNT(${EXTEN})} > 1]?:Dial)
Playback(abonent-razgovarivaet)
Playback(zhdite-soedineniya)
Set(DIAL_OPTIONS=Ttm)
(Dial),Macro(exten-vm,novm,${EXTEN},${EXTEN},0,0,0)


в extensions_custom прописать:

Код:
[macro-checkCW]
exten => s,1,Set(GROUP(tocall)=${CALLERID(number)})
exten => s,n,Set(GROUP(fromcall)=${ARG1})


конечно-же это работает, работает почти так как надо, НО, это работает только в случае применения однокональных телефонов подключенных к VOIP шлюзам, весело издавая посторонние писки в трубку оповещая о втором звонке ..
и совершенно не подходит в случае использования SIP аппаратов, так как они в режиме разговора уходят в статус InUSE&Ringing. Ну как водится руководство поставило именно такую задачу, чтобы был CallWaiting+Предупреждение.
да и вообще в случае SIP аппаратов и не видать обращения к данному Macro.

Помогите плиз решить задачку.


З.Ы. Вопрос даже не в том, чтобы ждать пока абонент наговорится, а в том, что когда приходит второй вызов по CallWait на экране остается информация о пропущенном вызове с номером звонившего.. это так удобно на самом деле, именно поэтому постановка звока в очередь не годится.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Alexey_Astashov



Зарегистрирован:
22.10.2009
Сообщения: 134

Статус: Оффлайн 

СообщениеДобавлено: Вт Июн 18, 2013 16:48    Заголовок сообщения:

Люююди, помогитеже плииз, оч надо решить задачку Sad
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
aven
Модератор


Зарегистрирован:
07.09.2007
Сообщения: 1887
Откуда: Ухта

Статус: Оффлайн 

СообщениеДобавлено: Вт Июн 18, 2013 19:19    Заголовок сообщения:

Опишите понятнее, чего вы хотите, как это должно выглядеть Smile
_________________
Gentoo Linux || Asterisk 13.1-cert2
Решения телефонии на базе Asterisk || http://it-need.ru
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Alexey_Astashov



Зарегистрирован:
22.10.2009
Сообщения: 134

Статус: Оффлайн 

СообщениеДобавлено: Ср Июн 19, 2013 15:47    Заголовок сообщения:

хммм.

все с виду очень просто, необходимо чтобы в момент разоговора между абонетами A<--->(X) (где X любой состояшийся звонок)
чтобы при попытке позвонить любого другого абонента на номер абоента "A" выдавалось госовое оповещение "Абонент разговаривает по другой линии" в прочем как у мобильных операторов. при этом у абонета "A" должен отрабатывать именно режим CallWaiting - т.е. абонент "А" должен во время разговора видеть на экране и соответсвенно слышать пик в трубке, что кто-то пытается дозвониться


Та схема которую я выложил актуально работает только для аналоговых абонентов подключенных через шлюз и совершенно не работает в случае использования многоканальных SIP аппаратов. надо решить именно для SIP аппаратов.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
aven
Модератор


Зарегистрирован:
07.09.2007
Сообщения: 1887
Откуда: Ухта

Статус: Оффлайн 

СообщениеДобавлено: Ср Июн 19, 2013 20:39    Заголовок сообщения:

DEVICE_STATE проверяйте перед звонком, и воспроизводите файл
_________________
Gentoo Linux || Asterisk 13.1-cert2
Решения телефонии на базе Asterisk || http://it-need.ru
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Alexey_Astashov



Зарегистрирован:
22.10.2009
Сообщения: 134

Статус: Оффлайн 

СообщениеДобавлено: Чт Июн 20, 2013 08:45    Заголовок сообщения:

хмм, а можно по подробнее с этого момента?
да, я естесственно забыл добавить что у меня несколько Asterisk связанные по IAX
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
aven
Модератор


Зарегистрирован:
07.09.2007
Сообщения: 1887
Откуда: Ухта

Статус: Оффлайн 

СообщениеДобавлено: Чт Июн 20, 2013 09:42    Заголовок сообщения:

Код:
core show function DEVICE_STATE


Посмотрите на статусы пира когда он занят и когда свободен.

_________________
Gentoo Linux || Asterisk 13.1-cert2
Решения телефонии на базе Asterisk || http://it-need.ru
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Alexey_Astashov



Зарегистрирован:
22.10.2009
Сообщения: 134

Статус: Оффлайн 

СообщениеДобавлено: Чт Июн 20, 2013 11:59    Заголовок сообщения:

как псмотреть понятно, а как обработать этот параметр?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
aven
Модератор


Зарегистрирован:
07.09.2007
Сообщения: 1887
Откуда: Ухта

Статус: Оффлайн 

СообщениеДобавлено: Чт Июн 20, 2013 14:22    Заголовок сообщения:

Книжку по Asterisk прочитайте.
_________________
Gentoo Linux || Asterisk 13.1-cert2
Решения телефонии на базе Asterisk || http://it-need.ru
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
anest
Модератор


Зарегистрирован:
28.11.2004
Сообщения: 5636

Статус: Оффлайн 

СообщениеДобавлено: Пн Сен 16, 2013 14:19    Заголовок сообщения:

и кстати, вот она, далеко ходить не нужно: http://asteriskforum.ru/viewtopic.php?t=3690
примеры там есть.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
algerka



Зарегистрирован:
20.12.2010
Сообщения: 15

Статус: Оффлайн 

СообщениеДобавлено: Пн Сен 16, 2013 14:47    Заголовок сообщения:

Тут тема про Asterisk GUI, зачем же отсылать на книжку в которой про этот GUI практически ничего нету.

Мне кстати, тоже такой функционал интересен.
Если кто знает как такое сделать в FreePBX - напишите пожалуйста.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
bayadr



Зарегистрирован:
21.02.2008
Сообщения: 132
Откуда: Хабаровск

Статус: Оффлайн 

СообщениеДобавлено: Пт Сен 20, 2013 02:52    Заголовок сообщения:

в /var/www/admin/modules/core/functions.inc.php
меняем строку в контексте $mcontext = 'macro-dial-one';
Код:
$ext->add($mcontext,$exten,'godial', new ext_dial('${DSTRING}', '${ARG1},${D_OPTIONS}'));


на

Код:
        $ext->add($mcontext,$exten,'godial', new ext_execif('$["${QAGENT}"=""]', 'Macro', 'CHECK_DEVICE_STATE,'));
        $ext->add($mcontext,$exten,'', new ext_dial('${DSTRING}', '${ARG1},${D_OPTIONS}'));



в extensions_custom.conf
Код:
[macro-CHECK_DEVICE_STATE]
exten => s,1,Noop(DEVICE STATE - ${DEVICE_STATE(${DSTRING})})
exten => s,n,ExecIf($["${DEVICE_STATE(${DSTRING})}" = "INUSE"]?Playback(abonent-govorit-po-drugoi-linii))
Вернуться к началу
Посмотреть профиль Отправить личное сообщение GTalk ID
Alexey_Astashov



Зарегистрирован:
22.10.2009
Сообщения: 134

Статус: Оффлайн 

СообщениеДобавлено: Вт Ноя 19, 2013 16:58    Заголовок сообщения:

Походу заработало, спасибо.

Для решения проигрывания музыки необходимо забить в переменную D_OPTIONS=Ttm

Код:
[macro-CHECK_DEVICE_STATE]
exten => s,1,Noop(DEVICE STATE - ${DEVICE_STATE(${DSTRING})})
exten => s,n,ExecIf($["${DEVICE_STATE(${DSTRING})}" = "INUSE"]?Playback(abonent-razgovarivaet&zhdite-soedineniya))
exten => s,n,ExecIf($["${DEVICE_STATE(${DSTRING})}" = "INUSE"]?Set(D_OPTIONS=Ttm))
exten => s,n,ExecIf($["${DEVICE_STATE(${DSTRING})}" = "RINGINUSE"]?Playback(abonent-razgovarivaet&zhdite-soedineniya))
exten => s,n,ExecIf($["${DEVICE_STATE(${DSTRING})}" = "RINGINUSE"]?Set(D_OPTIONS=Ttm))


СЛАВА и ХВАЛА: bayadr

ЗЫ. Конечно всплыла маленькая засада, а может и фича, iPECS-MG (1.7Di). Засада с Mobile Extension, если iPECS получил Playback от Asterisk, iPECS тутже включает DN Busy и начинает гнать трафик через себя, вместо того, чтобы продолжить спокойно звонить по аппарату.

Вообще конечно прикрепить бы решение, потому что дейстительно многие спрашивают как это сделать.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Alexey_Astashov



Зарегистрирован:
22.10.2009
Сообщения: 134

Статус: Оффлайн 

СообщениеДобавлено: Ср Ноя 20, 2013 12:40    Заголовок сообщения:

Всплыла еще одна засада, с этой функцией теперь если
CW включен, а также имеется включенный Follow Me, то проверка статуса не происходит просто звонок уходит на FollowMe

есть мнение, что это сваязано с

Код:
    -- Executing [332@from-trunk:18] GotoIf("IAX2/05020-2042", "1 ?skipsimple") in new stack


т.е. необходиомо использовать проверку в модуле findmefollow в блоке group dial

Код:
// group dial
                                        $ext->add($contextname, $grpnum, 'skipsimple', new ext_setvar('RingGroupMethod',$strategy));
                                        $ext->add($contextname, $grpnum, '', new ext_setvar('_FMGRP',$grpnum));
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Alexey_Astashov



Зарегистрирован:
22.10.2009
Сообщения: 134

Статус: Оффлайн 

СообщениеДобавлено: Пн Дек 15, 2014 16:53    Заголовок сообщения:

Помогите плиз научиться брать состояние PJSIP абонентов (Asterisk 13 + FreePBX 12)
и теперь явно стало сложнее изменять сами файлы php, теперь FreePBX во всю орет что у него нарушение Security, ну как бы это правильно на самом деле, но надо как-то подумать теперь как обойти изменение именно PHP.

В общем теперь изменять PHP не требуется, теперь разработчики FreePBX предусмотрели и этот вариант, воткнув обращение к недостающему от базы контексту "dialout-one-predial-hook"
т.е. в 12 FreePBX достаточно сразу воткнуть в файл extensions_custom.conf (актуально для SIP абонентов)

Код:
[macro-dialout-one-predial-hook]
exten => s,1,Noop(DEVICE STATE - ${DEVICE_STATE(${DSTRING})})
exten => s,n,ExecIf($["${DEVICE_STATE(${DSTRING})}" = "INUSE"]?Playback(abonent-razgovarivaet&zhdite-soedineniya))
exten => s,n,ExecIf($["${DEVICE_STATE(${DSTRING})}" = "INUSE"]?Set(D_OPTIONS=Ttm))
exten => s,n,ExecIf($["${DEVICE_STATE(${DSTRING})}" = "RINGINUSE"]?Playback(abonent-razgovarivaet&zhdite-soedineniya))
exten => s,n,ExecIf($["${DEVICE_STATE(${DSTRING})}" = "RINGINUSE"]?Set(D_OPTIONS=Ttm))


Неожиданно порадовали!

Осталось теперь научиться выяснять состояние PJSIP абонентов, ибо теперь для PJSIP абонентов идет ответ:
Код:
-- Executing [s@macro-dialout-one-predial-hook:1] NoOp("SIP/011002-000000a4", "DEVICE STATE - INVALID") in new stack


хотя собственно core show hints показывает:
Код:
1704@ext-local      : PJSIP/1704&Custom:DN  State:Ringing         Presence:                Watchers  0


P.S. эдак теперь можно много чего в predial обработать... Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
yur4ik



Зарегистрирован:
28.02.2013
Сообщения: 17
Откуда: Israel

Статус: Оффлайн 

СообщениеДобавлено: Вт Июл 28, 2015 10:25    Заголовок сообщения:

Всем добрый день .
Подыму данную тему , все отлично работает как описано в решении Alexey_Astashov , но вот только до тех пор пока не включен Follow Me , как и писал ТС . Вопрос , как собственно заставить это работать и с включенным Follow Me .
Система FreePBX 2.11 .
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
baf



Зарегистрирован:
29.07.2013
Сообщения: 21

Статус: Оффлайн 

СообщениеДобавлено: Ср Янв 20, 2016 05:37    Заголовок сообщения:

Alexey_Astashov, написал как сделать, но у меня не работает. куда копать?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Alexey_Astashov



Зарегистрирован:
22.10.2009
Сообщения: 134

Статус: Оффлайн 

СообщениеДобавлено: Вт Фев 16, 2016 10:42    Заголовок сообщения:

Для правильной работы, данной опции при включенной FollowMe - необходимо использовать тип стратегии вызова ringallv2, просто ringall (v1) - не подходит, совсем, инъекция отрабатывать не будет, так как "v1" пользуется другим набором макро.
если стоит ringallv2-prim - то Asterisk получит ошибку и не обработает макрос.

Для удобства можно выставить
Default Follow Me Ring Strategy - ringallv2

Но в целом можно поиграться с данными параметрами, так как у меня есть еще одна проблема, которую я никак решить не могу - это циклический вызов через FMC.

Сорре, что не мог написать раньше.

Added after 23 minutes:


> Alexey_Astashov, написал как сделать, но у меня не работает. куда копать?

Что у вас не работает?
какая версия FBPX?

_________________
Только вместе мы сможем сделать этот мир лучше! Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
baf



Зарегистрирован:
29.07.2013
Сообщения: 21

Статус: Оффлайн 

СообщениеДобавлено: Пн Июн 27, 2016 05:58    Заголовок сообщения:

спасибо вам добрые люди, проверил на 12 freepbx работает. есть вопросы
Код:
[macro-dialout-one-predial-hook]
exten => s,1,Noop(DEVICE STATE - ${DEVICE_STATE(${DSTRING})})
exten => s,n,ExecIf($["${DEVICE_STATE(${DSTRING})}" = "INUSE"]?Playback(abonent-razgovarivaet&zhdite-soedineniya))
exten => s,n,ExecIf($["${DEVICE_STATE(${DSTRING})}" = "INUSE"]?Set(D_OPTIONS=Ttm))
exten => s,n,ExecIf($["${DEVICE_STATE(${DSTRING})}" = "RINGINUSE"]?Playback(abonent-razgovarivaet&zhdite-soedineniya))
exten => s,n,ExecIf($["${DEVICE_STATE(${DSTRING})}" = "RINGINUSE"]?Set(D_OPTIONS=Ttm))

INUSE и RINGINUSE чем отличаются? я так понял что возможно на них делать разные кголосовые сообщения, но чем они отличаются не понятно.
Предположу что INUSE это уже поднятая трубка, а RINGINUSE это еще кто-то звонит. Так?

И почему-то после проигрывания приветствия идет музыка, но в этом коде я не вижу где эта музыка, видимо moh, прописана. Хотя из вербоса видно, что вызывается followme ringallv2 и без разницы включен он или нет. странно. можете пояснить по подробнее?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Alexey_Astashov



Зарегистрирован:
22.10.2009
Сообщения: 134

Статус: Оффлайн 

СообщениеДобавлено: Пн Июн 27, 2016 10:21    Заголовок сообщения:

INUSE - когда разговаривает абонент, RINGINUSE - когда мало того, что абонент разговаривает, так к нему еще кто-то стучится, кроме вас всмысле, т.е. когда вы придёте третьим, четвертым итд, так как это на самом деле совсем другой статус.
В этом случае не требуется как правило делать другое оповещение, но конечно это возможно.

Музыка потому что стоит Ttm (где "T" - dtmf в один конец, "t" - dtmf в другой конец, "m" - moh, а "r" соответственно будет - ring), можно также прописать источник музыки или звуковых файлов с рекламой.

_________________
Только вместе мы сможем сделать этот мир лучше! Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Серж



Зарегистрирован:
02.05.2017
Сообщения: 1

Статус: Оффлайн 

СообщениеДобавлено: Вт Май 02, 2017 08:54    Заголовок сообщения:

Большое спасибо. Всё работает. Не могли бы вы подсказать, как сделать, что бы этот макро (инклюд) не выполнялся для определённых экстеншенов.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Список форумов Asterisk Forum -> Asterisk GUI Ответить на тему
Страница 1 из 1

Добавить в Избранное

 
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
You cannot attach files in this forum
You cannot download files in this forum