Табличка немного отличается от предыдущего поста, поле number уникальное.
Пишем макрос:
extensions['macro-ban'] = { s = function() cid = channel.CALLERID("num"):get() query = "INSERT INTO blacklist (number, expires) VALUES ('" .. cid .. "', date_add(NOW(), INTERVAL 1 DAY)) on duplicate key update expires = date_add(NOW() INTERVAL 1 DAY);" local con = assert (env:connect(DB_NAME,DB_USER,DB_PASSWORD)) assert (con:execute(query)) con:close() end };
Добалвяем макрос в features.conf:
[applicationmap] ban => *5,peer/callee,macro(ban)
и не забываем включить в __DYNAMIC_FEATURES в диалплане:
extensions = { ["incoming"] = { ["DID"] = function() channel.__DYNAMIC_FEATURES = "ban" app.dial("SIP/100") end; } }
Теперь ответивший нажатием *5 может добавить номер звонящего в черный список.