команда для отображения всех взаимодействий между ним и сценарием AGI - agi debug.
Отладка из операционной системы
Как упоминалось выше, у вас должно получиться запустить свою программу прямо из операционной системы, чтобы проверить ее поведение. Хитрость здесь в том, чтобы действовать подобно Asterisk, предоставляя сценарию следующее:
• Список переменных и их значений, таких как agi_test:1.
• Символы перевода строки ( ), указывающие на то, что передача переменных завершена.
• Ответы на каждую из команд AGI, поступающую из вашего сценария AGI. Обычно достаточно ввести 200 response=1.
При тестировании программы непосредственно из операционной системы, возможно, проще замечать ошибки в ней.
Использование команды Asterisk agi debug
В интерфейсе командной строки Asterisk есть очень полезная команда для отладки сценариев AGI, которая называется (вполне уместно) agi debug. Если ввести в консоли Asterisk agi debug и затем запустить AGI- сценарий, вы увидите нечто подобное:
-- Executing AGI('Zap/1-1', 'temperature.php') in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/temperature.php AGI Tx >> agi_request: temperature.php AGI Tx >> agi_channel: Zap/1-1 AGI Tx >> agi_language: en AGI Tx >> agi_type: Zap AGI Tx >> agi_uniqueid: 1116732890.8 AGI Tx >> agi_callerid: 101 AGI Tx >> agi_calleridname: Tom Jones
AGI Tx >> agi_callingpres: 00 |
AGI Tx >> agi_callingani2: 0 |
AGI Tx >> agi_callington: 0 |
AGI Tx >> agi_callingtns: 0 |
AGI Tx >> agi_dnid: unknown |
AGI Tx >> agi_rdnis: unknown |
AGI Tx >> agi_context: incoming |
AGI Tx >> agi_extension: 141 |
AGI Tx >> agi_priority: 2 |
AGI Tx >> agi_enhanced: 0.0 |
AGI Tx >> agi_accountcode: |
AGI Tx >> |
AGI Rx << STREAM FILE temperature |
AGI Tx >> 200 result=0 endpos=6400 |
AGI Rx << STREAM FILE is '' |
AGI Tx >> 200 result=0 endpos=5440 |
AGI Rx << SAY NUMBER 67 '' |
-- Playing 'digits/60' (language 'en')
-- Playing 'digits/7' (language 'en')
AGI Tx >> 200 result=0
AGI Rx << STREAM FILE degrees ''
AGI Tx >> 200 result=0 endpos=6720
AGI Rx << STREAM FILE fahrenheit ''
AGI Tx >> 200 result=0 endpos=8000
-- AGI Script temperature.php completed, returning 0
Во время выполнения сценария AGI будут выведены строки трех типов. Первый тип - строки, начинающиеся с AGI TX >>. Это строки, которые Asterisk передает в STDIN вашей программы. Второй тип - строки, начинающиеся с AGI RX <<. Это команды, которые ваша AGI-программа записывает в Asterisk через STDOUT. Третий тип - строки, начинающиеся с --. Это стандартные сообщения Asterisk, выводимые при выполнении определенных команд.
Чтобы отключить отладку AGI после запуска, просто введите в консоли Asterisk agi no debug.
Используя команду agi debug, можно увидеть взаимодействие между Asterisk и своей программой, что может быть очень полезным при отладке. Надеемся, эти два совета помогут вам создавать и отлаживать мощные AGI-программы.
Заключение
AGI для разработчика - это один из наиболее революционных и веских аргументов в пользу Asterisk, а не закрытой узкоспециализированной офисной АТС. Но AGI - это только часть картины. В главе 10 будет рассмотрен другой мощный интерфейс программирования, известный как Asterisk Manager Interface.10
Интерфейс Asterisk Manager (AMI) и Adhearsion