Табличка немного отличается от предыдущего поста, поле 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 может добавить номер звонящего в черный список.