10 điều có thể bạn chưa biết về Asterisk

Nếu bạn vẫn đang sử dụng hệ thống thoại từ thế kỷ trước, bạn có thể chưa biết những hệ thống thoại trên Asterisk ngày nay có thể làm được những gì. Còn nếu bạn đang sử dụng Asterisk, những vấn đề này có thể giúp bạn tận dụng tối đa khả năng của hệ thống thoại trên Asterisk của mình.

10. Kết nối đến dịch vụ thư mục tập trung LDAP
Asterisk có thể xác thực người dùng với dịch vụ thư mục tập trung LDAP, Lotus Domino, Apple OpenDirectory, hoặc Active Directory.

9. Kết nối sử dụng Google Voice và GTalk
Sử dụng các dịch vụ của Google với Asterisk để gửi/nhận cuộc gọi miễn phí với những người dùng Google khác cũng như với điện thoại thường.

8. Tích hợp Lịch làm việc
Nhận cuộc gọi từ Asterisk nhắc lịch họp, hay thậm chí là tự động kết nối bạn với một phiên tọa đàm đã đặt lịch. Asterisk calendaring API tương thích với iCalendar, CalDAV, cũng như Exchange.

7. Thể hiện trạng thái thiết bị đàm thoại với Jabber/XMPP
Thể hiện trạng thái thiết bị đàm thoại qua giao thức nhắn tin tức thời (Chat) chuẩn (Jabber/XMPP).

6. PITCH_SHIFT và JACK
Trong các hệ thống đơn giản, có thể thay đổi độ ưu tiên của cuộc gọi với hàm PITCH_SHIFT, hoặc chuyển cuộc gọi qua các bộ xử lý tín hiệu sử dụng JACK.

5. Tích hợp Thư thoại-Thư điện tử
Asterisk từ lâu đã cho phép gửi thư thoại qua hệ thống thư điện tử, nhưng bạn đã bao giờ biết rằng Asterisk cũng có khả năng lưu các thông điệp thư thoại trực tiếp trong IMAP? Với Asterisk, bạn có thể xây dựng một hệ thống thư điện tử và thư thoại chung thống nhất.

4. Đọc văn bản và nhận dạng giọng nói !
Asterisk có khả năng tích hợp trực tiếp với các hệ thống đọc văn bản (text-to-speech – TTS) và tự động nhận dạng giọng nói (automatic speech-recognition – ASR) thông dụng hàng đầu thế giới, như Cepstral, Vestec, và Lumenvox. Hãy để Asterisk nói thay bạn, và hiểu những gì bạn trả lời!

3. Tích hợp CSDL
Không cần thêm bất cứ một giấy phép đặc biệt hay các lớp mở rộng, Asterisk có thể sử dụng CSDL tương thích ODBC để xác thực cũng như lưu trữ nhật ký cuộc gọi giúp cho việc quản trị người dùng và lập báo cáo trở nên dễ dàng.

2. Các trò chơi hàng đợi với Asterisk
Một vài quản trị viên hệ thống Asterisk cấp tiến đã thay đổi cách thức xử lý hàng đợi cuộc gọi. Ngày nay, thay vì chờ đợi tới lượt mình trong khi nghe các giọng nhắc lặp đi lặp lại nhiều ngày, bạn có thể tham gia các trò chơi hỏi đáp trực tiếp. Bỏ qua trò chơi và bạn có thể được nhắc qua lại cuộc gọi. Trả lời câu hỏi đúng cũng giúp bạn chen hàng lên trước người đang chờ phía trước bạn; hoặc làm một vài thức ít thách thức hơn, như cho phép bạn bỏ máy và tự động gọi lại bạn khi đường dây sẵn sàng.

1. Hỗ trợ đàm thoại băng thông siêu rộng
Asterisk đã luôn hỗ trợ nhiều khả năng mã hóa âm thanh, ngoại trừ các cải tiến mới nhất về chuẩn âm thanh trong các hệ thống đàm thoại. Phiên bản Asterisk 10 hỗ trợ âm thanh chất lượng CD (16-bit, 44.1kHz) cho đến các mức chất lượng cao nhất Blu-ray và DTS-HD với tần số âm thanh lên đến 192kHz, độ trung thực cao nhất trong chuẩn đàm thoại!

Nguồn: blogs.digium.com

Monitoring Asterisk with Munin

Các bạn là một quản trị viên hệ thống hay một công ty chuyên cung cấp dịch vụ hỗ trợ, bảo trì? Các bạn đang phải chịu trách nhiệm quản trị và vận hành hệ thống thoại IP trên Asterisk (cài đặt phần mềm tự do nguồn mở Asterisk hoặc các appliance based trên nền Asterisk như Trixbox, Switchvox…)??

Hẳn không dưới một lần, các bạn gặp những vấn đề nhất định trong việc kiểm soát tình trạng hoạt động của hệ thống. Bạn không thể tự ngồi theo dõi hệ thống Asterisk của bạn 24/7, mà cần phải có những công cụ tự động phân tích tình trạng hoạt động, phân tích log của hệ thống, thông báo cho bạn khi có vấn đề xảy ra, thống kê, vẽ biểu đồ hoạt động của hệ thống theo thời gian thực…

Sau một thời gian tìm hiểu và áp dụng Munin vào hoạt động hiệu quả, tôi muốn chia sẻ với các bạn các kinh nghiệm của mình trong bài viết này; đặc biệt là phần cấu hình Munin plugin kết nối tới Asterisk hầu như chưa được nhắc đến nhiều trên các diễn đàn về Munin, Asterisk và các diễn đàn, cộng đồng FOSS khác.

Munin (http://munin-monitoring.org/) là một trong những phần mềm tự do nguồn mở hỗ trợ System Monitoring tốt hất hiện nay bới đặc tính dễ cài đặt, quản trị; với các chức năng theo dõi trạng thái hoạt động của các dịch vụ, hệ thống, chức năng thống kê, báo cáo, vẽ biểu đồ hoạt động của hệ thống…

Bài viết này nhằm trình bày các bước sơ bộ cài đặt và cấu hình Munin để theo dõi hoạt động của các hệ thống thoại IP based trên nền Asterisk.

Giả sử, bạn đã có một hệ thống Asterisk đang hoạt động bình thường. Trước tiên, bạn cần cài đặt, cấu hình Munin phục vụ theo dõi các hoạt động của các dịch vụ cơ bản như vùng đĩa, mạng, tiến trình, tài nguyên chung…

Xem các tài liệu: http://munin-monitoring.org/wiki/LinuxInstallation và http://munin-monitoring.org/wiki/munin.conf

Sau khi Munin đã hoạt động, công việc chính bây giờ là cấu hình Munin theo dõi hoạt động của Asterisk.

Đi kèm trong phiên bản Munin mới nhất, đã có sẵn plugin chuyên theo dõi các hoạt động của Asterisk. Việc của bạn là cấu hình cho plugin này hoạt động, kết nối được vào hệ thống Asterisk để theo dõi, tập hợp và thống kê số liệu về tình trạng hoạt động.

Munin plugin kết nối tới Asterisk thông qua AMI (Asterisk Manager Interface). Vì vậy, trước hết, bạn phải cài đặt AMI trên máy chủ Asterisk của bạn (thường đã được cài sẵn) và tạo tài khoản AMI mới dành riêng cho Asterisk (bạn nên tra cứu tài liệu cấu hình Asterisk để biết thêm chi tiết).

Bước tiếp theo là kích hoạt Munin plugin cho Asterisk (Xem: http://munin-monitoring.org/wiki/plugin-conf.d); Trong file cấu hình /etc/munin/plugin-conf.d/asterisk sửa nội dung tương tự như sau (đây chính là điểm chính quan trọng nhất):

[asterisk*]
user root
env.logfile full
env.logdir /var/log/asterisk
env.host 127.0.0.1
env.port 5038
env.username munin
env.secret <your-real-password>
env.codecs gsm ulaw alaw
env.codecsx 0x2 0x4 0x8
env.channels Zap Dahdi SIP

Munin-node có thể chạy ngay trên máy chủ Asterisk hoặc trên máy chủ khác (máy chủ Munin chính); trong trường hợp đó, chỉ cần điều chỉnh tham số env.host, kiểm tra quyền truy cập tài khoản AMI cũng như cấu hình mạng, tường lửa… để máy chủ Munin-node ngoài có quyền truy cập qua AMI.

Chúc các bạn may mắn và sớm có được một giải pháp hữu hiệu phục vụ hỗ trợ theo dõi hệ thống Asterisk của mình.

Upgrade to Asterisk 1.8 using YUM

Now that Asterisk 1.8 has been released.

If you are more familiar in installing Asterisk (RPM packages) with YUM than compiling it from sources, you should try this process to upgrade to Asterisk 1.8 from your existing Asterisk 1.6 or even 1.4 installation.

As you know, Asterisk 1.6 RPM packages in asterisk.org repository are named asterisk16 while the new ones are named asterisk18. The upgrade isn’t as easy as a `yum update`, but it’s not too difficult.

From a Linux command line, run:
# yum shell

This enters the shell mode of yum. Once in the shell, enter the following.
# remove asterisk16 asterisk16-core
# install asterisk18-core asterisk18
# ts solve
# ts run

At this point, the package list will be calculated, and you should be presented with the option to finish the transaction. If everything looks correct, hit ‘Y’ and let it complete. You can then ‘exit’ the shell mode. Congratulations! You’ve just successfully installed Asterisk 1.8.

Note: If you’ve installed them, you may see asterisk16-addons or asterisk16-<insert module name> packages being removed. You can add the asterisk18 equivalents to the ‘install’ command above, and they will also be upgraded.

Note 2: To get FreePBX to support Asterisk 1.8, you’ll need to install freepbx-2.7.0-7 at a minimum. The easiest way to get this, is to `yum update` before running the above.

Howto setup Asterisk/FreePBX behind NAT

This HOWTO assumes that your FreePBX system is sitting behind a NATed firewall with no direct connection to the outside world and it is NOT in the DMZ zone. If you have your system facing outside, or have used Mapped IP addresses or other techniques, then it is assumed that you have adequate knowledge to interpret these instructions and also assure that you have properly secured your installation.

The three key considerations in setting up remote extensions are:

  • Asterisk Knows what network is external vs. internal
  • All Signaling and Media ports are forwarded to Asterisk
  • The Extension/Device is setup to be NATed

In order to accomplish the above we need to apply some configuration information into FreePBX, some Asterisk configuration files and on your firewall/router.

Internal/External Network Information

You must edit or create the file sip_nat.conf typically found in your /etc/asterisk directory and make sure it is owned by asterisk. We will assume that you have an internal network of 192.168.1.0/255.255.255.0 and that you have a static IP address of 24.72.182.16. If you have a dynamic IP, see the notes that follow. In this situation, you need to create or edit the following entries in your sip_nat.conf file:

externip=24.72.182.16
localnet=192.168.1.0/255.255.255.0

This tells Asterisk what IP address range is internal vs. external so that it can rewrite the SIP headers appropriately. If you have a dynamic address instead of a static address then you need to modify the above. You will need to have a domain name for the host, let’s assume you are using dyndns.com’s free service and have chosen the name mydomain.dyndns.org. Then your sip_nat.conf file would look like the following:

externhost=mydomain.dyndns.org
externrefresh=120
localnet=192.168.1.0/255.255.255.0

Where externrefresh tells Asterisk to recheck the IP address every 120 seconds in this case. You should adjust this higher or lower based on the frequency that this changes.

Firewall/Router Configuration

The default installation of FreePBX is configured to use UDP port 5060 as the SIP signaling port and UDP ports 10001-20000 as the RTP Media ports. All these ports must be forwarded to your FreePBX System. How to do this varies widely depending on the firewall or equipment that you are using. It is commonly referred to as Port Forwarding or maybe Destination NAT (DNAT). However it is referred, if we assume in this example that your FreePBX system has an internal IP address of 192.168.1.100 then you will want:

  • UDP/5060 -> Forward to 192.168.1.100
  • UDP/10001-20000 -> Forward to 192.168.1.100

Extension Information

We will assume you are using FreePBX in Extension mode but if you are using Devices/Users the same applies on the Devices page. You need to configure the extension with NAT enabled so that Asterisk knows this device is NATed and can apply the SIP rewriting rules that you previously configured in the sip_nat.conf file. Navigate to the desired extension and scroll down to the Device Options Section.

The configuration option nat must be set to yes, and you may want to set qualify to yes as well although not necessary.

With these steps, when properly configured, your external device should be able to communicate with your Asterisk PBX server unless you have issues on the remote end where the device is located because of badly behaved Firewalls. The remote device should be configured to use your external IP address or domain name as configured above in the sip_nat.conf file.

Asterisk VOIP with Nokia E63 How-To

Getting the E63 connected to Asterisk was a bit trying at first, since the included VOIP client seems to be tailored to a Nokia VOIP solution. With some trial and error, then some googling, I was able to get it working, and now my E63 is not only a cellphone with uber connectivity options, but also doubles as an extension of my office PBX! What is most impressive about this setup is that the phone “knows” when it is at the office and automatically switches on the VOIP client and allows the phone to call or receive calls through the PBX, thereby saving valuable minutes while at the office.

Here’s how I got the NOKIA E63 to act as a VOIP client on my office PBX.

First, open the Menu -> Tools -> Settings -> Connection settings. In there, you will see an item that says “SIP Settings”

Once in the SIP settings, you’ll be able to enter the configuration options for your SIP extension on your PBX. First, create a SIP Profile and then enter the SIP account info in the new SIP profile.

The options one can enter here are:

  • Profile Name (specify whatever you wish)
  • Service Profile (should be IETF)
  • Default Access Point (I used the wifi access point in my office SSID iWay)
  • Public User Name (Here specify as ext@pbx.hostname) ie. 200@asterisk.iwayvietnam.com if 200 is your SIP extension account
  • Use Compression (set this to NO)
  • Registration (set to Always On)
  • Use Security (I selected NO)

The last 2 items are for entering the proxy and registrar servers (basically the account info and address of your PBX for both incoming and outgoing channels).

For the Proxy server submenu please enter the following information:

  • Proxy Server Address (this should be the FQDN or IP address of your PBX) in my example, it was asterisk.iwayvietnam.com
  • Realm (If you are using Asterisk as your PBX set this to the word “asterisk”)
  • User Name (set this to JUST your extension number, I used 200)
  • Password (this is case sensitive, enter exactly as it is in the Asterisk GUI manager for the SIP account)
  • Allow Loose Routing (Set this to YES)
  • Transport Type (set this to AUTO)
  • Port (make sure this says 5060)

Ok, now go back to the previous menu level and now select Registrar Server. Please enter your info similar to the folowing:

  • Registrar Server Address (again, this should be the FQDN or IP of your PBX) I used asterisk.iwayvietnam.com
  • Realm (again, just set this to “asterisk” no quotes)
  • User Name (ONLY your extension number)
  • Password (you know what this is by now….)
  • Transport Type (AUTO)
  • Port (5060)

Now back out of the menu to the previous level, then hit BACK again. If all went right, you should see status of that new SIP profile is “Registered”.

You’re almost done, just a couple more steps to complete your E63 VOIP configuration. Now go back to the Connection setup menu in the Settings menu. Look for an item called “Internet Tel.” and click on that to create a new Internet Telephone profile. It is here that you will select your default SIP profile and specify how it will connect. To begin, just select Options, then New Profile.

Once done, back out and go to the Menu -> Communication menu and then select Options, Settings…

For default Call type select “Internet Call”. Now exit all the menus. If your phone sees your wireless network
and your SIP extension account is active on the PBX, you should see this on your screen (note arrows) to indicate that your VOIP client is now ready to receive or make a call using your PBX instead of cellular minutes. Also, when you leave your wifi zone, the phone will automatically turn off and deactivate the VOIP client until you return within your wifi’s coverage zone.

Congratulations, if you see these two additional marks on your screen, you now have a working VOIP extension on your phone!

Enjoy and please comment below.

Four Linux softphones reviewed

Many businesses are turning to Voice over IP (VoIP) to save money on infrastructure and communications costs, but just ripping out your existing phone system and replacing it with VoIP will not work. VoIP systems require IP phones or analog telephone adapters to allow your existing phones to work. If equipment costs are stopping you from experimenting with VoIP, softphones can provide an inexpensive way for businesses to get up and running with VoIP, as I recently discovered by putting Kiax, Linphone, Twinkle, and CounterPath’s X-Lite to the test.

A softphone runs on your computer and provides all the features and functionality of a regular phone. I tested the four Linux-based programs using an Asterisk server and multiple Linux workstations on an internal LAN. Kiax, Linphone, and Twinkle are open source. X-Lite is not, but is available as a free download.

Three out of the four support Session Initiation Protocol (SIP), a signalling protocol under development by the Internet Engineering Task Force (IETF) to establish VoIP connections. With its IETF backing, SIP is quickly becoming the standard protocol for VoIP. Kiax is exception. It uses Digium’s Inter Asterisk Exchange (IAX) protocol. The main advantage of IAX over SIP is its transparency to firewalls. IAX softphones work behind firewalls without the need for external proxy servers or the need to change firewall settings.

In addition to a signalling protocol, VoIP endpoints need to specify codec software that turns analog voice communication into digital packets for transmission over the network and back again at the receiver’s end. The choice of codec depends on the bandwidth available. The codec that gives the highest voice quality is the G.711u, which is the standard codec that traditional plain old telephone service (POTS) providers use. G.711u provides high voice quality but requires high bandwidth. Because we did our testing on a switched 100Mbps LAN — in other words, a very fast network — we used the G.711u codec with all the products, and found voice quality was not a distinguishing issue. Under these conditions, they all delivered roughly the same voice quality.

Let’s take a look at what does set these softphones apart.

Kiax

What makes Kiax stand out is its simple interface. Making and receiving calls is intuitive. Kiax sports a call register that lists all calls made and received. A nice touch is the ability to sort calls in the register based on whether they were incoming, outgoing, or missed. There is not much more to Kiax’s interface; simplicity is a good thing sometimes.

The major drawback for Kiax is its lack of SIP support. If there is an Asterisk server between Kiax (or another IAX client) and a SIP client, everything will work out. If not, forget it. Kiax can talk to SIP clients only through an Asterisk server.

Kiax has packages available for Debian, Red Hat, and SUSE, as well as a plain tarball with the Kiax binary. I opted for the tarball, and installation went without a hitch.

Linphone

Linphone is more than four years old, making it the grandfather of the bunch. Linphone is distributed only as source code; no binary packages are available from the project. Linphone requires the libosip2 package, which is included in Linphone’s download directory. An optional package providing support for the iLBC codec is there as well.

Along with meeting your VoIP needs, Linphone also has a simple instant messenger application built in. This eliminates the need to have two separate applications open for basic communication tasks. The default interface is simple, but offers power users a little more, which you can access by clicking on the “show more” check box in the main window.

Linphone’s biggest strength is its outstanding codec support. It not only supports multiple bit-rates for Speex, it even supports the very poor quality, but extremely low bandwidth, DoD 1015 codec. With all the codecs it supports out of the box, it is surprising that it requires a patch for iLBC support.

Linphone was not without its share of problems, all of which can be traced to the fact that I was upgrading to the latest release and not doing a fresh install. Version 1.1 requires Speex. That should not have been a problem, as I already had Speex installed. Of course, it required the latest version of Speex. No problem, I had the latest Speex installed. But wait, Linphone will not install without the speexenc program in /usr/bin. The only problem is that the Speex installation places it in /usr/local/bin. This is not a difficult problem to solve, but it’s something the user should not have to take care of.

The other problem after upgrading is that Linphone would no longer authenticate to my Asterisk server. Removing the password requirement from the Asterisk’s SIP configuration file did the trick. This may be fine on a LAN where you trust the users, but it’s probably not a good idea if you will be connecting to the outside world.

Despite the problems with upgrading, Linphone was otherwise rock-solid, as you might expect from a product that has been around for a long time.

Twinkle

Twinkle is the most ambitious of the group. At this time, Twinkle is only available as source code. It also requires GNU Common C++ and GNU ccRTP, and you can get both from its main download page. Once the requirements are out of the way, Twinkle installs without a hitch.

Twinkle supports a long list of features and has the most professional feel of the open source softphones. It supports two line appearances. If you are talking on line one and another call comes in, you have the option of placing the first call on hold and switching to line two to take the second. The User Profile section for account setup is the most intuitive and the best out of the four.

Twinkle comes with a few added services to simplify the user’s life. If you do not feel like talking, the Do Not Disturb feature will generate a SIP “480 Temporarily Not Available” response to anyone trying to call you. If you enjoy talking no matter who is calling, the Auto Answer feature connects all calls without your interaction. My favorite Twinkle feature is Call Redirection. With it, you can send calls to another user. Redirection can be set up for all calls, or for calls that come in when your lines are busy, or if you do not answer the call within a certain amount of time.

What’s not to like about Twinkle? Well, it lacks an address book and call history reports, though these features are planned for future releases. Twinkle is definitely a softphone to keep your eye on.

CounterPath X-Lite

Last, but not least, is X-Lite, the only proprietary softphone of the bunch. Although it’s not open source, it is free as in beer for personal or commercial use. Unlike the other softphones in this review, X-Lite is also available for Windows and Mac OS X. The Linux version is provided as a tarball with the X-Lite binary. Just download, unzip, and run.

X-Lite’s Audio Tuning Wizard runs when you start it for the first time. This is a feature the other softphones should adopt. It allows you to confirm that X-Lite is playing nice with your sound card and microphone. It even calibrates your microphone to adjust for the ambient noise level around the computer. These settings can be adjusted at any time by right-clicking the X-Lite client.

X-Lite’s biggest strength is the usefulness of its interface. Without accessing any menus you can adjust the speaker volume, adjust the microphone volume, and choose which codecs are enabled. Another advantage is its three line appearances, one more than Twinkle supports. As far as features go, X-Lite has just about everything you can expect in a softphone.

Well, almost. While its interface is simple, its menu options are not. X-Lite has an overwhelming number of settings. For example, why have a menu option to disable codecs when they can be toggled on and off directly from the main interface? Another downside is that some of the features the other softphones offer, like Auto-Answer and Do Not Disturb, are locked. I only found this out after trying to enable them with no luck. For those features to work, you must purchase X-Lite’s successor, CounterPath’s eyeBeam video and softphone. An audio-only version runs $30, and no Linux versions of eyeBeam are available at this time.

Which one wins?

Each of the four softphones has pros and cons. Kiax is mean and lean but works only in an Asterisk environment. Linphone is stable and mature, but may not be wise to deploy in an Asterisk environment due to authentication issues. Twinkle has a lot to offer, but is a relative newcomer to the game. X-Lite works on multiple platforms, but its free version comes crippled, and its paid version isn’t available on Linux.

Regardless of their individual issues, one thing is for sure: Each of these free softphones can help you evaluate whether VoIP is right for your company without expensive additional equipment.

Paul Virijevich is working to eliminate the “Linux consultants cost more” TCO myth. He recently started a consultancy providing cost-effective open source solutions to small businesses.

Softphone protocol and codec support

Kiax Linphone Twinkle X-Lite
SIP No Yes Yes Yes
Codec Support
G711a 64 Kbps No Yes Yes Yes
iLBC 13.3-15.5 Kbps Yes With patch No Yes
DoD 1015 2.4 Kbps No Yes No No

Source: http://www.linux.com/feature/48393