Nguyễn ngọc anh giáo dục đào tạo trường đại học bách khoa hà nội - NguyÔn Ngäc Anh cao häc cntt X©y dùng hƯ thèng call center tiÕng việt luận văn thạc sĩ công nghệ thông tin 2007 -2009 Hà Nội - 2009 giáo dục đào tạo trường đại học bách khoa hà nội NguyÔn Ngäc Anh Xây dựng hệ thống call center tiếng việt Chuyên ngành : Công Nghệ Thông Tin luận văn thạc sĩ công nghƯ th«ng tin ngêi híng dÉn khoa häc : TS Hoµng Minh Thøc Hµ Néi - 2009 Mơc lơc lêi nói đầu tóm tắt luận văn thuËt ng÷ ch¬ng i Giíi thiƯu chung 1.1 Mơc ®Ých triĨn khai Call Center: 1.2 Các đặc trưng EasyCC chương ii phần mềm hệ thèng 10 2.1 Giíi thiƯu vÒ IP-PBX 10 2.2 Tổng đài Asterisk 11 2.2.1 Giíi thiÖu 11 2.2.2 KiÕn tróc Asterisk 13 2.2.3 Cài đặt .15 2.2.4 Giíi thiƯu c¸c file cÊu h×nh cđa Asterisk 33 2.2.5 Nghiªn cøu cÊu tróc thêi gian thùc Asterisk 35 2.2.6 Cài đặt Asterisk RealTime 35 2.3 giao tiÕp qua ®êng trun sè 41 2.3.1 Giao tiếp đường truyền ISDN 30B+D 42 2.3.2 Giao tiÕp víi ®êng truyÒn SS7 44 Chương iii Phát triển ứng dụng call center 47 3.1 CÊu tróc tỉng quan 47 3.2 Giíi thiƯu CodeIgniter PHP Framework 47 3.3 Qu¶n lý ngêi dïng 49 3.4 Module PBX 52 3.5 Module Inbound 72 3.6 Module Outbound 75 3.7 Module B¸o c¸o 80 kÕt luËn 82 tài liệu tham khảo 83 lời nói đầu Có thể nói, đời phát triển mạng máy tính cách mạng kỷ 20, đà làm thay đổi hoàn toàn cách thức trao đổi thông tin nhân loại Nếu trước kia, chưa có mạng máy tính, việc trao đổi thông tin víi nh÷ng ngêi ë xa diƠn hÕt søc khã khăn chủ yếu thông qua đường thư tín Thì ngày với máy tính kết nối vào mạng Internet, tận hưởng dịch vụ mạng máy tính mang lại, dễ dàng cập nhật thông tin diễn toàn giới, trò chuyện trực tiếp với người xa, dễ dàng chia sẻ tài liệu, trí thưởng thức phim, vừa giới thiệu Mỗi dịch vụ đem lại tiện lợi cho người, dịch vụ không nhắc đến dịch vụ VoIP, dịch vụ cho phép truyền lời thoại thông qua môi trường mạng máy tính Trong năm gần đây, với phát triển hạ tầng mạng, dịch vụ VoIP đà phát triển nhanh, nhiều quốc gia, công ty khai thác phát triển Các hệ thống tổng đài mềm phát triển nhằm đáp ứng tốt khả tích hợp truyền thoại số liệu dịch vụ VoIP, tổng đài phổ biến Asterisk Nhưng khó khăn là, doanh nghiệp muốn xây dựng tổng đài Asterisk lại phải thời gian tìm hiểu, nghiên cứu, cấu hình tổng đài, tốn thời gian tiền cho doanh nghiệp Chính để đáp ứng nhu cầu này, đà tập trung nghiên cứu, xây dựng phát triển luận văn Xây dựng hệ thống Call Center tiếng việt để đáp ứng yêu cầu thực tế cho doanh nghiệp Việt Nam muốn ứng dụng công nghệ kü tht cđa dÞch vơ VoIP Abstract VoIP is a new technology; it allows voice over IP packet switched network This technology has gradually asserted its place beside the conventional telephone network PSTN, and also dominates the telecommunications device market share advantage through price and service diversity Asterisk is software to perform the function of internal telephone exchange (PBX), which allows the device branch (extension) to make calls to each other and connect to other telephone systems, including telephone network regular analog (PSTN) and VoIP Asterisk full PBX feature of trade: flow distribution calls, voicemail, talks, interactive (navigation device) Asterisk also supports multiple VoIP protocols such as SIP and H.323, work stations connection between IP phones and PSTN In particular, from version 1.2.1 onwards, real-time structure Asterisk Real time Architecture is integrated within the switchboard to allow managers and customers can configure the script in general and the Voicemail system in particular that the operator does not need to reload Current needs of businesses want to install and use IP as a Call Center to reduce costs and exploitation and application of the utility of VoIP technology is better, but they were difficult the process of implementation of this is not their field of expertise So businesses often have to look to companies specializing in this field to ask for advice and they accept to pay a fee just to be able to own a private IP suit your business , and not take time to learn to install and repair every system error occurred Derived from the actual needs, in the process of making my projects have focused on research and learn to harness and apply the operator-based VoIP switchboard Asterisk, to provide Call Center services The contents of the thesis is "Developing Call Center Vietnamese" will focus on research, find out about switchboard Asterisk software, thereby giving direction to award the construction of a system for a Call Center Business Industry based switchboard Asterisk software available tóm tắt luận văn VoIP công nghệ , cho phép truyền thoại thông qua mạng chuyển mạch gói IP Công nghệ dần khẳng định chỗ đứng bên cạnh mạng điện thoại PSTN thông thường, đà chiếm lĩnh thị phần thoại viễn thông nhờ ưu giá dịch vụ đa dạng Asterisk phần mềm thực chức tổng đài điện thoại nội (PBX), cho phép máy điện thoại nhánh (extension) thực gọi với kết nối với hệ thống điện thoại khác bao gồm mạng điện thoại analog thông thường (PSTN) VoIP Asterisk có đầy đủ tính tổng đài PBX thương mại: phân luồng gọi, thư thoại, hội đàm, tương tác (menu thoại) Asterisk hỗ trợ nhiều giao thức VoIP SIP H.323, hoạt động trạm kết nối điện thoại IP mạng PSTN Đặc biệt, từ phiên 1.2.1 trở đi, cấu trúc thời gian thực Asterisk Realtime Architecture đà tích hợp tổng đài cho phép nhà quản lý khách hàng cấu hình kịch nói chung hệ thống Voicemail tổng đài nói riêng mà không cần thiết phải reload Hiện nhu cầu doanh nghiệp muốn cài đặt, sử dụng tổng đài IP dạng Call Center để giảm chi phí khai thác, ứng dụng tiện ích công nghệ VoIP lớn, họ lại gặp nhiều khó khăn trình thực lĩnh vực chuyên môn họ Do doanh nghiệp thường phải tìm đến công ty chuyên lĩnh vực để xin tư vấn họ chÊp nhËn chi tr¶ mét kho¶n chi phÝ võa ph¶i để sở hữu tổng đài IP riêng phù hợp với doanh nghiệp mình, đồng thời không thời gian tìm hiểu cài đặt sửa chữa hệ thống xảy lỗi Xuất phát từ nhu cầu thực tế, trình làm luận văn đà tập trung nghiên cứu tìm hiểu để khai thác, ứng dụng tổng đài VoIP dựa tổng đài Asterisk, để cung cấp dịch vụ Call Center Nội dung luận văn Xây dựng Call Center tiếng Việt tập trung nghiên cứu, tìm hiểu tổng đài mềm Asterisk, qua đưa hướng giải để xây dựng hƯ thèng Call Center cho mét doanh nghiƯp dùa trªn tổng đài mềm Asterisk đà có thuật ngữ STT Từ viết tắt Từ đầy đủ PSTN Public Switched Telephone Network SIP Session Initiation Protocol TCP Transmisstion Control Protocol IP Internet Protocol VoIP Voice over IP PBX Private Branch Exchange UA User Agent UAC User Agent Client UAS User Agent Server 10 ATM Asynchronous Transfer Mode 11 B2BUA Back to Back User Agent 12 IVR Interactive Voice Response 13 IETF Internet Engineering Task Force 14 UDP User Datagram Protocol 15 DNS Domain Name Service 16 HTTP Hypertext Transfer protocol 17 SDP Session Descripsion Protocol 18 RTP Real Time Protocol 19 RTCP Real Time Control Protocol 20 DHCP Dianmic Host Configuaration Protocol 21 CPL Call Process Language 22 ACK Acknowledgment 23 OSI Open Systems Interconnection 24 AVT Audio/Video/Transport 25 URL Uniform Resource Locator 26 URI Uniform Resource Identifier 27 IPTEL IP Telephony 28 TLS Transmission Layer Security 29 NAT Network Address Translation 30 AGI Asterisk Gateway Interface 31 ICMP Internet Control Message Protocol 32 ARP Address Resolution Protocol 33 MMUSIC Multiparty Multimedia Session Control ch¬ng i Giíi thiƯu chung Call Center tên gọi chung cho giải pháp tập trung hóa việc điều phối, quản lý cung cấp dịch vụ gia tăng cho liên lạc điện thoại tổ chức Sự phát triển CNTT với công nghệ tích hợp điện thoại - máy tính đà làm Call Center ngày thông minh hơn, thay người nhiều công việc Cùng với phát triển nhanh chóng mạnh mẽ ngành công nghệ thông tin điện tử viễn thông, với nhu cầu chia sẻ liệu, thông tin lẫn ngày tăng, bên doanh nghiệp tồn thêm hệ thống mạng song song tồn với mạng điện thoại thông thường, mạng chuyển mạch gói (mạng LAN, Interntet v.v) Với ưu điểm vượt trội mềm dẻo hiệu suất, mạng chuyển mạch gói dần thay mạng chuyển mạch kênh, đời công nghệ VoIP khẳng định thêm xu hướng Các Call Center thường phát triển dựa sở PBX PAPBX có khả kết nối với máy tính, phát triển phần mềm để đưa thêm dịch vụ, chức xử lý tự động hay quản lý theo yêu cầu Để xây dựng Call Center, cần phải phát triển phần mềm quản lý thiết bị, điều khiển định tuyến, chuyển mạch cung cấp dịch vụ theo yêu cầu Asterisk phần mềm nguồn mở tiếng, đóng góp, xây dựng phát triển cộng đồng Với nhiều tính bản, Voicemail, Conference, định tuyến gọi hỗ trợ nhiều giao thøc VoIP, nhiỊu phÇn cøng giao tiÕp PSTN, hiƯn Asterisk đà sử dụng rộng rÃi để thay từ PBX truyền thống hệ thống VoIP lớn Dĩ nhiên Call Center xây dựng nỊn Asterisk cịng ngµy cµng nhiỊu, nhê vµo sù linh hoạt khả mở rộng 1.1 Mục đích triển khai Call Center: Cần phương tiện để cung cấp dịch vụ gia tăng, dịch vụ tư vấn, giải trí qua đầu số 1800-1900, dịch vụ khách hàng tự phục vụ (IVR), dịch vụ Call Center Cần cải thiện khả quản lý hệ thống điện thoại tổ chức để giảm chi phí, tăng hiệu sử dụng nhân lục, tài nguyên, làm sở cho việc định điều hành, sản xuất, kinh doanh Muốn đem lại khả phục vụ khách hàng lúc, nơi Tăng độ hài lòng khách hàng giảm chi phí Tuy nhiên, yếu tố chi phí đầu tư lớn, quản trị phức tạp, hạn chế kinh nghiệm kiến thức bản, đặc biệt với công ty, doanh nghiệp không chuyên lĩnh vực công nghệ thông tin viễn thông, gặp nhiều khó khăn trình thiết lập tổng đài Asterisk cho doanh nghiệp mình, hệ thống xảy trục trặc hay lỗi thường cách sửa chữa, đáp ứng hệ thống trước yêu cầu thay đổi làm cho Call Center triển khai tổ chức có tiềm lực mạnh tài nhân lực chuyên môn Hệ thống EasyCC phát triển dựa tảng Asterisk Mục đích hệ thống mang lại khả quản lý tập trung, cung cấp dịch vụ khách hàng thông qua hệ thống điện thoại có khả mở rộng được, có tính mềm dẻo linh hoạt, dễ sử dụng, quản lý sẵn sàng đáp ứng yêu cầu đa dạng với chi phí thấp, hiệu qu¶ cao EasyCC cho phÐp tỉ chøc, doanh nghiƯp cã thể dễ dàng khai thác sử dụng tính chăm sóc khách hàng, chiến dịch tiếp thị, xử lý thoại nội EasyCC sư dơng nh mét hƯ thèng Call Center, mét tỉng đài nội PBX, tổng đài dịch vụ, chăm sóc khách hàng hay Trung tâm đường dây nóng, hỗ trợ khách hàng 1.2 Các đặc trưng EasyCC Hỗ trợ nhiều tính cao cấp công nghệ thoại: Ghi âm, Hội đàm, ACD, IVR Mềm dẻo, linh hoạt cách kết hợp tính sẵn có, tổ chức lại để tạo thành module Hệ thống xây dựng giao diện quản lý Web, giúp người vận hành quản lý tập trung, người khai thác truy cập trực tiếp sử dụng thông qua mạng LAN hay VPN cđa c«ng ty exten => s,1,Set(LOCAL(ATTEMPT)=0) exten => s,n(read),Read(TMP,${ARG1},,,,5) exten => s,n,GotoIf($["${TMP}"=""]?timeout) exten => s,n,Set(INPUTBAK=${INPUT}) exten => s,n,NoOp(User input : ${TMP}) exten => s,n,GotoIf($["${INPUT}"=""]?first) exten => s,n,Set(INPUT=${INPUT}&${TMP}) exten => s,n,Return exten => s,n(first),Set(INPUT=${TMP}) exten => s,n,Return exten => s,n(timeout),NoOp(Invalid User input) exten => s,n,Set(ATTEMPT=$[${ATTEMPT} + 1]) exten => s,n,GotoIf($[${ATTEMPT}>2]?${FAILDEST}) exten => s,n,Goto(read) exten => s,n,Hangup [ref-answer] ; ARG1 = Answer file to be playback ; ARG2 = Mode ; ARG3 = Data retrieved from query exten => s,1,Set(LOCAL(answer)=${ARG1}) exten => s,n,Set(LOCAL(app)=${ARG2}) exten => s,n,Set(LOCAL(appdata)=${ARG3}) exten => s,n,Playback(${LOCAL(answer)}) exten => s,n,NoOp(Dialplan will be ${LOCAL(app}} ${LOCAL(appdata)}) exten => s,n,Exec(${LOCAL(app)}(${LOCAL(appdata})) exten => s,n,Return Với chức Tra cứu thông tin, EasyCC cung cấp nhiều loại hình dịch vụ đa dạng phong phú, từ Tra điểm thi, Danh bạ trực tuyến IVR Một chức mà Call Center cần có IVR, gọi Auto Attendant Chức IVR cho phép khách hàng lựa chọn nhiều nhánh chức cách bấm phím tương ứng Trên EasyCC, module IVR kết nối đến nhiều chức dịch vụ mà module CorePBX cung cấp, phòng hội đàm, Voicemail, kết nối tới điện thoại viên, hay Tra cứu thông tin Hình 3.12: Giao diện cấu hình IVR Trên EasyCC, tính IVR thực thông qua hàm Read Asterisk, kết hợp với bảng ivr ivr_dest Bảng ivr: ghi lại cấu hình chung IVR, bao gồm thời gian chờ khách hàng nhập phím, số lần tối đa khách hàng nhập phím không hợp lệ, số lần tối đa khách hàng không nhập gì, đích kết thúc trường hợp thất bại thành công Bảng ivr_dest: chứa phím bấm mà khách hàng nhập vào, đối tượng mà phím bấm trỏ tới Từ CSDL MySQL, ta đặt biến tương ứng với IVR: function dialplan($pkey) { $this->db->where('id', $pkey); $qry = $this->db->get('ivr'); extract($qry->row_array()); $this->load->library('dialplan'); $this->dialplan->initialize('internal', "$deptname$extension"); $this->dialplan->add('Gosub', "cdrpreprocess,s,1(ivr,$extension,$id,$deptname)"); $this->dialplan->add('Goto', "ivr,$id,1"); $this->dialplan->commit(); $this->dialplan->initialize('ivr', $id, $deptname, "$name - $description"); $this->dialplan->add('GotoIf', '$["${CDR(disposition)}" = "ANSWERED"]?4'); $this->dialplan->add('Answer', ''); $this->dialplan->add('Wait', 1); $this->dialplan->add('Set', 'ATTEMPT=0'); $this->dialplan->add('Read', "IVRCHOICE,$soundfile,,n,1,$timeout"); $this->dialplan->add('GotoIf', '$["${READSTATUS}"="OK"]?'.$id.'-${IVRCHOICE},1'); $this->dialplan->add('GotoIf', '$["${READSTATUS}"="TIMEOUT"]?'.$id.'-t,1'); $this->dialplan->add('Goto', 'hangup,hangup,1'); $this->dialplan->commit(); $this->dialplan->initialize('ivr', "$id-i"); $this->dialplan->add('Set', 'ATTEMPT=$[${ATTEMPT}+1]'); $this->dialplan->add('GotoIf', '$[${ATTEMPT}>'.$attempt.']?hangup,hangup,1'); $this->dialplan->add('Read', "IVRCHOICE,$isoundfile,,n,1,$timeout"); $this->dialplan->add('GotoIf', '$["${READSTATUS}"="OK"]?'.$id.'-${IVRCHOICE},1'); $this->dialplan->add('GotoIf', '$["${READSTATUS}"="TIMEOUT"]?'.$id.'-t,1'); $this->dialplan->commit(); $this->dialplan->initialize('ivr', "$id-t"); $this->dialplan->add('Set', 'ATTEMPT=$[${ATTEMPT}+1]'); $this->dialplan->add('GotoIf', '$[${ATTEMPT}>'.$attempt.']?hangup,hangup,1'); $this->dialplan->add('Read', "IVRCHOICE,$tsoundfile,,n,1,$timeout"); $this->dialplan->add('GotoIf', '$["${READSTATUS}"="OK"]?'.$id.'-${IVRCHOICE},1'); $this->dialplan->add('GotoIf', '$["${READSTATUS}"="TIMEOUT"]?'.$id.'-t,1'); $this->dialplan->commit(); $this->db->where('ivr_id', $pkey); $opts = $this->db->get('ivr_dests'); foreach ($opts->result_array() as $o) { extract($o); $this->dialplan->initialize('ivr', "$id- ".$selection); if ($ivr_ret) { $this->dialplan->add('Goto', "$id,1"); } else { $this->dialplan->add('Goto', "$context,$exten,1"); } $this->dialplan->commit(); } $this->dialplan->initialize('ivr', "_$id-X!"); $this->dialplan->add('Goto', "$id-i,1"); $this->dialplan->commit(); } } Dialplan realtime tương đương với dialplan extensions.conf cã d¹ng nh sau: exten => 300-i,n,GotoIf() exten => 300-i,n,GotoIf() exten => 300-t,1,Set(LOOPCOUNT=$[${LOOPCOUNT} + 1]) exten => 300-t,n,GotoIf($[${LOOPCOUNT} > 5]?hangup,hangup,1) exten => 300-t,n,Read(IVRCHOICE,custom/QIS/air,,n,3,5) exten => 300-t,n,GotoIf($["${READSTATUS}"="OK"]?300-${IVRCHOICE},1) exten => 300-t,n,GotoIf($["${READSTATUS}"="TIMEOUT"]?300-t,1) exten => 300,1,Answer exten => 300,n,Set(ATTEMPT=0) exten => 300,n,Read(IVRCHOICE,mainsound,,n,1,15) ; Xö lý khách hàng nhập phím exten => 300,n,GotoIf($["${READSTATUS}"="OK"]?300-${IVRCHOICE},1) ; Nếu không, đưa 300-t exten => 300,n,GotoIf($["${READSTATUS}"="TIMEOUT"]?300-t,1) ; Các lựa chọn khách hàng exten => 300-1,1,Hangup ; Khách nhÊn phÝm exten => 300-2,1,Busy(20) ; Kh¸ch nhÊn phÝm exten => 300-3,1,Congestion(20) ; Kh¸ch nhÊn phÝm exten => _300-X!,1,Goto(300-i,1) ; Nếu khách bấm sai chuyển 300-i 3.5 Module Inbound Module Inbound đặt luật để thực chức định tuyến gọi vào Có chế độ định tuyến sau: Định tuyến theo đầu số dịch vụ Phương pháp định tuyến thiÕt lËp dialplan Realtime cđa EasyCC TÊt c¶ gọi từ mạng PSTN từ mạng VoIP khác đổ vào đưa vào xử lý context [incoming] Tõ context nµy, Asterisk truy vÊn vµo CSDL lấy đối tượng corePBX định hướng gọi tới, IVR, Tra cứu thông tin hay Hàng đợi phục vụ khách hàng Ví dụ: [incoming] exten => 801079,1,Goto(ivr,thongtinchung,1) exten => 801080,1,Goto(reference,diemthidh,1) Định tuyến theo số chủ gọi Phương pháp định tuyến theo số chủ gọi cho phép phân phối nhóm khách hàng đến đối tượng corePBX riêng cho họ Để sử dụng phương thức này, ta phải cung cấp cho EasyCC danh sách nhóm khách hàng ứng với nhóm khách hàng, EasyCC định tuyến nhóm tới đối tượng corePBX tương ứng Ngoài ra, EasyCC cung cấp thêm nhóm khách hàng đặc biệt khách hàng VIP, khách hàng VIP định tuyến tới đối tượng corePBX riêng cho họ, thường số máy nhánh điện thoại viên chuyên phục vụ khách hàng Hình 3.13: Định nghĩa đối tượng khách hàng Sau đà định nghĩa nhóm khách hàng, ta nhập danh sách khách hàng cho nhóm thông qua file Excel file CSV (Comma Separated Values) Tất khách hàng với số điện thoại nhập vào định hướng tới đối tượng CorePBX tương ứng với nhóm khách hàng họ EasyCC sử dụng tính AGI Asterisk để thực việc định tuyến thông minh thông qua số chủ gọi Từ dialplan Realtime, gọi tới đầu số có chức định tuyến theo số chủ gọi gọi tới AGI inboundroute.agi AGI đặt biến DESTINATION dialplan ®Ĩ ®ỉi híng cc gäi tíi ®ã NÕu kh«ng thÊy sè gäi tíi CSDL, hƯ thèng tự động phát âm báo bận [incoming] exten => 801074,1,AGI(inboundroute.agi) exten => 801074,n,GotoIf($[“${DESTINATION}” != “”]?${DESTINATION}) exten => 801074,n,Congestion(20) AGI nµy thực truy vấn vào database, lấy thông tin khách hàng từ bảng Customer thông tin định tuyến từ bảng CustomerTypes để thực định tuyến Cấu trúc hai bảng liệu khách hàng có dạng sau: CREATE TABLE `customertypes` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(20) NOT NULL DEFAULT '', `dcontext` varchar(20) NOT NULL DEFAULT '', `dexten` varchar(20) NOT NULL DEFAULT '', `description` varchar(255) NOT NULL DEFAULT '', PRIMARY KEY (`id`)); CREATE TABLE `customers` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(45) NOT NULL, `addr` varchar(150) DEFAULT NULL, `cid` varchar(20) DEFAULT NULL, `email` varchar(150) DEFAULT NULL, `serial` varchar(50) DEFAULT NULL, `description` text, `dcontext` varchar(20) NOT NULL DEFAULT '', `dexten` varchar(20) NOT NULL DEFAULT '', `typeid` varchar(20) NOT NULL DEFAULT '', `vip` tinyint(1) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8; Trong hai bảng trên, trường dcontext, dexten giúp xác định đối tượng corePBX đổi hướng gọi tới VÝ dơ, dcontext = ivr, dexten=huongdanchung sÏ ®ỉi híng dialplan tíi ivr,huongdanchung,1 M· ngn cđa AGI inboundroute.agi dùa trªn líp database abstract layer cđa CodeIgniter vµ PHP-Asterisk-Manager cđa gãi phpagi: require_once(BASEPATH.'database/DB.php'); require_once (BASEPATH."/plugins/phpagi/phpagi-asmanager.php"); $db = DB('default'); $as = new AGI(NULL, $this->config->item('phpagi')); $customer = $db->where('cid', $as->request('callerid')) ->get('customers'); if ($customer->row_count() == 0) exit; $customer = $customer->row(); if ($customer->vip) { # Xö lý gọi cho khách hàng VIP $as->set_variable('DESTINATION', $customer>dcontext.','.$customer->dexten.',1'); exit; } else { # Khách hàng thông thường định tuyến theo customertypes $customertype = $db->where('id', $customer->typeid)>get('customertypes'); if ($customertype->row_count() == 0) exit; $customertypes = $customertypes->row(); $as->set_variable('DESTINATION', $customertypes>dcontext.','.$customertypes->dexten.',1'); exit; } Víi tÝnh định hướng gọi theo số chủ gọi, EasyCC giúp phục vụ khách hàng hiệu thông minh 3.6 Module Outbound Module Outbound có chức thực gọi tự động cho danh sách số điện thoại khoảng thời gian đặt trước, tự động kết nối khách hàng với nhóm điện thoại viên định Tính thực dựa khả tạo gọi thông qua call file cđa Asterisk CÊu tróc cđa mét Call file có dạng sau: Channel: : Kênh thoại sÏ dïng ®Ĩ gäi CallerID: "name" Sè chủ gọi dùng để gọi tới khách hàng MaxRetries: Số lần gọi lại cho khách hàng trường hợp khách tắt máy hay không liên lạc RetryTime: Thêi gian chê (tÝnh b»ng gi©y) sau lần kết nối thất bại WaitTime: Thời gian đổ chuông, chờ điện thoại khách trả lời Account: Mà khách hàng sử dụng để ghi log cuéc gäi nµy Context: context sÏ kÕt nối gọi tới trả lời Extension: extension kết nối gọi tới tr¶ lêi Priority: priority sÏ kÕt nèi cuéc gọi tới trả lời Application: ứng dụng Asterisk chạy, không cung cấp giá trị context, extension priority Data: Các tham số gửi cho lƯnh Set: ThiÕt lËp c¸c biÕn dialplan cho Asterisk kÕt nèi cuéc gäi AlwaysDelete: Yes/No - Nếu nhÃn thời gian callfile tương lai không xóa callfile Archive: Yes/No - Di chuyển callfile sang th mơc outgoing_done, thªm trêng Status: Completed hoàn tất, Status: Failed thất bại Module outbound lưu thông tin vào bảng campaign campaigncalls víi cÊu tróc nh sau: CREATE TABLE `campaign` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(20) NOT NULL DEFAULT '', `description` varchar(255) NOT NULL DEFAULT '', `dcontext` varchar(20) NOT NULL DEFAULT '', `dexten` varchar(20) NOT NULL DEFAULT '', `callerid` varchar(40) NOT NULL DEFAULT '', `cid_number` varchar(20) NOT NULL DEFAULT '', `maxretries` tinyint(1) NOT NULL DEFAULT '0', `retrytime` varchar(5) NOT NULL DEFAULT '', `waittime` varchar(5) NOT NULL DEFAULT '', `enable` tinyint(1) NOT NULL default '0', `start` datetime default NULL, `expired` datetime default NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; CREATE TABLE `campaigncalls` ( `id` int(11) NOT NULL AUTO_INCREMENT, `campaignid` varchar(11) NOT NULL DEFAULT '', `customername` varchar(30) NOT NULL DEFAULT '', `phonenumber` varchar(20) NOT NULL DEFAULT '', `callstatus` tinyint(1) NOT NULL DEFAULT '0', `calltry` tinyint(3) NOT NULL default '0', `sort` int(11) NOT NULL default '0', PRIMARY KEY (`id`), UNIQUE KEY `callid` (`campaignid`,`phonenumber`) ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; ứng với campaign, ta cấu hình thông số chung cho callfile, định hướng gọi tới đối tượng corePBX nào, thời gian chờ nhấc máy lâu, số lần gọi tối đa, thời gian chờ lần gọi thất bại Hình 3.14: Giao diện quản lý kế hoạch gọi EasyCC tự động thực kế hoạch gọi (outbound campaign) theo mốc thời gian đặt trước Đối với cc gäi mét kÕ ho¹ch gäi ra, hƯ thèng ghi lại số lần thử thực gọi, tiếp tục gọi lại cho khách hàng tới hết thời gian kế hoạch hoạt động, khách hàng nhấc máy, đà đạt số lần thử lại tối đa Hệ thống EasyCC sử dụng trình PHP để liên tục quét MySQL thực gọi cho khách hàng #!/usr/bin/php -q Mét cuéc gọi kết nối có sẵn biến CAMPAIGNID, PHONENUMBER DEST để EasyCC xử lý thông qua dialplan Trong file cÊu h×nh extensions.conf, ta thùc hiƯn nèt c¸c bíc xư lý campaign: [outboundcampaign]; Cc gäi tõ callfile kết nối tới exten => s,1,Answerexten => s,n,Wait(1) ; Trước tiên, update trạng thái gọi : callstatus=1 exten => s,n,Set(QUERY=UPDATE campaigncalls SET callstatus=1 WHERE campaignid='${CAMPAIGNID}' AND phonenumber='${PHONENUMBER}')exten => s,n,Gosub(mysql-db,query,1(${QUERY})) ; Định hướng gọi tới đối tượng t¬ng øng víi Campaign exten => s,n,Goto(${DEST}) exten => s,n,Hangup ; Xư lý Cc gäi háng : +1 vµo trêng calltry exten => failed,1,NoOp(Call of ${CAMPAIGNID} failed)exten => failed,n,Set(QUERY=UPDATE campaigncalls SET calltry=calltry+1 WHERE campaignid='${CAMPAIGNID}' AND phonenumber='${PHONENUMBER}')exten => failed,n,Gosub(mysql-db,query,1(${QUERY}))exten => failed,n,Hangup 3.7 Module B¸o c¸o Module b¸o c¸o cung cÊp cho người quản lý hệ thống thông tin chi tiết c¸c cc gäi tíi hƯ thèng Module b¸o c¸o bao gồm trang Thống kê gọi vào, Thống kê gọi Thống kê tổng hợp Giao diện phần Thống kê chi tiết gọi vào từ hệ thống cho phép người quản lý tìm kiếm theo khoảng thời gian, theo đầu số gọi vào, theo thời lượng gọi vào xuất toàn thông tin file Excel để đối soát cước Hình 3.15: Thông tin chi tiết gọi vào Phần thống kê tổng hợp hiển thị tổng số gọi vào đối tượng corePBX, số gọi đối tượng Campaign, gọi từ điện thoại viên Hình 3.16: Thống kê tổng hợp theo đầu số lưu lượng thoại kết luận Theo nhận định ,Call Center sử dụng giải pháp nguồn mở Asterisk có thị trường đầy hứa hẹn Các công ty hay tổ chức nhỏ thiết lập hệ thống điện thoại đa năng, hỗ trợ đồng thời điện thoại thông thường (analog) điện thoại IP (VoIP) Asterisk giúp "hợp nhất" hai hệ thống mạng máy tính-điện thoại nội công ty hay tổ chức hòa nhập thông suốt với giới bên ngoài, mạng Internet lẫn viễn thông Ưu điểm luận văn là: đà đưa tính cấp thiết hệ thống Call Center đại dựa tổng đài mềm Asterisk, cho phép doanh nghiệp tổ chức xây dựng mô hình dịch vụ đa dạng, phong phú Ưu điểm lớn luận văn phương pháp giải vấn đề đà dựa quan ®iĨm “Cung cÊp sù tiƯn dơng nhÊt cho doanh nghiƯp tiết kiệm chi phí tối đa cho doanh nghiệp nhà cung cấp Hạn chế luận văn là: hệ thống chạy tảng Linux, hệ điều hành không quen thuộc với người Việt, nên khả bảo trì phát triển thêm chương trình cho phù hợp yêu cầu riêng tổ chức gặp nhiều khó khăn mặt công nghệ Hướng phát triển luận văn: dự định tiếp tục phát triển giao diện người dùng giao diện quản trị doanh nghiệp, cho doanh nghiệp người dùng cảm thấy tiện dụng nhất, thêm số chức cho doanh nghiệp Tôi mong mn thêi gian tíi cã thĨ tËp trung nghiên cứu sâu thêm luận văn, luận văn có tính thực cao Qua xin chân thành cảm ơn Tiến sĩ Hoàng Minh Thức đà tận tình hướng dẫn để hoàn thành luận văn Xin cảm ơn ! tài liệu tham khảo Asterisk For Dummy - Athor Ben Sharif SIP - Understanding the Session Initiation Protocol - Alan B Johnston 2005 Switching To VoIP - Theodore Wallingford - 2005 Asterisk-The Future of Telephony - Leif Madsen, Jared Smith, Jim Van Meggelen - 2005 Asterisk_handbook_project_version_1 - Mack Allision and Mark Spencer – 2006 VoIP telephony with Asterisk - Paul Mahler-2005 IP Telephony Cookbook - Dr Margit Brandl, Dimitris Daskopoulos 2005 TCP/IP Network Administration 3rd Edition - Craig Hunt-2005 Mét sè trang web : http://www.voip-info.Org http://www.tech-invite.com http://www.Asterisk.Org ... đà tập trung nghiên cứu, xây dựng phát triển luận văn Xây dựng hệ thống Call Center tiếng việt để đáp ứng yêu cầu thực tế cho doanh nghiệp Việt Nam muốn ứng dụng công nghệ kỹ thuật dịch vụ VoIP... rộng rÃi để thay từ PBX truyền thống hệ thống VoIP lớn Dĩ nhiên Call Center xây dựng Asterisk ngày nhiều, nhờ vào linh hoạt khả mở rộng 1.1 Mục đích triển khai Call Center: Cần phương tiện để cung... Call Center Nội dung luận văn Xây dựng Call Center tiếng Việt tập trung nghiên cứu, tìm hiểu tổng đài mềm Asterisk, qua đưa hướng giải để x©y dùng mét hƯ thèng Call Center cho mét doanh nghiệp