VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Поведения диалплана на LUA

Проблемы Asterisk без вэб-оболочек и их решения

Модераторы: april22, Zavr2008

Ответить
alexi99
Сообщения: 1
Зарегистрирован: 07 мар 2019, 18:26

Поведения диалплана на LUA

Сообщение alexi99 »

Разбираюсь с диалпланом на LUA.
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 не прекращается, что в данном примере приводит к получению ненужного письма с пустым файлом.
Turbid
Сообщения: 21
Зарегистрирован: 22 окт 2015, 14:59

Re: Поведения диалплана на LUA

Сообщение Turbid »

Некропостинг, но все же:

>HangUp();

>app.HandUp()
Ответить
© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH