[英]Asterisk Call Recordings to MySQL Database
我是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没有内置的方法来执行此操作。
您可以做的是在拨号计划中创建一个挂断操作,该操作执行将文件存储在数据库中的脚本。
或者,按照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}
变量感兴趣,该变量通常用于执行命令以自定义方式将两个音频通道混合在一起。 您可以从Asterisk docs中的监视器文档中了解有关它的更多信息。
最后-根据您的情况和预期的规模-将文件存储在数据库中可能不明智。 就个人而言,我倾向于仅将指向文件路径的指针存储在数据库记录中。 您可能可以从这个stackexchange问题中学到更多有关存储blob的知识 。
您可以使用在挂断上执行脚本的相同范例,该脚本将信息插入数据库。
编辑:添加了每个监控的mixmonitor脚本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.