本帖最后由 pcduino 于 2013-6-24 14:45 编辑
现在大家有时会收到电信运营商的推销短信,例如什么彩铃5月每月,一些收费服务。这里给大家介绍一个开源项目,在pcduino实现免费的电话局,可以在这个电话局上实现彩铃,电话转接,来电显示等等一些功能。 这里采用的用的是3G+asterisk+freepbx方案,这里3G是电话局的物理前端,freepbx是电话局的图形界面操作后台,asterisk就是开源的voip服务器,具体的开发过程如下: 一,下载安装asterisk 2,安装环境
- sudo apt-get install sqlite3 libsqlite3-dev libxml2-dev g++ ncurses-dev
- tar xvfz asterisk-11-current.tar.gz
- cd asterisk-*
- ./configure
- contrib/scripts/get_mp3_source.sh
- make menuselect
- make
- make install
- make config
复制代码 安装完成之后可以执行:
asterisk -vr
来启动asterisk命令模式,如果执行命令提示什么打不开,需要执行asterisk start 来启动服务器。
安装成功后,会有以下命令行模式:- root@ubuntu:/home/ubuntu# asterisk -vr
- Asterisk 11.3.0, Copyright (C) 1999 - 2012 Digium, Inc. and others.
- Created by Mark Spencer <markster@digium.com>
- Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
- This is free software, with components licensed under the GNU General Public
- License version 2 and other licenses; you are welcome to redistribute it under
- certain conditions. Type 'core show license' for details.
- =========================================================================
- Connected to Asterisk 11.3.0 currently running on ubuntu (pid = 847)
- ubuntu*CLI>
复制代码 3、安装3G上网卡在asterisk上面的驱动首先要保证3G上网卡可以在pcduino上可以上网,具体的实现过程详见文章
http://www.linksprite.com/cnblog/?p=794
然后要保证你的3G上网卡有打电话的功能,此项目中用的是华为E1752
具体的有哪些型号可以用请参加华为的官网说明。
下面开始安装3G上网卡连接asterisk的驱动:
安装asterisk的3G上网卡的驱动- wget http://кушеев.рф/wp-content/uploads/asterisk-chan-dongle-asterisk11.zip
- unzip asterisk-chan-dongle-asterisk11.zip
- cd asterisk-chan-dongle-asterisk11
- aclocal
- autoconf
- automake -a
- ./configure
- make
- make install
- cp etc/dongle.conf /etc/asterisk
复制代码 安装成功后,下面可以测试可以测试一下:
1》检测物理设备
2》给上网卡打电话
3》给上网卡发短信
可以看到我发的短信的内容。 可以看到3G和asterisk都已经安装完成。
二,安装voip图形化管理界面freepbx
1、安装依赖文件- apt-get install -y build-essential linux-headers-`uname -r` openssh-server apache2 mysql-server mysql-client bison flex php5 php5-curl php5-cli php5-mysql php-pear php-db php5-gd curl sox libncurses5-dev libssl-dev libmysqlclient15-dev mpg123 libxml2-dev libnewt-dev sqlite3 libsqlite3-dev pkg-config automake libtool autoconf git subversion
复制代码 这里会提示linux-headers-`uname -r`这个命令的包找不到,没有关系,下面将会为你解决这个问题。
2、安装PearDB- wget https://iksemel.googlecode.com/files/iksemel-1.4.tar.gz
- tar xf iksemel-1.4.tar.gz
- cd iksemel-1.4
- ./configure
- make
- make install
复制代码 3、安装iksemel- wget https://iksemel.googlecode.com/files/iksemel-1.4.tar.gz
- tar xf iksemel-1.4.tar.gz
- cd iksemel-1.4
- ./configure
- make
- make install
复制代码 4、安装DAHDI- wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz
- tar xvfz dahdi-linux-complete-current.tar.gz
- cd dahdi-linux-complete-2.6.1+2.6.1
- make all
- make install
- make config
复制代码 当make all的时候会提示你没有安装kenral源码,然后就打印出错误信息,下面就介绍如果解决这个问题。
出现这个错误的主要原因是我们开发的内核源码没有提供安装包,只要我们把内核源码放在指定位置就可以了,但是源码有600M,很显然我们不能放到板子上,如果是用的是531的系统,那就恭喜你,你直接拷贝过来就行了。
为了解决空间问题,我们可以把在X86上搭建NFS服务器,把源码挂载到板子上。具体的在搭建NFS服务器的步骤我就不介绍了。
首先在板子上安装nfs文件支持。- sudo apt-get intall nfs-common
复制代码 然后执行命令,挂载NFS网络文件系统。- root@ubuntu:/home/ubuntu# mount -t nfs -o nolock 192.168.3.115:/usr/src/linuxsunxi /lib/modules/3.4.29+/build/
复制代码
挂载成功后需要在pcduino上配置,编译源码,比较慢,大概3个小时的样子。由于需要编译生成uImage,需要mkimage。这里不能把X86的拷贝过来直接用,需要在pcduino上编译生成ARM架构然后拷贝到/usr/bin目录下。由于我们的需要用到源码对应的内核,所以需要把内核和驱动都换掉,具体的不知道怎么换的,请参考我前面的帖子《pcduino内核开发指南》。换驱动比较简单,在make uImage之后,执行make modules_install install就可以了。换掉内核和驱动之后重启一下。
5、安装libpri- wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.4-current.tar.gz
- tar xvfz libpri-1.4-current.tar.gz
- cd libpri-1.4.14
- make
- make install
复制代码 6、安装Asterisk-Extra-Sounds - cd /var/lib/asterisk/sounds
- wget http://downloads.asterisk.org/pub/telephony/sounds/asterisk-extra-sounds-en-gsm-current.tar.gz
- tar xfz asterisk-extra-sounds-en-gsm-current.tar.gz
- rm asterisk-extra-sounds-en-gsm-current.tar.gz
复制代码 7、安装配置freepbx- export VER_FREEPBX=2.11
- cd /usr/src
- svn co http://www.freepbx.org/v2/svn/freepbx/branches/${VER_FREEPBX} freepbx
- cd freepbx
- <b>adduser asterisk --disabled-password --no-create-home --gecos "Asterisk User"</b>
- chown asterisk. /var/run/asterisk
- chown -R asterisk. /etc/asterisk
- chown -R asterisk. /var/{lib,log,spool}/asterisk
- chown -R asterisk. /usr/lib/asterisk
- mkdir /var/www/html
- chown -R asterisk. /var/www/
- sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php5/apache2/php.ini
- cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf_orig
- sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/apache2/apache2.conf
- service apache2 restart
复制代码 配置数据库- export ASTERISK_DB_PW=amp109
- mysqladmin -u root create asterisk
- mysqladmin -u root create asteriskcdrdb
- mysql -u root asterisk < SQL/newinstall.sql
- mysql -u root asteriskcdrdb < SQL/cdr_mysql_table.sql
复制代码 设置数据库- mysql -u root -e "GRANT ALL PRIVILEGES ON asterisk.* TO asteriskuser@localhost IDENTIFIED BY '${ASTERISK_DB_PW}';"
- mysql -u root -e "GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asteriskuser@localhost IDENTIFIED BY '${ASTERISK_DB_PW}';"
- mysql -u root -e "flush privileges;"
复制代码 开始安装freepbx- ./start_asterisk start
- ./install_amp --webroot /var/www/freepbx
- amportal a ma installall
- amportal a reload
- ./install_amp --username=asteriskuser --password=$ASTERISK_DB_PW --webroot /var/www/freepbx
- ln -s /var/lib/asterisk/moh /var/lib/asterisk/mohmp3
- amportal start
- cd /etc/asterisk
- rm ccss.conf confbridge.conf features.conf sip.conf iax.conf logger.conf extensions.conf sip_notify.conf
复制代码 现在可以在win7上打开http://192.168.3.114/admin/config.php这个网址,前面的IP就是pcduino的IP。
如果出现错误,请检测两个地方:
第一,这是基于web服务器的网页,检测web服务器的状态。- /etc/init.d/apache2 status
复制代码 第二,检测web服务器的目录是不是/var/www/freepbx/
这就是登录界面,选择管理员,这里可能你设置的用户名和密码会失效,直接用户名和密码都是admin就可以了,下面是登录进去的界面。
如果你对freepbx很熟悉,这个你应该会感觉很亲切。这里为止服务器已经搭建好了,你可以去设置你想要的功能。前提条件是对freebpx比较熟,下面一篇文章介绍一个入门,教大家设置彩铃。
|