Published by Michael Bigg on Wed, 22 Apr 2020 19:38

Note: This post is a general summary of a solution, not a step-by-step guide. If you are interested in the technical detail please get in touch help as best I can! Email:

You may also be interested in:


We've worked really hard in recent weeks at making online services good. Every Sunday on our YouTube channel a few hundred people gather together to pray, sing, read scripture, hear teaching, share in a form of Communion. I've had great fun finding classic hymns from Songs of Praise on YouTube to use for the songs (and I use the excellent Kapwing for getting and editing videos).

But there's a problem

We're very aware that for a fair number of our parishioners struggle with technology (if they even have an internet connection). How can we make our worship available to those who will struggle to access something on YouTube?

The first part of the solution is Zoom

By now everyone has heard of Zoom for video conferencing, but did you know that you can dial into Zoom meetings with an old fashioned telephone? Armed with one of Zoom's dedicated dial-in numbers, a meeting ID and a password anyone with a phone can listen in to your meeting. (There's general info on that here).

What we've done is set up a laptop that hosts a Zoom meeting and also tunes into the live YouTube service (we use YouTube, but it should work just as well with Facebook Live or any other platform). We use Share Screen on Zoom to share the audio with the meeting (there's an option to *just* share the audio). Therefore, anyone with a telephone can dial into the Zoom meeting and listen in to the service. It's even better if someone has dropped an order of service through the door.

But what of those for who will struggle with dialling a strange number, and then having to navigate entering a 9-digit meeting ID, participant ID (what?!) and password. In order. With lots of #s. Especially if you are elderly, frail, or suffering from dementia.

What if someone could just dial a *local* number and get straight into the meeting?

That's where Twilio comes in...

I was inspired by this excellent piece about "Dial-a-Sermon". By using Twilio, Paul has made available a weekly sermon to anyone who dials the number she's set up. Genius!

What I've done is to create a local phone number using Twilio and have asked it to forward the call into our Zoom meeting (but with all of the extra buttons already pressed for them). This uses a "TwiML bin" which tells Twilio what to do when a call comes in. (If you're using the above-linked Switched On Network guide, then when you get to Step 3, scroll down a little further than "Functions" to "TwiML Bins" instead.)

The code is as follows:

<?xml version="1.0" encoding="UTF-8"?>
    <Say voice="man">Welcome to the service! Connecting you now. There will be roughly 10 seconds of silence.</Say>
        <Number sendDigits="wwww123456789#wwww#wwww7890#ww">+442030512874</Number>

The <say> bit just generates some words of welcome in a generic male voice.

The <dial> section dials into Zoom (I'm using their 0203 0512 874 number, but you could use any). The important bit is the sendDigits section. Let's break it downn:

  • wwww - each "w" inserts a pause of 0.5s, to give a chance for the connection to be made
  • 123456789# - this is the meeting ID, followed by #. You'll need to replace the numbers with your own meeting ID.
  • wwww# - Another pause to leave the "participant ID" blank.
  • wwww7890# - the meeting password. Obviously, swap it for your password.
  • ww - waits for a second while connecting.

I found that I needed to juggle around the amount of waiting (wwww), but this seems to work.

Anyone who dials our number therefore gets routed straight through to the Zoom meeting, which lets them hear the service!


It costs £1 / month to rent the phone number.

There's a further cost of 1p/min for receiving a call and 1.5p/min for making a call. Given that we're technically receiving and making a call at the same time it costs us 2.5p/minute to run. If someone hears a 1 hour service, then we'll pay £1.50 for the privilege. I think that's a price worth paying to ensure people can still be part of our services.

If you want to sign up to Twilio then please do it using this link and we both get $10 of credit.

Give it a go (but not for too long!) by dialling 01480 597123. (Note: I've actually got it set up like Bryony so it'll play last week's sermon unless there's actually a service happening. Call at 10:30am on Sunday for the service, or other times for last week's sermon!)

Please get in touch with me (Mike) if you want any more info!

You can now do this with a "dial out" function instead.

Doing different things depending on the time of day

Want to play a sermon most of the time, but route through to Zoom on Sunday morning? Create a Twilio Function to handle the difference.

Use the Switched On Network guide, then when you get to Step 3 use this code:

exports.handler = function(context, event, callback) {     
    // Time to start routing to Sunday services (eg. 10:20am here)
    let sunday_start_minutes = 20;
    let sunday_start_hour = 10;
    let sunday_start = (sunday_start_hour * 60) + sunday_start_minutes;
    //Time to stop routing to Sunday services (eg. 11:30am here)     
    let sunday_end_minutes = 30;     
    let sunday_end_hour = 11;
    let sunday_end = (sunday_end_hour * 60) + sunday_end_minutes;
    //Current Time     
    let currentDate = new Date();     
    let current_minutes = currentDate.getMinutes();     
    let current_hour = currentDate.getHours();          
    let current_time = (current_hour * 60) + current_minutes;     
    let current_day = currentDate.getDay();          
    let twiml = new Twilio.twiml.VoiceResponse();          
    if (current_day == 0 && current_time > sunday_start && current_time < sunday_end) {
         console.log('Sunday morning triggered');         
        //It's Sunday service time - play a welcome message!'');
        // Zoom phone number          
        let phoneNumber = "+442030512874";
        //Zoom meeting ID          
        let zoom_meeting_id = 'XXXXXXXXX';                    
        //Zoom meeting zoom_password          
        let zoom_password = 'XXXX';                   
        // generate the TwiML to tell Twilio how to forward this call
         let digitsToSend = 'wwww' + zoom_meeting_id + '#wwww#wwww' + zoom_password + '#ww';         
        const dial = twiml.dial();             
            sendDigits: digitsToSend
             }, phoneNumber);
    } else {         
        console.log('Sermon playback triggered');
         //It's not Sunday service time - play a general welcome message!   '');
         //Play a sermon        '');         
        //Say goodbye        '');     
    callback(null, twiml); 

You'll need to put the hour and minute on a Sunday that you want to start transferring to Zoom at the top where it says 'let sunday_start_minutes = 20'; (our service starts at 10:30am, so we start routing to Zoom at 10:20am)

You'll need to do the same for when you want to stop going through to Zoom again (ours is set to 11:30am).

Further down you'll need to put your own Zoom meeting ID and password in instead of the X's. ('let zoom_meeting_id = 'XXXXXXX';)

Set your new Function as the call handler (Step 4) of the Switched On Network guide et voila!

Categories Curate's Blog


Rob Proctor
Friday, 29 May 2020 11:53
St Mary's Burwell, Cambs.
Thank you Mike. This worked perfectly once I realised that the Date functions don't take daylight saving into consideration!!
Added the following line after setting the current time:

let current_time = (current_hour * 60) + current_minutes;
// Use the following line for British Summer Time
current_time = current_time + 60;

Hope that'll help others.
James Mather
Thursday, 14 May 2020 18:52
(Downham Market, other side of the diocese! Archdeacon of H&W suggested getting in touch)
Thank you for the offer, I'd love details, please. I'm not a technophobe, but neither am I an intuitive user of new computer facilities. My email if Thank you very much
Sarah Jones
Monday, 27 April 2020 16:22
Thanks Mike. I came here via Bryony's post and your comment on her page. Nice idea to route it directly to a Zoom meeting. Many thanks, Sarah

Add new comment