Professional Documents
Culture Documents
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
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,...)
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.
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.
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.
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”
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
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.
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
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.
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.
Để đơ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
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 :
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.
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.
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:
Cuối cùng là click “Submit” và “Apply Config” để lưu lại cấu hình IVR.
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:
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.
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:
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.
- 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.
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.
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.
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.
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 agent :
- 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
- 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.
Để 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
wget http://dag.wieers.com/rpm/packages/ngrep/ngrep-1.45-1.el5.rf.i386.rpm
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.
=> 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.
(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.
(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.
(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
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]
………….
………….
[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
[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)
[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:
[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)
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
*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
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
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
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
yum update -y
reboot
cd /usr/src
wget
http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-cu
rrent.tar.gz
wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-current.tar.gz
wget http://downloads.asterisk.org/pub/telephony/asterisk/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)
cd dahdi-linux-complete-*
cd ..
cd libpri-*
cd ..
./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)
./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)
reboot
(restart lại server)
asterisk -rvvvv
(vào giao diện Asterisk command line)
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
[1001]
username=1001
secret=123qwe
type=friend
host=dynamic
context=tel4vn
qualify=yes
directmedia=no
disallow=all
allow=ulaw,alaw
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.
- 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()
[tel4vn_queue]
member => SIP/1001
member => SIP/1002
musiconhold=default
strategy=rrmemory
timeout = 30
retry = 5
ringinuse = no
2. IVR
3. Conference
[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
[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)
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)
.
[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
[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()
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:
Zoiper
Để cấu hình tài khoản SIP các bạn chọn Settings ⇨ Preferences
Chọn “Create account”
Điền đầy đủ thông tin của tài khoản SIP như sau:
MicroSip
Để cấu hình tài khoản SIP các bạn chọn Menu ⇨ Add account...
Qutecom
Điền thông tin cấu hình của SIP account như sau:
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:
Điền đầy đủ các thông tin của tài khoản SIP như sau:
Ấ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
Phụ lục 03: Cấu hình gửi mail từ server ra ngoài thông qua Gmail
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
mkdir /etc/postfix/sasl
[smtp.gmail.com]:587 username@gmail.com:password
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
Đă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
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 2: Chọn “File ⇨ Import Appliance” sau đó chọn đến file .OVA
Chọn “Next”
Đợ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
Để đặt IP tĩnh cho máy ảo các bạn tiến hành như sau:
vi /etc/sysconfig/network-scripts/ifcfg-eth0
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
Điền vào nội dung: nameserver 8.8.8.8 # hoặc DNS server khác cho phù hợp.
Nếu kết quả khác thì cần kiểm tra lại cấu hình IP và DNS
Khởi động MobaXterm, ở góc trên bên trái ta chọn “Session” để tạo một session mới
Tiếp tục nhập password của user đã nhập ở bước trên sau đó ấn “Enter”
Khi đăng nhập thành công giao diện MobaXterm hiện như hình trên.
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”
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.
Đăng nhập vào server với tài khoản root đã tạo trong lúc cài đặt: root/tel4vn.com
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.
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
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));
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));
Tiếp tục chèn dữ liệu cho 5 sinh viên vào 2 table qlsv, ql_diem
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
Restart MySQL
/etc/init.d/mysqld restart
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';
Ở 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
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 *)