Прочитал форум но не нашел ответ вот на какой вопрос:
как из диалплана 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
Но как бы я не бился скрипт не вызывается. Подскажите в чем тут ошибка. И как можно запустить скрипт.
exten => 21/7902.,n,System(php /var/www/html/test.php ${foo})
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 |
| Цитата: |
| 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
| Код: |
| #!/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-сборки: натуральный продукт вкуснее.
И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу.
| Код: |
| #!/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)
А ваш скрипт /var/www/html/test.php из шелла запускается?
А php у вас точно по адресу /usr/local/bin/php ?
_________________
P4 3.0 + 1Gb CentOS 5.8 Aster 1.8.16
Не люблю gui-сборки: натуральный продукт вкуснее.
И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу.
-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'
_________________
P4 3.0 + 1Gb CentOS 5.8 Aster 1.8.16
Не люблю gui-сборки: натуральный продукт вкуснее.
И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу.
Все заработало после выставления прав на папку.