Asterisk 13.25.0
Пишу на LUA аналог следующего номера.
На ael
- Код: выделить все
3900 =>
{
Answer;
Set(FILE=/tmp/FILE-${STRFTIME(,,%Y%m%d-%H%M%S)}-${UNIQUEID}.wav);
PlayBack(rec-1);
PlayBack(beep);
MixMonitor(${FILE},,/opt/sender.pl ${FILE} ${EMAIL} "Message" "Запись автоответчика.\nНомер: ${CALLERID(number)}\nСитуация: Ночь.");
Wait(300);
HangUp();
}
На LUA
- Код: выделить все
["_3900"] = function(context, extension)
file = "/tmp/FILE-" .. os.date("%Y%d%m-%H%M%S") .. "-" .. uniqueid() .. ".wav"
email = "asdfs@as.ru"
app.Answer()
app.Playback("rec-1")
app.MixMonitor(file, "", "/opt/sender.pl \"" .. file .. "\" \"" .. email .. "\" \"Message\"" .. " \"Запись автоответчика.\nНомер: ${CALLERID(number)}\nСитуация: Ночь.\"")
app.Wait(300)
app.HandUp()
Когда трубку не кладут раньше времени оба диалплана выполняются одинаково.
Но если положить трубку по время приветствия то:
На ael выполнение диалплана прекращается.
- Код: выделить все
-- Executing [3900@FROM_MAIN:1] Answer("SIP/Vjatskaya-00000001", "") in new stack
-- Executing [3900@FROM_MAIN:2] Set("SIP/Vjatskaya-00000001", "FILE=/tmp/FILE-20190307-175427-1551970467.2.wav") in new stack
-- Executing [3900@FROM_MAIN:3] Playback("SIP/Vjatskaya-00000001", "rec-1") in new stack
На LUA
- Код: выделить все
-- Executing [3900@FROM_MAIN:1] Answer("SIP/Vjatskaya-00000000", "")
-- Executing [3900@FROM_MAIN:1] Playback("SIP/Vjatskaya-00000000", "rec-1")
-- <SIP/Vjatskaya-00000000> Playing 'rec-1.slin' (language 'ru')
-- Executing [3900@FROM_MAIN:1] MixMonitor("SIP/Vjatskaya-00000000", "/tmp/FILE-20190703-174037-1551969637.0.wav,,/opt/sender.pl "/tmp/FILE-20190703-174037-1551969637.0.wav" "asdsa@sa.ru" "Message" "Запись автоответчика.
-- Номер: ${CALLERID(number)}
-- Ситуация: Ночь."")
-- Executing [3900@FROM_MAIN:1] Wait("SIP/Vjatskaya-00000000", "300")
== Begin MixMonitor Recording SIP/Vjatskaya-00000000
[Mar 7 17:40:45] WARNING[22580]: chan_sip.c:4337 __sip_autodestruct: Autodestruct on dialog '3bd33e3a335159d44735e86764ea9057@213.135.66.13' with owner SIP/Vjatskaya-00000000 in place (Method: BYE). Rescheduling destruction for 10000 ms
== Spawn extension (FROM_MAIN, 3900, 1) exited non-zero on 'SIP/Vjatskaya-00000000'
== MixMonitor close filestream (mixed)
== Executing [/opt/sender.pl "/tmp/FILE-20190703-174037-1551969637.0.wav" "asdsa@sa.ru" "Message" "Запись автоответчика.
== Номер: XXXX
== Ситуация: Ночь."]
== End MixMonitor Recording SIP/Vjatskaya-00000000
То есть при hangup со стороны звонящего выполнение диалплана на LUA не прекращается, что в данном примере приводит к получению ненужного письма с пустым файлом.