如今你們有時會收到電信運營商的推銷短信,例如什麼彩鈴5月每個月,一些收費服務。 php
這裏給你們介紹一個開源項目,在pcduino實現免費的電話局,能夠在這個電話局上實現彩鈴,電話轉接,來電顯示等等一些功能。 css
這裏採用的用的是3G+asterisk+freepbx方案,這裏3G是電話局的物理前端,freepbx是電話局的圖形界面操做後臺,asterisk就是開源的voip服務器,具體的開發過程以下: html
一,下載安裝asterisk 前端
1,首先在官網上下載asterisk11源碼:下載地址http://www.asterisk.org/downloads mysql
2,安裝環境 linux
sudo apt-get install sqlite3 libsqlite3-dev libxml2-dev g++ ncurses-dev git
tar xvfz asterisk-11-current.tar.gz web
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> redis
2,安裝3G上網卡在asterisk上面的驅動
首先要保證3G上網卡能夠在pcduino上能夠上網,具體的實現過程詳見文章
而後要保證你的3G上網卡有打電話的功能,此項目中用的是華爲E1752
具體的有哪些型號能夠用請參加華爲的官網說明。
下面開始安裝3G上網卡鏈接asterisk的驅動:
安裝asterisk的3G上網卡的驅動 sql
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
pear install db
這裏會提示WARNING: "pear/DB" is deprecated in favor of "pear/MDB2",能夠忽略這個警告
安裝後reboot重啓一下。
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
adduser asterisk --disabled-password --no-create-home --gecos "Asterisk User"
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
若是出現錯誤,請檢測兩個地方:
第一,這是基於web服務器的網頁,檢測web服務器的狀態。
/etc/init.d/apache2 status
第二,檢測web服務器的目錄是否是/var/www/freepbx/
這就是登陸界面,選擇管理員,這裏可能你設置的用戶名和密碼會失效,直接用戶名和密碼都是admin就能夠了,下面是登陸進去的界面。
若是你對freepbx很熟悉,這個你應該會感受很親切。這裏爲止服務器已經搭建好了,你能夠去設置你想要的功能。前提條件是對freebpx比較熟,下面一篇文章介紹一個入門,教你們設置彩鈴。