| title | Lua Dialplan Examples |
|---|---|
| pageid | 16548020 |
Some example extensions.lua files can be found below. They demonstrate various ways to organize extensions.
Instead of defining every extension inline, you can use this method to create a neater extensions.lua file. Since the extensions table and each context are both normal lua tables, you can treat them as such and build them piece by piece.
extensions.lua
-- this function serves as an extension function directly
function call_user(c, user)
app.dial("SIP/" .. user, 60)
end
-- this function returns an extension function
function call_sales_queue(queue)
return function(c, e)
app.queue(queue)
end
end
e = {}
e.default = {}
e.default.include = {"users", "sales"}
e.users = {}
e.users["100"] = call_user
e.users["101"] = call_user
e.sales = {}
e.sales["5000"] = call_sales_queue("sales1")
e.sales["6000"] = call_sales_queue("sales2")
extensions = e
In this example, we use a fancy function to register extensions.
extensions.lua
function register(context, extension, func)
if not extensions then
extensions = {}
end
if not extensions[context] then
extensions[context] = {}
end
extensions[context][extension] = func
end
function include(context, included_context)
if not extensions then
extensions = {}
end
if not extensions[context] then
extensions[context] = {}
end
if not extensions[context].include then
extensions[context].include = {}
end
table.insert(extensions[context].include, included_context)
end
-- this function serves as an extension function directly
function call_user(c, user)
app.dial("SIP/" .. user, 60)
end
-- this function returns an extension function
function call_sales_queue(queue)
return function(c, e)
app.queue(queue)
end
end
include("default", "users")
include("default", "sales")
register("users", "100", call_user)
register("users", "101", call_user)
register("sales", "5000", call_sales_queue("sales1"))
register("sales", "6000", call_sales_queue("sales2"))
register("sales", "7000", function()
app.queue("sales3")
end)