Twinkle и скрипты
Продолжая петь дифирамбы Twikle`у, можно сказать, что у него есть замечательная функция — исполнение скриптов при событиях. Ну и я накидал небольшой скриптик, который немного упрощает жизнь:
#!/bin/bash
player="/usr/bin/parole"
playkey="--play"
pausekey="-p"
echo $TWINKLE_TRIGGER >> /tmp/log
case "$TWINKLE_TRIGGER" in
"in_call" ) #Входящий звонок - сообщаем кто звонит и тормозим плеер
notify-send -t 3000 -i "/usr/share/twinkle/twinkle48.png" "Входящий звонок: $SIP_FROM_USER $SIP_FROM"
$player $pausekey
;;
"out_call" ) #Исходящий звонок - тормозим плеер
$player $pausekey
;;
"local_release" | "remote_release" ) #Звонок завершен любой из сторон - продолжаем музыку слушать
$player $playkey
;;
"in_call_failed" )
notify-send -t 3000 -i "/usr/share/twinkle/twinkle48.png" "Входящий звонок отменен!"
$player $playkey
;;
"outcall_failed" )
notify-send -t 3000 -i "/usr/share/twinkle/twinkle48.png" "Ошибка соединения: $SIPSTATUS_CODE $SIPSTATUS_REASON"
"$player $playkey"
;;
"in_call_answered" | "outcall_answered" )
echo "Connection estabilished!" >> /dev/null
;;
* ) # Если получаем любое другое значение - удивляемся и шлем в /dev/null. Мы к этому еще не готовы
echo "WTF?!" >> /dev/null
;;
esac
Немного про переменные:
- $player — плеер, которым я пользуюсь.
- $playkey — ключ для продолжения воспроизведения
- $pausekey — ключ для остановки воспроизведения
Определение статуса твинкла идет через переменную $TWINKLE_TRIGGER. Согласно мануалу, эта переменная может содержать следующие значения
TWINKLE_TRIGGER | Trigger point |
---|---|
in_call | Входящий звонок |
in_call_answered | Ответ на входящий |
in_call_failed | Входящий звонок сброшен или отменен |
out_call | Исходящий звонок |
out_call_answered | Исходящий звонок отвечен |
out_call_failed | Исходящиый звонок сброшен или отменен |
local_release | Разговор окончен с локальной стороны |
remote_release | Разговор окончен удаленной стороной |
Обрабатывая эти значения можно выполнять определенные действия.
Прописываем использование скрипта в программе и можно пользоваться!
В процессе эксплуатации скрипт оброс запросом в AD для получения данных об абоненте (для внутренних звонков), регулировкой громкости для Flash-плеера в браузере и прочими свистелками, но это уже личное дело каждого