2013-10-11 1 views
1

Я изучаю, как использовать FreeSWITCH, используя книгу FreeSWITCH 1.2, написанную авторами FreeSWITCH.Написание сценария Lua с использованием встроенной поддержки PostgreSQL FreeSWITCH?

В главе 7 объясняется, как использовать сценарий Lua вместе с подключением к базе данных. Тем не менее, я чувствую, что эта книга была написана до того, как FS 1.2.5 вышел и не учитывает встроенную поддержку PostgreSQL. Результатом является запутанный нерабочий пример кода. Это устаревшая часть книги: http://books.google.ca/books?id=uISv9J6wt88C&lpg=PT295&dq=Freeswitch%20Connecting%20to%20a%20database%20with%20LuaSQL&pg=PT293#v=onepage&q&f=false

Я хотел бы понять, как взаимодействовать с FreeSWITCH с помощью Lua с какой-то базой данных, но я не смог найти подходящую нишу или ресурс форума.

Может ли кто-нибудь указать мне в правильном направлении?

Cheers!

ответ

2

Прошло несколько месяцев с тех пор, как он написал 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"/> 

Если возникнут какие-либо вопросы, дайте мне знать, и я постараюсь помочь дальше.