4.2.1 Tổng quát chức năng
4.2.2 Sơ đồ xử lí chức năng Lựa chọn Lựa chọn phím bấm Nghe điểm thi Đọc kết quả theo SBD Nghe mã môn thi Không có sinh viên Gọi vào số 200 Nhập SBD khác Kết thúc cuộc gọi Truy vấn CSDL Trả lời tự động Phím 1 Phím 2
hết thời gian thao tác
hết thời gian thao tác không có có điểm hết thời gian xử lí Phím 2
4.3 Thiết kế lƣợc đồ dữ liệu quan hệ ERD 4.3.1 Các tập thực thể 4.3.1 Các tập thực thể
Hình 4.2: Mô hình tập thực thể
4.3.2 Diagram
4.4 Các bảng dữ liệu
4.4.1 Danh sách bảng dữ liệu:
Trương
- Chứa các thông tin về trường
- Thuộc tính: matruong,tentruong,status MonHoc
- Chứa thông tin về các môn thi - Thuộc tính: mamh,tenmh,status SinhVien
- Chứa thông tin chi tiết về thí sinh.
- Thuộc tính: masv ,tensv,ngaysinh,status,matruong
Diem
- Chứa kết quả điểm thi của thí sinh - Thuộc tính: masv,mamh,diem,status. TuDien
- Chứa tập hợp các từ ngữ trong tiếng việt. - Thuộc tính : matu, tu
4.4.2 Mô tả các bảng:
MonHoc
Diem
TuDien
4.4.3 Các mối liên hệ
Mối liên hệ bảng Truong-SinhVien
- Mỗi sinh viên thi vào 1 trường và mỗi trường thì có nhiều sinh viên dự thi. Vì vậy,mối quan hệ là một-nhiều.
- Mỗi thí sinh thi vào 1 trường sẽ có 1 điểm tương ứng với môn thi
Mối liên hệ bảng Monhọc- bảng Diem
- Mỗi môn học thì có 1 điểm số và mỗi điểm số được chấm cho nhiều môn học. Vì vậy, quan hệ là nhiều-một.
4.5 Những thuận lợi và khó khăn của ứng dụng: 4.5.1 Thuận lợi 4.5.1 Thuận lợi
Chương trình server tổng đài nhẹ,tốn ít dung lượng bộ nhớ và dễ cài đặt. Người dùng dễ dàng sử dụng dịch vụ thông qua các phím nhấn trên
softphone.
4.5.2 Khó khăn
Chưa triển khai với cuộc gọi ngoài mạng do không có hỗ trợ phần cứng là card digium.
Kết quả điểm trả về nhanh hay chậm tuỳ thuộc vào tốc độ đường truyền nhanh hay chậm.
Việc dùng hàm text to speech để ghép từng từ làm cho chuỗi âm thanh còn rời rạc nên âm thanh không hay lắm.
CHƢƠNG 5: CÀI ĐẶT VÀ CẤU HÌNH HỆ THỐNG SERVER 5.1 Cài đặt các tính năng cơ bản của tổng đài Asterisk
5.1.1 Yêu cầu thiết bị:
Cài đặt hệ điều hành Linux trên máy tính , có thể cài hệ điều hành Linux Fedora, CentOS, Redhat, hoặc Debian ,ở đây ta cài bản Centos server 5.6.
Máy server cài hệ điều hành Linux để xây dựng hệ thống Server Asterisk. Ở đây, ta dùng hệ điều hành linux centos 5.6
Máy client cài hai softphone là X-Lite và 3CX nối mạng với máy tính Server asterisk.(Ở đây server asterisk được chạy trên máy ảo Virtual
Box- link download:
https://www.virtualbox.org/wiki/Linux_Downloads.)
5.1.2 Các bƣớc cài đặt các gói Asterisk phiên bản 1.6.2.20
Tải các gói sau và để trong thư mục : usr/src/asterisk
Asterisk 1.6.2.20 http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk- 1.6.2.20.tar.gz Dahdi-2.4.1.2 http://downloads.asterisk.org/pub/telephony/dahdi- linux/releases/dahdi- linux-2.4.1.2.tar.gz Dahdi-tool-2.4.1.2 http://downloads.asterisk.org/pub/telephony/dahdi-tools/releases/dahdi- tools- 2.4.1.2.tar.gz Libpri 1.4.12 http://downloads.asterisk.org/pub/telephony/libpri/releases/libpri-1.4.12.tar.gz Sau khi tải thành công, ta giải nén các gói và cài đặt theo trình tự sau: (lệnh giải nén: tar –xzvf file nén)
cd /usr/src/asterisk/libpri-1.4.12 make make install cd /usr/src/asterisk/dahdi-linux-2.4.1.2 ./configure make all make install cd /usr/src/asterisk/dahdi-tool-2.4.1.2
make config cd /usr/src/asterisk/asterisk-1.6.2.20 ./configure make make install make config make samples
Ta có thể cài thêm gói Asterisk-Addon để hổ trợ các file âm thanh mp3…. Khởi động Asterisk bằng lệnh sau:
service dahdi start asterisk –cvvvv asterisk –r Thoát khỏi Asterisk:
Exit
Shut down
5.1.3 Tải chƣơng trình Asterisk.NET:
Chương trình Asterisk.NET giúp ta thực hiện cơ chế gọi từ xa FastAGI. Nó bao gồm chức năng quản lí API.
Khi máy tổng đài muốn lấy một ứng dụng nào từ xa thì trên máy đó,ta chạy chương trình ứng dụng Asterisk.NET này lên và trả về kết quả cho máy server thông qua các Script.
Link down: http://sourceforge.net/projects/asterisk-dotnet/
5.1.4 Cấu hình SIP cho softphone
Link down: http://www.3cx.vn/dien-thoai-voip/index.html
Với điện thoại phần mềm 3CX, bạn có thể gọi điện trực tiếp từ PC hoặc laptop tới mọi điện thoại phần mềm, di động hoặc cố định bằng cách sử dụng công nghệ thoại qua giao thức IP (VOIP) để truyền giọng nói qua mạng Internet.
Để cấu hình cho SIP softphone dùng với 3CX hoặc X-Lite ta chỉ cần cấu hình một số thông số chính trong file sip.conf hoặc file đã được include trong file sip.conf như sau:
Khi cấu hình phần mềm điện thoại, ta cần điền tên-kênh vào mục username, mật khẩu vào password và domain là địa chỉ IP của máy Asterisk.
Các tham số khác không đặt tên thì hệ thống sẽ lấy tham số theo mặc định. Giá trị mặc định có thể theo giá trị mặc định của hệ thống hoặc theo giá trị được đặt chung trong mục [general] trong file sip.conf
Hình 5.1: Cấu hình Softphone [tên-kênh]
- type : tên kiểu;friend|user|peer.
- context : tên context ;dùng cho việc điều khiển cuộc gọi trong dialplan và để phân biệt một user theo quyền (user, admin) hay phân biệt theo phòng ban.
- secret : mật-khẩu
- callerid : "tên-user" <số-điện-thoại> ;sẽ được hiện thị trên máy người được gọi
- accountcode : tên-accountcode ;dùng phân biệt trong các file ghi cước CDR(tuỳ mà khai báo hay không) - host : dynamic
- mailbox : tên-hòm-thư@tên-context ;dùng cho mục đích voice mail
5.2Cài đặt Sql Server 2005 và tạo các bảng dữ liệu 5.2.1 Tại sao chọn Sql Server 2005 5.2.1 Tại sao chọn Sql Server 2005
So với phiên bản củ SQL 7.0, SQL 2000 thì SQL 2005 chú trọng đến công tác bảo mật nhiều hơn phần mềm quản trị CSDL mã nguồn mở. Mở rộng một số chức năng so với phiên bản trước ví dụ như Report,
SQL Server Profiler , Schema, thêm một số kiểu data mới, sao lưu dữ liệu nhanh chóng, an toàn hơn... nhằm đem lại cho người sử dụng thuận tiện, nhanh chóng.
Chức năng SSL được tự động hóa hơn, thay vì lúc trước trên MS SQL 2000 khai báo tùm lum, thì trên SQL 2005 nó khai báo cho mình một cách tự động.
Đối với người dùng doanh nghiệp, SQL Server Express dễ dàng cắm vào cho doanh nghiệp nhất quản lý môi trường SQL Server Express cũng cung cấp hỗ trợ cho cả hai cài đặt hoặc thiết lập dựa trên giao diện và cài đặt. Điều này cho phép các nhà phát triển phần mềm kiểm soát cuối cùng và tính linh hoạt trong việc cài đặt và thiết lập của nhúng vào cơ sở dữ liệu.
5.2.2 Bảng dữ liệu
TuDien
CREATETABLE [dbo].[TuDien](
[matu] [int] IDENTITY(1,1) NOT NULL,
[tu] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
CONSTRAINT [PK_TuDien] PRIMARYKEYCLUSTERED (
[matu] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON
[PRIMARY] ) ON [PRIMARY]
Truong
CREATETABLE [dbo].[Truong](
[matruong] [nvarchar](50) COLLATE
SQL_Latin1_General_CP1_CI_AS NOT NULL, [tentruong] [nvarchar](50) COLLATE
SQL_Latin1_General_CP1_CI_AS NULL, [ghinho] [nvarchar](50) COLLATE
SQL_Latin1_General_CP1_CI_AS NULL,
CONSTRAINT [PK_Truong] PRIMARYKEYCLUSTERED (
[matruong] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON
[PRIMARY] ) ON [PRIMARY]
SinhVien
CREATETABLE [dbo].[SinhVien]( [masv] [nvarchar](50) COLLATE
SQL_Latin1_General_CP1_CI_AS NOT NULL, [tensv] [nvarchar](50) COLLATE
SQL_Latin1_General_CP1_CI_AS NULL, [ngaysinh] [datetime] NULL,
[matruong] [nvarchar](50) COLLATE
SQL_Latin1_General_CP1_CI_AS NOT NULL, [ghinhho] [nvarchar](50) COLLATE
SQL_Latin1_General_CP1_CI_AS NULL,
CONSTRAINT [PK_SinhVien] PRIMARYKEYCLUSTERED (
[masv] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON
[PRIMARY] ) ON [PRIMARY] GO
ALTERTABLE [dbo].[SinhVien] WITHCHECKADD CONSTRAINT
[FK_SinhVien_Truong] FOREIGNKEY([matruong])
REFERENCES [dbo].[Truong] ([matruong]) GO
ALTERTABLE [dbo].[SinhVien] CHECKCONSTRAINT
[FK_SinhVien_Truong]
MonHoc
CREATETABLE [dbo].[MonHoc]( [mamh] [nvarchar](50) COLLATE
SQL_Latin1_General_CP1_CI_AS NOT NULL, [tenmh] [nvarchar](50) COLLATE
SQL_Latin1_General_CP1_CI_AS NULL, [ghinho] [nvarchar](50) COLLATE
SQL_Latin1_General_CP1_CI_AS NULL,
CONSTRAINT [PK_MonHoc] PRIMARYKEYCLUSTERED (
[mamh] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON
[PRIMARY] ) ON [PRIMARY]
Diem
CREATETABLE [dbo].[Diem](
[masv] [nvarchar](50) COLLATE
SQL_Latin1_General_CP1_CI_AS NOT NULL, [mamh] [nvarchar](50) COLLATE
SQL_Latin1_General_CP1_CI_AS NOT NULL, [diem] [float] NULL,
[ghinho] [nvarchar](50) COLLATE
SQL_Latin1_General_CP1_CI_AS NULL,
CONSTRAINT [PK_Diem] PRIMARYKEYCLUSTERED (
[masv] ASC, [mamh] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON
[PRIMARY] ) ON [PRIMARY] GO
ALTERTABLE [dbo].[Diem] WITHCHECKADD CONSTRAINT
[FK_Diem_MonHoc] FOREIGNKEY([mamh])
REFERENCES [dbo].[MonHoc] ([mamh]) GO
ALTERTABLE [dbo].[Diem] CHECKCONSTRAINT
[FK_Diem_MonHoc] GO
ALTERTABLE [dbo].[Diem] WITHCHECKADD CONSTRAINT
[FK_Diem_SinhVien] FOREIGNKEY([masv])
REFERENCES [dbo].[SinhVien] ([masv]) GO
ALTER TABLE [dbo].[Diem] CHECK CONSTRAINT
5.3 Kết quả đạt đƣợc của việc thực thi tổng đài tự động 5.3.1 Cài đặt Server
Đã xây dựng cài đặt phần mềm tổng đài Asterisk trên nền Linux Server Centos 5.6.
Tìm hiểu cơ chế FASTAGI để gọi các ứng dụng từ xa trên các máy cục bộ.
Hình 5.2: Câu lệnh gọi dịch vụ từ xa.
5.3.2 Hoạt động của tổng đài:
Khởi động tổng đài Asterisk trên server HĐH Linux Centos 5.6. bẳng lệnh : Asterisk –r
Trong tổng đài, ta cấu hình trên 3 file chính trong thư mục etc/asterisk, đó là: sip.cof,extensions.conf,smb.conf
oVào sip.conf (etc/asterisk), ta đăng kí địa chỉ cho softphone có chức năng gọi và nghe. Đầu tiên, ta đăng kí 2 phone là 101 và 102.
Hình 5.4: Cấu hình file Sip
o Vào extensions.conf, ta ghi kế hoạch gọi cho tổng đài.
Khai báo chức năng gọi điện thoại lẫn nhau cho 2 số điện thoại 101 và 102
Khai báo số 200 để khi gọi vào sô 200 này, server sẽ gọi dịch vụ từ máy có địa chỉ 192.168.1.123 thông qua script mang tên “ivr”.
Khai báo số 205 với tính năng ghi âm, khi gọi vào số 205,sau khi nghe tiếng bíp thì bạn có thể ghi âm,kết thúc ghi âm bấm phím # và sau 2 giây nó sẽ phát lại đoạn ghi âm trên.
Hình 5.5:Cấu hình file extensions Cài đặt gói samba để chia sẻ dữ liệu:
o Kiểm tra gói samba đã cài chưa: rpm -qa | grep samba o Gõ lệnh cài đặt
yum install samba
o Tạo một thư mục để thực hiện share dữ liệu. Ví dụ tạo thư mục có tên là “share”:
mkdir/share o Phân quyền thư mục share:
chmod 777 –R /share/
o Ta cấu hình file smb.conf. Gõ lệnh: vi /etc/samba/smb.conf. Xuống dòng cuối cùng và thêm đoạn sau:
Gõ lệnh : service smb start để khởi động samba
Hình 5.7: Khởi động samba Thiết lập tài khoản mật khẩu cho người dùng samba:
Gõ lệnh: smbpasswd –a root
Tiến hành nhập mật khẩu. Mật khẩu này dùng để truy cập vào máy chứa thư mục chia sẽ.
Hình 5.8: Khai báo user chia sẻ
Trên Client, vào RUN gõ đường máy chủ chia sẽ dữ liệu:
Truy cập thành công, vào “Thƣ mục chia sẻ” có tệp tin chia sẻ
Chạy chương trình thực thi bẳng visual 2010 trên máy win 7 để nó tạo ra port 4573 và máy server thông qua port đó để thực thi chương trình.
Dịch vụ được gọi thông qua các Script trong chương trình như sau:
Hình 5.12: Script kết nối với server
Bật softphone 3CX lên với số điện thoại đã đăng kí.Ở đây là máy có số phone là 101.
Bấm số 200 để gọi vào dịch vụ.
Khi kết nối vào được hệ thống, thì sẽ xuất hiện câu chào mừng bạn đến với hệ thống.Câu chào như sau : ” Chào mừng bạn đến với tổng đài thông tin tra cứu điểm tuyển sinh. Mời bạn chọn số 1 để nghe thông tin về mã môn thi, chọn số 2 để nghe về kết quả điểm thi tuyển sinh.”
Hình 5.13: Màn hình đã kết nối vào dịch vụ
o Bấm phím 1 để nghe thông tin tổng quát
o Bấm phím 2 để bạn nhập vào mã thí sinh.
Softphone nhận được chuỗi phím nhập vào bằng hàm GetData() Sau đó,lấy giá trị nhận vào rồi tìm kiếm giá trị đó trong cơ sở dữ
liệu.
Nếu tìm thấy sẽ đọc lên âm thanh kết quả điểm cho thí sinh đó,nếu không tìm thấy thì đọc lên kết quả không tìm thấy cho thí sinh.
o Một số trƣờng hợp xử lí lỗi:
Khi bạn gọi đến số 200, nghe lời chào xong, không thao tác hay chọn bất kì phím nào, thì sau khoảng thời gian nhât định, hệ thống sẽ tự kết thúc cuộc gọi.
Khi gọi vào tổng đài, ta có hai lựa chọn là số 1 và số 2, nếu bấm ngoài hai số trên, hệ thống sẽ đưa ra thông báo yêu cầu nhập lại số báo danh hoặc kết thúc cuộc gọi
Hình 5.16: trường hợp sai phím bấm
Khi bấm số 2 để nghe điểm thi, nếu sinh viên đó chưa có điểm hay nhập số báo danh không có trong cơ sở dữ liệu thì thông báo lỗi “không có thí sinh”
5.3.3 Quá trình tổng hợp tiếng nói:
Tổng hợp các từ ngữ thành một chuỗi
Dùng hàm MergeFile để ghép các từng từ trong bộ từ điển tiếng việt thành một chuỗi kí tự.
Chép các tất file .wav của từng từ ngữ vào trong đường dẫn bin của project để chương trình có thể tìm thấy từ đó và đọc lên.
Ví dụ ta có project để trong ổ D:\ và ta phải chép filewave có sẵn vào đường dẫn bin :
Hình 5.18 : Thư mục để đọc các âm thanh từ file Text Tạo các file âm thanh của từng thí sinh và để lên server
Thuộc tính OutPath dùng để chứa chuỗi âm thanh xuất ra.
Để xuất ra server thì ta trỏ đường dẫn đến thư mục share giữa máy win và máy server.
Ứng với mỗi từ được ghi ở dạng Text sẽ có một file âm thanh của nó trong thu mục đường dẫn bin phía trên. Ta dùng hàm mergerfile để ghép các từ ngữ đơn lại thành chuỗi và đọc ra kết quả tương ứng.
5.4 Kết luận
Thử nghiệm được các chức năng thực tế của tổng đài như: Dial giữa các phone nội bộ.
Record and Playback (ứng dụng cho việc ghi danh,điền thông tin). Chức năng lấy dữ liệu, đọc file âm thanh trên các máy local.
Xây ứng dịch vụ điểm tuyển sinh đối với mạng nội bộ, giữa các hệ thống chi nhánh của trường hoạt động như sau:
Bấm số 200 để gọi vào tổng đài Asterisk
Khi đã kết nối vào tổng đài và ta có 2 lựa chọn cho khách hàng
o Bấm số 1 để bạn nghe thông tin về tuyển sinh cũng như mã các môn thi
o Bấm số 2 để bạn nghe kết quả điểm thi tuyển sinh.
5.5 Những hạn chế:
Chỉ dừng ở mức độ gọi điện cục bộ trong một môi trường cụ thể.
Các file âm thanh được nhập cố định trong cơ sở dữ liệu, chưa linh động trong trường hợp có từ ngữ mới phát sinh.
Do thời gian có hạn nên ứng dụng tự động chưa được hoàn thiện và đầy đủ như thực tế ,chất lượng âm thanh giọng đọc chưa chuẩn.
ĐÁNH GIÁ CHUNG VÀ XU HƢỚNG PHÁT TRIỂN ĐỀ TÀI
Qua quá trình tìm hiểu, em đã có những kiến thức cơ bản về các kỹ thuật viễn thông, các kiến thức về lập trình trên phần cứng.
Với công nghệ VOIP, việc xây dựng một tổng đài thực tế Asterisk này sẽ rất hữu ích cho các doanh nghiệp muốn có một tổng đài với chi phí vừa phải.
Dựa vào nền tảng là các ứng dụng nhỏ trong quá trình làm đề tài, em sẽ cố gắng phát triển lên thành một hệ thống cuộc gọi hoàn chỉnh hơn như các ứng dụng về các IVR.
Hình 6.1: Mô hình một hệ thống IVR
Asterisk hỗ trợ rất nhiều công nghệ khác nhau và có cấu trúc nguồn mở, cho phép các nhóm phát triển lẫn người sử dụng có thể tùy biến ứng dụng Asterisk của mình đáng kể.
Đặc biệt, phải kể đến giao tiếp Asterisk AGI&FASTAGI hay
AsteriskRealtime cho phép Asterisk kết hợp với các ngôn ngữ lập trình thông dụng như : C, C++,C#, VB, PHP, Shell-script, Python cùng với hệ
cơ sở dữ liệu MySQL,Oracle,SQL Server để phát triển những ứng dụng Voice-Application khác nhau.
Asterisk là một IP-PBX đã được triển khai cũng khá nhiều ở các công ty nhằm giảm chi phí liên lạc, tuy nhiên nó cũng còn khá mới nên việc cài đặt, cấu hình chủ yếu từ các chuyên viên trong lĩnh vực viễn thông. Mục tiêu của đồ án và hướng phát triển tiếp theo là xây dựng hệ thống