Blog tổng hợp và chia sẻ nội dung và học thuật về IT. Cảm ơn các bạn đã quan tâm.
Hiển thị các bài đăng có nhãn VoIP. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn VoIP. Hiển thị tất cả bài đăng
Thứ Ba, 18 tháng 6, 2013
Thứ Bảy, 8 tháng 6, 2013
Hướng dẫn cài đặt Add-ons Asterisk sử dụng Database MySQL [realtime]
- Ở đây mình dùng Asrerisk 1.8.2.1, các bạn có thể down source asterisk "tại đây"
- Sau đó cài đặt các Add-on của Asterisk cần thiết vào mysql
- Mình sẽ hướng dẫn cách add các table theo chuẩn của Asterisk vào Mysql
Đầu tiên các bạn install mysql server, các bạn tham khảo link dưới:
http://forums.fedoraforum.org/showthread.php?t=255254
Các bạn dùng lệnh trong sql để tạo user đăng nhập cũng như database tên Asterisk sẵn. Cách tạo đều có trong link trên.
Các bạn dùng lệnh trong sql để tạo user đăng nhập cũng như database tên Asterisk sẵn. Cách tạo đều có trong link trên.
Sau đó, down source asterisk ở trên, và dùng lệnh sau để giải nén file vừa tải về
# tar -zxvf asterisk 1.8.2.1.tar.gz
Di chuyển vào thư mục vừa giải nén, và thực hiện lần lượt các lệnh sau:
#cd asterisk1.8.2.1
#./configure
#make menuselect
Sau đó chọn các add-on của Asterisk bằng cách Enter vào Add-ons như sau:
**************************************************
Asterisk Module and Build Option Selection
**************************************************
Press 'h' for help.
---->Add-ons (Check vào 3 ô: [*]app_mysql , [*]cdr_mysql , [*]res_config_mysql]
ApplicationsSau đó tiếp 2 lệnh sau
Bridging Modules
Call Detail Recording
Channel Event Logging
Channel Drivers
Codec Translators
Format Interpreters
Dialplan Functions
PBX Modules
Resource Modules
Test Modules
Compiler Flags
Voicemail Build Options
Utilities
AGI Samples
----> Module Embedding (Check vào ô [*]ADDONS)
Core Sound Packages
Music On Hold File Packages
Extras Sound Packages
#make
#make install
Tiếp tục cài đặt httpd, php, phpmyadmin nếu như các bạn chưa cài (mục đích để quản lý SQL của Asterisk thông qua giao diện web phpmyadmin):
# yum install httpd
# chkconfig --levels 235 httpd on
# /etc/init.d/httpd start
Chúng ta sử dụng câu lệnh sau để cài đặt PHP5 và các module hỗ trợ
# yum install php
# /etc/init.d/httpd restart
Tiếp theo, chúng ta sẽ tạo 1 file php nhỏ(info.php) và tiến hành gọi file đó bằng trình duyệt. File này sẽ
hiển thị tất cảcác chi tiết trong trong quá trình cài đặt PHP:
# vi /var/www/html/info.php
<?php
phpinfo();
?>
Để gọi file info.php, gõ địa chỉ sau vào trình duyệt (ở bài viết này là http://127.0.0.1/info.php)
Thiết lập đê PHP hỗ trợ MYSQL
Để làm việc này, chúng ta phải cài đặt gói php-mysql. Các bạn nên tìm kiếm gói
này bằng câu lệnh sau:
# yum search php
# yum install php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-eaccelerator php-magickwand php-magpierss php-mbstring php-mcrypt php-mssql php-shout php-snmp php-soap php-tidy
# /etc/init.d/httpd restart
Truy cập lại địa chỉ http://127.0.0.1/info.php, và bạn sẽ thấy sự khác biệt với nhiều module mới, có bao gồm MySQL
Cài đặt Phpmyadmin
phpMyAdmin là bảng điều khiển cơ sở dữ liệu MySQL với giao diện web. Các bạn có thê cài đặt phpMyAdmin bằng cách:
# yum install phpmyadmin
Tiếp theo, chúng ta phải điều chỉnh phpMyAdmin để phpMyAdmin cho phép những kết nối khác nhau không chỉ từ localhost:
# vi /etc/httpd/conf.d/phpMyAdmin.conf
Xóa nội dung cũ và copy nội dung bên dưới vào file
# phpMyAdmin - Web based MySQL browser written in php
#
# Allows only localhost by default
#
# But allowing phpMyAdmin to anyone other than localhost should be considered
# dangerous unless properly secured by SSL
Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin
#<Directory /usr/share/phpMyAdmin/>
# order deny,allow
# deny from all
# allow from 127.0.0.1
# allow from ::1
#</Directory>
# This directory does not require access over HTTP - taken from the original
# phpMyAdmin upstream tarball
#
<Directory /usr/share/phpMyAdmin/libraries>
Order Deny,Allow
Deny from All
Allow from None
</Directory>
# This configuration prevents mod_security at phpMyAdmin directories from
# filtering SQL etc. This may break your mod_security implementation.
#
#<IfModule mod_security.c>
# <Directory /usr/share/phpMyAdmin>
# SecRuleInheritance Off
# </Directory>
#</IfModule>
Sau đó khởi động lại Apache:
# /etc/init.d/httpd restart
Khi hoàn thành, chúng ta có thể truy cập phpMyAdmin qua địa chỉ http://127.0.0.1/phpmyadmin/
Tiếp theo, sau khi mọi thứ hoàn tất, tại web http://127.0.0.1/phpmyadmin/ , chúng ta vào database tên, Asterisk để thêm các table theo chuẩn asterisk vào:
Bên trái là ta đã chọn database tên Asterisk do lúc đầu mình tạo, bên phải chỗ Import là nơi để add các file có sẵn trong thư mục asterisk 1.8.2.1 mà các bạn đã down và giải nén khi nãy.
Chọn Browse trõ tới các file đó
Ở trên là đường dẫn nơi thư mục asterisk 1.8.2.1 đã được giải nén, tùy nơi mà các bạn giải nén mà trỏ tới. Bên dưới là các file, ta add lần lượt các file đó vào.
Tuy nhiên lưu ý: 2 file queue_log.sql và sipfriends.sql sẽ bị sai vào chỗ, các bạn nên sửa file đó theo nội dung bên dưới
Với file sipfriends.sql, nội dung file là:
#
# Table structure for table `sipfriends`
#
CREATE TABLE `sipfriends` (
`name` varchar(40) NOT NULL default '',
`type` varchar(10) NOT NULL default '',
`username` varchar(40),
`fromuser` varchar(40),
`fromdomain` varchar(40),
`secret` varchar(40),
`md5secret` varchar(40),
`auth` varchar(10),
`mailbox` varchar(20),
`subscribemwi` varchar(10), -- yes/no
`vmexten` varchar(20),
`callerid` varchar(40),
`cid_number` varchar(40),
`callingpres` varchar(20),
`usereqphone` varchar(10),
`language` varchar(10),
`incominglimit` varchar(10),
`context` varchar(40) NOT NULL default '',
`subscribecontext` varchar(40),
`amaflags` varchar(20),
`accountcode` varchar(20),
`musicclass` varchar(20),
`mohsuggest` varchar(20),
`allowtransfer` varchar(20),
`callgroup` varchar(20),
`pickupgroup` varchar(20),
`autoframing` varchar(10), -- yes/no
`disallow` varchar(20) default 'all',
`allow` varchar(20),
`maxcallbitrate` varchar(15),
`host` varchar(40) default 'dynamic',
`outboundproxy` varchar(40),
`ipaddr` varchar(40) NOT NULL default '',
`defaultip` varchar(20),
`port` int(6) NOT NULL default '0',
`fullcontact` varchar(40),
`insecure` varchar(20),
`qualify` varchar(15),
`regseconds` int(11) NOT NULL default '0',
`regexten` varchar(20),
`regserver` varchar(20),
`rtptimeout` varchar(15),
`rtpholdtimeout` varchar(15),
`rtpkeepalive` varchar(15),
`lastms` int(11) NOT NULL default '-1',
`setvar` varchar(200),
PRIMARY KEY (`name`),
INDEX host (host, port),
INDEX ipaddr (ipaddr, port)
) ENGINE=MyISAM;
Với file queue_log.sql sẽ là:
CREATE TABLE queue_log (
-- Event date and time
time datetime,
-- "REALTIME", "NONE", or channel uniqueid
callid char(50),
-- Name of the queue affected
queuename char(50),
-- Interface name of the queue member
agent char(50),
-- One of ADDMEMBER, REMOVEMEMBER, RINGNOANSWER, EXITEMPTY, TRANSFER,
-- AGENTDUMP, ABANDON, SYSCOMPAT, CONNECT, COMPLETECALLER, COMPLETEAGENT,
-- PAUSEALL, UNPAUSEALL, PAUSE, UNPAUSE, PENALTY, ENTERQUEUE,
-- EXITWITHTIMEOUT, EXITEMPTY, EXITWITHKEY, or another defined by the user.
event char(20),
-- data1 through data5 are possible arguments to the event, the definitions
-- of which are dependent upon the type of event.
data1 char(50),
data2 char(50),
data3 char(50),
data4 char(50),
data5 char(50),
index bydate (time),
index qname (queuename,time)
)
Cuối cùng là thành quả, sau khi đã add thành công các table
Tiếp tục cài đặt httpd, php, phpmyadmin nếu như các bạn chưa cài (mục đích để quản lý SQL của Asterisk thông qua giao diện web phpmyadmin):
# yum install httpd
# chkconfig --levels 235 httpd on
# /etc/init.d/httpd start
Chúng ta sử dụng câu lệnh sau để cài đặt PHP5 và các module hỗ trợ
# yum install php
# /etc/init.d/httpd restart
Tiếp theo, chúng ta sẽ tạo 1 file php nhỏ(info.php) và tiến hành gọi file đó bằng trình duyệt. File này sẽ
hiển thị tất cảcác chi tiết trong trong quá trình cài đặt PHP:
# vi /var/www/html/info.php
<?php
phpinfo();
?>
Để gọi file info.php, gõ địa chỉ sau vào trình duyệt (ở bài viết này là http://127.0.0.1/info.php)
Thiết lập đê PHP hỗ trợ MYSQL
Để làm việc này, chúng ta phải cài đặt gói php-mysql. Các bạn nên tìm kiếm gói
này bằng câu lệnh sau:
# yum search php
# yum install php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-eaccelerator php-magickwand php-magpierss php-mbstring php-mcrypt php-mssql php-shout php-snmp php-soap php-tidy
# /etc/init.d/httpd restart
Truy cập lại địa chỉ http://127.0.0.1/info.php, và bạn sẽ thấy sự khác biệt với nhiều module mới, có bao gồm MySQL
Cài đặt Phpmyadmin
phpMyAdmin là bảng điều khiển cơ sở dữ liệu MySQL với giao diện web. Các bạn có thê cài đặt phpMyAdmin bằng cách:
# yum install phpmyadmin
Tiếp theo, chúng ta phải điều chỉnh phpMyAdmin để phpMyAdmin cho phép những kết nối khác nhau không chỉ từ localhost:
# vi /etc/httpd/conf.d/phpMyAdmin.conf
Xóa nội dung cũ và copy nội dung bên dưới vào file
# phpMyAdmin - Web based MySQL browser written in php
#
# Allows only localhost by default
#
# But allowing phpMyAdmin to anyone other than localhost should be considered
# dangerous unless properly secured by SSL
Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin
#<Directory /usr/share/phpMyAdmin/>
# order deny,allow
# deny from all
# allow from 127.0.0.1
# allow from ::1
#</Directory>
# This directory does not require access over HTTP - taken from the original
# phpMyAdmin upstream tarball
#
<Directory /usr/share/phpMyAdmin/libraries>
Order Deny,Allow
Deny from All
Allow from None
</Directory>
# This configuration prevents mod_security at phpMyAdmin directories from
# filtering SQL etc. This may break your mod_security implementation.
#
#<IfModule mod_security.c>
# <Directory /usr/share/phpMyAdmin>
# SecRuleInheritance Off
# </Directory>
#</IfModule>
Sau đó khởi động lại Apache:
# /etc/init.d/httpd restart
Khi hoàn thành, chúng ta có thể truy cập phpMyAdmin qua địa chỉ http://127.0.0.1/phpmyadmin/
Tiếp theo, sau khi mọi thứ hoàn tất, tại web http://127.0.0.1/phpmyadmin/ , chúng ta vào database tên, Asterisk để thêm các table theo chuẩn asterisk vào:
Bên trái là ta đã chọn database tên Asterisk do lúc đầu mình tạo, bên phải chỗ Import là nơi để add các file có sẵn trong thư mục asterisk 1.8.2.1 mà các bạn đã down và giải nén khi nãy.
Chọn Browse trõ tới các file đó
Ở trên là đường dẫn nơi thư mục asterisk 1.8.2.1 đã được giải nén, tùy nơi mà các bạn giải nén mà trỏ tới. Bên dưới là các file, ta add lần lượt các file đó vào.
Tuy nhiên lưu ý: 2 file queue_log.sql và sipfriends.sql sẽ bị sai vào chỗ, các bạn nên sửa file đó theo nội dung bên dưới
Với file sipfriends.sql, nội dung file là:
#
# Table structure for table `sipfriends`
#
CREATE TABLE `sipfriends` (
`name` varchar(40) NOT NULL default '',
`type` varchar(10) NOT NULL default '',
`username` varchar(40),
`fromuser` varchar(40),
`fromdomain` varchar(40),
`secret` varchar(40),
`md5secret` varchar(40),
`auth` varchar(10),
`mailbox` varchar(20),
`subscribemwi` varchar(10), -- yes/no
`vmexten` varchar(20),
`callerid` varchar(40),
`cid_number` varchar(40),
`callingpres` varchar(20),
`usereqphone` varchar(10),
`language` varchar(10),
`incominglimit` varchar(10),
`context` varchar(40) NOT NULL default '',
`subscribecontext` varchar(40),
`amaflags` varchar(20),
`accountcode` varchar(20),
`musicclass` varchar(20),
`mohsuggest` varchar(20),
`allowtransfer` varchar(20),
`callgroup` varchar(20),
`pickupgroup` varchar(20),
`autoframing` varchar(10), -- yes/no
`disallow` varchar(20) default 'all',
`allow` varchar(20),
`maxcallbitrate` varchar(15),
`host` varchar(40) default 'dynamic',
`outboundproxy` varchar(40),
`ipaddr` varchar(40) NOT NULL default '',
`defaultip` varchar(20),
`port` int(6) NOT NULL default '0',
`fullcontact` varchar(40),
`insecure` varchar(20),
`qualify` varchar(15),
`regseconds` int(11) NOT NULL default '0',
`regexten` varchar(20),
`regserver` varchar(20),
`rtptimeout` varchar(15),
`rtpholdtimeout` varchar(15),
`rtpkeepalive` varchar(15),
`lastms` int(11) NOT NULL default '-1',
`setvar` varchar(200),
PRIMARY KEY (`name`),
INDEX host (host, port),
INDEX ipaddr (ipaddr, port)
) ENGINE=MyISAM;
Với file queue_log.sql sẽ là:
CREATE TABLE queue_log (
-- Event date and time
time datetime,
-- "REALTIME", "NONE", or channel uniqueid
callid char(50),
-- Name of the queue affected
queuename char(50),
-- Interface name of the queue member
agent char(50),
-- One of ADDMEMBER, REMOVEMEMBER, RINGNOANSWER, EXITEMPTY, TRANSFER,
-- AGENTDUMP, ABANDON, SYSCOMPAT, CONNECT, COMPLETECALLER, COMPLETEAGENT,
-- PAUSEALL, UNPAUSEALL, PAUSE, UNPAUSE, PENALTY, ENTERQUEUE,
-- EXITWITHTIMEOUT, EXITEMPTY, EXITWITHKEY, or another defined by the user.
event char(20),
-- data1 through data5 are possible arguments to the event, the definitions
-- of which are dependent upon the type of event.
data1 char(50),
data2 char(50),
data3 char(50),
data4 char(50),
data5 char(50),
index bydate (time),
index qname (queuename,time)
)
Cuối cùng là thành quả, sau khi đã add thành công các table
Thứ Hai, 29 tháng 4, 2013
[VoIP] Kết hợp Voicemail và Local Channel
Xây dựng Dial plan thỏa các yêu cầu sau :
User A goi User B, B đổ chuông trong 20 giây.
Nếu B không bắt máy thì user C sẽ đổ chuông trong 20 giây.
Nếu C không bắt máy thì chuyển cuộc gọi đến hộp thư thoại của B ?
Quay số*99 đểnhận thưthoại.
File extensions.conf
[normal]
Include => Services
exten =>
_XXXX,1,Dial(Local/channel_1@Delay&Local/channel_2@Delay,40,r)
same =>
n,VoiceMail(1001@hoasen,u)
same => n,Hangup()
[Services]
exten =>
*99,1,VoiceMailMain(@hoasen)
[Delay]
exten =>
channel_1,1,Dial(SIP/1001,20,r)
same => n,hangup()
exten => channel_2,1,wait(20)
same =>
n,Dial(SIP/1002,20,r)
same => n,hangup()
File sip.conf phải có đủ 3 user như sau:
[1000]
type=friend
context=normal
host=dynamic
nat=yes
secret=1000
dtmfmode=auto
disallow=all
allow=ulaw
[1001]
type=friend
context=normal
host=dynamic
nat=yes
secret=1001
dtmfmode=auto
disallow=all
allow=ulaw
[1002]
type=friend
context=normal
host=dynamic
nat=yes
secret=1002
dtmfmode=auto
disallow=all
allow=ulaw
File voicemail.conf
[general]
…..
[zonemessage]
…..
[hoasen]
1000 =>
1000,Hien,hien.lq2998@sinhvien.hoasen.edu.vn
1001 =>
1001,Tommy,hien.lq2998@sinhvien.hoasen.edu.vn
1002 => 1002,Lucky,hien.lq2998@sinhvien.hoasen.edu.vn
[VoIP] Xây dựng hệ thống VoiceMail
Từng bước xây dựng hệ thống VoiceMail
Asterisk cung cấp khả năng xây dựng ứng dụng VoiceMail, với khả năng này giúp cho người sử dụng điện thoại không bỏ lỡ bất cứ cuộc gọi điện thoại nào. Một số tính năng của hệ thống voiceMail:
- Khi người gọi không được trả lời, máy không được kết nối mạng hay máy điện thoại đang bận, hệ thống đều có thông điệp riêng để thông báo tình trạng của máy thuê bao được gọi và phát thông điệp mời để lại tin nhắn.
- Mỗi hộp thư đều được quản lý bằng password và thư mục riêng.
- Khi thông điệp được nhận hệ thống VoiceMail có thể gửi qua Mail để thông báo, tất nhiên có kèm theo file thông điệp.
- Có thể kiểm tra VoiceMail trực tiếp trên máy điện thoại.
- Những thông điệp Lời chào trong hệ thống hoàn toàn có thể thay đổi phù hợp với ngữ cảnh sử dụng. Không nhất thiết phải sử dụng thông điệp mặc định.
Sau đây là các bước xây dựng hệ thống VoiceMail
- Khi người gọi không được trả lời, máy không được kết nối mạng hay máy điện thoại đang bận, hệ thống đều có thông điệp riêng để thông báo tình trạng của máy thuê bao được gọi và phát thông điệp mời để lại tin nhắn.
- Mỗi hộp thư đều được quản lý bằng password và thư mục riêng.
- Khi thông điệp được nhận hệ thống VoiceMail có thể gửi qua Mail để thông báo, tất nhiên có kèm theo file thông điệp.
- Có thể kiểm tra VoiceMail trực tiếp trên máy điện thoại.
- Những thông điệp Lời chào trong hệ thống hoàn toàn có thể thay đổi phù hợp với ngữ cảnh sử dụng. Không nhất thiết phải sử dụng thông điệp mặc định.
Sau đây là các bước xây dựng hệ thống VoiceMail
1.Thêm nội dung sau vào tập tin voicemail.conf
[general]
…..
[zonemessage]
…..
[hoasen]
1000 =>
1000,Hien,hien.lq2998@sinhvien.hoasen.edu.vn
1001 =>
1001,Tommy,hien.lq2998@sinhvien.hoasen.edu.vn
[1000]
type=friend
context=normal
host=dynamic
nat=yes
secret=1000
dtmfmode=auto
disallow=all
allow=ulaw
[1001]
type=friend
context=normal
host=dynamic
nat=yes
secret=1001
dtmfmode=auto
disallow=all
allow=ulaw
[normal]
Include => Services
exten => _XXXX,1,Dial(SIP/${EXTEN},10,r)
same =>
n,VoiceMail(${EXTEN}@hoasen,u)
same => n,Hangup()
[Services]
exten =>
*98,1,VoiceMailMain(@hoasen)
Đăng ký:
Bài đăng (Atom)



