mysql - Asterisk 通话录音到 MySQL 数据库

标签 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

最佳答案

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

你可以做的是在你的拨号方案中创建一个挂断 Action ,它执行一个将文件存储在数据库中的脚本。

或者,按照 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} 变量感兴趣,该变量通常用于执行以自定义方式将两个音频 channel 混合在一起的命令。您可以从 monitor documentation in the Asterisk docs 了解更多信息.

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

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

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

关于mysql - Asterisk 通话录音到 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28942659/

相关文章:

MySQL 多查询合一

mysql 使用 select 更新查询

Asterisk 在接听时在播放声音文件之外发出自动调用

winapi - 在 C++ 中检测屏幕监视器电源状态变化

c# - ObjectPool 实现死锁

php - 为什么这个 PHP 脚本会干扰我的 CSS 布局?

php - 在数据库中的每 3 个图像之后在表中添加一个新行

c# - Asterisk ARI 电话 session 应用程序 : authorize/ask for pin number

Asterisk 拨号方案 : How to detect when a call has been successfully answered?

java - Java 中存储的对象的条目数在哪里