I just made the PhoneBlogger 0.2 release available from the SourceForge project site. The biggest highlight of the new release is that you can now run PhoneBlogger on a different server than where your weblog is hosted. This means that someone can now run PhoneBlogger as a hosted web service for multiple bloggers.
PhoneBlogger has two main components
- Python CGI scripts
In the 0.1 release, you could host the static files on a server other than where your weblog was hosted. The VXML files access the configuration info for everything else from a local XML file. This XML configuration file can contain info on as many blogs as you want. The configuration file does not include usernames or passwords. That info is collected during each phone call.
Therefore, one person could configure PB to post to more than one of their blogs. Also, you could configure PB to let more than one person post to more than one blog. A limitation of the 0.1 release, though, was that the Python CGI scripts had to be on the same server as the weblogs. I used an operating system file copy command to place the incoming WAV file directly into a sub-directory of the weblog before converting it to an MP3.
In the new release, I added support for the newMediaObject XML-RPC call. That allows PB to upload the recorded audio file to your weblog over HTTP. If you do host your weblog on the same server as the CGI scripts, though, you will want to configure PB to continue to use the file copy command for performance reasons.
So, the flow of a phone call to PhoneBlogger now goes something like this
- The blogger/caller calls a phone number at a hosted VoiceXML Server provider
- The VoiceXML Server looks up the URL of the VoiceXML application and begins to run it
- The VoiceXML app prompts the caller for the blog name, their user name, and their password
- The VoiceXML app then records the audio the blogger wants to blog
- The VoiceXML app uses an HTTP GET to send the recorded audio to a Python CGI script
- The Python CGI script converts the audio to an MP3 file and returns a path identifier for the file
- The Voice XML app informs the blogger/caller of this success and then uses another HTTP GET to send the blog name, the username, the password, and the path identifier of the MP3 file to another Python CGI script
- The second Python CGI script makes an XML-RPC call to the weblog to upload the MP3 file
- The Python CGI script then uses a different XML-RPC call to post a new entry to the blog that includes a link to the MP3 file
The communication paths and protocols are:
|Person||VoiceXML app||telephone call (could be PSTN, VoIP, or SIP-based)|
|VoiceXML app||Python CGI Scripts||HTTP|
|Python CGI Scripts||Weblog||XML-RPC over HTTP|
Finally, I’ve decided to release PhoneBlogger 0.2 under the Apache Software License, as well as the GPL. Pick the license you like best.