LUA

Материал из Webitel CallManager Wiki
Перейти к: навигация, поиск

Почему именно LUA?

  • Легкий - около 272k в оперативной памяти
  • Быстрый - если оценивать по 10 бальной шкале для встроенных решений, тогда: Python = 2, Perl = 4, JavaScript = 5 и Lua = 10.
  • Простой - пример Hello world:
-- ответить
session:answer();

-- пауза 1 секунда
session:sleep(1000);

-- воспроизвести файл
session:streamFile("D:/Webitel/sounds/bla-bla-bla.wav");

-- завершить разговор
session:hangup();

Если Вы впервые сталкиваетесь с LUA, предлагаем ознакомится в сравнение с JavaScript

API

Sessions

Методы относятся к существующей телефонной сессии.

session:answer

Ответить. SIP 200 OK

session:answer();

session:answered

Проверить, была ли отвечена сессия. Принимает true всегда после answer.

session:preAnswer

Устанавливает медиа (early media), но не отвечает. SIP 183 Session Progress.

session:preAnswer();

session:bridged

Проверить произошла ли коммутация текущей сессии с другим каналом:

if (session:bridged() == true) do
    -- Делаем что-то
end

session:execute

session:execute(app, data)

local mySound = "D:/Webitel/sounds/music/16000/partita-no-3-in-e-major-bwv-1006-1-preludio.wav"

session:execute("playback", mySound)

session:executeString

session:execute(api_string)

local mySound = "D:/Webitel/sounds/music/16000/partita-no-3-in-e-major-bwv-1006-1-preludio.wav"

session:executeString("playback "..mySound)

session:setVariable

Установить переменную в текущей сессии:

session:setVariable("my_var", "BLA_BLA_BLA");

session:getVariable

Получить переменную:

local moh = session:getVariable("hold_music");
local caller_id_number = session:getVariable("caller_id_number");

session:sleep

Пауза в секундах:

session:sleep(3000); 

session:streamFile

Беспрерывное воспроизведения файла в сессию:

session:streamFile("D:/blah.wav");

session:getDigits

Получить ввод DTMF тонов в переменную. getDigits имеет 3 аргумента: max_digits, terminators, timeout:

  1. max_digits: максимальное количество DTMF тонов для сбора
  2. terminators: символ, что прерывает получение DTMF тонов
  3. timeout: максимальное время ожидания ввода DTMF тонов
digits = session:getDigits(5, "#", 3000);

session:destroy

Уничтожить текущую сессию. Необходимо, если разговор завершен, а в Вашем скрипте еще могут быть запущены любые циклы.

session:hangup

Завершить разговор с указанием (либо без указания) причины завершения вызова.

session:hangup("USER_BUSY");

ЛИБО

session:hangup(); -- по умолчанию, normal_clearing