AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

Запуск скрипта php из dialplana freepbx

Newbies/FAQ Forum 11 сообщений -
#1

Здравствуйте уважаемые формумчане!
Прочитал форум но не нашел ответ вот на какой вопрос:
как из диалплана freepbx запустить выполнение скрипта php.
пытался реализовать следующим образом в файле /etc/asterisk/extensions_additional.conf внес строки
Код:
exten => 21/7902.,n,Set(foo=${CALLERID(num)})
exten => 21/7902.,n,System(/var/www/html/test.php ${foo})

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

в итоге получился такой контекст
Код:
exten => 21/7902.,1,Set(__FROM_DID=${EXTEN})
exten => 21/7902.,n,Set(CDR(did)=${FROM_DID})
exten => 21/7902.,n,ExecIf($[ "${CALLERID(name)}" = "" ] ?Set(CALLERID(name)=${CALLERID(num)}))
exten => 21/7902.,n,Set(__CALLINGPRES_SV=${CALLERPRES()})
exten => 21/7902.,n,Set(CALLERPRES()=allowed_not_screened)
exten => 21/7902.,n,Set(foo=${CALLERID(num)})
exten => 21/7902.,n,System(/var/www/html/test.php ${foo})
exten => 21/7902.,n(dest-ext),Goto(from-did-direct,3003,1)

контекст переводит звонок пришедший в транк с номеров 7902. на внутренний номер.

При этом должен выполнится скрипт /var/www/html/test.php
Но как бы я не бился скрипт не вызывается. Подскажите в чем тут ошибка. И как можно запустить скрипт.
#2

для точности попробуйте
exten => 21/7902.,n,System(php /var/www/html/test.php ${foo})
#3

1. Поясните на чем именно основан ваш вывод о том что скрипт не вызывается ? CLI ? Отсутствуют результаты выполнения скрипта ? Иное ?
2. Включите verbose и смотрите в CLI. System исполняется ?
3. /var/www/html/test.php является исполняемым файлом ?
Код:
ls -la /var/www/html/test.php

4. В скрипте не должно быть относительных путей, все пути должны быть полными
Код:
# whereis php
php: /usr/local/bin/php /usr/local/man/man1/php.1.gz

Код:
#!/usr/local/bin/php
#4

Цитата:
1. Поясните на чем именно основан ваш вывод о том что скрипт не вызывается ? CLI ? Отсутствуют результаты выполнения скрипта ? Иное ?

Отсутствуют результаты выполнения скрипта
Цитата:
2. Включите verbose и смотрите в CLI. System исполняется ?

нет не исполняются
Цитата:
3. /var/www/html/test.php является исполняемым файлом ?


Код:


Цитата:
Код:
ls -la /var/www/html/test.php

-rwxr-xr-x 1 asterisk asterisk 303 Oct 4 19:07 /var/www/html/test.php
#5

Вам правильно написали:
Код:

#!/usr/local/bin/php


тогда достаточно System(/var/www/html/test.php ${foo})

Проверить исполняемый ли он, имеет ил право на исполнение астер файла в этой папке.

Ну и еще: лучше в скрипте перехватывать переменную $foo=$argv[1];

_________________
P4 3.0 + 1Gb CentOS 5.8 Aster 1.8.16
Не люблю gui-сборки: натуральный продукт вкуснее.
И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу.
#6

прописал так в test.php
Код:
#!/usr/bin/php -q


Права на файл выставил такие
Код:
-rwxrwxrwx 1 asterisk asterisk 295 Oct 6 13:32 /var/www/html/test.php


в диалплане прописал
Код:
exten => 21/7902.,n,System(/var/www/html/test.php)

в итоге контекст выглядит так
Код:
exten => 21/7902.,1,Set(__FROM_DID=${EXTEN})
exten => 21/7902.,n,Set(CDR(did)=${FROM_DID})
exten => 21/7902.,n,ExecIf($[ "${CALLERID(name)}" = "" ] ?Set(CALLERID(name)=${CALLERID(num)}))
exten => 21/7902.,n,Set(__CALLINGPRES_SV=${CALLERPRES()})
exten => 21/7902.,n,Set(CALLERPRES()=allowed_not_screened)
exten => 21/7902.,n,System(/var/www/html/test.php)
exten => 21/7902.,n(dest-ext),Goto(from-did-direct,3003,1)


CLI показывает
-- Executing [21@from-trunk:6] System("SIP/z-000000cd", "/usr/bin/test.php") in new stack

Результата в файле /media/hdd/counter.txt нет.

Подскажите в чем может быть причина?


Последний раз редактировалось: stim (Пн Окт 06, 2014 13:01)
#7

А права на запись в файл /media/hdd/counter.txt у пользователя asterisk есть?
А ваш скрипт /var/www/html/test.php из шелла запускается?
А php у вас точно по адресу /usr/local/bin/php ?
#8

Права на /media/hdd/
_________________
P4 3.0 + 1Gb CentOS 5.8 Aster 1.8.16
Не люблю gui-сборки: натуральный продукт вкуснее.
И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу.
#9

права на файл
-rwxrwxrwx 1 asterisk asterisk 69 Oct 6 14:56 /media/hdd/counter.txt

из шела запускается по команде и результат строка в файле counter.txt добавляется
/usr/bin/php /var/www/html/test.php

при удалении из файла test.php
-q

CLI говорит
-- Executing [21@from-trunk:6] System("SIP/z-00000104", "/var/www/html/test.php") in new stack
== Spawn extension (from-trunk, 21, 6) exited non-zero on 'SIP/z-00000104'
-- Executing [h@from-trunk:1] Macro("SIP/z-00000104", "hangupcall,") in new stack
-- Executing [s@macro-hangupcall:1] GotoIf("SIP/z-00000104", "1?theend") in new stack
-- Goto (macro-hangupcall,s,3)
-- Executing [s@macro-hangupcall:3] ExecIf("SIP/z-00000104", "0?Set(CDR(recordingfile)=)") in new stack
-- Executing [s@macro-hangupcall:4] Hangup("SIP/z-00000104", "") in new stack
== Spawn extension (macro-hangupcall, s, 4) exited non-zero on 'SIP/z-00000104' in macro 'hangupcall'
== Spawn extension (from-trunk, h, 1) exited non-zero on 'SIP/z-00000104'
#10

Проверяйте ПРАВА НА ПАПКУ!!!
_________________
P4 3.0 + 1Gb CentOS 5.8 Aster 1.8.16
Не люблю gui-сборки: натуральный продукт вкуснее.
И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу.
#11

Спасибо за помощь!
Все заработало после выставления прав на папку.