You are on page 1of 116

MỤC LỤC

PHẦN 1: 4

FREEPBX ADMINISTRATION 4
1. Cài đặt FreePBX 5
2. Cấu hình tổng đài FreePBX 20
2.1 Khai báo các số nội bộ 20
2.2 Cấu hình trung kế (trunk) 21
2.3 Cấu hình các dịch vụ tổng đài nội bộ 25
2.3.1 Ring Group 25
2.3.2 System Recordings 26
2.3.3 IVR 27
2.3.4 Conference 29
2.3.5 Thống kê cuộc gọi 30
2.3.6 Call record (Extension) 30
2.3.7 Voicemail 31
2.3.8 Blacklist 32
2.3.9 Time Group, Time Condition 33
2.3.10 Tự record file âm thanh 35
2.3.11 Hàng đợi QUEUE 35
3. Phân tích bản tin SIP 37
3.1 Quá trình REGISTER 38
3.2 Thiết lập cuộc gọi 39
3.3 Quá trình giải phóng cuộc gọi 41

PHẦN 2: 42

ASTERISK ADMINISTRATION 42
Tổng quan 43
Khai báo sip account 43
Viết dialplan 45
Cấu hình trunk 46

PHẦN 3: 47

TEL4VN LAB 47
Cấu hình gọi nội bộ, hộp thư thoại, chuyển cuộc gọi và ghi âm cuộc gọi 48
Cấu hình SIP trunk, thực hiện cuộc gọi ra PSTN, kết nối 2 tổng đài 49
Xây dựng ngữ cảnh gọi vào một công ty 50
VoIP Open Source Training Center http://www.tel4vn.com
1
Dịch vụ Conference 52
Cài đặt Asterisk trên Linux CentOS 6.7 53
Phần 1: Chuẩn bị máy ảo CentOS6.7 53
Phần 2: Cài đặt Asterisk 13.x 53
Tải các gói phần mềm cần thiết 53
Cài đặt các phầm mềm phụ 54
Cài đặt Asterisk 54
Phần 3: Cấu hình Extension và Dialplan đơn giản 56
Tạo extension đơn giản 56
Tạo dialplan đơn giản 57
Phần 4: Cấu hình trunk cuộc gọi với trunk TEL4VN và 2 tổng đài nội bộ với nhau. 57
Tạo tài khoản trunk với TEL4VN 57
Cấu hình outboud route qua trunk TEL4VN 58
Trunk 2 tổng đài nội bộ với nhau (trunk account) 59
Trunk 2 tổng đài nội bộ với nhau (trunk IP) 60
Phần 5. Cấu hình một số dịch vụ cơ bản 61
Ring Group 61
IVR 62
Conference 63
Call record 66
Time Condition 66
Voice Mail 67

PHỤ LỤC 69
Phụ lục 01: CẤU HÌNH MỘT SỐ SOFTPHONE THÔNG DỤNG 69
Phụ lục 02: Hướng dẫn đăng ký trunk với TEL4VN 83
Phụ lục 03: Cấu hình gửi mail từ server ra ngoài thông qua Gmail 85
Phụ lục 04: Hướng dẫn import file máy ảo cài sẵn và đặt IP tĩnh 88
Phụ lục 05: Kết nối SSH vào server sử dụng Mobaxterm 96
Phụ lục 06: Tắt cấu hình STUN mặc định cho một số softphone 99
Phụ lục 07: Cài đặt Centos 6.7 trên Virtualbox 104
Phụ lục 08: Các lệnh Linux thông dụng cần nhớ 111
Phụ lục 09: Giới thiệu MySQL căn bản 112
Phụ lục 10: Cấu hình lại thời gian cho server CentOS 118
Phụ lục 11: Điều kiện thời gian của hàm GotoIfTime 118

VoIP Open Source Training Center http://www.tel4vn.com


2
VoIP Open Source Training Center http://www.tel4vn.com
3
PHẦN 1:
FREEPBX ADMINISTRATION

VoIP Open Source Training Center http://www.tel4vn.com


4
1. Cài đặt FreePBX
1.1 Chuẩn bị cài đặt
- Tải file Distro của FreePBX về tại đường dẫn sau:
https://downloads.freepbxdistro.org/ISO/FreePBX-64bit-10.13.66.iso
- Dùng phần mềm ghi file Distro FreePBX (file .ISO) đã tải về ở trên vào CD/DVD, khởi
động server (máy tính) từ ở đĩa CD/DVD, màn hình giao diện cài đặt ban đầu xuất hiện
như hình dưới (hướng dẫn này được thực hiện trên máy ảo Virtualbox, nếu cài trên server
thật giao diện có thể khác)
- Tạo máy ảo trên Virtualbox:
Chọn OS cho phù hợp:
+ FreePBX 62bit cần chọn Red Hat 64bit
+ FreePBX 32bit cần chọn Red Hat 32bit

Chọn Memory size khoảng 1024 MB là vừa đủ, nếu máy tính cấu hình mạnh thì có thể
chọn nhiều hơn (2048 MB,...)

VoIP Open Source Training Center http://www.tel4vn.com


5
Chọn tạo ở đĩa mới và chọn định dạng ổ đĩa là VDI

VoIP Open Source Training Center http://www.tel4vn.com


6
Chọn dung lượng ổ đĩa cho máy ảo khoảng 10 GB, nếu ổ cứng máy tính còn trống nhiều
thì có thể chọn nhiều hơn (15 GB, 20 GB,...)

VoIP Open Source Training Center http://www.tel4vn.com


7
VoIP Open Source Training Center http://www.tel4vn.com
8
Thay đổi setting cho máy ảo

VoIP Open Source Training Center http://www.tel4vn.com


9
Đưa file FreePBX đã download ở phần trên vào ở đĩa CD của máy ảo

Cài đặt Network Bridged (để máy ảo xin cấp phát IP cùng lớp mạng với máy thật) và
chọn Name là tên card mạng máy thật đang sử dụng để kết nối Internet.

- Sau khi tạo máy ảo xong, bật máy lên và bắt đầu cài đặt FreePBX.

VoIP Open Source Training Center http://www.tel4vn.com


10
1.2 Tiến hành các bước cài đặt
Bật máy ảo vừa tạo lên

Chọn version Asterisk cài kèm với FreePBX. Ở đây có thể chọn version Asterisk 13.
Chọn “Full Install” như hình.

VoIP Open Source Training Center http://www.tel4vn.com


11
Cài đặt địa chỉ IP cho server FreePBX (sử dụng phím TAB trên bàn phím để di chuyển
trỏ chuột đến tùy chọn mong muốn). Có thể bỏ chọn IPv6 như hình.
Chọn Dynamic IP config để nhận cấu hình IP từ DHCP Server hoặc chọn Manual
address config để cấu hình IP cho server FreePBX

Chọn OK để tiếp tục.

VoIP Open Source Training Center http://www.tel4vn.com


12
Chọn time zone là Asia/Ho_Chi_Minh

VoIP Open Source Training Center http://www.tel4vn.com


13
Nhập password cho tài khoản root của hệ thống. Chọn OK để tiếp tục

Nếu password quá dễ thì cần chọn “Use Anyway”

VoIP Open Source Training Center http://www.tel4vn.com


14
Quá trình cài đặt sẽ diễn ra trong một khoảng thời gian dài hay ngắn tùy vào cấu hình
máy tính. Thông thường khoảng 30 phút

Máy ảo sẽ tự khở động lại và update các module của FreePBX nếu máy tính có kết nối
internet.

VoIP Open Source Training Center http://www.tel4vn.com


15
Cuối cùng giao diện đăng nhập console hiện ra như hình. Để đăng nhập vào giao diện
console nhập user là root v​ à mật khẩu đã đặt ở bước cài đặt trên.

Giao diện đưng nhập thành công.

VoIP Open Source Training Center http://www.tel4vn.com


16
Như vậy phần cài đặt đã xong. Tiếp tục mở trang web quản lý FreePBX để thiết lập các cài đặt
ban đầu.

Dùng Chrome/Firefox truy cập vào trang http://IP_Server _FreePBX​ cài đặt User và mật khẩu
quản lý web FreePBX, chọn “Create Account”

VoIP Open Source Training Center http://www.tel4vn.com


17
Chọn “FreePBX Administraion” và đăng nhập với tài khoản và mật khẩu vừa tạo.

Giao diện web quản lý của FreePBX

TEL4VN cũng cung cấp máy ảo Virtualbox đã cài sẳn FeePBX phiên bản 64bit:
https://drive.google.com/open?id=1hatbLDiJ3JUvcxpzjT9wcuI1_UUgs37l

VoIP Open Source Training Center http://www.tel4vn.com


18
Nếu gặp khó khăn trong quá trình cài đặt trên Virtualbox bạn có thể tải file máy ảo cài
sẵn và import vào Virtualbox. User/Pass : admin/tel4vn (Tham khảo hướng dẫn import file
.OVA vào Virtualbox trong Phụ lục để thực hiện)
Video hướng dẫn cài đặt FreePBX :
https://drive.google.com/open?id=1sCCCbvPVqKwUJam--ZeiIKnBUxTnKigV

VoIP Open Source Training Center http://www.tel4vn.com


19
2. Cấu hình tổng đài FreePBX
2.1 Khai báo các số nội bộ
Đây là các số nội bộ dùng để cấp phát cho các nhân viên trong công ty, độ dài và cách đặt
số tùy ý, riêng với hướng dẫn này thì dãy số nội bộ được quy định là 1XXX (X=0,1,2,3,....,9).
Để khai báo một số nội bộ mới chọn Application ⇨ Extensions ⇨ Add Extention ⇨ Add
New Chan_SIP Extension
Điền các thông số sau:
- User Extension: Số nội bộ của nhân viên
- Display Name: Tên nhân viên
- Secret: Mật khẩu

Thực hiện tương tự để khai báo số nội bộ cho các nhân viên khác.
Sau khi khai báo xong thì phải bấm nút “Submit” ở góc phải và click vào nút “Apply
Config” phía trên để lưu cấu hình.

VoIP Open Source Training Center http://www.tel4vn.com


20
Người quản trị hệ thống sẽ cung cấp các tài khoản nội bộ cho nhân viên. Nhân viên có
thể sử dụng để đăng nhập trên điện thoại ip phone hoặc các phần mềm softphone trên máy tính,
smartphone (Tham khảo hướng dẫn cấu hình một số softphone thông dụng trong Phụ lục).

2.2 Cấu hình trung kế (trunk)


Với các doanh nghiệp thì ngoài nhu cầu gọi nội bộ trong công ty thì còn phải liên hệ với
các khách hàng, do đó hệ thống tổng đài nội bộ cần được kết nối với mạng điện thoại truyền
thống, di động, quốc tế,... Để làm được điều đó thì công ty cần phải đăng ký dịch vụ trung kế với
các nhà mạng viễn thông, có thể sử dụng kết nối CO, E1 hoặc sip trunk. Trong bài hướng dẫn
này sử dụng kết nối sip trunk đến nhà cung cấp TEL4VN, với đầu số thuê bao là 02873020777.
Kết nối sip trunk sẽ thông qua IP và kết nối đến nhà cung cấp dịch vụ, đây là dạng trung kế cấu
hình đơn giản nhất và ít phải tốn thêm thiết bị Gateway hoặc Card. (tham khảo hướng dẫn đăng
ký tài khoản trunk với nhà cung cấp TEL4VN trong Phụ lục)
Tài khoản trunk được TEL4VN cung cấp với cấu trúc như sau :

fromuser=​<your-sip-account>
username=​<your-sip-account>
type=peer
context=from-trunk
secret=​<your-password>
host=sip.tel4vn.com
port=50061
insecure=invite,port
nat=force_rport,comedia
qualify=yes
disallow=all
allow=ulaw,alaw

Khai báo tài khoản sip trunk này chọn Conectivity ⇨ Trunks ⇨ Add Trunk (Add
SIP(chan_sip) Trunk)
Điền các thông số như sau:
General:
- Trunk Name : Tên trunk để quản lý trên FreePBX
- Outbound CallerID : số hiển thị khi gọi ra trunk

VoIP Open Source Training Center http://www.tel4vn.com


21
Sip Setting (Outgoing):
- Trunk Name : Tên trunk cấu hình ở backend (Asterisk)
- Peer Detail: là thông số trunk nhận được từ TEL4VN.

Sip Setting (Incoming):


- USER Context : Tên account trunk cung cấp cho phía provider (nếu provider cần
tạo trunk)
- USER Details : Thông tin trunk gửi cho phía provider (tương tự như thông tin
trunk Tel4vn)
- Register String : là chuỗi để đăng ký server với provider có dạng
user:pass@domain:port/DID
-

VoIP Open Source Training Center http://www.tel4vn.com


22
Cuối cùng là click “Submit” và “Apply Config” để lưu lại cấu hình Trunk.

Tiếp theo cấu hình Outbound Route để định tuyến cuộc gọi đến nhà cung cấp (TEL4VN)
khi các nhân viên có nhu cầu gọi ra ngoài. Chọn Conectivity ⇨ Outbound Route ⇨ Add
Outbound Route ​ để tạo Outbound route với các thông số :
Route Settings :
- Route Name: tên outbound route
- Trunk sequence for matched routes: chọn trunk để gọi ra nếu thỏa điều kiện số bị
gọi. Trường hợp có nhiều trung kế thì có thể xếp theo thứ tự từ trên xuống với độ
ưu tiên giảm dần. Nếu cuộc gọi qua trunk trên bị lỗi thì hệ thống sẽ chọn tiếp
trunk dưới để route cuộc gọi ra. Để đảm bảo an toàn kết nối cho hệ thống thì hầu
hết các công ty đều dùng giải pháp này, thuê ít nhất hai nhà cung cấp và chọn
Outbound Route qua cả hai trunk.

VoIP Open Source Training Center http://www.tel4vn.com


23
Dial Patterns :
- Dial patterns that will use this Route: cấu hình quy định số nhấn (số bị gọi) để gọi
ra ngoài (0X. là tất cả các số điện thoại bắt đầu bằng số 0)
X ​: 0,1,2,3,....,8,9
Z ​: 1,2,3,4,...,8,9
N ​: 2,3,4,...,8,9
. :​ một hoặc bao nhiêu số tùy ý.
[1237-9]​ : thỏa một số bất kỳ nằm trong dãy 1,2,3,7,8,9 trong ngoặc.
Muốn chặn các cuộc gọi quốc tế với đầu 00 thì có thể sửa lại Dial Pattern là 0Z.

Cuối cùng là click “Submit” và “Apply Config” để lưu lại cấu hình Outbound route.

Để nhận cuộc gọi từ bên ngoài di động, điện thoại bàn thì cần cấu hình thêm Inbound
Route. Việc định tuyến cuộc gọi vào là tùy theo nhu cầu của từng công ty, có thể phát lời chào,
cho gọi nhóm hoặc định tuyến theo thời gian hoặc một cấu hình khác.

VoIP Open Source Training Center http://www.tel4vn.com


24
Để tạo Inboud Route chọn Conectivity ⇨ Inbound Route ⇨ Add Inbound Route​ với các thông
số cấu hình như sau :
- Description: tên inbound route
- DID number: số điện thoại đón cuộc gọi trên trunk, có thể cấu hình như patterns ở phần
Outbound routes
- Set destination: chọn đích đến cho cuộc gọi inbound (IVR, Group,...)

Để đơn giản và kiểm tra cấu hình này, ta cho định tuyến trực tiếp đến máy nhánh như hình.

Cuối cùng là click “Submit” và “Apply Config” để lưu lại cấu hình Inbound route

2.3 Cấu hình các dịch vụ tổng đài nội bộ

2.3.1 Ring Group

Ring Group hay còn gọi là dịch vụ gọi nhóm. Thông thường các công ty phân chia nhân
viên theo các phòng ban chức năng, ví dụ phòng kỹ thuật, phòng kinh doanh, phòng nhân sự,...
và tạo ra các số máy đại diện cho các phòng ban này, ví dụ 601 là số máy chung của phòng kỹ
thuật, 602 là số máy chung của phòng kinh doanh, sau đó thêm các số máy nhánh của các nhân
viên tương ứng trong từng phòng ban vào số của nhóm (số Ring Group). Nếu người quản trị viên
hệ thống tổng đài muốn các phòng ban này nhận cuộc gọi thì chỉ sẽ định tuyến cuộc gọi vào các
Ring Group 601, 602, lúc đó tất cả nhân viên trong các phòng ban này có thể nhận cuộc gọi đến,
thường là cấu hình cho rung tất cả điện thoại của nhân viên, nhân viên nào bắt máy thì sẽ kết nối
với khách hàng.

Để tạo một Ring Group chọn Applications ⇨ Ring Groups ⇨ Add Ring Groups ​với ​các thông
số như sau :

VoIP Open Source Training Center http://www.tel4vn.com


25
- Ring-Group Number : Số để ấn gọi trực tiếp đến group.
- Group description : tên nhóm
- Ring Strategy : cách rung chuông các ext trong nhóm
- Ring max time : thời gian rung chuông tối đa
- Extension List : danh sách các ext trong nhóm
- Announcement : file ghi âm lời chào của nhóm
- Destination if no answer : Đích đến khi group không có member bắt máy

Ví dụ: tạo ring group 601 cho phòng kỹ thuật với hai nhân viên có số nội bộ là 100 và
101

Cuối cùng là click “Submit” và “Apply Config” để lưu lại cấu hình ring group.

2.3.2 System Recordings

Phần này quản lý tất cả các file âm thanh cần thêm vào hệ thống. Để upload file âm
thanh lên hệ thống cần lưu ý phải ghi âm đúng định dạng 16 bit, 8000 Hz​ thì FreePBX mới đọc
được (có thể upload lên định dang file khác nhưng hệ thống sẽ tự chuyển đạnh dạng về wav).
Vào mục Admin ⇨ System Recordings ⇨ Add Recordings ,​ chọn file âm thanh sau đó bấm vào
Upload. Sau khi upload thành công thì chỉ cần đặt tên file âm thanh và bấm vào Save để lưu lại.

VoIP Open Source Training Center http://www.tel4vn.com


26
Cuối cùng là click “Submit” và “Apply Config” để lưu lại file vừa upload.

2.3.3 IVR

Hầu hết tổng đài doanh nghiệp đều cấu hình lời chào (IVR) để hướng dẫn khách hàng
cách liên lạc khi gọi vào hệ thống. Giả sử ta tạo 1 hệ thống IVR đơn giản như sau: khách hàng
gọi vào phát lời chào yêu cầu bấm 1 gặp phòng kỹ thuật, bấm 2 gặp phòng kinh doanh. File âm
thanh sử dụng cho lời chào đã được upload trong phần trước.

Để tạo một IVR chọn Applications ⇨ IVR ⇨ Add IVR​ với các thông số cơ bản như sau:

- IVR Name: tên IVR


- Announcement: File ghi âm lời chào được tạo trước ở System Recordings
- Direct Dial: cho phép ấn số nội bộ để gọi trực tiếp
- Timeout: thời gian chờ người gọi ấn phím
- Invalid Retries: số lần lặp lại khi người gọi ấn sai số trong danh sách IVR Entries
- Invalid Destination: chọn đích đến khi người gọi ấn sai hết số lần retries
- Timeout Retries: số lần lặp lại khi hết thời gian chờ ấn phím
- Timeout Destination: chọn đích đến khi hết số lần retries đợi ấn phím

VoIP Open Source Training Center http://www.tel4vn.com


27
- IVR Entries: danh sách các số quy định và đích đến tương ứng.

Cuối cùng là click “Submit” và “Apply Config” để lưu lại cấu hình IVR.

VoIP Open Source Training Center http://www.tel4vn.com


28
2.3.4 Conference

Trong quá trình trao đổi giữa các nhân viên, ngoài gọi trực tiếp với nhau thì cũng cần
những buổi meeting có nhiều người tham gia. FreePBX hỗ trợ chức năng này bằng cách tạo ra
các room conference. Lưu ý đây là các room audio conference, tránh nhầm lẫn với khái niệm
video conference.

Để tạo conference chọn Applications ⇨ Conferences ⇨ Add ​với các thông số cơ bản như
sau:

- Conference Number: số ext để gọi khi muốn join vào conference


- Conference Name: tên conference
- User PIN: khi người gọi nhập mật khẩu này sẽ vào conference với tư cách User
- Admin PIN: khi người gọi nhập mật khẩu này sẽ vào conference với tư cách Admin
- Join Message: lời chào khi vào conference được tạo trước ở System Recordings
- Leader Wait: có bắt buộc phải chờ Admin vào conferecen trước khi User vào hay không.
- User join/leave: thông báo khi có người vào hoặc thoát ra conference
- Music on Hold: nhạc chờ cho người gọi nghe khi chỉ có một mình trong conference
- Allow Menu: Cho phép menu tương tác với conference qua phím ấn. Conference phải
có 2 người trở lên và người gọi ấn phím * để nghe hướng dẫn menu.
- Record Conference: ghi âm conference
- Maximum Participants: số lượng người tối đa trong confernece (0 = unlimit)

VoIP Open Source Training Center http://www.tel4vn.com


29
Cuối cùng là click “Submit” và “Apply Config” để lưu lại cấu hình conference.

2.3.5 Thống kê cuộc gọi

Quản trị viên hệ thống dễ dàng kiểm tra lịch sử thực hiện cuộc gọi của các nhân viên, có
thể tìm kiếm theo số nội bộ, số bị gọi hoặc thời gian bằng cách truy cập vào mục Reports ⇨
CDR Report.

2.3.6 Call record (Extension)

Call record là dịch vụ giúp người quản trị viên ghi âm cuộc gọi của mỗi Extension. Call record
có thể phân chia theo từng loại cuộc gọi, ở đây FreePBX có 4 loại cuộc gọi:

- Inbound Internal: cuộc gọi từ một ext khác trong hệ thống


- Outbound Internal: cuộc gọi đến một ext khác trong hệ thống
- Inbound External: cuộc gọi từ một số điện thoại, ext khác hệ thống
- Outbound External: cuộc gọi đến một số điện thoại, một ext khác hệ thống

VoIP Open Source Training Center http://www.tel4vn.com


30
Để cấu hình call record ta vào cấu hình Extension (Advanced), bật tất cả “Force” để ghi âm toàn
bộ các cuộc gọi.

Quản trị viên có thể nghe lại ghi âm từng cuộc gọi, lọc tìm kiếm ghi âm cuộc gọi, tải về file ghi
âm cuộc gọi ở trang report CDR hoặc Report ⇨ Call Recordings

2.3.7 Voicemail

Voicemail là dịch vụ hộp thư thoại cho mỗi Extension khi Extension không online, cúp máy hay
bị đứt kết nối với FreeVPX server thì người gọi có thể ghi âm lại lời nhắn. File ghi âm có thể gửi
đến email và lưu lại trên server FreeVPX.

Để cấu hình Voicemail ta vào phần cấu hình Extension (Voicemail).

VoIP Open Source Training Center http://www.tel4vn.com


31
Để kiểm tra Voicemail chúng ta có 3 cách:

- Kiểm tra hộp thư của email đã cấu hình để nghe file ghi âm lời nhắn
- Đăng nhập vào FreePBX để kiểm tra ở mục Report ⇨ Voicemail Reports
- Dial đến số *97 s​ au đó nhập pass Voicemail ở phần cấu hình để truy cập và nghe/xóa file
ghi âm lời nhắn.

2.3.8 Blacklist

Dịch vụ BlackList của FreePBX dùng để chặn cuộc gọi Inbound từ ngoài tổng đài vào.
Để chặn số chọn Admin ⇨ Blacklist ⇨ Blacklist Number ​ và điền vào Number/CallerID sau đó
ấn Save Changes.

VoIP Open Source Training Center http://www.tel4vn.com


32
2.3.9 Time Group, Time Condition

Mỗi Time Group được cấu hình ứng với một điều kiện thời gian nào đó, quản trị viên có
thể cấu hình theo điều kiện giờ/ngày/tháng. Time Condition sẽ sử dụng TimeGroup để kiểm tra
thời gian và thực hiện định tuyến cuộc gọi tương ứng, có thể hiểu đơn giản là đúng giờ thì thực
hiện action 1, khác giờ sẽ thực hiện action 2. Time Condition được sử dụng như một phần của
Dial plan.

Trước tiên chúng ta phải kiểm tra cấu hình date/time của server FreepPBX vì đây sẽ là
thời gian FreepPBX lấy làm chuẩn. Để xem date/time ta vào mục Admin ⇨ System Admin⇨
Time zone

Tạo một Time Group chọn Applications ⇨ Time Groups ⇨ Add Time Groups

Cuối cùng là click “Submit” và “Apply Config” để lưu lại cấu hình time group.

VoIP Open Source Training Center http://www.tel4vn.com


33
Time group như hình sẽ đặt điều kiện thời gian từ 8h sáng đến 12h trưa từ thứ Hai đến Thứ sáu
các ngày từ 1 đến 31 của tháng Một đến tháng Mười Hai. Hay hiểu đơn giản hơn là buổi sáng
8h-12h các ngày từ thứ 2-6 trong năm. Time group này sẽ được dùng làm điều kiện để điều khiển
các cuộc gọi vào thời gian đã cấu hình này.

Cấu hình một Time Condition chọn Applications ⇨ Time Conditions ⇨ Add Time Condition

Ở Time Conditon này quản trị viên sử dụng Time Group GioLamViec (​ được tạo ở trên) để điều
khiển cuộc gọi.

- Ở phần “Destination matches”​: Nếu thời gian cuộc gọi đúng vào thời gian điều kiện cấu
hình ở Time Group GioLamViec s​ ẽ chuyển cuộc gọi đến group 601.
- Ở phần “Destination non-matches”​: Cuộc gọi sẽ đến voicemail nếu thời gian không
đúng với điều kiện thời gian cấu hình ở Time Group GioLamViec .

Cuối cùng là click “Submit” và “Apply Config” để lưu lại cấu hình time condition.

VoIP Open Source Training Center http://www.tel4vn.com


34
2.3.10 Tự record file âm thanh

Chọn Admin ⇨ System recordings ⇨ Add recordings​ để tự ghi âm file âm thanh mới từ
softphone, IP Phone,....

Điền số ext ​đang dùng login trên softphone, IP phone,.. để record file âm thanh vào ô
trống như hình và ấn Call

Nội dung ghi âm sẽ bắt đầu sau khi ext bắt máy. Ghi âm xong ấn phím “#​”

Cuối cùng đặt tên cho file ghi âm và chọn save lại như hình

Cuối cùng là click “Submit” và “Apply Config” để lưu lại file âm thanh vừa ghi âm.

2.3.11 Hàng đợi QUEUE

Hàng đợi Queue là một dịch vụ tương tự như “Ring Group”​ n​ hưng nếu toàn bộ nhân
viên trong group đều bận thì cuộc gọi của khách hàng sẽ được chuyển đến một hàng chờ cho đến
khi nào có nhân viên rỗi thì cuộc gọi tiếp tục được chuyển vào nhân viên trong group.

Queue thường được sử dụng hơn Ring Group bởi linh hoạt trong việc sử dụng. Để tạo
một Queue ta chọn Applications ⇨ Queues ⇨ Add Queue. ​Một số thông số cấu hình cơ bản cho
Queue như sau :

General :

- Queue Number: số duy nhất trong hệ thống dùng để quản lý queue.


- Queue Password : Mật khẩu để agent tương tác với queue (login/logout)
- Ring Strategy: kiểu rung chuông các ext nằm trong queue

VoIP Open Source Training Center http://www.tel4vn.com


35
- Join Anouncement: file ghi âm lời chào khi user gọi vào queue được tạo trước ở
System Recordings

Queue agent :

- Static Agents: danh sách các số ext nằm trong queue.

Timing & Agent options :

- Max Wait Time: thời gian cho khách hàng chờ trong queue
- Agent Timeout: thời gian rung chuông Agent
- Retry: thời gian rung Agent tiếp theo theo quy luật đã cấu hình trong mục Ring
Strategy

VoIP Open Source Training Center http://www.tel4vn.com


36
Capacity optons :

- Max Callers: giới hạn số khách hàng trong hàng đợi (0 là unlimit).

Cuối cùng là click “Submit” và “Apply Config” để lưu lại cấu hình queue.

3. Phân tích bản tin SIP

Để xử lý các lỗi liên quan đến định tuyến cuộc gọi, thoại 1 chiều, không có thoại,... thì cần phải
tiến hành phân tích bản tin SIP. Có thể sử dụng các công cụ sau:

- Wireshark: dành cho các máy có giao diện hoặc để đọc các file capture dạng .pcap từ các
hệ thống khác.
- Ngrep, Tcpdump: dùng để bắt gói trên các server Linux

Cài đặt Ngrep:

- Ubuntu​: ​apt-get install ngrep


- CentOS​:

wget http://dag.wieers.com/rpm/packages/ngrep/ngrep-1.45-1.el5.rf.i386.rpm

rpm -Uvh ngrep-1.45-1.el5.rf.i386.rpm

VoIP Open Source Training Center http://www.tel4vn.com


37
- Cách​ sử dụng (bắt bản tin SIP ở port 5060): ngrep -p -q -W byline port 5060 > log.txt

Sau khi chạy lệnh trên thì file capture log.txt sẽ được chứa tại thư mục đang gõ lệnh.

Cách sử dụng tcpdump: tcpdump -w output.pcap -i eth0

=> Bắt gói các bản tin ở card mạng eth0 và lưu lại thành file output.pcap, sau đó có thể dùng
Wireshark để mở lên và phân tích.

3.1 Quá trình REGISTER

(1)​: User gửi bản tin REGISTER lên server

(2)​: Server gửi lại bản tin 401 Unauthorized yêu cầu chứng thực, với kèm thuật toán
MD5 và chuỗi ký tư ngẫu nhiên nonce

(3)​: User gửi lên lại bản tin REGISTER với chuỗi chứng thực nằm trong phần
Authorization:

Authorization: Digest
username="1001",realm="asterisk",nonce="18753f4f",uri="sip:192.168.1.50",response="
e4db45e57c5341249feff36651033566",algorithm=MD5.

(4)​: Server kiểm tra và gửi về 200 OK để báo cho user biết đã đăng ký thành công.

VoIP Open Source Training Center http://www.tel4vn.com


38
3.2 Thiết lập cuộc gọi
Quá trình thiết lập và giải phóng cuộc gọi nội bộ (1001 gọi 1002) được mô tả trong hình
sau:

VoIP Open Source Training Center http://www.tel4vn.com


39
(1)​: User 1001 gửi bản tin INVITE đến server yêu cầu thiết lập cuộc gọi đến 1002, trong
bản tin INVITE chứa phần SDP là các thông số địa chỉ ip, port, codecs,... mà 1001 sử dụng trong
quá trình truyền và nhận RTP

(2)​: Server gửi lại bản tin 401 Unauthorized yêu cầu 1001 chứng thực với thuật toán
MD5 và chuỗi ký tự ngẫu nhiên nonce.

(3)​: 1001 gửi bản tin ACK thông báo cho server biết là đã nhận được yêu cầu chứng thực
từ server

(4)​: 1001 gửi lại bản tin INVITE với chuỗi chứng thực nằm trong phần Authorization:

Authorization: Digest
username="1001",realm="asterisk",nonce="1c83f7a6",uri="sip:1002@192.168.1.50",resp
onse="a2062da39ef1924a990af0431d471663",algorithm=MD5.

(5)​: Server kiểm tra và xác định 1001 đã chứng thực thành công, do đó server gửi bản tin
100 Trying để báo cho 1001 chờ đợi trong khi server kết nối với 1002

(6)​: Server gửi bản tin INVITE đến 1002. Chú ý phần SDP đã được server thay đổi với
ip, port,codec,... của server. Với kết quả như thế này ta có thể suy ra rằng server sẽ tham gia vào
quá trình truyền RTP giữa 1001 và 1002.

(7)​: 1002 gửi 100 Trying báo cho server biết là đang xử lý

(8)​: 1002 gửi lại cho server tín hiệu hồi âm chuông 180 Ringing

(9)​: Server chuyển tiếp tín hiệu hồi âm chuông đến 1001

(10)​: Thuê bao 1002 nhấc máy, gửi bản tin 200 OK chứa các thông số truyền nhận RTP
trong phần SDP

(11)​: Server gửi trả lại ACK thông báo cho 1002 rằng server đã nhận được bản tin 200
OK

(12)​: Server chuyển tiếp bản tin 200 OK đến 1001. Cũng giống như trong bước (6) do
server được cấu hình tham gia vào cả quá trình truyền thoại nên phần SDP đã được thay đổi
thành ip, port, codecs,... của server

(13)​: 1001 gửi bản tin ACK báo cho server biết mình đã nhận bản tin 200 OK

Đến lúc này thì 1001 và 1002 đã thông thoại với nhau, và server Asterisk làm nhiệm vụ trung
gian truyền tải tín hiệu thoại này.

VoIP Open Source Training Center http://www.tel4vn.com


40
3.3 Quá trình giải phóng cuộc gọi
(14)​: Sau khi kết thúc cuộc đàm thoại, thuê bao 1002 cúp máy, gửi bản tin BYE đến
server

(15)​: Server gửi lại 200 OK cho phép 1002 kết thúc phiên

(16)​: Server gửi bản tin BYE cho 1001 để báo phiên đã kết thúc

(17)​: 1001 gửi lại 200 OK xác nhận kết thúc phiên

VoIP Open Source Training Center http://www.tel4vn.com


41
PHẦN 2:
ASTERISK ADMINISTRATION

VoIP Open Source Training Center http://www.tel4vn.com


42
1) Tổng quan
Asterisk là một phần mềm mã nguồn mở, cài đặt lên server Linux thì sẽ trở thành tổng đài nội bộ
(PBX). Các thao tác cấu hình dịch vụ, quản trị Asterisk đều sử dụng bằng lệnh (CLI), do đó để
dễ dàng cho người sử dụng thì có thể cài thêm các opensource khác làm giao diện web quản lý
cho Asterisk; lúc này các thao tác với tổng đài PBX sẽ thông qua giao diện web. Có thể sử dụng
các phần mềm sau: Freepbx, Elastix, Trixbox,...

Cần lưu ý là mặc định Asterisk load cấu hình từ file, do đó cần nắm vững cấu trúc file và format
của các file cấu hình này; còn khi sử dụng giao diện quản lý web thì hầu như chỉ cấu hình trên
giao diện thôi, ít cần quan tâm đến các file này.
- Đường dẫn:
- /etc/asterisk: thư mục chứa tất cả file cấu hình của Asterisk
- /var/lib/asterisk: chứa các thư viện, file âm thanh, các scripts agi
- /var/lib/asterisk/sounds: chua cac file am thanh
- /var/spool/asterisk: chứa các file ghi âm cuộc gọi, voicemail, call file
- Các file cấu hình quan trọng:
- sip.conf: khai báo sip account, trunk account
- extensions.conf: khai báo dialplan
- confbridge.conf: khai báo cấu hình conference sử dụng confbridge
- musiconhold.conf: khai báo cấu hình dịch vụ MOH - Music On Hold
- Vào Asterisk console: asterisk -rvvvv
- Các lệnh cần thiết trong CLI:
- core set verbose 32 =>
- sip show users => xem danh sách sip accounts trên hệ thống
- sip show peers => xem trạng thái đăng ký của sip account và sip trunk account
2) Khai báo sip account
- Cấu trúc file sip.conf gồm có phần [general] chứa các thuộc tính chung của sip account,
phía dưới là các khai báo sip account và sip trunk như sau.
[general]
………….
………….
………….
[account1]
………….
………….
………….
[account2]
………….
………….

VoIP Open Source Training Center http://www.tel4vn.com


43
- Các thuộc tính khai báo trong sip account có độ ưu tiên cao hơn nên sẽ overwrite các
thuộc tính đã được định nghĩa trong phần general. Ngược lại các thuộc tính không được
khai báo trong sip account sẽ được kế thừa từ phần general.
- type: friend, user, peer

[general]
context=public
allowoverlap=no
udpbindaddr=0.0.0.0
tcpenable=no
tcpbindaddr=0.0.0.0
transport=udp
srvlookup=yes

[1001]
fromuser=1001
type=friend
host=dynamic
context=training
secret=TEL4VN.COM
disallow=all
allow=ulaw,alaw

[1002]
fromuser=1002
type=friend
host=dynamic
context=training
secret=TEL4VN.COM
disallow=all
allow=ulaw,alaw

VoIP Open Source Training Center http://www.tel4vn.com


44
3) Viết dialplan
- Cấu trúc file extensions.conf gồm có phần [general] chứa các cấu hình chung, và bên
dưới là dialplan của các context

[general]
………….
………….
[context1]
include => context2
include => context3
………….
………….
[from-trunk]
………….
………….
a. Dialplan cơ bản (lưu ý thực hiện reload mỗi lần thay đổi cấu hình):
- Đăng nhập 1001, 1002 trên softphone
- Tạo dialplan như sau:

[general]
static=yes
writeprotect=no
clearglobalvars=no

[training]
exten => 1001,1,Noop(This is the call to extension 1001)
exten => 1001,2,Noop(Test basic call first)
exten => 1001,3,Dial(SIP/1001)
exten => 1002,1,Noop(This is the call to extension 1002)
exten => 1002,2,Noop(Test basic call first)
exten => 1002,3,Dial(SIP/1002)

- Lấy 1002 gọi 1001 và kiểm tra log console. Test chiều ngược lại từ 1001 gọi 1002.
- Thay đổi dialplan trong context training như sau:

[training]
exten => 1001,1,Noop(This is the call to extension 1001)

VoIP Open Source Training Center http://www.tel4vn.com


45
exten => 1001,n,Noop(Test basic call first)
exten => 1001,n,Dial(SIP/1001)
exten => 1002,1,Noop(This is the call to extension 1002)
exten => 1002,n,Noop(Test basic call first)
exten => 1002,n,Dial(SIP/1002)
- Kiểm tra cuộc gọi giữa 1001 với 1002 và ngược lại. Theo dõi log console
- Thay đổi dialplan trong context training như sau:

[training]
exten => _1XXX,1,Noop(This is the call to extension 1001)
exten => _1XXX,n,Noop(Test basic call first)
exten => _1XXX,n,Dial(SIP/${EXTEN})

- Kiểm tra cuộc gọi giữa 1001 với 1002 và ngược lại. Theo dõi log console
- Tìm hiểu hàm Noop, Dial. Keyword tra Google: Asterisk cmd ten_application. Ví
dụ muốn tìm hiểu thông số hàm Dial, gõ trên Google: asterisk cmd Dial
- Khai báo thêm sip account 1003
- Thêm vào dialplan context training:

exten => 9999,1,Noop(Test ring group & MOH)


exten => 9999,n,Dial(SIP/1001&SIP/1002,20,m(default))

4) Cấu hình trunk


- Tạo 1 sip trunk với cấu hình như sau:

[trunk_name]
fromuser=992501
secret=TEL4VN_PBX_2015
host=sip.tel4vn.com
port = 50061
type=peer
disallow=no
context=from-trunk
allow=ulaw,alaw

Nếu dial qua trunk thì cấu trúc hàm Dial là: Dial(​SIP​/​trunk_name​/​number​)

VoIP Open Source Training Center http://www.tel4vn.com


46
PHẦN 3:
TEL4VN LAB

VoIP Open Source Training Center http://www.tel4vn.com


47
Bài 01:
Cấu hình gọi nội bộ, hộp thư thoại, chuyển cuộc gọi và ghi âm cuộc gọi

Yêu cầu: Tạo các ext cho một Cty với yêu cầu như sau:
1. 2 số nội bộ (ext) cho phòng kinh doanh 2 ext cho phòng kỹ thuật, 1 ext cho lễ tân
và 2 ext dành riêng cho testing.
2. Các số ext phải gọi nội bộ được với nhau
3. Các ext dành cho phòng kỹ thuật phải được cấu hình hộp thư thoại (Voicemail)
4. Các ext dành cho lễ tân và phòng kinh doanh phải được cấu hình chuyển cuộc gọi
(Follow Me) tới một trong 2 ext test
5. Tất cả các cuộc gọi của các nhân viên đều được ghi âm.

*Hướng dẫn :
1. Tham khảo hướng dẫn tạo ext ờ phần 2 - cấu hình FreePBX, chú ý tạo đủ số ext
theo yêu cầu.
2. Tham khảo phụ lục đăng ký 2 ext khác nhau trên 2 softphone sau đso call qua lại
cho nhau.
3. Tham khảo cách enable voicemail cho ext ở phần 2 - cấu hình FreePBX
4. Cấu hình follow me cho ext như sau :
- Vào mục cấu hình ext (Find Me / Follow Me)

- Bật followMe “Yes”, chọn kiểu rung chuông và điền các số nội bộ cần rung
chuông kèm theo vào Follow-Me-List
5. Tham khảo bật ghi âm cho các ext ở phần 2 - cấu hình FreePBX

VoIP Open Source Training Center http://www.tel4vn.com


48
Bài 02:
Cấu hình SIP trunk, thực hiện cuộc gọi ra PSTN, kết nối 2 tổng đài

Yêu cầu: Từ mô hình ở Bài 01


1. Xây dựng trunk với TEL4VN cho các số nội bộ có thể gọi ra số điện thoại di động
của học viên.
2. Thay thế Follow Me của phòng kinh doanh bằng số điện thoại di động của học
viên.
3. Cấu hình trunk với tổng đài của bạn cùng lớp (hoặc FreePBX khác) để backup
cho trunk TEL4VN khi thực hiện cuộc gọi ra số điện thoại di động
4. Cấu hình prefix 9 cho cuộc gọi với trunk backup vừa tạo

*Hướng dẫn :

1. Tham khảo cách cấu hình trunk và outbound route ở phần 2 - cấu hình FreePBX
2. Cấu hình folloe me như bài 1 nhưng thêm dấu # vào phía sau số điện thoại di động
để FreePBX biết đây là số cần gọi ra ra bên ngoài.
3. Tham khảo thêm các cấu hình trunk ở phần setting Incoming để tạo thông tin trunk
cung cấp cho bạn cùng lớp (đóng vai trò provider)
4. Ở phần cấu hình outbound route thêm prefix như hình

VoIP Open Source Training Center http://www.tel4vn.com


49
Bài 3:
Xây dựng ngữ cảnh gọi vào một công ty

Yêu cầu:
1. Ghi âm các file với tên và nội dung như sau:
- loi_chao: “chào mừng bạn đến công ty TEL4VN, mời bạn bấm 1 gặp phòng kỹ
thuật, bấm 2 gặp phòng kinh doanh”
- kinh_doanh: “vui lòng bấm số nội bộ hoặc bấm 0 để gặp điện thoại viên”
- ngoai_gio: “hiện tại chúng tôi đã hết giờ làm việc, mời bạn bấm 1 để để lại lời
nhắn, bấm 2 để liên lạc đường dây nóng”
(có thể tải các file ghi âm sẵn của TEL4VN)
2. Tạo lời chào khi gọi số 7000
* Trường hợp trong giờ làm việc (8h~17h từ Thứ 2 đến Thứ 6)
- Phát file ghi âm “loi_chao”
- Ấn 1:
+ Cuộc gọi sẽ gọi đến phòng kỹ thuật, tất cả các ext phòng kỹ thuật đều rung
chuông, khi một ext bắt máy sẽ ngưng rung chuông ở các ext còn lại.
+ Nếu trong 20s không có ext nào bắt máy hoặc không ext ở phòng kỹ thuật
nào online thì cuộc gọi sẽ chuyển đến hộp thư thoại của một trong những
ext ở phòng kỹ thuật.
- Ấn 2: Phát file ghi âm “kinh_doanh”.
+ Nếu ấn số ext của phòng kinh doanh (ví dụ 1003, 1004) thì cuộc gọi sẽ
chuyển đến ext đó. Nếu ext không bắt máy hoặc không online cuộc gọi sẽ
chuyển đến số điện thoại di động của học viên
+ Ấn 0 tất cả các ext phòng kinh doanh đều rung chuông, khi một ext bắt máy
sẽ ngưng rung chuông ở các ext còn lại. Nếu trong 20s không có ext nào
bắt máy hoặc không ai online thì cuộc gọi sẽ chuyển đến số điện thoại di
động.
*Trường hợp ngoài giờ làm việc
- Phát file ghi âm “ngoai_gio”
- Ấn 1, chuyển cuộc gọi đến hộp thư thoại của tiếp tân
- Ấn 2, chuyển cuộc gọi đến số điện thoại di động của học viên

VoIP Open Source Training Center http://www.tel4vn.com


50
*Hướng dẫn :
1. Tham khảo cách upload file âm thanh ở phần System Recordings ở phần 2 - cấu
hình FreePBX
2. Tham khảo cấu hình Time condition và tạo IVR ở phần 2 - cấu hình FreePBX. Có
thể test call bằng cách giả lập inbount call (Simulate Incoming Call số 7777 và tạo
1 inbound call đón call) sau đó route call vào time condition đã tạo.

VoIP Open Source Training Center http://www.tel4vn.com


51
Bài 04:
Dịch vụ Conference

Yêu cầu: Tạo một cuộc gọi hội nghị, User quay số 7001
- Ghi âm file với tên và nội dung như sau:
+ loichao_hoinghi : “Chào mừng đến với cuộc gọi hội nghị”
- User thường nhập mật khẩu 1234. Admin nhập mật khẩu 4321
- Hội nghị giới hạn 3 người tham gia, người thứ 4 sẽ không tham gia vào được
- Ghi âm toàn bộ cuộc gọi hội nghị
- Thông báo cho các thành viên trong hội nghị biết khi có thành viên mới tham gia
hoặc rời khỏi hội nghị

*Hướng dẫn : tham khảo cách tạo conference ở phần 2 - cấu hình FreePBX

VoIP Open Source Training Center http://www.tel4vn.com


52
Bài 05:
Cài đặt Asterisk trên Linux CentOS 6.7

Mục tiêu:
- Cài đặt Asterisk từ source trên CentOS 6.7
- Cấu hình các dịch vụ tương tự như FreePBX

Phần 1: Chuẩn bị máy ảo CentOS6.7


- Các bạn có thể tham khảo hướng dẫn cài đặt CentOS trên Virtualbox ở phần Phụ
Lục
- Hoặc có thể tải file CentOS6.7_x64.ova của TEL4VN và import vào VirtualBox
(Tham khảo cách inport file ở phần Phụ Lục)
- Sau khi cài đặt xong máy ảo, các bạn tiến hành update

yum update -y

reboot

Phần 2: Cài đặt Asterisk 13.x


1. Tải các gói phần mềm cần thiết

yum install wget vim-enhanced -y

cd /usr/src

wget
http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-cu
rrent.tar.gz

tar -zxvf dahdi-linux-complete-current.tar.gz

wget ​http://downloads.asterisk.org/pub/telephony/libpri/libpri-current.tar.gz

VoIP Open Source Training Center http://www.tel4vn.com


53
tar -zxvf libpri-current.tar.gz

wget ​http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz

tar -zxvf asterisk-13-current.tar.gz

(Các bạn có thể tải các source file này từ TEL4VN server hoặc trên website của Asterisk)

2. Cài đặt các phầm mềm phụ

yum groupinstall "Development Tools" -y

cd dahdi-linux-complete-*

make && make install && make config

cd ..

cd libpri-*

make && make install

cd ..

3. Cài đặt Asterisk

Cài đặt các gói cần thiết cho Asterisk:


cd /usr/src/asterisk-*

./contrib/scripts/install_prereq install

./contrib/scripts/install_prereq install-unpackaged

./configure --libdir=/usr/lib64
(./configure --libdir=/usr/lib nếu bạn sử dụng CentOS 32bit)

VoIP Open Source Training Center http://www.tel4vn.com


54
make menuselect
(​Chọn như Picture 1 để cài thêm format .mp3. Bỏ qua bước này nếu thấy không
cần thiết)

./contrib/scripts/get_mp3_source.sh

make && make install && make config && make install-logrotate

make samples
(cài đặt các file cấu hình mẫu)

chkconfig asterisk on
(tự start Asterisk khi khởi động server)

sed -i -e s,'SELINUX=enforcing','SELINUX=disabled', /etc/selinux/config

chkconfig iptables off

service iptables stop

reboot
(restart lại server)

service asterisk start


(start Asterisk)

asterisk -rvvvv
(vào giao diện Asterisk command line)

VoIP Open Source Training Center http://www.tel4vn.com


55
Picture 1:

Phần 3: Cấu hình Extension và Dialplan đơn giản


1. Tạo extension đơn giản

vim /etc/asterisk/sip.conf

[general]
context=public
allowoverlap=no
udpbindaddr=0.0.0.0
tcpenable=no
tcpbindaddr=0.0.0.0
transport=udp
srvlookup=yes
callcounter=yes

;tel4vn
[1000]
username=1000
secret=123qwe
type=friend
host=dynamic
context=tel4vn

VoIP Open Source Training Center http://www.tel4vn.com


56
qualify=yes
directmedia=no
disallow=all
allow=ulaw,alaw

[1001]
username=1001
secret=123qwe
type=friend
host=dynamic
context=tel4vn
qualify=yes
directmedia=no
disallow=all
allow=ulaw,alaw

2. Tạo dialplan đơn giản

vim /etc/asterisk/extensions.conf

[general]
static=yes
writeprotect=no
clearglobalvars=no

[tel4vn]
exten => _1XXX,1,​Noop​(Call local in TEL4VN context)
exten => _1XXX,n,Dial(SIP/${EXTEN},60)
exten => _1XXX,n,Hangup()

Phần 4: Cấu hình trunk cuộc gọi với trunk TEL4VN và 2 tổng đài nội bộ với nhau.

1. Tạo tài khoản trunk với TEL4VN


- Thêm cấu hình vào file sip.conf như sau
[trunk_tel4vn]

VoIP Open Source Training Center http://www.tel4vn.com


57
username=​<username>
type=friend
fromuser=​<username>
secret=​<password>
host=sip.tel4vn.com
nat=force_rport,comedia
qualify=yes
disallow=all
allow=ulaw,alaw
context=from-trunk
port=50061

register => ​<username>​:​<password>​@sip.tel4vn.com:50061/02873020777


2. Cấu hình outboud route qua trunk TEL4VN

- Cấu hình outbound route bên trong context tel4vn ​như sau
[tel4vn]
exten => _1XXX,1,​Noop​(Call local in TEL4VN context)
exten => _1XXX,n,Dial(SIP/${EXTEN},60)
exten => _1XXX,n,Hangup()

exten => _0Z.,1,​Noop​(Dialing out from ${CALLERID(num)} to ${EXTEN} through


TEL4VN)
exten => _0Z.,n,Dial(SIP/trunk_tel4vn/${EXTEN},60)
exten => _0Z.,n,Hangup()

VoIP Open Source Training Center http://www.tel4vn.com


58
3. Trunk 2 tổng đài nội bộ với nhau (trunk account)

VoIP Open Source Training Center http://www.tel4vn.com


59
4. Trunk 2 tổng đài nội bộ với nhau (trunk IP)

VoIP Open Source Training Center http://www.tel4vn.com


60
Phần 5. Cấu hình một số dịch vụ cơ bản
1. Ring Group

Kịch bản 1 ringAll đơn giản: User gọi 3000


- Ext 1001 và 1002 sẽ rung đồng thời, ext nào bắt máy trước sẽ kết nối cuộc gọi và
dừng rung chuông ở ext còn lại
Cấu hình dialplan rung chuông đồng thời ext 1001 và 1002
[tel4vn]
exten => ​3000​,1,Noo(Call group All in TEL4VN context)
exten => ​3000​,n,Set(group=SIP/1001&SIP/1002)
exten => ​3000​,n,Dial(${group},60)
exten => ​3000​,n,Hangup()

Kịch bản 2 sử dụng Queue: User gọi 3001


+ Phát lời chào “hello”
+ ext 1001 rung chuông trong 30 giây, nếu ext 1001 không bắt máy, máy bận, bấm
hangup hoặc không online thì cuộc gọi sẽ chuyển đến ext 1002, sau 30 giây ext
1002 không bắt máy cuộc gọi sẽ lặp lại với ext 1001 sau 5 giây
+ Khi ext 1001 và 1002 không online cuộc gọi bị hangup
+ Các ext 1001 và 1002 sẽ nhận cuộc gọi lần lượt
+ Cho phép ghi âm cuộc gọi tới group 3001
+ Cuộc gọi sẽ được ghi âm lại khi ext 1001 hoặc 1002 bắt máy
+ Định dạng file ghi âm cuộc gọi time-from-caller-to-4441-uuid.wav
+ Kiểm tra file ghi âm ở thư mục /var/spool/asterisk/monitor
Tạo một Queue để nhận cuộc gọi ở /etc/asterisk/queues.conf

[tel4vn_queue]
member => SIP/1001
member => SIP/1002

musiconhold=default
strategy=​rrmemory
timeout = 30
retry = 5
ringinuse = no

VoIP Open Source Training Center http://www.tel4vn.com


61
maxlen = 0
joinempty = strict
monitor-format = wav
monitor-type = MixMonitor

Cấu hình dialplan với Queue vừa tạo


[tel4vn]

exten => ​3001​,1,Noop(Call group Sequence in TEL4VN context)


exten => ​3001​,n,Answer()
exten => ​3001​,n,Playback(hello)
exten => ​3001​,n,Set(MONITOR_FILENAME=${UNIQUEID})
exten => ​3001​,n,Queue(​tel4vn_queue​,xc)
exten => ​3001​,n,Playback(goodbye)
exten => ​3001​,n,Hangup()

2. IVR

Kịch bản IVR: User gọi 3002


- Phát lời chào “hello” chờ trong 30 giây, hết thời gian mà user không nhập phím
nào thì cuộc gọi sẽ bị hangup.
- Nếu user ấn phím 1, đọc tên phím số vừa chọn “1” sau đó cuộc gọi sẽ chuyển tới
ext 1001
- Nếu user ấn phím 2, đọc tên phím số vừa chọn “2” sau đó cuộc gọi sẽ chuyển tới
ext 1002
- Nếu user ấn phím 3, play file “goodbye” sau đó hangup cuộc gọi.
- Nếu user ấn phím các phím số còn lại hoặc hết thời gian chờ thì hangup cuộc gọi.
[tel4vn]
;IVR menu
exten => ​3002​,1,Noop(Call IVR menu in TEL4VN context)
exten => ​3002​,n,Goto(​ivr_main​,​abc​,1)
.
.
.
[ivr_main]
exten => abc,1,Answer(500)
exten => abc,n,BackGround(hello)

VoIP Open Source Training Center http://www.tel4vn.com


62
exten => abc,n,WaitExten(10)

exten => 1,1,Playback(you-entered)


same => n,SayNumber(1)
same => n,Dial(SIP/1001,60)
same => n,Hangup()
exten => 2,1,Playback(you-entered)
same => n,SayNumber(2)
same => n,Dial(SIP/1002,60)
same => n,Hangup()
exten => 3,1,Playback(you-entered)
same => n,SayNumber(3)
same => n,Playback(goodbye)
same => n,Hangup()

;An sai phim


exten => i,1,Noop(An Sai Phim)
exten => i, n,Hangup()

;Het thoi gian


exten => t,1,Noop(Het thoi gian)
exten => t, n,Hangup()

3. Conference

Tạo conferecne “tel4vn​” giới hạn số lượng 5 người tham gia


a. Conference User
Kịch bản conference cho user: User gọi 3003
- Nhập password user “1234” sau đó nhấn “#”, đọc tên và nhấn “#” để join vào
conference “tel4vn” với tư cách là user bình thường.
- User menu bao gồm:
+ Ấn phím *: Nghe lời mời nhấn số ext cần mời vào room, nhập số ext và ấn “#” để
mời, ext được mời sẽ rung chuông khi bắt máy sẽ phải nhập pass “1234” sau đó ấn
“#”, đọc tên và ấn “#” để join conference
+ Ấn phím 0: Phát file ghi âm “hello”
+ Ấn phím 1: Nghe thông báo số lượng người trong conference
+ Ấn phím 2: Tắt tiếng của mình trong conference

VoIP Open Source Training Center http://www.tel4vn.com


63
+ Ấn phím 3: Rời khỏi conference
+
b. Conference Admin
Kịch bản cho conference cho admin: User gọi 3004
- Nhập password admin “4321” sau đó ấn “#”, đọc tên và nhấn “#” để join vào
conference “tel4vn” với tư cách là admin
- Admin menu bao gồm:
+ Ấn phím *: Nghe lời mời nhấn số ext cần mời vào room, nhập số ext và ấn “#” để
mời, ext được mời sẽ rung chuông khi bắt máy sẽ phải nhập pass “1234” sau đó ấn
“#”, đọc tên và ấn “#” để join conference
+ Ấn phím 0: Phát file ghi âm “hello”
+ Ấn phím 1: Nghe thông báo số lượng người trong conference
+ Ấn phím 2: Tắt tiếng của mình trong conference
+ Ấn phím 3: Khóa conference không cho user tiếp tục join vào
+ Ấn phím 4: Tắt tiếng tất cả các user trong room
+ Ấn phím 5: Kick user join vào cuối cùng ra khỏi room.
+
Cấu hình cho /ect/asterisk/confbridge.conf
;tel4vn
[tel4vn_admin]
type=user
pin=4321
admin=yes
marked=yes
music_on_hold_when_empty=yes
announce_join_leave=yes

[tel4vn_user]
type=user
pin=1234
end_marked=yes
marked=yes
music_on_hold_when_empty=yes
wait_marked=yes
end_marked=yes
announce_join_leave=yes

VoIP Open Source Training Center http://www.tel4vn.com


64
[tel4vn_bridge]
type=bridge
max_members=5
mixing_interval=10
sound_join=yes
sound_leave=yes
sound_has_joined=yes
sound_has_left=yes

[tel4vn_admin_menu]
type=menu
0=playback(hello)
1=participant_count
2=toggle_mute
3=admin_toggle_conference_lock
4=admin_toggle_mute_participants
5=admin_kick_last
*=dialplan_exec(​tel4vn​,​invite_join​,1)

[tel4vn_user_menu]
type=menu
0=playback(hello)
1=participant_count
2=toggle_mute
3=leave_conference
*=dialplan_exec(​tel4vn​,​invite_join​,1)

Cấu hình dial plan cho conference


[tel4vn]
exten => ​3003​,1,Noop(Call to Conferene tel4vn in TEL4VN context)
exten => ​3003​,n,Set(CONF=tel4vn)
exten => ​3003​,n,ConfBridge(${CONF},tel4vn_bridge,tel4vn_user,tel4vn_user_menu)
exten => ​3003​,n,Hangup()

exten => ​3004​,1,Noop(Call to Conferene tel4vn in TEL4VN context)


exten => ​3004​,n,Set(CONF=tel4vn)
exten =>
3004​,n,ConfBridge(${CONF},tel4vn_bridge,tel4vn_admin,tel4vn_admin_menu)

VoIP Open Source Training Center http://www.tel4vn.com


65
exten => ​3004​,n,Hangup()

exten => ​invite_join​,1,Log(NOTICE, Invite other to Conferene tel4vn in TEL4VN


context)
same => n,Read(numberToDial,vm-enter-num-to-call)
same => n,Playback(vm-dialout)
same => n,Originate(SIP/${numberToDial},exten,​tel4vn​,​3003​,1)

4. Call record

Kịch bản cho call record: 2 ext nội bộ gọi với nhau
- Cuộc gọi sẽ được ghi âm và lưu lại trên server
- Định dạng file ghi âm time-from-caller-to-callee-uuid.wav
- Kiểm tra file ghi âm ở thư mục /var/spool/asterisk/monitor
Cấu hình dialplan cho call record
[tel4vn]
exten => ​_1XXX​,1,Noop(Call local && Record in TEL4VN context)
exten =>
_1XXX​,n,Set(fileName=${STRFTIME(${EPOCH},,%Y_%m_%d-%H_%M_%S)}-fr
om-${CALLERID(num)}-to-${EXTEN:2})
exten => ​_1XXX​,n,MixMonitor(${fileName}.wav,b)
exten => ​_1XXX​,n,Dial(SIP/${EXTEN},60)
exten => ​_1XXX​,n,Hangup()

5. Time Condition

Kịch bản gọi với Time condition: 2 ext gọi nội bộ với nhau
- Nếu thời gian hiện tại từ 6h đến 17h từ Thứ 2 đến Chủ nhật cuộc gọi sẽ được
chuyển đến ext bị gọi
- Nếu ngoài thời gian trên, phát file ghi âm “goodbye” và hangup cuộc gọi
Cấu hình dial plan cho time condition
[tel4vn]
exten => ​_1XXX​,1,Noop(Call local && Time condition in TEL4VN context)
exten =>
_1XXX​,n,GotoIfTime(6:00-17:00,mon-sun,*,*?dung_gio,​def​,1:sai_gio,​ghk​,1)
.

VoIP Open Source Training Center http://www.tel4vn.com


66
.
.

[dung_gio]
exten => def,1,Noop(Dung gio)
exten => def,n(daytime),Playback(hello)
exten => def,n(daytime),Dial(SIP/${EXTEN},60)
exten => def,n(daytime),Hangup()

[sai_gio]
exten => ghk,1,Noop(Sai gio)
exten => ghk,n(nighttime),Playback(goodbye)
exten => ghk,n,Hangup()

6. Voice Mail

Kịch bản gọi Voicemaill: User gọi tới ext 1001 hoặc 1002 nhưng ext không online để
nhận cuộc gọi
- Phát lời chào Voicemail
- Ghi âm lời nhấn và ấn phím “#”
- Phát lời chào tạm biệt và hangup cuộc gọi.
Kịch bản kiểm tra Voicemail của mình: User 1001 hoặc 1002 online sau đó gọi 7777
- Nhập password Voicemail “1234” sau đó ấn “#”
- Làm theo hướng dẫn được phát để nghe và quản lý mesage Voicemail
Cấu hình mailbox cho ext ở /etc/asterisk/voicemail.conf
[mailbox_tel4vn]
1000 => 1234,tel4vn,tel4vn@gmail.com
1001 => 1234,tel4vn,tel4vn01@gmail.com

Cấu hình dialplan cho Voicemail và check voicemail

[tel4vn]
exten => ​_1XXX​,1,Noop(Call local && voice mail in TEL4VN context)
exten => ​_1XXX​,n,Dial(SIP/${EXTEN},60)
exten => ​_1XXX​,n,VoiceMail(${EXTEN}@mailbox_tel4vn,u)
exten => ​_1XXX​,n,Hangup()

VoIP Open Source Training Center http://www.tel4vn.com


67
exten => ​7777​,1,Noop(Check voice mail in TEL4VN context)
exten => ​7777​,n,VoiceMailMain(${CALLERID(num)}@mailbox_tel4vn)
exten => ​7777​,n,Hangup()

VoIP Open Source Training Center http://www.tel4vn.com


68
PHỤ LỤC

Phụ lục 01: CẤU HÌNH MỘT SỐ SOFTPHONE THÔNG DỤNG

Login cho một số softphone thông dụng: X-lite, Zoiper, MicroSip, Jitsi, Blink,
QuteCom, PortGo

X-lite
Để cấu hình tài khoản SIP các bạn chọn Softphone ⇨ Account Settings
Điền đầy đủ các thông tin của tài khoản SIP như sau:

VoIP Open Source Training Center http://www.tel4vn.com


69
Nhấn “OK”​ để đăng ký tài khoản SIP này với server.

Zoiper

Để cấu hình tài khoản SIP các bạn chọn Settings ⇨ Preferences
Chọn “Create account​”

VoIP Open Source Training Center http://www.tel4vn.com


70
Chọn “SIP”​ và ấn “NEXT”

Điền đầy đủ thông tin của tài khoản SIP như sau:

VoIP Open Source Training Center http://www.tel4vn.com


71
Chọn “NEXT”​ để tiếp tục

Chọn "Close"​ sau khi tạo tài khoản thành công.

VoIP Open Source Training Center http://www.tel4vn.com


72
Bên trái bạn chọn tài khoản SIP vừa cấu hình sau đó click “Register” ​để đăng ký
user với server.

MicroSip
Để cấu hình tài khoản SIP các bạn chọn Menu ⇨ Add account...

VoIP Open Source Training Center http://www.tel4vn.com


73
Điền đầy đủ các thông tin của tài khoản SIP như sau:

VoIP Open Source Training Center http://www.tel4vn.com


74
Ấn “Save” đ​ ể đăng nhập

Khi đăng nhập thành công

Qutecom
Điền thông tin cấu hình của SIP account như sau:

VoIP Open Source Training Center http://www.tel4vn.com


75
Ấn “Connect”​ để đăng nhập

Đăng nhập thành công

Jitsi
Để cấu hình tài khoản SIP các bạn chọn File ⇨ Add new account..

Điền đầy đủ các thông tin của tài khoản SIP như sau:

VoIP Open Source Training Center http://www.tel4vn.com


76
Ấn “Add”​ để đăng nhập
Đăng nhập thành công

VoIP Open Source Training Center http://www.tel4vn.com


77
PortGo
Điền đầy đủ các thông tin của tài khoản SIP như sau

Ấn “Login” ​để đăng nhập

Đăng nhập thành công

VoIP Open Source Training Center http://www.tel4vn.com


78
Blink
Để cấu hình tài khoản SIP các bạn chọn Blink ⇨ Accounts ⇨ Add account...

Điền đầy đủ các thông tin của tài khoản SIP như sau:

Ấn “Add” đ​ ể đăng nhập

VoIP Open Source Training Center http://www.tel4vn.com


79
Đăng nhập thành công

VoIP Open Source Training Center http://www.tel4vn.com


80
Phụ lục 02: Hướng dẫn đăng ký trunk với TEL4VN

Bước 1: Truy cập vào địa chỉ http://sip.tel4vn.com


Bước 2: Click vào Sign up tài khoản

Bước 3: Điền thông tin email và chuỗi xác nhận

Ấn “SIGNUP”​ quá trình đăng lý thành công, tiếp tục kiểm tra email để xem cấu
hình trunk

VoIP Open Source Training Center http://www.tel4vn.com


81
Bước 4: Kiểm tra email và quay lại login vào trang web http://sip.tel4vn.com

Đăng nhập thành công

Chọn mục “SIP/IAX INFO”

VoIP Open Source Training Center http://www.tel4vn.com


82
Copy và lưu giữ lại cấu hình của SIP trunk để dùng cho các bài Lab gọi ra PSTN

Phụ lục 03: Cấu hình gửi mail từ server ra ngoài thông qua Gmail

Cài đặt: yum install -y postfix vim


Cấu hình smtp relay cho postfix như sau:

vim /etc/postfix/main.cf

smtp_sasl_security_options = noanonymous
relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_tls_CAfile = /etc/postfix/cacert.pem
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl/passwd

Tạo file cấu hình gmail account

mkdir /etc/postfix/sasl

VoIP Open Source Training Center http://www.tel4vn.com


83
vim /etc/postfix/sasl/passwd

[smtp.gmail.com]:587 ​username@gmail.com​:password

Cấu hình permission và database cho postfix

chmod 600 /etc/postfix/sasl/passwd


postmap /etc/postfix/sasl/passwd

Tạo certificate để sử dụng cho SASL

cd /etc/pki/tls/certs
make smtp.gmail.com.pem
(Nhập thông tin và Enter)
cp /etc/pki/tls/certs/smtp.gmail.com.pem /etc/postfix/cacert.pem

Restart postfix mail

service postfix restart

Đăng nhập vào tài khoản Gmail đã cấu hình để bật “Allow less secure apps” t​ ại đây:
https://support.google.com/accounts/answer/6010255
https://www.google.com/settings/security/lesssecureapps

Test gửi một email từ postfix bằng câu lệnh sau:

echo "Test mail from postfix" | mail -s "Test Postfix" to_email@gmail.com

VoIP Open Source Training Center http://www.tel4vn.com


84
Phụ lục 04: Hướng dẫn import file máy ảo cài sẵn và đặt IP tĩnh

Sau khi tải file .OVA 64bit hoặc 32bit tùy theo hệ điều hành của máy tính về các
bạn tiến hành import vào Virtualbox như sau:

Bước 1: Khởi động Virtualbox

Bước 2: Chọn “File ⇨ Import Appliance”​ sau đó chọn đến file .OVA

Chọn “Next”

VoIP Open Source Training Center http://www.tel4vn.com


85
Bước 3: Chọn “Import”

VoIP Open Source Training Center http://www.tel4vn.com


86
Chọn “Agree”

Đợi quá trình import diễn ra, tùy theo cấu hình máy mà thời gian đợi khác nhau

Bước 4: Thay đổi cấu hình cho máy ảo để phù hợp với máy tính

Click chuột phải vào máy ảo vừa Import chọn “Settings”

VoIP Open Source Training Center http://www.tel4vn.com


87
Chọn “Network”​ sau đó chọn card mạng đang sử dụng cho phù hợp, ví dụ xài wiffi thì
chọn card mạng wifi, xài dây thì chọn card dây, tùy mỗi máy mà tên các card mạng sẽ
khác nhau.

Chọn “OK”​ để lưu cấu hình lại

Bước 5: Khởi động máy ảo


Click chọn máy ảo vừa import sau đó click nút “Start”​ màu xanh. Quá trình khởi động
diễn ra

VoIP Open Source Training Center http://www.tel4vn.com


88
Đợi đến khi quá trình khỏi động hoàn tất sau đó tiến hành đăng nhập vào máy ảo với
user/password là ​ root / <lab_password>

VoIP Open Source Training Center http://www.tel4vn.com


89
Khi đăng nhập thành công

Để đặt IP tĩnh cho máy ảo các bạn tiến hành như sau:

Mở file cấu hình IP tương ứng với tên interface (eth0)

vi /etc/sysconfig/network-scripts/ifcfg-eth0

Sửa nội dung và chú ý các trường sau:

IPADDR=​ip address cần đặt


NETMASK=255.255.255.0​ # Nếu mạng nội bộ không phải /24 thì phải thay đổi cho phù
hợp
GATEWAY=​địa chỉ gateway của mạng nội bộ
ONBOOT=yes
BOOTPROTO=static

VoIP Open Source Training Center http://www.tel4vn.com


90
Lưu lại cấu hình và thoát.

Ta cần restart lại network để apply cấu hình mới, để restart network ta gõ câu lệnh sau:
/etc/init.d/network restart

Kết quả nhận được khi restart thành công

Cấu hình DNS cho server ta mở file cấu hình DNS


​vi /etc/resolv.conf

Điền vào nội dung: nameserver 8.8.8.8​ # hoặc DNS server khác cho phù hợp.

Lưu lại cấu hình và thoát.


Kiểm tra kết nối Internet bằng lệnh sau: ping google.com
VoIP Open Source Training Center http://www.tel4vn.com
91
Nếu kết nối thành công sẽ được kết quả như hình: (Để ngừng chạy ấn Ctrl + C​)

Nếu kết quả khác thì cần kiểm tra lại cấu hình IP và DNS

Xem địa chỉ IP của server ta dùng lệnh: ifconfig


Kết quả nhận được như hình:

Ở đây địa chỉ IP của server là 10.10.10.99


Sau đó ta mở browser lên (Firefox hoặc Chrome) và gõ vào: http://10.10.10.99​ (nhớ thay
bằng ip server của bạn)
Sau đó đăng nhập bằng account: admin / <lab_password>

VoIP Open Source Training Center http://www.tel4vn.com


92
Phụ lục 05: Kết nối SSH vào server sử dụng Mobaxterm

Mobaxterm là một ứng dụng SSH client khá tiện dụng.

Khởi động MobaXterm, ở góc trên bên trái ta chọn “Session”​ để tạo một session mới

Ở giao diện tạo session ta chọn “SSH”​ để tạo session SSH

Điền thông số cấu hình như hình trên:


- Remote host: địa chỉ IP của server
- Specify username: tên đăng nhập vào server

VoIP Open Source Training Center http://www.tel4vn.com


93
Tiếp tục chọn “Bookmark settings”​ để đặt tên cho session SSH này
- Session name: đặt tên cho session SSH

Sau đó chọn “OK” để tiếp tục

Tiếp tục nhập password của user đã nhập ở bước trên sau đó ấn “Enter”

VoIP Open Source Training Center http://www.tel4vn.com


94
Chọn “Yes”​ để lưu lại password cho lần đăng nhập sau

Khi đăng nhập thành công giao diện MobaXterm hiện như hình trên.

VoIP Open Source Training Center http://www.tel4vn.com


95
Ở thanh công cụ bên trái có mục “Sessions”​, ở đây đã lưu lại session ta vừa tạo
(​Elastix_Tel4vn)​ , lần sau nếu mở session SSH với server ta chỉ cần click đúp vào để kết
nối đến hoặc có thể đổi tên, đổi thông số cấu hình cho session SSH này.

Phụ lục 06: Tắt cấu hình STUN mặc định cho một số softphone

Một số Softphone có cấu hình mặc định dùng STUN server ​nên trong một số trường hợp
cuộc gọi không thực hiện được.
Để tắt cấu hình STUN server mặc định của một số Softphone ta có thể tham khảo hướng
dẫn sau hoặc có thể tìm đến cấu hình liên quan đến Network, STUN,..​ trên Softphone để
tắt đi.

● Zoiper
Tắt cấu hình STUN ta chọn
Settings > Preferences > Advanced > Network s​ au đó bỏ tick ở mục “Enable STUN”

VoIP Open Source Training Center http://www.tel4vn.com


96
● Xlite
Kiểm tra cấu hình STUN ta chọn
Softphone > Account settings > Topology​ chọn “None”

VoIP Open Source Training Center http://www.tel4vn.com


97
VoIP Open Source Training Center http://www.tel4vn.com
98
● Microsip
Kiểm tra cấu hình STUN ta xem ở mục “Add account”​ hoặc “Edit account” ​xóa cấu
hình STUN đi

VoIP Open Source Training Center http://www.tel4vn.com


99
● PortGo
Kiểm tra cấu hình STUN ta chọn “Advanced”​ và xóa cấu hình STUN đi

VoIP Open Source Training Center http://www.tel4vn.com


100
Phụ lục 07: Cài đặt Centos 6.7 trên Virtualbox

Chú ý:​ Trước lúc cài đặt, nên chọn RAM khoảng 512 để tránh cài đặt thêm phần giao
diện.

VoIP Open Source Training Center http://www.tel4vn.com


101
VoIP Open Source Training Center http://www.tel4vn.com
102
VoIP Open Source Training Center http://www.tel4vn.com
103
Đặt password cho root, ví dụ: tel4vn.com

VoIP Open Source Training Center http://www.tel4vn.com


104
VoIP Open Source Training Center http://www.tel4vn.com
105
Quá trình cài đặt hoàn tất.

Đăng nhập vào server với tài khoản root đã tạo trong lúc cài đặt: root/tel4vn.com

VoIP Open Source Training Center http://www.tel4vn.com


106
Kiểm tra ip address: ifconfig

Nếu server chưa có ip thì tiến hành cấu hình ip tĩnh và DNS phù hợp với mạng nội bộ
đang kết nối.

Update package hệ thống: yum -y update

Cài đặt vim (chương trình chỉnh sửa file):


yum -y install vim-enhanced
echo “alias vi=vim” >> ~/.bashrc
source ~/.bashrc

Cài đặt SSH server (chương trình cho phép remote server từ xa)
yum -y install openssh-server
chkconfig sshd on
service sshd restart

Reboot server và hoàn tất việc cài đặt CentOS

VoIP Open Source Training Center http://www.tel4vn.com


107
Phụ lục 08: Các lệnh Linux thông dụng cần nhớ
1. Di chuyển đến thư mục nào đó: cd
2. Kiểm tra vị trí thư mục đang đứng: pwd
3. Kiểm tra nội dung thư mục đang đứng: ls
4. Quay về thư mục trước đó (thư mục cha): cd ..
5. Quay về home của user đang sử dụng: cd ~
6. Lệnh tạo thư mục: mkdir ​ten_thu_muc
7. Xóa thư mục: rmdir ​ten_thu_muc
8. Lệnh tạo file: touch ​ten_file
9. Xóa file: ​rm ​ten_file
10. Copy file/thư mục: cp ​ten_source​ ​ten_dest​ (​ nếu thư mục thì thêm option -R)
11. Move file/thư mục: mv ​ten_source ten_dest​ (đây cũng là cách đổi tên file/folder)
12. Kiểm tra dung lượng các ổ đĩa: df -h
13. Kiểm tra CPU, Ram hiện tại của hệ thống: htop​ (nếu chưa cài thì có thể cài thêm
package này)
14. Kiểm tra version Kernel: uname -a
15. Kiểm tra thông tin CPU: cat /proc/cpuinfo
16. Quản lý tiến trình:
- Kiểm tra các process đang chạy: ps -ef | grep ​ten_process
- Kiểm tra port: netstat -ntulp | grep ​ten_process
- Kill process bị treo:
+ kill ​process_id
+ killall -9 ​process_name
17. Chỉnh sửa nội dung file: vi ​ten_file
18. Tìm kiếm:
a. Tìm file hoặc thư mục: find / -name ​ten_file_or_thu_muc
b. Tìm nội dung trong file: cần di chuyển đến folder chứa các file cần tìm, sau
đó dùng lệnh: grep ‘​noi_dung_can_tim​’ * -R
19. Restart hệ thống
- FreePBX: ​amportal restart
- Asterisk: ​/etc/init.d/asterisk restart
- Restart server: ​reboot
20. Tắt server
- poweroff
- shutdown -h now

VoIP Open Source Training Center http://www.tel4vn.com


108
Phụ lục 09: Giới thiệu MySQL căn bản

Cài đặt MySQL


yum install mysql mysql-devel mysql-server php-mysql -y
service mysqld start
chkconfig mysqld on

Đặt mật khẩu cho user root


mysqladmin -u root password '​mat_khau​'

Đăng nhập vào MySQL


mysql -u root -p
(Nhập password và ấn Enter)
Đăng nhập thành công

Liệt kê các database hiện tại:


show databases;

VoIP Open Source Training Center http://www.tel4vn.com


109
Tạo database name: qlsv
create database qlsv;

Sử dụng database qlsv ​vừa tạo


use qlsv;

Tạo một table tên qlsv ​gồm các cột mssv, ten, lop, ngay_sinh, que_quan

create table ​qlsv ​(​mssv​ varchar(20) NOT NULL, ​ten ​varchar(255) NOT NULL, ​lop
varchar(20) NOT NULL, ​ngay_sinh ​datetime NOT NULL default '0000-00-00',
que_quan ​varchar(20) NOT NULL, KEY(​mssv​));

Xem lại cấu trúc table qlsv vừa tạo

VoIP Open Source Training Center http://www.tel4vn.com


110
describe qlsv;

Tạo thêm 1 table tên ql_diem g​ ồm các cột mssv, diem_nam1, diem_nam2,
diem_nam3, diem_nam4

create table ​ql_diem ​(​mssv​ varchar(20) NOT NULL, ​diem_nam1 ​float(4,2) NOT
NULL DEFAULT '0.00', ​diem_nam2 f​ loat(4,2) NOT NULL DEFAULT '0.00',
diem_nam3 ​float(4,2) NOT NULL DEFAULT '0.00', ​diem_nam4 ​float(4,2) NOT
NULL DEFAULT '0.00', KEY(​mssv​));

Liệt kê các table đã tạo trong database hiện tại


show tables;

VoIP Open Source Training Center http://www.tel4vn.com


111
Chèn dữ liệu vào table qlsv
INSERT INTO qlsv VALUES (001, 'Nguyen Van Teo', 'D09VTA3', '1991-01-01',
'Vinh Long');

Truy vấn tất cả data đã chèn vào table qlsv


select * from qlsv;

Chèn dữ liệu vào bảng ql_diem


INSERT INTO ql_diem VALUES (001, 8.00, 6.50, 7.00, 9.00);

Thêm cột so_dien_thoai v​ ao bảng qlsv


alter table qlsv add so_dt varchar(20);

Tiếp tục chèn dữ liệu cho 5 sinh viên vào 2 table qlsv, ql_diem

Truy vấn data


- Liệt kê thông tin 3 sinh viên có điểm diem_nam1 cao nhất
*Truy vấn từ 1 table ql_diem

VoIP Open Source Training Center http://www.tel4vn.com


112
select * from ql_diem order by diem_nam1 desc limit 3;
*Truy vấn từ cả 2 table qlsv, ql_diem
select qlsv.mssv, qlsv.ten, ql_diem.diem_nam1 from qlsv,ql_diem where
qlsv.mssv=ql_diem.mssv order by ql_diem.diem_nam1 desc limit 3;

- Tính điểm trung bình 4 năm của các sinh viên


*Truy vấn từ 1 table ql_diem
select mssv, (diem_nam1 + diem_nam2 + diem_nam3 + diem_nam4)/4 as
'diem_trungbinh' from ql_diem;

*Truy vấn từ cả 2 table qlsv, ql_diem


select qlsv.mssv, qlsv.ten, (ql_diem.diem_nam1 + ql_diem.diem_nam2 +
ql_diem.diem_nam3 + ql_diem.diem_nam4)/4 as 'diem_trungbinh' from
qlsv,ql_diem where qlsv.mssv = ql_diem.mssv;

VoIP Open Source Training Center http://www.tel4vn.com


113
Xóa toàn bộ dữ liệu trong bảng
truncate table_name;

Xóa bảng
drop table ten_bang;

Xóa database
drop database ten_database;

Backup data từ database có sẵn. Đây là thao tác bắt buộc trước khi có tác động nào liên
quan database hoặc nhu cầu move database qua server khác.
mysqldump -u root -p ten_database > my_backup.sql

Restore database từ file backup


mysql -u root -p db_name < my_backup.sql

Tạo thêm user và cấp quyền cho remote từ xa vào MySQL


vi /etc/my.cnf
Thêm dòng sau dưới mục [mysqld]
bind-address=0.0.0.0

Restart MySQL
/etc/init.d/mysqld restart

Kiểm tra port MySQL


netstat -ntulp | grep mysql

Tạo thêm user MySQL ta cần đăng nhập vào MySQL sau đó gõ câu lệnh sau
grant all on ​ten_database​.* to ​ten_user​@'​ip_host_truy_cap​' identified by '​mat_khau​';

VoIP Open Source Training Center http://www.tel4vn.com


114
VD: grant all on qlsv.* to user01@'192.168.69.102' identified by '123qwe';

Ở host có IP được cho phép truy cập để remote vào MySQL ta dùng lệnh
mysql -u ​ten_user​ -h ​ip_db_server​ -p​ (Nhập mật khẩu và ấn Enter)

Phụ lục 10: Cấu hình lại thời gian cho server CentOS

Thực hiện những câu lệnh sau:

yum -y install ntp


mv /etc/localtime /etc/localtime.bak
ln -s /usr/share/zoneinfo/Asia/Ho_Chi_Minh /etc/localtime
/etc/init.d/ntpd stop
ntpdate pool.ntp.org
/etc/init.d/ntpd start

Kiểm tra lạ thời gian đã chính xác chưa bằng câu lệnh date

Phụ lục 11: Điều kiện thời gian của hàm GotoIfTime
Ta có cấu trúc sử dụng hàm : GotoIfTime(dieu_kien_time​?nhan_dung:nhan_sai)
*dieu_kien_time: ​"giờ , thứ , ngày , tháng" (nếu không xét phần nào thì để dấu *)

VoIP Open Source Training Center http://www.tel4vn.com


115
Ví dụ: 08:00-17:00,mon-fri,*,* c​ ó nghĩa là từ 8 giờ sáng đến 17 giờ các ngày thứ 2 đến
thứ 6
giờ:
+ Chính xác giờ: 17:30
+ Các giờ liên tục giờ: 08:00 - 17:00
thứ: mon, tue, wed, thu, fri, sat, sun
+ Chính xác thứ : mon
+ Nhiều thứ liên tục: mon-fri
ngày​: 01 - 31
+ Chính xác ngày : 01
+ Nhiều ngày liên tục: 01-15
tháng​: jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec
+ Chính xác tháng : jan
+ Nhiều tháng liên tục: jan-may

----- Hết -----

VoIP Open Source Training Center http://www.tel4vn.com


116

You might also like