Crucial Thought Rss

Featured Posts

Chris selected as K12OnlineConference keynote speaker Each year the K12OnlineConference provides tremendous professional development for free, and entirely online. This year, they have selected me as one of their keynote speakers. I am thrilled to have been chosen and look forward to participating in the conversation. Read the full post announcing all the keynote speakers here.

Read more

Two quick links on Cognitive Load Theory I've been fielding lots of questions lately about Cognitive Load Theory. Here are two quick links that may be useful. First is an article talking about the practical implications of CLT on the design of learning. The second are some "recent" (as of 2003) developments regarding CLT. Happy reading! Update: I clarified the second...

Read more

Practical advice on kids and Android app development After hearing about my students' success developing an Android app, I've gotten several emails asking for more details as to how I practically worked with my kids. Here are some pointers that I offered to the first person that emailed me, perhaps they are of some use to you. Please note that your mileage may vary. It's ok to not be...

Read more

Publishing an App Inventor app to the Android Market As I mentioned earlier, my students and I published an Android app to the Android Market. See those links for more information on the background. This post is decidedly technical. First, once we finished the coding process, we packaged the app for to download to the computer. This is an option in App Inventor. This downloaded an .apk file....

Read more

Designing and publishing an Android app with kids This post is designed to provide some context around how/why we decided to build this app. The more technical details of the code and how we published it will come in a future post. My students and I recently completed and published an Android app, and here's how we did it. First, the genesis for this goes back to a question I asked...

Read more

Schedule Google Voice calls in Google Calendar with GVCallScheduler

Category : General

UPDATE: I just tried this again and it works fine (as of November 9, 2011). One change from the instructions below. If you are getting the Hello World message, you likely added a new application using Google App Engine Launcher (a program you install in the instructions). To fix this, simply click Add an Existing Application and browse to where you unzipped and edited the files. Then deploy. Happy calling!

I often find myself wishing I could schedule phone calls using my Google Voice account. If this were possible, I would not have to worry about being at the particular phone that has the Caller ID my caller anticipates. For example, let’s say I want to schedule a call with my dissertation advisor/mentor. In his phone, the number that is saved for me is my Google Voice number. This is partly so that I can easily record calls with him since there is so much dense information being discussed. He has agreed to allow me to do that any time, and Google Voice has a pleasant warning that call recording has begun.

Since he is a busy professor, we often schedule calls around his flexibility. Let’s say we wanted to schedule a call for a certain time one afternoon. This means that I have to remember, usually with some sort of calendar reminder. This is easily accomplished by using the reminders in Google Calendar. But what if Google Calendar could dial the number for me, too? That would make things a bit easier and my life a bit more productive.

Enter GVCallScheduler. GVCallScheduler allows you to do just that. You enter a certain code with the number to be called, and it initiates the Google Voice call for you at the scheduled time. So now instead of me having to manually dial my professor’s number at the designated time, the call happens automatically. Easy!

Here is how to install GVCallScheduler:

(NB: All links open in a new window to make it easier to work on it while not losing this page)

1. Sign up for an account with Google App Engine. This should be as easy as entering your existing Google account password.

2. Create a new application by clicking create an application.

3. Name your application something memorable, and write down the name.

4. Download the Google App Engine SDK (Software Developer Kit) for Python. Make sure you download the Python one, not Java. Download whichever one works for your computer, be it Mac OS X, Windows, or Linux. The rest of this post uses Mac OS X as an example but the instructions do not differ for either other OS. You need to install the software also. You’ll need this later on.

5. Download the latest GVCallScheduler code.

6. Unzip the zip file. I unzipped it into a folder on my desktop to make it easy.

7. Open the folder and edit the file called config. The file will appear not to have a file extension. That’s ok, we need it that way. On Mac OS X I used Textedit to edit it. On Windows, I used Notepad or Notepad ++. Any of the above are fine, just make sure it does not append a file extension when you finish editing. Here are two screenshots to help you see a better explanation and an exemplar. (click to make them larger)

8. Edit the file app.yaml making sure to enter the exact name of your new app. This is what I told you to write down in step 3. Enter only the name, not the rest (i.e. if you named it coolcalls, enter just that. DO NOT ENTER

9. Minimize your web browser. Open the Google App Engine SDK. You installed this in step 4. Your screen will look something like this.

10. Click File -> New Application. Name the app the same name you called it earlier when you created it online. Click Choose to navigate to the folder you unzipped in step 6.

11. Click Deploy on the Google App Engine SDK main screen. You should see a terminal window (or cmd window) running commands. This takes a minute or so. Be patient.

12. Visit your app page by typing in – you will need to authorize it once.

13. Refresh your app page ( and it should say “GVScheduler is up and running – OK…”

Making it work

Now that you have it set up, we need to walk through how to schedule calls.

Simply add a calendar event at whatever time you want the call to originate. Add this phrase to either the title or description.


In this format GVCall=18035551212

You will notice my screenshot doesn’t use that, but it’s a good idea.

So that’s how to schedule calls with GVCallScheduler! Good luck. If something doesn’t work, read the directions again. If it does work, let me know in the comments.

Phone booth image credit Mike Cattrell.

Comments (24)

Finally, a reason to read your blog! Good work. Thanks.

I’ve linked this page to because I asked a question on this very topic just yesterday.

Your solution was quite easy! The only problem was that I got the “Hello World” prompt when I visited my site’s URL, and then I realized that I had created a sub-directory (with the name of my app) in the directory where I navigated to in step 10.

Inside that new directory was an app.yaml file that was responsible for giving me the wrong results.
I made sure that it navigated to the correct folder and deployed, and then had no problems.

Tyler, I have the same problem. How did you fix the sub-directory problem?

Got it working. Had a lot of trouble

Where did I go wrong? This is what happens when I click DEPLOY
*** Running with the following flags:
–no_cookies – –passin update
2010-05-05 20:30:27.272 GoogleAppEngineLauncher[2765] *** NSTask: Task create for path /applications/python 3.1 failed: 13, “Permission denied”.
If deploy fails you might need to ‘rollback’ manually.
The “Make Symlinks…” menu option can help with command-line work.
*** has finished with exit code 5 ***

Please help…Thanx

This isn’t working. I get then when i try to deploy:

Initiating update.
2010-06-29 11:07:01,822 WARNING ssl module not found.
Without the ssl module, the identity of the remote host cannot be verified, and
connections may NOT be secure. To fix this, please install the ssl module from .
To learn more, see .

I know nothing about coding, so those links didn’t help. This would be a very useful function. Please help!

I am having trouble getting this to work. When I go to my site, it just says Hello World! Any ideas? Someone please! help me. I want to have this capability so bad…

In the file in the folder that I downloaded, this statement is causing the famous “Hello World!” to display. The question is: how should it read if the name of the application is abc?

class MainHandler(webapp.RequestHandler):
def get(self):
self.response.out.write(‘Hello World!’)

If you are getting the “Hello World!” program instead of the GVCallScheduler:

This is what you have to do is:

1. Open the Google App Engine Launcher
2. Select the program that you’re trying to install.
3. Remove it by going to File>Remove project
4. Click OK or YES
5. Rename the folder that you downloaded that has the GVCallScheduler in it to the name that you choose in step three above
6. Go back to the Google App Engine Launcher
7. Create a New Application by going to File>Create New Application
8. In the parent directory, DO NOT PUT THE NAME OF THE FOLDER, instead put the folder that your folder is in. For example, if you have it on your desktop, then click on browse and select “desktop.” It should be the very top selection.
Don’t forget to put your programs name in the Application Name text box.
9. Click Create
10. Select the application
11. Click Update

That should work.


Thanks so much for taking the time to comment and help folks fix that error. That was very helpful!


After getting the “Hello World” fixed, and trying it, it did not work. I went over everything again and it still does not work.

Now I have it working. The reason why it wasn’t working before is because I had the config file listing my Google Voice number as the forwarding number. It should be your actual cell phone number or home phone number listed there. After listing my cell phone number, it worked.

You’re welcome Chris

@ Rose and Byron,

Have the two of you figured out how to get this program to run for you? If not, are you still here? I believe that I will be able to help you if you are.

Thanks for the instructions. It worked well for me. I have a related question.

When you schedule a call, at the scheduled time, your phone gets a call from your google voice account and after you pick it up, the other side phone will ring. There is no indication who the other side is (unless of course you remember your schedule or you identify the person on the other side after the call is established.) Is there any solution to this problem?

To summarize, this is what I am interested in:
To identify the number/person that would be on the other side of the call before he/she picks up the phone.

Any inputs will be appreciated.


Hi RS,

The way I handle this is to set a reminder for one minute prior to the call time with SMS notification that just says: Call coming to Joe.


Thanks Chris. That seems like a nice solution.

Wow, for the life of me I can’t get this figured out. I have made all the changes and checked them 10 times and nothing. So I started completely over from the downloads and still nothing. I made sure my email included ‘’, I tried my google phone # and regular cell number, I tried putting a ‘1’ in front of my number. I am not sure there is any other configuration I could possibly try. I also tried @Steven’s 11 steps with no avail.

Need help.




First of all, before I ask you to do the big task, have you downloaded the python language to your computer? I can’t remember where I got the download, but you can google “download python” and get it. This was mentioned in step 4 of the website. It is in bold font. There was no link, so it is possible that you missed it. I did at first. Python is the software that you have to download. If that does not work, let us know.


Yes, deploying the app was done on the newest GoogleAppEngineLauncher for Python as mentioned in Step 4. I redid everything again and still “Hello World.”

So now what is the ‘big task’?


If are are getting the “Hello World” then you are not doing the 11 steps that I mentioned before correctly. When I was getting the “Hello World,” I was trying to enter the name of the folder in the “Parent Directory.” I had the folder on the desktop, so when I clicked “Desktop” from the Browse button by the Parent Directory, and ran it, I no longer got the “Hello World.”

From you last e-mail, I gather that receiving the “Hello World” was the problem that you are getting. If that is correct, put your download the GVCallScheduler file to your desktop. In the Google App Engine SDK, in the “Parent Directory” click the browse button and select “Desktop.” Then try to run it. If that does not work, then do the following.

The big task that I was going to get you to do was to list, step by step, every click, every keystroke, every download, everything that you did to get where you are. Be sure to mention where you put the folder, for example, I put my folder on my desktop. After doing this, it would let me know what you missed. For purposes of privacy, list your Google Voice number as 123-456-7890 and your cell phone or home phone as 987-654-3210 and your e-mail address as Be sure also to indicate what your replaced in the config files and what you replaced them with. Please also number your steps so I can refer to the step where you need to correct.

Alright, got it! The “Parent Directory” was throwing me off. Left it as “Desktop” and that took care of it.

Thanks @Steven!

Hate to say it to you but this doesn’t work… I tried downloading the Python version of the google SDK onto my Linux system which has python installed, and even after changing the directory in the terminal to the SDK directory, everytime I try to run a specific py file that it requires me to run to update the app, it gives me a “command not found” error.

When I try to download the Google App Engine SDK for Python it won’t download correctly and I keep getting an error log, which basically says “WindowsError: [Error 3] The system cannot find the path specified: ‘H:\\/Google’

WHat do I do about this?

Also, is my Google voice number the same as my cell phone number?

Is Google voice # the same as my cell #?

What does this error msg mean:
WindowsError: [Error 3] The system cannot find the path specified: ‘H:\\/Google’

I keep getting it every time I try to run Google App Eng SDK for Python. I can’t get it to run.