Прошло несколько месяцев с тех пор, как он написал lua для fs. Однако я отчетливо помню, что не мог легко работать с поддержкой postgresql. Я выбрал разъем odbc и запускал сценарии lua из каталога скриптов freeswitch. Мои шаги по созданию поддержки lua-скрипта, работающие над CentOS 6.4, выглядят следующим образом (должно быть довольно похоже на другие среды * nix). Предположим, что у вас есть полная функция freeswitch, устанавливаемая и работающая с включенным mod_lua.
1) Установить POSTGRESQL-odbc.x86_64 (или эквивалент)
2) Создание/изменение двух файлов в директории/и т.д., как следует, во-первых, odbc.ini, второй odbcinst.ini
ODBC.INI:
[freeswitch]
Driver=/usr/lib64/psqlodbcw.so
Description=Connection to LDAP/POSTGRESQL
Servername=<ENTER SERVER IP HERE>
Port=5432
Protocol=6.4
FetchBufferSize=99
Username=<ENTER USERNAME HERE>
Password=<ENTER PASSWORD HERE>
Database=<ENTER DATABASE NAME HERE>
ReadOnly=no
Debug=1
CommLog=1
ODBCINST.INI:
[PostgreSQL]
Description = PostgreSQL driver for Linux & Win32
Driver = /usr/lib64/psqlodbcw.so
Вы, возможно, придется ensu ваши драйверы указывают на правильные каталоги, тогда вы должны иметь возможность создать сценарий lua в корневом каталоге freeswitch в разделе «scripts», вот пример сценария, обязательно замените его и ваши учетные данные db в следующем примере:
local dbh = freeswitch.Dbh("odbc://freeswitch:<DB USERNAME>:<DB PASSWORD>") -- connect to ODBC database
assert(dbh:connected()) -- exits the script if we didn't connect properly
local sqluuid = env:getHeader("uuid")
local sqlani = env:getHeader("sip_from_user")
local sqldni = env:getHeader("sip_req_user")
local sqlstart = env:getHeader("start_stamp")
local sqlstop = env:getHeader("end_stamp")
local sqlpid = env:getHeader("presence_id")
local myquery = string.format("INSERT INTO cdr (uuid, ani, destination_number, start_stamp, end_stamp, presence_id) VALUES ('%s', '%s', '%s', TIMESTAMP '%s', TIMESTAMP '%s', '%s')",
sqluuid, sqlani, sqldni, sqlstart, sqlstop, sqlpid)
dbh:query(myquery)
dbh:release() -- optional
Затем вызовите этот скрипт из диалплане с помощью:
<action application="set" data="session_in_hangup_hook=true"/>
<action application="lua" data="someluascript.lua"/>
Если возникнут какие-либо вопросы, дайте мне знать, и я постараюсь помочь дальше.