Страница 1 из 2

FreePBX, перейти в другой контекст в момент поднятия трубки.

СообщениеДобавлено: 02 дек 2015, 12:05
rebelucho
Здравствуйте! Мне двадцать лет, я бородат, живу с мамой, тролль, лжец и девственник. Вот и сейчас... P.S. Извените за неровный почерк..
Сращиваем Asterisk с CRM.
При поступлении звонка узнаем имя через сервер событий, отдаем в качестве CID(name) на внутренние телефоны, оповещаем менеджеров о входящем звонке.
Когда звонок идет на группу, то тут проблем нет, я вклинился в контекст [macro-auto-blkvm] и оповестил сервер событий, кто именно взял трубку. Но если у клиента есть персональный менеджер, то звонок идёт ему персонально и тут у меня затык, не могу указать серверу событий, что клиент взял трубку.

Думаю, что надо копаться в контексте [macro-dial-one] в момент звонка.
Попытался подставлять после "exten => s,n(godial),Dial(${DSTRING},${ARG1},${D_OPTIONS})" строку на переход выполнения скрипта "exten => s,n,Gosub(pickup,pickup_1,1())", пытался делать GusubIf по условию, что DIALSTATUS=ANSWER, все равно ничего не получается.
Мозгом понимаю, что надо ковырять в сторону изменения конструкции Dial, либо добавления приоритета с Dial. Но застрял на этом шаге и бьюсь уже четвертый день.

Подскажите в какую сторону конкретно смотреть, если будут примеры буду безмерно благодарен.

Re: FreePBX, перейти в другой контекст в момент поднятия тру

СообщениеДобавлено: 02 дек 2015, 12:40
ded
Использовать хинты
CLI> core show hints
Увидите статусы -
State:Unavailable
State:Idle
State:InUse

и делать это по AMI. Не нужно переходить в другой контекст.

Re: FreePBX, перейти в другой контекст в момент поднятия тру

СообщениеДобавлено: 03 дек 2015, 03:26
rebelucho
Было бы неплохо, но сервер событий (проприетарный) понимает только определенный формат обращений и не умеет делать запросы самостоятельно. Поэтому и был выбран вариант исполнения скриптов по определенным событиям в АТС.
Можно конечно к существующему серверу событий написать еще один сервер событий, но как то это уже перебор.

Re: FreePBX, перейти в другой контекст в момент поднятия тру

СообщениеДобавлено: 03 дек 2015, 08:56
Glukinho
Если нужно делать что-то в момент соединения, то для этого есть опции M и U в Dial.

Re: FreePBX, перейти в другой контекст в момент поднятия тру

СообщениеДобавлено: 03 дек 2015, 10:22
rebelucho
Glukinho писал(а):Если нужно делать что-то в момент соединения, то для этого есть опции M и U в Dial.

Да, именно то, что нужно, спасибо.
Ведь знал, что именно в этом направлении копать, а просветление не наступало.


Если кто решает подобную задачу с FreePBX, то решение, как всегда, простое.

В [macros-dial-one]
в строку exten => s,n(skiptrace),Set(D_OPTIONS=${IF($["${NODEST}"!="" & ${REGEX("(M[(]auto-blkvm[)])" ${ARG2})} != 1]?${ARG2}M(auto-blkvm):${ARG2})}) добавляем наш макрос macro-pickup в условие "Иначе", получаем
exten => s,n(skiptrace),Set(D_OPTIONS=${IF($["${NODEST}"!="" & ${REGEX("(M[(]auto-blkvm[)])" ${ARG2})} != 1]?${ARG2}M(auto-blkvm):${ARG2}M(pickup))})

Re: FreePBX, перейти в другой контекст в момент поднятия тру

СообщениеДобавлено: 03 дек 2015, 10:50
april22
нажимаем применить . и идем делать все заново ;-)

Re: FreePBX, перейти в другой контекст в момент поднятия тру

СообщениеДобавлено: 03 дек 2015, 11:01
rebelucho
april22 писал(а):нажимаем применить . и идем делать все заново


Думаю, все, кто используют freepbx, знают, для того что бы не случилось страшного необходимо скопировать контекст в extensions_override_freepbx.conf и тормошить его уже там :)))

Re: FreePBX, перейти в другой контекст в момент поднятия тру

СообщениеДобавлено: 03 дек 2015, 11:24
ded
Не все, но с каждым днём таких всё больше, и это радует! :)

Re: FreePBX, перейти в другой контекст в момент поднятия тру

СообщениеДобавлено: 25 сен 2017, 20:19
awsswa
Пост некрофилов

Во FreePBX в Advanced
в диалы за место
Asterisk Dial Options Ttr вписать TtrU(call-answer^s^1)
Если нужно то и Asterisk Outbound Trunk Dial Options меняем на TU(call-answer^s^1)
в extensions_custom.conf

[call-answer]
exten => s,1,NoOp(==Гадим по мелкому после ответа==)
....
exten => s,n,Return()

PS а почему не M и макрос ? а потому что в RingGroup уже есть M и свой макрос и он трет наш

Re: FreePBX, перейти в другой контекст в момент поднятия тру

СообщениеДобавлено: 06 окт 2017, 08:03
kt72ru
Asterisk Dial Options вроде как используется при исходящих звонках, а речь идет про входящие.