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

FreePBX выполнение скрипта из Context from-internal

Добавлено: 07 авг 2019, 17:47
artemkol
Добрый день! Пытаюсь уговорить FreePBX слать json-запросы при снятии трубки оператором. Есть скрипт который все шлет как надо, сам по себе работает, но FreePBX упортно не хочет его выполнять, подсовывал даже скрипт, который просто создает папку. Права на выполниние есть. FreePBX 14.
Настроен callback, цепочка такая: Inbound_Routes -> Callback -> Set CallerID -> IVR -> Queues.
Пробовал в Custom Context добавить Set(RESULT=${SHELL(/etc/asterisk/scripts/test.sh 0 &)}); И подключил в экстеншине который снимает трубку.
Пробовал добавить строку exten => _.,n,System(/etc/asterisk/scripts/test.sh &) в extensions_custom.conf
Пробовал эту же строку воткнуть в логику [from-queue] в файле extensions_additional.conf сразу после строки exten => _.,n,GotoIf($["${DIALPLAN_EXISTS(from-queue,${NODEST},1)}" = "1"]?${NODEST},1:hangup)
FreePBX ни в какую не хочеть отрабатывать скрипт, даже в дебаге о нем не упоминает, и ошибок не пишет.

В общем, подскажите пожалуйста, что еще можно попробовать. Нужно что б скрипт отработал в Context from-internal.

P.S.
В [from-queue] вписал потому, что в дебаге заметил что оно отрабатывает при снятии трубки оператором.
А про extensions_custom.conf потому прочитал тут https://asterisk-pbx.ru/wiki/freepbx/custom_context

Re: FreePBX выполнение скрипта из Context from-internal

Добавлено: 08 авг 2019, 07:11
awsswa
Лень погуглить ?

Все просто.
Хотите свой скрипт, значит вам надо либо переписать кусок в extension либо добавить новый
Как переписывается:
Копируете полностью нужную часть из extensions.conf начиная с [имя123]
вставляете эту часть в extensions_custom.conf под тем же именем [имя123]
перезагружаете dialplan
все начинает работать кусок из extensions_custom.conf
теперь вы его можете править и вписывать изменения в часть [имя123]

Re: FreePBX выполнение скрипта из Context from-internal

Добавлено: 08 авг 2019, 10:28
zzuz
Только скорее всего extensions_override_freepbx.conf , иначе не будет эффекта.

Re: FreePBX выполнение скрипта из Context from-internal

Добавлено: 08 авг 2019, 13:57
Zavr2008
Пионерский онанизм заканчиваем.
Факт поднятия трубки правильно ловить по AMI.

Re: FreePBX выполнение скрипта из Context from-internal

Добавлено: 09 авг 2019, 12:40
artemkol
Zavr2008 писал(а):Пионерский онанизм заканчиваем.
Факт поднятия трубки правильно ловить по AMI.
AMI не подходит, нужно чтоб пбх сама урл пинала.
awsswa писал(а):Все просто.
Хотите свой скрипт, значит вам надо либо переписать кусок в extension либо добавить новый
В extension нет того куска который нужно переписать, как я уже писал, он в extensions_additional.conf. Пробовал впихнуться в [from-queue], но скрипт не отрабатывает.
Добавлять новый на одну строчку разве есть смысл, если все равно в [from-queue] дописывать строку?
Пробовал переписать [from-internal] в extensions_override_freepbx.conf, скрипт отрабатывает, но срабатывает сразу при входящем звонке, а надо чтоб срабатывал когда трубку поднимает оператор.

Re: FreePBX выполнение скрипта из Context from-internal

Добавлено: 09 авг 2019, 12:54
ded
artemkol писал(а):Настроен callback, цепочка такая: Inbound_Routes -> Callback -> Set CallerID -> IVR -> Queues.
Аццкий изврат.
artemkol писал(а):Пробовал в Custom Context добавить Set(RESULT=${SHELL(/etc/asterisk/scripts/test.sh 0 &)}); И подключил в экстеншине который снимает трубку.
Пробовал добавить строку exten => _.,n,System(/etc/asterisk/scripts/test.sh &) в extensions_custom.conf
Почему такая любовь к System(/etc/asterisk/scripts/test.sh и ${SHELL(/etc/asterisk/scripts/test.sh ?
Это от незнания как реализовать задуманное функциями диалплана?

Если без слов "выполнение скрипта", можете описать не замудрённую цепочку с callback, а простыми словами: какой сценарий хотите выполнять?
callback с IVR + очередями - это что-то вне разума.

Re: FreePBX выполнение скрипта из Context from-internal

Добавлено: 09 авг 2019, 13:32
artemkol
ded писал(а):Аццкий изврат.
Сорри))
ded писал(а):Почему такая любовь к System(/etc/asterisk/scripts/test.sh и ${SHELL(/etc/asterisk/scripts/test.sh ?
Это от незнания как реализовать задуманное функциями диалплана?
По другому и в правду не знаю как.

Цепочка такая: звонок клиента - сброс - перезвон клиенту - голосовое приветствие (без меню), после приветствия музыка и параллельно вызов на очередь. Как только оператор из очереди снимает трубку отправляем json запрос на url с номером клиента и оператора.

Re: FreePBX выполнение скрипта из Context from-internal

Добавлено: 09 авг 2019, 14:17
Zavr2008
AMI не подходит, нужно чтоб пбх сама урл пинала.
Так сложно взять стандартную библиотеку для того же PHP что все юзают и сделать аналогично?
Зато ловить будете четко.
M(x): Заставляет выполнить macro (x) в момент ответа на вызов
http://asterisk.ru/knowledgebase/Asterisk+cmd+Dial
Путь онанизма ведет к слепоте)

Re: FreePBX выполнение скрипта из Context from-internal

Добавлено: 09 авг 2019, 14:44
ded
artemkol писал(а):Цепочка такая: звонок клиента - сброс - перезвон клиенту - голосовое приветствие (без меню), после приветствия музыка и параллельно вызов на очередь. Как только оператор из очереди снимает трубку отправляем json запрос на url с номером клиента и оператора.
Звонок клиента: вы ему показывает ваш номер на сайте? И заставляете его набирать? А зачем?
Проще дать поле (Позвонить), где он напишет свой номер, а как только даст Enter - ваш Астериск на базе скрипта agi-bin/dial-out.php создаст call file - первое плечо оператору, и когда он поднял трубку - слышит гудки вызова клиенту, набирается второе плечо, и при ответе - соединяются (bridge).
А не так как у вас - ИВР без выбора, только ради приветствия! И цепочка отрабатывает, например так: клиент получил звонок, ответил, услышал приветствие, и пошла музыка в ожидании. Операторы то могут быть заняты?
Я бы плюнул в трубку на месте клиента за такой сценарий и занёс номер в Black list.

Re: FreePBX выполнение скрипта из Context from-internal

Добавлено: 09 авг 2019, 15:14
artemkol
ded писал(а): Звонок клиента: вы ему показывает ваш номер на сайте? И заставляете его набирать? А зачем?
Проще дать поле (Позвонить), где он напишет свой номер, а как только даст Enter - ваш Астериск на базе скрипта agi-bin/dial-out.php создаст call file - первое плечо оператору, и когда он поднял трубку - слышит гудки вызова клиенту, набирается второе плечо, и при ответе - соединяются (bridge).
А не так как у вас - ИВР без выбора, только ради приветствия! И цепочка отрабатывает, например так: клиент получил звонок, ответил, услышал приветствие, и пошла музыка в ожидании. Операторы то могут быть заняты?
Я бы плюнул в трубку на месте клиента за такой сценарий и занёс номер в Black list.
Может я плохо объяснил, но клиент с мобильного просто набирает короткий номер. Дальше мы ему перезваниваем и он слушает приветсвие и музыку пока не ответит оператор. У нас служба такси. Клиенты хотят чтоб им сразу звонили.
Zavr2008 писал(а): Так сложно взять стандартную библиотеку для того же PHP что все юзают и сделать аналогично?
Зато ловить будете четко.
Да, в крайнем случае прийдется делать такой костыль, но хотелось бы обойтись средствами PBX