AsteriCal

AsteriCal is a script which will poll a http-hosted iCal feed (such as Google Calendar), and send a reminder call via Asterisk when an event is drawing near. It is configured by default not to place a reminder call if the iCal feed indicates that you're currently busy, and Asterisk will queue reminder calls

You can learn more about the script by downloading or  installing it on your Asterisk server. Here's how on Debian and Ubuntu.

First, we install the python dependancies and the script itself:

sudo -s
apt-get install python-vobject python-tz
cd /usr/local/bin
wget http://www.maniacmartin.com/files/asterical
chmod +x asterical

Now, open the asterical file with your favourite text editor.
Set your timezone and how many mins before your event you want  the reminder. Remember to set this higher if your crontab frequency is going to be low, or you may be unlucky if cron calls at the wrong times.

Also specify your iCal URL - I have only tested this with Google Calendar. For this you need the Private iCal URL that doesn't require any authentication. Finally, edit ASTERISK_CALL to suit your needs, most importantly, set Channel: to the Asterisk line which you wish to recieve the notifications.

Next, we need to add a context in Asterisk's /etc/asterisk/extensions.conf that will have the calls. I have:

[astercal]
exten => s,1,Wait,1
exten => s,n,Festival(${Message})

Obviously, you need Asterisk and Festival already set up and talking to each other.
Now all thats left is a crontab entry. Its important to run the script as the asterisk user. One way is to make a file /etc/cron.d/astercal like so:

*/5 * * * * asterisk /usr/local/asterical