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 相关数据库配置 使用的更多相关文章

  1. mybatis与数据库访问相关的配置以及设计

    mybatis与数据库访问相关的配置以及设计 mybatis不管如何NB,总是要与数据库进行打交道.通过提问的方式,逐步深入 我们常用的MyBatis配置中哪些是与数据库相关? 数据源配置: < ...

  2. laravel5 数据库配置(MySQL)

    laravel5 数据库配置(MySQL) 首先有一个安装完成可以运行的laravel框架. 配置database.php 进入laravel根目录. 在config目录下找到database.php ...

  3. 应用程序初次运行数据库配置小程序(Java版)

    应用程序初始化数据库配置小程序 之前写过一个Java版的信息管理系统,但部署系统的时候还需要手动的去配置数据库和导入一些初始化的数据才能让系统运行起来,所以我在想是不是可以写一个小程序在系统初次运行的 ...

  4. Django models数据库配置以及多数据库联用设置

    今天来说说web框架Django怎么配置使用数据库,也就是传说中MVC(Model View Controller)中的M,Model(模型). 简单介绍一下Django中的MVC: 模型(model ...

  5. Django MTV 开发模式 + 数据库配置

    MTV 开发模式 Django 的设计鼓励松耦合及对应用程序中不同部分的严格分割.遵循这个理念的话,要想修改应用的某部分而不影响其它部分就比较容易了.在视图函数中,我们已经讨论了通过模板系统把业务逻辑 ...

  6. django的数据库配置-13

    数据库配置 打开mysite下的settings.py文件 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NA ...

  7. 利用maven开发springMVC项目(三)——数据库配置

    前两节介绍了开发环境的搭建以及框架的配置 现在主要介绍在eclipse中如何将SpringMVC.hibernate.mysql数据库结合起来. 数据库配置 下面,就要通过一个简单的例子,来介绍Spr ...

  8. Castle连接多数据库配置

    ActiveRecord 的多数据库配置基本沿袭了 NHibernate 的思想,只不过在配置文件结构上作了些调整.1. 采用继承方式,归纳使用同一数据库的类型.比如 A.B.C.D.E 中 A.B连 ...

  9. PLSQL Develope连接oracle数据库配置

    首先我们在讲PLSQL Develope连接oracle数据库配置之前,先讲下如果不用PLSQL Develope连接oracle数据库,那该怎么办,那就是在本机安装oracle数据库,不过这个对于配 ...

随机推荐

  1. SQL (一)定义变量以及变量赋值

    1.定义变量:declare @name varchar(20)  用declare定义一个名字为name的字符串类型的变量,变量前面需要加@ 2.为变量赋值:set @name = '%奥迪%' , ...

  2. swift Equatable 的缺省实现

    Starting from Swift 4.1, all you have to is to conform to the Equatable protocol without the need of ...

  3. 日常[系统]:Linux新人报到(吐槽%&%……&¥……%

    昨天换了系统,从win7换到了NOIP必须面对的Linux系统. 不得不说,真的很不适应.原本右上角的三个按钮变到了左上角. 可爱的DEVCPP被无情的抛弃了. 又用不惯guide,只好用文本编辑器写 ...

  4. Spring boot 项目打成war包并在idea中运行

    1. 修改pom文件原来是jar改成<packaging>war</packaging> 2. 在pom文件中添加移除内置tomcat并且添加添加servlet-api的依赖. ...

  5. HTML页面中5种超酷的伪类选择器:hover效果

    想在自己的网站中应用超酷的hover效果吗?也许你可以从如下的这些实例中获得一些灵感,如果你喜欢这些效果,也可以直接拷贝代码并应用到你的站点. 给平淡的站点带来活力 hover效果能给网页增加一些动态 ...

  6. jvm 内存溢出 在myeclipse中加大tomcat的jvm内存 java.lang.OutOfMemoryError: PermGen space

    使用myeclipse启动两个SSH2的部署在tomcat6下的项目 报出java.lang.OutOfMemoryError: PermGen space 解决办法: 在myeclipse中加大jv ...

  7. UIWebView与js那些事

    UIWebView是IOS SDK中渲染网面的控件,在显示网页的时候,我们可以hack网页然后显示想显示的内容.其中就要用到javascript的知识,而UIWebView与javascript交互的 ...

  8. 左右分栏页面右侧无法出现滚动条bug

    问题记录 项目比较老了,左右分栏的页面,导航栏右边是一个iframe组成的页面,通过某个操作后,页面右侧内容区域无法实现滚动 问题查明 遇见过好几次,最后查明,总结一句话,修改了右侧页面body的ov ...

  9. vector性能调优之resize与reserve

    vector的resize与reserve reserve()函数为当前vector预留至少共容纳size个元素的空间.(译注:实际空间可能大于size) resize() 函数( void resi ...

  10. tomcat域名配置

    修改tomcat目录下的web配置文件 vim conf/server.xml 在host标签内添加 <Context path="bbs" docBase="/a ...