Friday, May 22, 2009

Hơn 100 tuổi vẫn thích blog 'mì ăn liền'

Hơn 100 tuổi vẫn thích blog 'mì ăn liền'

Nếu ai đó nghĩ rằng mạng xã hội chỉ dành cho tuổi teen thì họ sẽ ngạc nhiên khi biết thành viên già nhất trên Twitter là cụ Ivy Bean 103 tuổi. Cụ chuyển sang dùng dịch vụ tiểu blog này sau khi đã phát chán với Facebook.
>90 tuổi vẫn tư vấn sex trên mạng xã hội / Tiểu blog sẽ thành cơn sốt trong năm 2009?

Cụ Ivy Bean bên màn hình với tài khoản Twitter @ivybean104. Ảnh: Telegraph.
Cụ Ivy Bean bên màn hình tài khoản Twitter @ivybean104. Ảnh: Telegraph.

Các thông điệp đầu tiên của cụ là "Vừa mới thưởng thức một chén trà", "Món gà hầm thật tuyệt"... "Tôi thích Twitter. Đây là mạng xã hội hoàn hảo. Bố cục mạch lạc và bắt mắt. Tôi yêu thiết kế màu xanh và trắng vì chúng hợp với bất cứ ai, nam hay nữ. Tôi thích tính năng viết tin nhắn tức thì và bạn có thể thông báo cho người khác biết chuyện gì đang diễn ra mà không phải cố sáng tác ra cái gì đó dài và đặc biệt", cụ Bean, hiện sống tại Bradford (Anh), nhận xét

Cụ chấm điểm Twitter là 5/5 trong khi MySpace chỉ được 4 vì: "Đây không phải website dành cho tôi. Ngay từ phút đầu tôi đã thấy màn hình trông rất náo nhiệt và đầy quảng cáo. Âm nhạc trên đó cũng không hợp với tôi nhưng có thể hiểu vì sao giới trẻ thích mạng xã hội này đến thế".

Facebook cũng được cụ Bean cho 4 điểm. Cụ có rất nhiều bạn bè trên đó nhưng dịch vụ này hơi rắc rối với nhiều thông tin hiển thị trên màn hình khiến cụ cảm thấy khó nắm bắt.

Châu An (theo The Sun

Thursday, May 21, 2009

Cài đặt Asterisk

Cài đặt Asterisk
Hướng dẫn cài đặt ASTERISK 

1. Preparing for installation 
Installation of Asterisk 1.4 is slightly different than installing Asterisk 1.2. There are some slight changes in the installation and some packages is needed. Asterisk GUI is available forAsterisk 1.4 only and the installation package is avalabe in Digium's svn repository. To install Asterisk GUI you need to download the CVS and the subversion package for CentOs 4.4. 
Do the command: 

yum install gcc gcc-c++ kernel kernel-devel bison openssl-devel libtermcap-devel ncurses-devel cvs subversion 
or 
apt-get install gcc gcc-c++ kernel kernel-devel bison openssl-devel libtermcap-devel ncurses-devel cvs subversion 

2. Downloading Asterisk and Zaptel
 
Download the latest 
asterisk-1.4libpri-1.4 and zaptel-1.4 source from the Digium's download site: http://downloads.digium.com 
wget 
http://downloads.digium.com/pub/aste...-1.4.18.tar.gz 

wget 
http://downloads.digium.com/pub/zapt...1.4.9.1.tar.gz 

wget 
http://downloads.digium.com/pub/libp...i-1.4.3.tar.gz 
Untar the 
Asterisk-1.4 and zaptel-1.4 source to /usr/src/ 
tar -zxvf zaptel-1.4.9.1.tar.gz -C /usr/src/ 

tar -zxvf libpri-1.4.3.tar.gz -C /usr/src/ 

tar -zxvf asterisk-1.4.18.tar.gz -C /usr/src/ 

3. Compiling and Installing
 
After extracting the source, you can start now the installation of 
Asteriskzaptel should be install first. 
You go to the 
zaptel-1.4.xx directory in /usr/src/zaptel-1.4.xx and do the command: 
./configure
You will notice that the ./configure command was not used in installing Zaptel 1.2 and Asterisk 1.2
Then continue the installation using the following commands. 
make 
make install 

Libpri installation
The libpri libraries do not make use of the autoconf build environment, the installation of lipri 1.4 is same as installing libpri 1.2. 
cd .. 

cd libpri-1.2.3/ 

make 

make install 

Asterisk 1.4 installation 

cd .. 

cd asterisk-1.4.18/ 

./configure 

make 

make install 

make samples 

4. Getting Asterisk GUI
 
Alright, lets download the 
Asterisk GUI from Digium svn repository, to download the Asterisk GUI, go to the /usr/src/ directory and type this command: 
svn checkout 
http://svn.digium.com/svn/asterisk-gui/trunk asterisk-gui 

5. Compiling Asterisk GUI
 
The source of 
Asterisk GUI is now downloaded in /usr/src/asterisk-gui/. Lets install Asterisk GUI
./configure 

make 

make install 

make samples 

6. Configuration
 
There are two files you must configure in order for 
Asterisk GUI to run. These files are manager.conf and http.conf located in /etc/asterisk/. Lets start at manager.conf
[general] 
displaysystemname = yes 
enabled = no 
webenabled = no 
This is the default configuration of your 
manager.conf, to configure you must change the last two lines with = no with = yes
[general] 
displaylastsystemname = yes 
enabled = yes 
webenabled =yes 
The output must be like this. 
Next we will add a new user to 
manager.conf 
[username] 
secret = password 
read = system,call,log,verbose,command,agent,user,config 
write = system,call,log,verbose,command,agent,user,config 
Lets configure the 
http.conf files, remember that this is the last configuration file we need to edit to be able to run the Asterisk GUI. Your http.conf should look exactly like this and you're done... 
enabled=yes 
enablestatic=yes 
bindaddr=0.0.0.0 
After that run 
"make checkconfig" in your asterisk-gui directory. This script will check if your GUI is correctly configured. 

7. Loading ztdummy and startup scripts.
 
Lets load the 
ztdummy module and add ztdummy and Asterisk to /etc/rc.local. To load ztdummy module, type this command in the console. 
modprobe zaptel 
modprobe ztdummy 

And to add 
ztdummy and Asterisk in startup scripts, edit the file /etc/rc.local and add the following line: 
modprobe zaptel 
modprobe ztdummy 
asterisk –g 

To load your 
Asterisk GUI, run the command "asterisk -g" in the console and point your browser to http://your-server-ip:8088/asterisk/.../cfgbasic.html 


II. Technical Indepth

Asterick có thể được cấu hình với nhiều mục đích khác nhau, nhưng mô hình thông thường nhất là Client/Server. Mô hình này cho phép các client – hay còn gọi là UAC – user agent client kết nối vào server là Asterisk – hay còn gọi là UAS – User Agent Server. Các UAC là nơi sinh ra các session trong khi UAS thì xử lý thụ động các session nhận được dựa trên tập hợp rule có sẳn. Phần IV sẽ đi rỏ hơn về các dạng ứng dụng này.

Ta có thể cấu hình Asterisk trong console mode, hoặc có một cách tiện lợi hơn là edit trực tiếp các file cấu hình trong /etc/asterisk. Mổi ứng dụng riêng của Asterisk như voicemail, zaptel, music-on-hold, meetme, conference, iax … đều có configuration riêng của mình, tuy nhiên có 2 file cấu hình quan trọng nhất là sip.conf và extension.conf:

- Sip.conf : file cấu hình về các thông tin của các UAC như username, password, IP, type, security, codec, là thành phần căn bản nhất lưu giử thông tin trong Asterisk.

- Extension.conf: file cấu hình về các luật định tuyến cuộc gọi, luật quay số, các extension trong ngoài và những tính năng đặc biệt khác. Extensions.conf là file quan trọng nhất trong bất kỳ cấu hình Asterisk nào

Các file cấu hình khác

- Voicemail.conf: file cấu hình cho hệ thống voice-mail của asterisk. Asterisk có thể dùng lệnh Sendmail trên CentOS để gởi mail đến cho các địa chỉ được lưu trong file cấu hình này.

- Zaptel.conf: File này nằm ngoài /etc, là file chứa thông số index, driver dành cho Linux khi kích hoạt các thiết bị Telephony cắm trực tiếp vào Asterisk thông qua cổng PCI

- Zapata.conf: Cũng thuộc module zaptel, nhưng là file kết nối các thiết bị Telephony đã được khai báo vào hệ thống chính của Asterisk
- Iax(2).conf: Các thông số về IAX (inter-asterisk protocol) dùng khi kết nối 2 asterisk box với nhau

- MeetMe.conf: Một chức năng tạo room conference căn bản.

… và nhiều lắm!

Sau đây chúng ta thử xem qua một cấu hình căn bản với 1 server Asterisk và 2 Client dùng X-Lite (www.xten.com). Chúng ta cần làm 2 việc:

Định nghĩa trên sip.conf 2 hạng mục tương ứng với 2 client
Định nghĩa trên extension.con dial-plan và extension tương ứng.

Trên File sip.conf:


[101]
Type=friends

Username=***
Secret=***

Disallow=all
Allow=ulaw

Host=dynamic
Context=test-dialplan


[102]
Type=friends

Username=jane
Secret=jane

Disallow=all
Allow=ulaw

Context=test-dialplan
Host=dynamic

Chú ý: Trường Context trong file sip.conf phải đúng với một context – được định nghỉa bởi ký hiểu [ ] trong file extensions.conf, như thế SIP Entry đó có thể gọi được các dial-plan bên trong một context.

Trên File extensions.conf

[test-dialplan]
Exten => 101,1,Dial(SIP/101)

Exten => 102,2,Dial(SIP/102)
Config trên sẻ cho phép 2 end-point Dùng X-ten softphone, tương tự bạn có thể thêm vào nhiều ID hơn trong file SIP.conf và tạo dial-plan tương ứng với extensions.conf. Nếu Asterisk Server được đặt trên một địa chỉ IP public, và các client (softphone, phone) nằm ở địa chỉ Private, bạn phải thêm vào dòng NAT=1 trong các SIP ID được định nghỉa tại file sip.conf. Host=Dynamic cho phép các client có IP động bất kỳ, tuy nhiên chỉ áp dụng được trong trường hợp các UAC có khả năng register vào hệ thống.

Chi tiết về các thông số của sip.conf và exntesion.conf có thể được tìm thấy tại đây:

http://www.voip-info.org/wiki-Asterisk+config+sip.conf
http://www.voip-info.org/wiki-Asterisk+config+extension.conf



III. Chi tiết đằng sau một cuộc gọi SIP 

Bản thân Asterisk có thể chạy nhiều protocol khác nhau như H323, Skinny (SCCP) và MGCP … nhưng khi nhắc đến *, người ta nghỉ ngay đến SIP. Ngoài Asterisk, cấu trúc rất linh động của SIP cũng là engine cho rất nhiều ứng dụng khác nhau: Instant Messaging (MSN, Jabber), Online Game, Session Control, WholeSale VoIP và các ứng dụng tùy biến khác vốn đòi hỏi sự kết nối linh hoạt giửa các bên tham gia. 

Bây giờ chúng ta sẽ phân tích cấu hình tại phần II, 

Tuần tự các bước diển ra như sau: 

1. Máy tính *** vừa bootup, chương trình Xten tự động kích hoạt kết nối vào Asterisk (vì Xten đã được cấu hình sẳn). Xten sẽ gởi 1 SIP Message Method REGISTER vào Asterisk với SIP ID là ***@1.1.1.1 và location là 1.1.1.1 
2. Asterisk sẽ gởi lại cho *** 403 Unauthorized Message, thực chất là một dạng Challenge Message. 
3. ***’s Xten khi nhận được Message 403 sẽ tiến hành MD5 hash cái secret mà *** đã cấu hình trong Xten, sau đó nó gởi một SIP REGISTER MESSAGE với một header đặc biệt: www_authorization hoặc proxy_authorization (tùy loại UA, trong trường hợp này là www_authorization), trong đó chứa giá trị Hash mà nó mới có được. Asterisk khi nhận REGISTER message thứ nhì của ***, kiểm tra và thấy có header www_authorization có giá trị hash. Asterisk sẽ check trong bộ nhớ của mình xem SIP ID là *** có secret không, nếu có, nó sẽ hash cái secret trong bộ nhớ và so sánh với hash string được gởi từ *** lên. Nếu giống nhau, thì tiếp tục sang bước 5, còn fail thì lập lại bước 2. Khi Asterisk start, nó sẽ lấy đọc thông số trong các File .conf một lần duy nhất, do đó khi thay đổi trong các file config của Asterisk, phải restart asterisk bằng cách kết nối vào Asterisk CLI và dùng lệnh “reload”. 
Khi hash-check pass, Asterisk gởi về cho *** một SIP MESSAGE 200 OK (giống http) báo rằng anh đã registered. Đồng thời nó cũng cập nhật location-table của mình là : ***@1.1.1.1 
4. Khi *** tiến hành gọi Jane (với SIP, người ta có thể gọi bằng số, hoặc bằng tên cũng được), Xten của *** sẽ gởi một INVITE MESSAGE vào Asterisk. Asterisk sẽ look up trong Location Table của mình và tìm thấy Jane tại địa chỉ 2.2.2.2 (bước 5.5), trong trường hợp tìm không thấy, Asterisk có thể gởi về cho *** một SIP MESSAGE 404 NOT FOUND (quen quá T_T) 
5. Asterisk forward SIP INVITE MESSAGE đến Jane@2.2.2.2 , tất nhiên cũng đã add vào trong INVITE đấy địa chỉ của mình. * 
6. Đồng thời, Asterisk cũng gởi về cho *** một SIP MESSAGE 180 RINGBACK, báo hiệu là phone của Jane@2.2.2.2 đã reng, chờ đợi bắt máy. 
Jane bắt máy, và gởi về cho Asterisk một SIP MESSAGE 200 OK với đầy đủ thông số Voice của phone của Jane như Codec, Timing .v.v. nằm trong SIP Body (Session Description Protocol – SDP) 
7. Asterisk chuyển Message 200 OK về cho ***, và hoàn tất quá trình kiểm soát tín hiệu SIP giữa 2 UAC. Đồng thời cập nhật các thông tin về Billing nếu có cấu hình. 

Lúc này, ***@1.1.1.1 và Jane@2.2.2.2 mở một RTP session trực tiếp đến nhau hoặc thông qua Asterisk tùy thuộc vào NAT setting giửa 2 người. SIP nằm ở thượng tầng của Transport Layer, dùng UDP 5060, trong khi RTP thường dùng các private port > 1024. Do SIP và RTP cùng chạy trên một ứng dụng nhưng lại khác port, nên đôi khi chúng ta gặp tình huống UAC sẽ reng nhưng RTP bị block, giới chuyên môn gọi là One-Way-Audio. 
* ở giửa các bước thật ra còn có một dạng Message ACK nhỏ, tuy nhiên để đơn giản hóa, người viết lược bỏ phần này. Chi tiết về SIP có thể được tìm thấy rất nhiều trên Internet, tuy nhiên để hiểu sâu, kỷ và chính xác, RFC là 1 bắt buộc. 

SIP RFC: 
http://www.faqs.org/rfcs/rfc3261.html 

IV. Các ứng dụng của Asterisk 
Asterisk hổ trợ rất nhiều công nghệ khác nhau như H323, SIP, MCGP, SCCP cũng như nhiều loại giao tiếp mạng khác nhau như FXO, FXS, ISDN PRI, ISDN BRI, E3 thậm chí SS7. Bản thân cấu trúc nguồn mở cùng giao thức SIP linh hoạt, cho phép developer lẩn người sử dụng có thể customize ứng dụng Asterisk của mình đáng kể. Đặc biệt, phải kể đến giao tiếp Asterisk AGI và AsteriskRealtime cho phép Asterisk kết hợp với các ngôn ngử lập trình thông dụng như C, C++, VBB, PHP, Shell-script, Python cùng với hệ cơ sở dử liệu MySQL hoặc Oracle để phát triển những ứng dụng Voice-Application khác nhau. Sau đây người viết xin giới thiệu một vài hệ thống mà đã có kinh nghiệm làm qua: 

1. SIP Registrar / IP PBX: Ứng dụng căn bản nhất của Asterisk, nhưng cũng là mạnh nhất. Asterisk được cấu hình làm SIP proxy chính cho các Client kết nối vào. Có thể tích hợp AsteriskRealTime và một WEB GUI để tiện cho việc quản lý (tự viết hoặc dùng có sẳn). SIP Registrar có sẳn các tính năng hấp dẩn như voicemail, IVR, call-transfer, conference .v.v. 
2. Conference Hub: Tận dụng chức năng của Asterisk và biến nó trở thành một Conference Hub. Asterisk được dedicate sử dụng resource của phần cứng để mirror các dòng RTP khác nhau từ nhiều client gọi đến. Thông thường trong trường hợp này, Asterisk được sử dụng chung với một hệ thống Softswitch khác – Asterisk trở thành UAC của hệ thống đó 
3. Application Call Center: Tính năng IVR (interactive voice respond) của Asterisk có thể được customize thành nhiều lớp khác nhau (không có giới hạn), cho phép tạo ra một danh mục trả lời tự động khổng lồ. Ứng dụng này được dùng nhiều nhất trong các trung tâm hổ trợ khách hàng có trả lời tự động, tiết kiệm được rất nhiều thời gian và chi phí. Chúng ta cũng có thể tạo ra một chương trình tương tác DATA/PHONE khi dùng với Asterisk AGI và một ngôn ngử lập trình khác. 

4. Class 5 Features box: Asterisk được sử dụng như một thiết bị cung cấp dịch vụ cộng thêm cho các softswitch khác. Rất nhiều SIP proxy (nhất là của Telco) có cấu trúc khá đơn giản và gọn nhằm tăng tốc độ xử lý, do đó thường thiếu những tính năng như voicemail, calling-card .v.v.. Asterisk lắp vào chổ trống đó một cách hoàn hảo, và được rất nhiều các start-up VoIP provider sử dụng 
5. Codec Transformer: Dân VoIP chuyên nghiệp hẳn sẽ rất đau đầu với các hệ thống Codec khác nhau của voice, đặc biệt khi kết nối đến 1 nhà cung cấp khác. Thương thì ít ai chịu thay đổi Codec mặc định của mình, nếu nói là không thể. Có nhiều giải pháp work-around như back-to-back TDM trên các Media Gateway. Asterisk có thể làm IP-to-IP codec transformation một cách hoàn hảo, đặc biệt với license của g729a. 

6. Media (PSTN/ISDN/E3) Gateway: Bản thân Asterisk sử dụng chung với các module Zaptel ISDB PRI , FXO, FXS cho phép Asterisk gởi cuộc gọi ra ngoài các hệ thống mạng điện thoại công cộng hay ISDN, đây cũng là một giải pháp giá rẻ. 


V Đoạn kết 
Tác giả không có tham vọng thuyết phục bạn vứt bỏ hệ thống VoIP của mình hiện tại, mà chỉ khuyến khích bạn download vài cài đặt Asterisk, biết đâu bạn sẽ cảm thấy có những tính năng hay trên Asterisk có thể tích hợp hoàn toàn thoải mái vào hệ thệ thống Integrate Phone Computer của bạn. Đồng thời, tác giả cũng khuyến khích các nhóm, các công ty lập trình nhìn thấy được tiềm năng của Asterisk tiến hành nghiên cứu, phát triển nó, vì đó có thể là con đường khả thi cho chúng ta cơ hôi bắt kịp được trình độ công nghệ VoIP của thế giới.