Обработка после окончания вызова в Asterisk, h extension

Выбор, установка, конфигурирование и эксплуатация офисных АТС и телефонии
Аватара пользователя
main
Администратор
Администратор
Сообщения: 84
Зарегистрирован: Сб дек 03, 2016 11:48 pm
Поблагодарили: 1 раз

Обработка после окончания вызова в Asterisk, h extension

#1

Сообщение main » Вс июл 25, 2021 9:54 am

В Asterisk есть удобный механизм выполнения действий после завершения вызова — экстеншен h. И так, если ‘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} секунд.)

ast1.jpg

Можно перекодировать, переместить и отправить запись по почте прямо из экстеншена 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 гостя