iopsys-feed/voice-client/files/sbin/voice-monitor
2018-02-24 16:13:23 +01:00

42 lines
1 KiB
Bash
Executable file

#!/bin/sh
if [ -f /tmp/voice-monitor.pid ]; then
kill -9 $(cat /tmp/voice-monitor.pid) 2>/dev/null
rm -f /tmp/voice-monitor.pid
fi
. /usr/share/libubox/jshn.sh
OFFHOOK=0
REGISTERED=0
ubus listen asterisk.registry asterisk.endpoint | \
while read event ; do
#echo "voice-monitor got event: $event" >/dev/console
json_load "$event"
if json_select asterisk.registry >/dev/null; then
json_get_var status status
if [ "$status" == "Registered" ]; then
REGISTERED=1
[ $OFFHOOK -eq 0 ] && ubus call led.voice1 set '{"state":"ok"}'
else
REGISTERED=0
[ $OFFHOOK -eq 1 ] && ubus call led.voice1 set '{"state":"error"}'
fi
elif json_select asterisk.endpoint >/dev/null; then
json_get_var event event
if [ "$event" == "OFFHOOK" ]; then
OFFHOOK=1
ubus call led.voice1 set '{"state":"notice"}'
else
OFFHOOK=0
if [ $REGISTERED -eq 1 ]; then
ubus call led.voice1 set '{"state":"ok"}'
else
ubus call led.voice1 set '{"state":"error"}'
fi
fi
fi
done &
echo $(($!-1)) $! >/tmp/voice-monitor.pid