передача данных из внешнего скрипта в Asterisk
После дозвоне до абонента, соединить с оператором ( внутренний номер которого отрабатывается скриптом sip.sh)
пробовал следующею реализацию
exten => s, 1, Set(RESULT=${SHELL(/bin/sh /call/sip.sh)})
exten => s, n, Dial(Sip\${RESULT})
содержимое скрипта простое:
#!/bin/sh
let RESULT=37105
echo "$RESULT"
Права на скрипт 773, пользователь и группа asterisk
Проблема в следующем не передается значение переменной RESULT.....
| Код: |
| /etc/asterisk/openwrt_dialplans.conf:exten => h,n,Set(call_channel_awk=${SHELL(echo -n ${CDR(dstchannel)} | awk -F '/' '{print $2}' | awk -F '-' '{print $1}')}) |
Или передавайте через AGI. Вполне нормально работает и с bash
_________________
Asterisk 1.4.30 @ Ubuntu 9.04 + Cisco MC3810 + NEC NEAX 2000IPS + Polycom IP Phones
| Код: |
| #!/bin/bash declare -a array while read -e ARG && [ "$ARG" ] ; do array=(` echo $ARG | sed -e 's/://'`) export ${array[0]}=${array[1]} done # following variables are available from asterisk echo $agi_request >&2 echo $agi_channel >&2 echo $agi_language >&2 echo $agi_type >&2 echo $agi_uniqueid >&2 echo $agi_callerid >&2 echo $agi_dnid >&2 echo $agi_rdnis >&2 echo $agi_context >&2 echo $agi_extension >&2 echo $agi_priority >&2 echo $agi_enhanced >&2 checkresults() { while read line do case ${line:0:4} in "200 " ) echo $line >&2 return;; "510 " ) echo $line >&2 return;; "520 " ) echo $line >&2 return;; * ) echo $line >&2;; #keep on reading those Invlid command #command syntax until "520 End ..." esac done } res= echo "1. Setting Variable 'Test Variable' ..." >&2 echo "SET VARIABLE TestVariable \"$res\"" checkresults echo "=================== Complete ====================" >&2 |
_________________
Asterisk 1.4.30 @ Ubuntu 9.04 + Cisco MC3810 + NEC NEAX 2000IPS + Polycom IP Phones
Usage: agi debug
Enables dumping of AGI transactions for debugging purposes
при использовании AGI логов не видно.
Вызываю стандартным образом exten => s,n,AGI(test.php), как я понимаю в CLI, должны отображаться данные которые передаются в agi, или я ошибаюсь.
В консоль захожу через: asterisk -vvvvvr
| Код: |
| exten => s,1,AGI(test.php,${foo},${foo2}) exten => s,2,NoOp(---${TEST}---) |
Сам test.php
| Код: |
| #!/usr/bin/php -q |
Это простейший пример, когда скрипту передаются две переменные, а возвращается - одна.
_________________
Внимание! Свет в конце тоннеля может быть светом фар приближающегося поезда!
Ubuntu 10.04/12.04 - Asterisk 1.8.11.0-rc2/1.8.14.1/1.8.17.0/10.10.0