Initiating phone calls in SurveyCTO

 This article supports the computer-assisted telephone interviewing (CATI) starter kit guide.

There are several options available for initiating phone calls for the purpose of computer-assisted telephone interviewing (CATI) in a SurveyCTO form. The sample forms which form part of the CATI starter kit guide suggest the use of the call-phone field plug-in. Combined with SurveyCTO Collect for Android's call management features (click to learn more), this is a great option for seamless integration of calls with the data capture process. Still, there are reasons to consider alternatives.

Customization through field plug-ins

First, all of SurveyCTO's call initiation options involve some level of custom integration through field plug-ins. Other than the phone-call field plug-in covered later in this article, you can find other useful phone call-related field plug-ins under the Integration with outside applications section of our field plug-in catalog

This article also covers some lighter touch integration that exists thanks to SurveyCTO's support for HTML in field labels. 

If you don't find the option that works in these resources, field plug-in support gives you the freedom to develop your own ideal solution!

Convenience of built-in call management in Collect

As above, SurveyCTO Collect for Android's call management features make for the most seamless CATI experience. Enumerators can manage calls from any screen in the form, and redial without travelling back to the field that started the call. This is a big advantage for long interviews, and call disconnections do happen.

Another advantage is the ability to keep the respondent’s phone number private (hidden) while calling. This is one of a few options for protecting phone numbers. The table below describes all methods available to address this:

Places that a respondent's phone number can appear Methods to address this vulnerability Notes about version compatibility
In the form Use the phone-call field plug-in to launch the call instead. Field plug-ins require Collect v2.70.4 or higher.
On the screen after you've launched the call (in Collect's call management bottom bar)

Use the phone-call field plug-in with the call-masking feature enabled (this will automatically enforce Collect being the default phone app).

The ability to set Collect as the default phone app is only available in Android versions 6.0 and up.
In the default phone app call log (or any other phone app that keeps a call log)

Option 1: Make sure Collect is ALWAYS default phone app and disable all other phone apps (by using Mobile Device Management (MDM) or applock services).

Option 2: Use a cloud communication service like Twilio/Exotel.
The ability to set Collect as the default phone app is only available in Android versions 6.0 and up.
In the call history from the phone network provider

Option 1: Don't let enumerators use their own SIM cards.

Option 2: Use a cloud communication service like Twilio/Exotel.

 There are other advantages, so please visit the link above, but a key disadvantage is that SurveyCTO Collect's built in call management features still depend on the device's built-in software support for initiating calls on system level. This means we've been subject to security limitations imposed by Google and the manufacturer when it comes to recording phone calls (see our article on phone survey data quality control). Android 4.4 through 7 should support recording both sides of the call. Depending on the make and model, some devices on later versions of Android will also record both sides of the call.

Aside from call recording, calls initiated from a device via that device's SIM card incur costs which are typically managed at consumer level, which doesn't always scale. There are solutions to this (see the CATI requirements article), but it is something to keep in mind.

Prioritizing data quality with third party voice services

If survey data quality is amongst your key concerns, you'll want to be able to reliably record calls regardless of the devices your team are using. At present, your best choice is an integration with a third party programmable voice service. There are many voice services out there, and field plug-in integrations are available for two of them right now:

  1. Twilio offers wide coverage for voice and SMS. Further, they support public/private key encryption security that works using the same underlying form encryption technology SurveyCTO uses. See the twilio-call field plug-in.
  2. Exotel offers voice service only for India, but has wider support for SMS. The J-PAL South Asia team developed the scto-exotel field plug-in which they've made publicly available.

What these services have in common are call recording functionality that's independent of device security, phone number masking, centralized billing (no need to manage credit on individual devices), bulk, and nonprofit pricing. Further, call recordings don't happen on the device, so there's no audio data to transmit from devices to your SurveyCTO server.

However, at present, while calls initiated through a voice service can happen using SurveyCTO Collect's call management feature, the phone number enumerators see is masked, which also means that enumerator cannot redial the respondent from any screen (that would be a call to the voice service's virtual number). Rather, they would need to navigate back to the plug-in screen, then back to the last unanswered field using the Go To Prompt menu.

Using VOIP services when your internet connection is good

The above solution works well even when internet connections are poor. While it takes an internet connection to initiate a call via voice service like Twilio or Exotel, the call happens using conventional telephony. However, what about voice over internet protocol (VOIP) services like Skype?

If your phone survey team happens to be working with good internet connections from where they're working, VOIP services are an option. While calls between Skype users that don't involve conventional telephones are free, you would need to top-up with Skype credit to call mobile phones and landlines. Some VOIP services allow centralized management, so no need to manage individual balances. Depending on the VOIP service, call recording may also be supported.

But how to initiate a Skype call from a form? Firstly, if you click on the call-phone field plug-in button in a web form, on a desktop computer it may offer to open an application that's installed to complete the call with (Skype could be one of those options, depending on your choice of browser). However, you can also use HTML tags to initiate app-specific call completion. For example, if you wanted team members to make calls using Skype, the following HTML code would work:

 <a href="skype:${phone_number}?call">${phone_number}</a>

Other VOIP services may pick up on "tel" links:

<a href="tel:${phone_number}">TAP TO CALL</a>

For the fields with HTML links to be picked up by a VOIP service, you could program your form so that these options only appear when your form is running as a web form. Give that field a relevance expression of:

${deviceid} = '(web)'

That way, Skype will be used in web forms, and the field plug-in will be used on Android and iOS. The new device-info() function can also tell the form about the system running your form.

Do you have thoughts on this support article? We'd love to hear them! Feel free to fill out this feedback form.


Article is closed for comments.