asterisk 相关数据库配置 使用
Linux/Unix下ODBC的安装:
先下载最新的unixODBC源码包(http://www.unixodbc.org/unixODBC-2.2.1.tar.gz)放到/usr/local下,然后运行下述命令:
tar zxvf unixODBC-2.2.1.tar.gz
cd unixODBC-2.2.1
./configure --prefix=/usr/local/unixODBC-2.2.1 --includedir=/usr/include --libdir=/usr/lib -bindir=/usr/bin --sysconfdir=/etc
make
make install
安装成功后,unixODBC所需的头文件都被安装到了/usr/inlucde下,编译好的库文件安装到了/usr/lib下,与unixODBC相关的可执行文件安装到了/usr/bin下,配置文件放到了/etc下。
asterisk mysql安装:
1、安装mysql mysql -u root mysql UPDATE user SET Password=PASSWORD('123456') where USER='root'; FLUSH PRIVILEGES
2、建立asterisk数据库 SQL如下:
CREATE DATEBASE asterisk;
USE asterisk;
CREATE TABLE cdr (
clid varchar(80) NOT NULL default '',
src varchar(80) NOT NULL default '',
dst varchar(80) NOT NULL default '',
dcontext varchar(80) NOT NULL default '',
channel varchar(80) NOT NULL default '',
dstchannel varchar(80) NOT NULL default '',
lastapp varchar(80) NOT NULL default '',
lastdata varchar(80) NOT NULL default '',
start datetime NOT NULL default '0000-00-00 00:00:00',
answer datetime NOT NULL default '0000-00-00 00:00:00',
end datetime NOT NULL default '0000-00-00 00:00:00',
duration int(11) NOT NULL default '0',
billsec int(11) NOT NULL default '0',
disposition varchar(45) NOT NULL default '',
amaflags int(11) NOT NULL default '0',
accountcode varchar(20) NOT NULL default '',
uniqueid varchar(32) NOT NULL default '',
userfield varchar(255) NOT NULL default '',
myself varchar(32) NOT NULL default '' );
ALTER TABLE cdr ADD INDEX ( calldate );
ALTER TABLE cdr ADD INDEX ( dst );
ALTER TABLE cdr ADD INDEX ( uniqueid );
CREATE TABLE vc_talklog (
src varchar(80) NOT NULL default '',
dst varchar(80) NOT NULL default '',
channel varchar(80) NOT NULL default '',
dstchannel varchar(80) NOT NULL default '',
start datetime NOT NULL default '0000-00-00 00:00:00',
answer datetime NOT NULL default '0000-00-00 00:00:00',
end datetime NOT NULL default '0000-00-00 00:00:00',
duration int(11) NOT NULL default '0',
billsec int(11) NOT NULL default '0',
disposition varchar(45) NOT NULL default '',
recfilepath varchar(20) NOT NULL default '',
talklogid varchar(32) NOT NULL default '',
);
CREATE TABLE vc_talklog (
src varchar(80) NOT NULL default '',
dst varchar(80) NOT NULL default '',
start datetime NOT NULL default '0000-00-00 00:00:00',
answer datetime NOT NULL default '0000-00-00 00:00:00',
end datetime NOT NULL default '0000-00-00 00:00:00',
duration int(11) NOT NULL default '0',
billsec int(11) NOT NULL default '0',
disposition varchar(45) NOT NULL default '',
amaflags int(11) NOT NULL default '0',
accountcode varchar(20) NOT NULL default '',
uniqueid varchar(32) NOT NULL default '',
userfield varchar(255) NOT NULL default ''
);
exten => _70XX,1,MYSQL(Connect connid 127.0.0.1 root 123456 asterisk)
exten => _70XX,n,MYSQL(Query resultid ${connid} select over from billing where username='${CALLERID(number)}')
exten => _70XX,n,MYSQL(Fetch fetchid ${resultid} over)
;exten => _70XX,n,SayNumber(${resultid})
;exten => _70XX,n,SayNumber(${fetchid})
;exten => _70XX,n,SayNumber(${over})
exten => _70XX,n,MYSQL(Clear ${resultid})
exten => _70XX,n,MYSQL(Disconnect ${connid})
;exten => _70XX,n,SayNumber(${fetchid})
;exten => _70XX,n,SayNumber(${over})
exten => _70XX,n,GoToIf($["${fetchid}" == "0"]?1000)
exten => _70XX,n,GotoIf($[${over} <= 0]?1000)
exten => _70XX,n,Dial(sip/5051)
exten => _70XX,1000,playback(busy)
exten => _70XX,n,Hangup()
3、下载及编译asterisk-addons
# cd asterisk-addons-1.6.2
# ./configure
# make menuselect
必须确保Applications--》app_addon_sql_mysql和Call Detail Recording--》cdr_addon_mysql是选中的
# make clean # make # make install
4、修改相关配置文件
(1)vi /etc/asterisk/cdr.conf
[general]
enable=yes
(2)vi /etc/asterisk/cdr_mysql.conf
[global]
hostname=127.0.0.1
dbname=asterisk
table=cdr
password=******
user=adminstrator
port=3306
(3)vi /etc/asterisk/modules.conf
在文件最后添加下面一行内容
load => cdr_addon_mysql.so
5、重启asterisk服务器
/usr/sbin/asterisk -r
core restart now
重启完成后正常情况下可以用cdr mysql status查看相关信息,如果没有则说明还存在问题
6、确认
进行一次成功的通话操作后进入mysql数据库查看是否已经添加了一条记录,如果有的话则说明已经成功了。
asterisk odbc连接数据库: Client does not support authentication protocol requested by server; consider upgrading MySQL client错误解决办法:
UPDATE mysql.user SET Password = OLD_PASSWORD('123456') WHERE Host = '127.0.0.1' AND User = 'root';
FLUSH PRIVILEGES;
1,安装odbc
2.下载mysql驱动
3,配置odbc:
vi /etc/odbc.ini
[mysql-asterisk]
Description = MySQL test database
Trace = On
TraceFile = stderr
Driver = mysql
SERVER = 192.168.0.251
USER = root
PASSWORD = 123456
PORT = 3306
DATABASE = asterisk
socket = /tmp/mysql.soc
vi /etc/odbcini.ini
[mysql]
Description = MySQL driver
Driver = /usr/lib/libmyodbc.so
Setup = /usr/lib/libodbcmyS.so
Socket = /tmp/mysql.sock
FileUsage = 1
测试 isql -v mysql-asterisk root 123456
能连接成功,即证明unixODBC 配置正常
vi /etc/asterisk/cdr_odbc.conf
加入
[global]
dsn=mysql-asterisk
username=root
password=123456
loguniqueid=yes
dispositionstring=yes
table=cdr
;"cdr" is default table name
usegmtime=no
; set to "yes" to log in GMT
vi /etc/asterisk/res_odbc.conf
加入
[mssql2000]
dsn => mysql-asterisk
username => root
password => 123456
pre-connect => yes
vi /etc/asterisk/cdr_adaptive_odbc.conf
加入
[first]
connection=mssql2000
table=cdr
alias start => calldate
说明connection必须与res_odbc.conf里的[]对应
录音:
[macro-outbound]
exten => s,1,Set(PATH=/var/spool/asterisk/monitor/${STRFTIME(${EPOCH},,%Y-%m-%d)})
exten => s,n,Set(FILENAME=${STRFTIME(${EPOCH},,%Y-%m-%d-%H%M%S)}--${CALLERID(num)}-${ARG2})
exten => s,n,Set(MONITOR_EXEC=/etc/asterisk/scripts/mce ${PATH} ${FILENAME})
exten => s,n,Monitor(wav,${PATH}/${FILENAME},mb)
exten => s,n,Dial(${ARG1}/${ARG2},,tTm)
[from-internal]
exten =>_500X,1,Macro(outbound,sip,${EXTEN})
设置变量
Set(CDR(userfield)=value)
轮询振铃
exten => 1000,1,MYSQL(Connect connid 127.0.0.1 root 123456 asterisk)
exten => 1000,2,MYSQL(Query resultid ${connid} select extension from pollexten)
exten => 1000,3,MYSQL(Fetch fetchid ${resultid} extension)
exten => 1000,4,MYSQL(Clear ${resultid})
exten => 1000,5,set(count=$[${extension}])
exten => 1000,6,GotoIf($["${count}" == "2006"]?3000)
exten => 1000,7,MYSQL(Query resultid ${connid} select statu from ExtenStatu where extension='${count}')
exten => 1000,n,NoOp(${resultid})
exten => 1000,n,MYSQL(Fetch fetchid ${resultid} statu)
exten => 1000,n,MYSQL(Clear ${resultid})
exten => 1000,n,NoOp(${fetchid})
exten => 1000,n,NoOp(${statu})
exten => 1000,n,GoToIf($["${statu}" == "0"]?1000:2000)
exten => 1000,1000,set(count-dial=${count})
exten => 1000,n,Set(count=$[${count}+1])
exten => 1000,n,MYSQL(Query resultid ${connid} update pollexten set extension = '${count}')
exten => 1000,n,MYSQL(Disconnect ${connid})
exten => 1000,n,Dial(sip/${count-dial},30,rtw)
exten => 1000,2000,Set(count=$[${count}+1])
exten => 1000,n,Goto(1000,6)
exten => 1000,3000,set(count=2000)
exten => 1000,n,Goto(1000,7)
asterisk 相关数据库配置 使用的更多相关文章
- mybatis与数据库访问相关的配置以及设计
mybatis与数据库访问相关的配置以及设计 mybatis不管如何NB,总是要与数据库进行打交道.通过提问的方式,逐步深入 我们常用的MyBatis配置中哪些是与数据库相关? 数据源配置: < ...
- laravel5 数据库配置(MySQL)
laravel5 数据库配置(MySQL) 首先有一个安装完成可以运行的laravel框架. 配置database.php 进入laravel根目录. 在config目录下找到database.php ...
- 应用程序初次运行数据库配置小程序(Java版)
应用程序初始化数据库配置小程序 之前写过一个Java版的信息管理系统,但部署系统的时候还需要手动的去配置数据库和导入一些初始化的数据才能让系统运行起来,所以我在想是不是可以写一个小程序在系统初次运行的 ...
- Django models数据库配置以及多数据库联用设置
今天来说说web框架Django怎么配置使用数据库,也就是传说中MVC(Model View Controller)中的M,Model(模型). 简单介绍一下Django中的MVC: 模型(model ...
- Django MTV 开发模式 + 数据库配置
MTV 开发模式 Django 的设计鼓励松耦合及对应用程序中不同部分的严格分割.遵循这个理念的话,要想修改应用的某部分而不影响其它部分就比较容易了.在视图函数中,我们已经讨论了通过模板系统把业务逻辑 ...
- django的数据库配置-13
数据库配置 打开mysite下的settings.py文件 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NA ...
- 利用maven开发springMVC项目(三)——数据库配置
前两节介绍了开发环境的搭建以及框架的配置 现在主要介绍在eclipse中如何将SpringMVC.hibernate.mysql数据库结合起来. 数据库配置 下面,就要通过一个简单的例子,来介绍Spr ...
- Castle连接多数据库配置
ActiveRecord 的多数据库配置基本沿袭了 NHibernate 的思想,只不过在配置文件结构上作了些调整.1. 采用继承方式,归纳使用同一数据库的类型.比如 A.B.C.D.E 中 A.B连 ...
- PLSQL Develope连接oracle数据库配置
首先我们在讲PLSQL Develope连接oracle数据库配置之前,先讲下如果不用PLSQL Develope连接oracle数据库,那该怎么办,那就是在本机安装oracle数据库,不过这个对于配 ...
随机推荐
- vba,自定义公式,农历互转公历,excel ,wps
'vba 模块内容如下 自定义公式 '公历转农历模块 '原创:互联网 '修正: '// 农历数据定义 // '先以 H2B 函数还原成长度为 18 的字符串,其定义如下: '前12个字节代表1-12月 ...
- 洛谷 P2604 [ZJOI2010]网络扩容
题目描述 给定一张有向图,每条边都有一个容量C和一个扩容费用W.这里扩容费用是指将容量扩大1所需的费用.求: 1. 在不扩容的情况下,1到N的最大流: 2. 将1到N的最大流增加K所需的最小扩容费用. ...
- Android(java)学习笔记158:多线程断点下载的原理(JavaSE实现)
1. 为什么需要多线程下载? 服务器的资源有限,同时的平均地分配给每个客户端.开启的线程越多抢占的服务的资源就越多,下载的速度就越块. 2. 下载速度的限制条件? (1)你的电脑手机宽带的带宽 ...
- Python3 OpenCV3 图像处理基础
开发环境搭建 本人使用的是Ubuntu 16.04LTS. 1.安装Python3 ## 其实 Ubuntu 16.04 系统自带了 Python 3.5.2,因此不需要再安装了?但是需要安装一些开发 ...
- dns2tcp使用教程
在2010年6月的更新(也是迄今为止最新的更新)后,其源代码支持编译为Windows平台的可执行程序.而且此工具使用C语言开发编写,不需要TUN/TAP,所以大大加强了它的可用性. 下载 当前最新的0 ...
- Java数据结构和算法(二)--队列
上一篇文章写了栈的相关知识,而本文会讲一下队列 队列是一种特殊的线性表,在尾部插入(入队Enqueue),从头部删除(出队Dequeue),和栈的特性相反,存取数据特点是:FIFO Java中queu ...
- 任务五:零基础HTML及CSS编码(二)
面向人群: 零基础或初学者 难度: 简单 重要说明 百度前端技术学院的课程任务是由百度前端工程师专为对前端不同掌握程度的同学设计.我们尽力保证课程内容的质量以及学习难度的合理性,但即使如此,真正决定课 ...
- 3 SQL 聚合与排序
3 聚合与排序 3-1 对表进行聚合查询 聚合函数 通过SQL对数据进行 操作或计算时需要使用函数. 计算表中全部数据行数时,可以使用COUNT函数. COUNT : 计算表中的记录数(行数). SU ...
- 20. Valid Parentheses (python版)
Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the inpu ...
- CSS3---渲染属性
1.计数器 CSS3计数器( CSS Counters )可以允许我们使用css对页面中的任意元素进行计数,实现类似于有序列表的功能.与有序列表相比,它的突出特性在于可以对任意元素计数,同时实现个性化 ...