Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用FreeSWITCH&x27编写Lua脚本;谁的原生PostgreSQL支持?_Postgresql_Lua_Freeswitch - Fatal编程技术网

使用FreeSWITCH&x27编写Lua脚本;谁的原生PostgreSQL支持?

使用FreeSWITCH&x27编写Lua脚本;谁的原生PostgreSQL支持?,postgresql,lua,freeswitch,Postgresql,Lua,Freeswitch,我正在学习如何使用FreeSWITCH,使用FreeSWITCH作者编写的FreeSWITCH 1.2书 在第7章中,将解释如何在连接数据库的同时使用Lua脚本。然而,我有一种感觉,这本书是在FS 1.2.5发布之前写的,没有考虑PostgreSQL的原生支持。结果是一个混乱的非工作示例代码。 这是书中过时的部分: 我想了解如何使用Lua与某种数据库连接FreeSWITCH,但我找不到任何相关的论坛线程或资源 谁能给我指一下正确的方向吗 干杯 iv'e为fs编写lua已经有几个月了。但是,我清楚

我正在学习如何使用FreeSWITCH,使用FreeSWITCH作者编写的FreeSWITCH 1.2书

在第7章中,将解释如何在连接数据库的同时使用Lua脚本。然而,我有一种感觉,这本书是在FS 1.2.5发布之前写的,没有考虑PostgreSQL的原生支持。结果是一个混乱的非工作示例代码。 这是书中过时的部分:

我想了解如何使用Lua与某种数据库连接FreeSWITCH,但我找不到任何相关的论坛线程或资源

谁能给我指一下正确的方向吗


干杯

iv'e为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
您可能必须确保您的驱动程序指向正确的目录,然后您应该能够在根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
localdbh=freeswitch.dbh(“odbc://freeswitch::“”--连接到ODBC数据库
assert(dbh:connected())--如果连接不正确,则退出脚本
本地sqluuid=env:getHeader(“uuid”)
本地sqlani=env:getHeader(“sip\u from\u user”)
本地sqldni=env:getHeader(“sip请求用户”)
本地sqlstart=env:getHeader(“start\u stamp”)
本地sqlstop=env:getHeader(“end_stamp”)
本地sqlpid=env:getHeader(“状态\标识”)
local myquery=string.format(“插入到cdr(uuid、ani、目标编号、开始标记、结束标记、状态标记)值(“%s”、“s”、“s”、时间戳“%s”、时间戳“%s”、“s”),
sqluuid、sqlani、sqldni、sqlstart、sqlstop、sqlpid)
胸径:查询(myquery)
dbh:release()--可选
然后使用以下命令从拨号计划调用此脚本:

<action application="set" data="session_in_hangup_hook=true"/>
<action application="lua" data="someluascript.lua"/>

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

<action application="set" data="session_in_hangup_hook=true"/>
<action application="lua" data="someluascript.lua"/>