eric-brechemier / how-i-replaced-skype-with-twilio

How I replaced Skype with Twilio to make phone calls from my computer
Creative Commons Attribution 4.0 International
43 stars 9 forks source link

Try VOIP software phones #4

Closed eric-brechemier closed 5 years ago

eric-brechemier commented 5 years ago

I started by testing Zoiper, which was, if I remember correctly, provided under white label by one of the VOIP services that I considered, and was otherwise often mentioned in the documentation of others.

After a few months with Zoiper, I was confronted to repeated issues when making phone calls over a particular WiFi connection which led me to start testing Linphone instead.

I will describe my experience with these two software phones side by side.

eric-brechemier commented 5 years ago
Zoiper Linphone
OS Windows/Mac/Linux Windows/Mac/Linux
License Proprietary Open Source (GPLv2)
Price Zoiper Lite: Free for non‑commercial use
Zoiper PRO: 47.94€
Free
Audio Codecs opus, speex, iLBC, gsm, g711 ulaw, g711 alaw, g722, g726
+ g729 (Only in PRO)
opus, speex, gsm, g711 ulaw, g711 alaw, g722, g729, AAC-ELD, BV16
Encryption TLS, SRTP, SFTP
(Only in PRO version)
TLS, SRTP, zRTP, SRTP-DTLS
Full List of Features Free vs PRO Mobile vs Desktop
eric-brechemier commented 5 years ago

Welcome

After installing the app, on the first launch, the experience in Zoiper and Linphone differs:

Zoiper Linphone
zoiper-01 linphone-01
zoiper-02 linphone-02

It reflects the fact that:

Zoiper

To skip the ad for the PRO version of Zoiper, click the discreet link at the bottom of the screen:

Continue as a Free user

The next step is the start of the setup.

Linphone

In Linphone, the first screen invites you to spread the word by inviting your friends to use the app. In order to start the setup, you can select the assistant instead:

Account Assistant

then at the start of the assistant, click the button in the bottom left to start the setup:

use a SIP account
eric-brechemier commented 5 years ago

Account Setup

In both cases, you need three pieces of information and a half to setup the app:

In the case of Twilio, you choose your own SIP username and password when you create the SIP user. You choose your own subdomain, which must be unique among all Twilio users when you create the SIP domain. Your subdomain is followed by .sip.us1.twilio.com. And you can optionally append ;transport=tls to the SIP domain to specify that you want to use an encrypted transport for the SIP registration.

The username and domain are sometimes presented together, glued together with @ like in an email: username@domain, and sometimes presented separately. This can be confusing at times, but it is very much like an email indeed: usually you have to provide the whole email address, but with your email provider, the username alone is often sufficient to identify yourself.

For a total newbie like me, the Zoiper setup is very friendly: each step asks for little information and provides ample details to describe the information requested. The Linphone setup process on the other hand is pretty daunting. If you don't know what to expect, what's needed to make the magic happen, you are pretty much on your own.

Zoiper Linphone
zoiper-03 linphone-03
zoiper-04 linphone-04
zoiper-05 linphone-05
zoiper-06 linphone-06
zoiper-07 linphone-07
zoiper-08 linphone-08
zoiper-09 linphone-09

Zoiper

The setup process of Zoiper is very piecemeal, asking for just one or two pieces of information on each step:

1. username (username@subdomain.sip.us1.twilio.com) and password

username and password

2. hostname

Prefilled with the SIP domain provided at previous step, it can be customized here to add extra parameters, e.g. ;transport=tls:

hostname

3. Proxy Settings

zoiper-05-skip

4. Transport Protocol

transport protocol

Here I appreciate that different options are tested and color coded to show which tests were successful. I regret that the encrypted channel is reserved to the PRO version though, because security is a right, not a feature.

5. Audio Setup

zoiper-08-start-test

I found the tools provided by Zoiper to check the audio input and output at this step quite useful. It is too bad that they are only available during the initial setup though: I tried hard but could not find them anywhere in the app to check my audio settings again at a later point.

6. Setup Complete

zoiper-09-active-account

At this step, the setup is complete and the green mark shows that the SIP registration has been done successfully. This is dandy, you can start making calls, unlike Linphone which requires an extra step as we'll see below.

Linphone

1. All The SIP Settings At Once

This form feels like a wall to climb, and confronts us with its emptiness. It is also very dry: no hint, no clue is provided.

2. Let's Break It Up

Stepping back for a minute, we can build on our experience of the setup in Zoiper to fill in this imposing form:

  1. first the username: the field is short and there is a separate field for the SIP domain on the line just below so we'll provide just the username (the part before the @) without the domain.
  2. display name is marked as optional, let's skip it.
  3. now the SIP domain, of the form subdomain.sip.us1.twilio.com or with optional parameters e.g. subdomain.sip.us1.twilio.com;transport=tls.
  4. the password associated with the username, so far so good.
  5. finally, the transport, instead of the default (UDP), I selected TLS to apply encryption to the SIP registration.

3. Back to Square One

No... After saving the account settings, we get back to the very first screen, with the same default account selected. Was it all for naught?!

As far as I can tell, this default account is useless, and this impression is confirmed by the ominous red warning icon on its side:

linphone-05-account-status

We now need to select the SIP account that we have just created to trigger the SIP registration. All of which was done automatically by Zoiper.

With a leap of faith, we click on the default account status, which opens a modal window:

active account

Here we take a chance with the list below "Active Account" and we find our SIP account below:

select active account

We select it:

linphone-08-select-active-account

and after confirming with OK, the selected SIP account is now active and registered:

linphone-09-active-account

Needless to say, it was much easier with Zoiper, many thanks.

eric-brechemier commented 5 years ago

Making a Call

From this point, we can make and receive calls. In both Zoiper and Linphone, we can call a number directly by searching for this number in our list of contacts, still empty at this point, then choosing to call the number disregarding the fact that no matching contact was found:

Zoiper Linphone
zoiper-19 linphone-21
zoiper-20 linphone-22
zoiper-21 linphone-23

The steps are the same in Zoiper and Linphone:

  1. type the number in international format in the search area
Zoiper Linphone
zoiper-19-search-number linphone-21-search-number
  1. click the phone icon to call
Zoiper Linphone
Call in Zoiper Call in Linphone
  1. at the end of the call, click the red phone icon to hang up
Zoiper Linphone
End call in Zoiper End call in Linphone
eric-brechemier commented 5 years ago

Receiving a Call

Once the setup has been completed, you can receive calls as long as the app is running. Technically, the SIP account must be registered with the VOIP provider that provides the bridge between the Public Switched Telephone Network (PSTN) and your computer. When a regular phone calls your virtual phone number, the VOIP provider translates that to your VOIP address (username@domain). The role of the registration is to tell the service where is your computer, which will be handling the calls for this address.

While both Zoiper and Linphone notify you of incoming calls with a ring, their visual notifications differ. In Zoiper, the whole app displays the notification, while in Linphone a small notification pops up instead:

Zoiper Linphone
zoiper-29 linphone-35

You can then choose to answer the call or end the call without answering.

Call Details

During a call, you can get statistics and extra details in both Zoiper and Linphone:

Zoiper Linphone
zoiper-28 linphone-16
zoiper-28-stats linphone-16-stats
linphone-20-padlock-open
linphone-20-call-not-encrypted

Linphone

I found the input/output levels displayed by Linphone particularly useful to check that the sound is moving both ways:

linphone-16-levels
eric-brechemier commented 5 years ago

Contact Management

For day to day usage, it is more convenient to save contacts for each number to call. An added benefit is that the name of the contact gets displayed when the corresponding number calls you.

Zoiper Linphone
zoiper-10 linphone-10
zoiper-11 linphone-11
zoiper-12 linphone-12
zoiper-17 linphone-13
zoiper-23 linphone-14
zoiper-24
zoiper-14

The user experience for contact management in Zoiper is surprisingly awful in contrast with the excellent experience during the initial setup. The most obvious shortcomings are:

zoiper-13-save-changed-data zoiper-15-this-contact-has-no-phone-number Add Phone Number

... before you are finally allowed to store the phone number:

zoiper-18-cell

Unsurprisingly, contact management in Linphone is not great, but it is still leaps and bounds better than Zoiper. The major pitfall again is how to store the phone number. Linphone does not label them as phone numbers. All it knows are SIP accounts:

linphone-11-contact-name-and-sip-account

Now, when you call a phone number from a softphone, it has to be converted to a SIP address that the VOIP service can understand, and it is the responsibility of the VOIP service to translate this address into an international phone number to call a regular phone over the Public Switched Telephone Network (PSTN). So, in theory, Linphone is on firm grounds. But in practice, most VOIP providers format these SIP addresses for actual phone numbers in the same way, by appending @ and the SIP domain to the international phone number, e.g. +12025550108@subdomain.sip.us1.twilio.com. So by asking for a SIP Account, Linphone is requesting a value in this format. Which I have been doing for months, but it gets old very fast.

The trick is, both Zoiper and Linphone are aware of this convention, and even Linphone will gladly accept an international phone number instead of a SIP Account, even if it does not say so:

linphone-12-contact-name-and-sip-account

You can input just +12025550108. After saving the contact number with linphone-12-save, the SIP domain of the active SIP account, subdomain.sip.us1.twilio.com, is simply appended to the international phone number, which becomes +12025550108@subdomain.sip.us1.twilio.com:

linphone-13-contact-name-and-sip-account

No need to type it yourself!

Also, both Zoiper and Linphone provide overweight forms full of fields to fill for each contact. The truth is, you only need to fill the display name and one phone number in international format. That's all.

eric-brechemier commented 5 years ago

In both Zoiper and Linphone, it is actually easier to search for a number first, then save that number as a contact than to create a contact from scratch.

The major advantage is that the phone number is prefilled, in the right place and in the right format.

Zoiper Linphone
zoiper-19 linphone-26
zoiper-22 linphone-27
zoiper-23 linphone-28
zoiper-24 linphone-29
zoiper-14 linphone-30
eric-brechemier commented 5 years ago

Deleting a Contact

Zoiper Linphone
zoiper-35 linphone-32
zoiper-36

Deleting a Contact is straightforward in Linphone.

Delete Contact in Linphone

It is a bit more subtle in Zoiper, which offers a choice between deleting the contact or just deleting the call history for this contact:

Delete Contact in Zoiper

eric-brechemier commented 5 years ago

Conclusion

Both Zoiper and Linphone may work for you. Neither is perfect.

I chose Linphone over Zoiper because:

I learned a lot by using Zoiper however: it is much more welcoming for newcomers because of its didactic interface and it mentions phone numbers directly where Linphone uses only the unfamiliar concept of SIP accounts.

eric-brechemier commented 5 years ago

You may leave your comments below.