Обработка после окончания вызова в Asterisk, h extension
Обработка после окончания вызова в Asterisk, h extension
В Asterisk есть удобный механизм выполнения действий после завершения вызова — экстеншен h. И так, если ‘H’ запущен, это значит что плечи разговора завершены, и как-то отменить это действие уже никак не получится.
Как мы можем использовать ‘H’?! Ну, например, можем добавить описание завершения звонка.
Можно перекодировать, переместить и отправить запись по почте прямо из экстеншена h с помощью приложения System или функции SHELL, но нужно учитывать:
1) Когда экстеншен h начнёт выполняться, Asterisk может не успеть закончить работу с файлом записи.
2) Канал, на котором происходит завершение вызова, уничтожается в течение 1-2 секунд после завершения вызова, вне зависимости от того, выполнился экстеншен h полностью или нет.
Разрешить обе ситуации можно с помощью скрипта, который после запуска выполнит необходимое действие.
Пример скрипта:
Как мы можем использовать ‘H’?! Ну, например, можем добавить описание завершения звонка.
Код: Выделить всё
[test]
exten => _XXX,1,Dial (SIP/${EXTEN})
exten => _XXX,2,Hangup ()
exten => h,1,NoOp (Разговор завершен c в ${STRFTIME (${EPOCH},%d.%m.%Y-%H:%M:%S)} и длился ${ANSWEREDTIME} секунд.)
Можно перекодировать, переместить и отправить запись по почте прямо из экстеншена h с помощью приложения System или функции SHELL, но нужно учитывать:
1) Когда экстеншен h начнёт выполняться, Asterisk может не успеть закончить работу с файлом записи.
2) Канал, на котором происходит завершение вызова, уничтожается в течение 1-2 секунд после завершения вызова, вне зависимости от того, выполнился экстеншен h полностью или нет.
Разрешить обе ситуации можно с помощью скрипта, который после запуска выполнит необходимое действие.
Код: Выделить всё
exten => h,1,System(/usr/local/bin/script.sh "${MIXMONITOR_FILENAME}" "${QUEUE_CALL}")
same => n,Hangup
Пример скрипта:
Код: Выделить всё
#!/bin/bash
(
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
REC_FILE="$1"
QUEUE_CALL="$2"
echo REC_FILE;
echo QUEUE_CALL
)&
disown -h
exit 0
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя