查看: 7772|回复: 7

在pcduino上构建自己的电话局–voip服务器

[复制链接]
  • TA的每日心情
    郁闷
    2013-6-3 09:22
  • 签到天数: 29 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2013-6-24 13:56:50 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 pcduino 于 2013-6-24 14:45 编辑

    现在大家有时会收到电信运营商的推销短信,例如什么彩铃5月每月,一些收费服务。
    这里给大家介绍一个开源项目,在pcduino实现免费的电话局,可以在这个电话局上实现彩铃,电话转接,来电显示等等一些功能。
    这里采用的用的是3G+asterisk+freepbx方案,这里3G是电话局的物理前端,freepbx是电话局的图形界面操作后台,asterisk就是开源的voip服务器,具体的开发过程如下:
    一,下载安装asterisk
    1,首先在官网上下载asterisk11源码:下载地址http://www.asterisk.org/downloads
    2,安装环境
    1. sudo apt-get install sqlite3 libsqlite3-dev libxml2-dev g++ ncurses-dev

    2. tar xvfz asterisk-11-current.tar.gz

    3. cd asterisk-*
    4. ./configure
    5. contrib/scripts/get_mp3_source.sh
    6. make menuselect
    7. make
    8. make install
    9. make config
    复制代码
    安装完成之后可以执行:
    asterisk  -vr
    来启动asterisk命令模式,如果执行命令提示什么打不开,需要执行asterisk start 来启动服务器。
    安装成功后,会有以下命令行模式:
    1. root@ubuntu:/home/ubuntu# asterisk -vr
    2. Asterisk 11.3.0, Copyright (C) 1999 - 2012 Digium, Inc. and others.
    3. Created by Mark Spencer <markster@digium.com>
    4. Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
    5. This is free software, with components licensed under the GNU General Public
    6. License version 2 and other licenses; you are welcome to redistribute it under
    7. certain conditions. Type 'core show license' for details.
    8. =========================================================================
    9. Connected to Asterisk 11.3.0 currently running on ubuntu (pid = 847)
    10. ubuntu*CLI>

    复制代码
    3、安装3G上网卡在asterisk上面的驱动首先要保证3G上网卡可以在pcduino上可以上网,具体的实现过程详见文章
    http://www.linksprite.com/cnblog/?p=794
    然后要保证你的3G上网卡有打电话的功能,此项目中用的是华为E1752
    具体的有哪些型号可以用请参加华为的官网说明。
    下面开始安装3G上网卡连接asterisk的驱动:
    安装asterisk的3G上网卡的驱动
    1. wget http://кушеев.рф/wp-content/uploads/asterisk-chan-dongle-asterisk11.zip

    2. unzip asterisk-chan-dongle-asterisk11.zip
    3. cd asterisk-chan-dongle-asterisk11
    4. aclocal
    5. autoconf
    6. automake -a
    7. ./configure
    8. make
    9. make install
    10. cp etc/dongle.conf /etc/asterisk
    复制代码
    安装成功后,下面可以测试可以测试一下:
    1》检测物理设备
    S6R63}Y~(VFHAZJ1V[TG.jpg


    2》给上网卡打电话
    _DL)Y4Z~_43B}DK@`OSJBRK.jpg

    3》给上网卡发短信
    AMT6GA4V})58V5TRRSVTSJE.jpg


    可以看到我发的短信的内容。
    可以看到3G和asterisk都已经安装完成。


    二,安装voip图形化管理界面freepbx
    1、安装依赖文件
    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
    1. wget https://iksemel.googlecode.com/files/iksemel-1.4.tar.gz

    2. tar xf iksemel-1.4.tar.gz
    3. cd iksemel-1.4
    4. ./configure
    5. make
    6. make install
    复制代码
    3、安装iksemel
    1. wget https://iksemel.googlecode.com/files/iksemel-1.4.tar.gz

    2. tar xf iksemel-1.4.tar.gz
    3. cd iksemel-1.4
    4. ./configure
    5. make
    6. make install
    复制代码
    4、安装DAHDI
    1. wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz
    2. tar xvfz dahdi-linux-complete-current.tar.gz

    3. cd dahdi-linux-complete-2.6.1+2.6.1
    4. make all
    5. make install
    6. make config
    复制代码
    当make all的时候会提示你没有安装kenral源码,然后就打印出错误信息,下面就介绍如果解决这个问题。
    出现这个错误的主要原因是我们开发的内核源码没有提供安装包,只要我们把内核源码放在指定位置就可以了,但是源码有600M,很显然我们不能放到板子上,如果是用的是531的系统,那就恭喜你,你直接拷贝过来就行了。
    为了解决空间问题,我们可以把在X86上搭建NFS服务器,把源码挂载到板子上。具体的在搭建NFS服务器的步骤我就不介绍了。
    首先在板子上安装nfs文件支持。
    1. sudo apt-get intall nfs-common
    复制代码
    然后执行命令,挂载NFS网络文件系统。
    1. root@ubuntu:/home/ubuntu# mount -t nfs -o nolock 192.168.3.115:/usr/src/linuxsunxi /lib/modules/3.4.29+/build/
    复制代码
    )5TQW7A6@DI{F34IOR@Q59F.jpg

    挂载成功后需要在pcduino上配置,编译源码,比较慢,大概3个小时的样子。由于需要编译生成uImage,需要mkimage。这里不能把X86的拷贝过来直接用,需要在pcduino上编译生成ARM架构然后拷贝到/usr/bin目录下。由于我们的需要用到源码对应的内核,所以需要把内核和驱动都换掉,具体的不知道怎么换的,请参考我前面的帖子《pcduino内核开发指南》。换驱动比较简单,在make uImage之后,执行make  modules_install install就可以了。换掉内核和驱动之后重启一下。
    5、安装libpri
    1. wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.4-current.tar.gz
    2. tar xvfz libpri-1.4-current.tar.gz
    3. cd libpri-1.4.14
    4. make
    5. make install
    复制代码
    6、安装Asterisk-Extra-Sounds
    1. cd /var/lib/asterisk/sounds
    2. wget http://downloads.asterisk.org/pub/telephony/sounds/asterisk-extra-sounds-en-gsm-current.tar.gz
    3. tar xfz asterisk-extra-sounds-en-gsm-current.tar.gz
    4. rm asterisk-extra-sounds-en-gsm-current.tar.gz
    复制代码
    7、安装配置freepbx
    1. export VER_FREEPBX=2.11
    2. cd /usr/src
    3. svn co http://www.freepbx.org/v2/svn/freepbx/branches/${VER_FREEPBX} freepbx
    4. cd freepbx
    5. <b>adduser asterisk --disabled-password --no-create-home --gecos "Asterisk User"</b>

    6. chown asterisk. /var/run/asterisk
    7. chown -R asterisk. /etc/asterisk
    8. chown -R asterisk. /var/{lib,log,spool}/asterisk
    9. chown -R asterisk. /usr/lib/asterisk
    10. mkdir /var/www/html
    11. chown -R asterisk. /var/www/
    12. sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php5/apache2/php.ini

    13. cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf_orig
    14. sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/apache2/apache2.conf
    15. service apache2 restart
    复制代码
    配置数据库
    1. export ASTERISK_DB_PW=amp109

    2. mysqladmin -u root create asterisk
    3. mysqladmin -u root create asteriskcdrdb
    4. mysql -u root asterisk < SQL/newinstall.sql
    5. mysql -u root asteriskcdrdb < SQL/cdr_mysql_table.sql
    复制代码
    设置数据库
    1. mysql -u root -e "GRANT ALL PRIVILEGES ON asterisk.* TO asteriskuser@localhost IDENTIFIED BY '${ASTERISK_DB_PW}';"

    2. mysql -u root -e "GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asteriskuser@localhost IDENTIFIED BY '${ASTERISK_DB_PW}';"

    3. mysql -u root -e "flush privileges;"
    复制代码
    开始安装freepbx
    1. ./start_asterisk start
    2. ./install_amp --webroot /var/www/freepbx
    3. amportal a ma installall
    4. amportal a reload
    5. ./install_amp --username=asteriskuser --password=$ASTERISK_DB_PW --webroot /var/www/freepbx
    6. ln -s /var/lib/asterisk/moh /var/lib/asterisk/mohmp3
    7. amportal start
    8. cd /etc/asterisk
    9. 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服务器的状态。
    1. /etc/init.d/apache2 status
    复制代码
    第二,检测web服务器的目录是不是/var/www/freepbx/

    7TTM(DZP%}WGM[8E9){[(F2.jpg

    这就是登录界面,选择管理员,这里可能你设置的用户名和密码会失效,直接用户名和密码都是admin就可以了,下面是登录进去的界面。
    $T4ZMRM7%B_R3NYW7(~YP[Y.jpg
    如果你对freepbx很熟悉,这个你应该会感觉很亲切。这里为止服务器已经搭建好了,你可以去设置你想要的功能。前提条件是对freebpx比较熟,下面一篇文章介绍一个入门,教大家设置彩铃。

    回复

    使用道具 举报

    该用户从未签到

    发表于 2013-6-25 16:51:09 | 显示全部楼层
    为啥我编译asterisk的时候 失败了呢?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2013-6-3 09:22
  • 签到天数: 29 天

    连续签到: 1 天

    [LV.4]偶尔看看III

     楼主| 发表于 2013-6-26 09:26:43 | 显示全部楼层
    yangking91 发表于 2013-6-24 16:01
    为什么在pcduino上本地编译?用arm-linux-gcc交叉编译就行了,速度快

    一般的arm板上没有这个linux系统还有环境,只是有个内核,编译不了。pcduino有ubuntu环境,可以直接编译运行
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2013-6-3 09:22
  • 签到天数: 29 天

    连续签到: 1 天

    [LV.4]偶尔看看III

     楼主| 发表于 2013-6-26 09:29:18 | 显示全部楼层
    Franky 发表于 2013-6-25 16:51
    为啥我编译asterisk的时候 失败了呢?

    安装环境都配置好了不?有没有编译失败的错误提示神马的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2013-6-26 14:39:00 | 显示全部楼层
    pcduino 发表于 2013-6-26 09:29
    安装环境都配置好了不?有没有编译失败的错误提示神马的

    不是默认配置吗?我./configure之后就直接make然后出bug了。 还要手动修改某些配置吗?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2013-6-3 09:22
  • 签到天数: 29 天

    连续签到: 1 天

    [LV.4]偶尔看看III

     楼主| 发表于 2013-6-26 16:13:59 | 显示全部楼层
    yangking91 发表于 2013-6-26 15:59
    恩,我知道pcduino上有linux开发环境,linux开发环境可以在x86的机器上建立,然后用交叉工具链arm-linux- ...

    彩铃这是完全免费的,电话短信的话算话费
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2013-6-3 09:22
  • 签到天数: 29 天

    连续签到: 1 天

    [LV.4]偶尔看看III

     楼主| 发表于 2013-6-26 16:17:54 | 显示全部楼层
    Franky 发表于 2013-6-26 14:39
    不是默认配置吗?我./configure之后就直接make然后出bug了。 还要手动修改某些配置吗? ...

    是默认配置的,只要把依赖文件装好了就ok,所以先确定文件是否都装好了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2013-6-28 14:18:43 | 显示全部楼层
    有freeswitch的么?是不是这个的功能跟freeswitch是一样的呢?
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-11-19 16:35 , Processed in 0.195605 second(s), 31 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.