繁体   English   中英

使用FreeSWITCH的本机PostgreSQL支持编写Lua脚本吗?

[英]Writing a Lua script using FreeSWITCH's native PostgreSQL support?

我正在使用由FreeSWITCH的作者撰写的FreeSWITCH 1.2书籍来学习如何使用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

我想了解如何使用Lua将FreeSWITCH与某种数据库进行接口,但是我找不到任何相关的论坛主题或资源。

有人能指出我正确的方向吗?

干杯!

自从我为fs写lua以来已经几个月了。 但是,我确实清楚地记得不能轻松地获得本机postgresql支持。 我选择了odbc连接器,并从freeswitch的脚本目录中运行lua脚本。 我在CentOS 6.4上获得lua脚本支持的步骤如下(对于其他* nix环境应该非常相似)这假设您已安装了功能齐全的freeswitch并在启用了mod_lua的情况下运行。

1)安装postgresql-odbc.x86_64(或等效文件)

2)如下创建/修改/ etc目录中的两个文件,第一个是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

您可能必须确保驱动程序指向正确的目录,然后您应该能够在根根freeswitch目录中的“脚本”下创建一个lua脚本,这是一个示例脚本,请确保替换并使用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"/>

如果您遇到任何问题,请告诉我,我将尽力提供进一步的帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM