星号呼叫记录到MySQL数据库

时间:2015-03-09 13:02:25

标签: mysql asterisk monitor recording

我是Asterisk的新手,我想记录我对MYSQL数据库的调用。我的Astersik正在Ubuntu上运行。我正在成功录制呼叫,但我希望将录制的文件存储在MYSQL数据库中,而不是存储在Asterisk的Monitor文件夹中。我该如何配置?我已经成功设置了MYSQL数据库,我的sip用户在那里,我成功配置了CDR,但我想记录对MySQL数据库的调用? 谁可以帮助我?

[MySQL]----- odbcinst.ini
Description = ODBC for MySQL
Driver      = /usr/lib/x86_64-linux-gnu/odbc/libmyodbc.so
Setup       = /usr/lib/x86_64-linux-gnu/odbc/libodbcmyS.so
FileUsage   = 1
UsageCount  = 4

[asterisk-connector]--- odbc.ini
Description = MySQL connection to 'asterisk' database
Driver      = MySQL
Database    = asterisk
Server      = localhost
UserName    = asterisk
Password    = XXXX
Port        = 3306
Socket      = /var/run/mysqld/mysqld.sock

[asterisk] -----------res_odbc
enabled => yes
dsn => asterisk-connector
username => asterisk
password => XXXX
pooling => no
limit => 1
pre-connect => yes

[general]   -------------res_config_mysql.conf
dbhost = 127.0.0.1
dbname = asterisk
dbuser = asterisk
dbpass = XXXX
dbport = 3306
dbsock = /tmp/mysql.sock
dbcharset = latin1
requirements=warn

1 个答案:

答案 0 :(得分:0)

您将需要创建一个自定义脚本,为您执行此操作,没有内置方法可以使用Asterisk执行此操作。

您可以在拨号方案中创建一个挂起操作,该操作执行将文件存储在数据库中的脚本。

或者,按照arheops的建议 - 在您的MixMonitor()电话中添加一个脚本命令。

我在下面提供了一个简短的例子,展示了它是如何运作的。

[your_context]

exten => s,1,Noop(Your regular extension)
same =>    n,MixMonitor(myrecording.ulaw,,/path/to/insert_recording.sh)
same =>    n,Dial([...])
same =>    n,Hangup()

exten => h,1,Noop(Actions on hangup)
same =>    n,System(/not/recommended/insert_recording.sh)

这将为您录制文件,然后执行引用的shell脚本/path/to/insert_recording.sh

将数据存储在数据库中所需的代码留给了询问者的练习,因为它并不是特定于Asterisk的。

您可能还对${MONITOR_EXEC}变量感兴趣,该变量通常用于执行命令以自定义方式将两个音频通道混合在一起。您可以从monitor documentation in the Asterisk docs了解更多相关信息。

最后 - 根据您的情况和您期望的规模 - 在数据库中存储文件可能也可能不明智。就个人而言,我倾向于只存储指向数据库记录中文件路径的指针。您可以learn a little more about storing blobs from this stackexchange question

您可以使用相同的范例在挂起时执行脚本,该脚本将信息插入数据库。

编辑:每个arheops添加了mixmonitor脚本。