ВидеоКонф(ВКС)  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Обработка invalid entry extension в Lua

Проблемы и их решения Asterisk как такового

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

Обработка invalid entry extension в Lua

Сообщение kantv » 17 авг 2020, 16:59

Всем Приветствую вас, коллеги.

Мы уже давно используем Asterisk и последние 2 года перевели dialplan на lua. В целом все работает. Но сейчас захотелось добавить функцию, чтобы если абонент ошибся и набрал несуществующий в контексте номер, то ему бы проигрывалось аудио сообщение о том, что он неверно набрал номер вместо обычных коротких гудков, так как некоторые абоненты думают, что это сигнал "занято" и продолжают названить на неправильный номер вместо того, чтобы проверить что они набирают. В классическом диалплане отловить набор несуществующего номера можно было через специальный extension "i" примерно вот таким образом (приводится во всех видах документации):
Код: выделить все
[test]
exten => _1XX,1,Dial(${EXTEN})

exten => i,1,NoOp(An invalid number ${INVALID_EXTEN} was dialed.)
exten => i,2,Answer()
exten => i,3,Playback(invalid)
exten => i,4,Hangup()


То есть в контекст просто добавляется дополнительный специальный extension "i", причем делается это как для любого другого обычного расширения. Пробовал сделать аналогично и в lua (это не реальный диалплан, а лишь пример):
Код: выделить все
test = {
["_1XX"] = function(context, extension)
app.Dial("PJSIP/"..extension);
end;

["i"] = function(context, extension)
app.NoOp("An invalid number "..extension.." was dialed.");
app.Answer();
app.Playback(invalid);
app.Hangup();
};


Но такой вариант работать не хочет - не начинает выполняться функция указанная для расширения "i".
Возможно в Lua для данного специального расширения "i" требуются какие-то другие методы добавления обработчика, например для классического специального расширения "h" необходимо регистрировать так называемые hangup_handlers, но мне не удалось ничего такого найти применительно к расширению "i". В принципе, это мелочь и мы без нее можем обойтись, но хотелось бы разобраться, так как мне не верится, что есть какие-то механизмы классического диалплана, которые не могут быть реализованы в Lua.

Может кто-то знает как это можно реализовать в Lua или по крайней мере, может у кого-то будут мысли по этому поводу?
kantv
 
Сообщений: 1
Зарегистрирован: 17 авг 2020, 16:32

Вернуться в Конфигурация и настройка Asterisk

Кто сейчас на форуме

Сейчас этот форум просматривают: Google [Bot] и гости: 38

© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH