And that new release

I've been looking through the release notes for Prophecy 7.0 GA, and I'm delighted to see that many of my requests and bug reports have been officially solved by this release.

Now for a few tests... let's see if I can get some of those errant transfers to work...

Passing Objects between Scripts

A while back I was puzzled about the correct way to pass objects between scripts; even though some of the control objects I'd like to send aren't available, such as the conference object, it'd still be nice to send objects back and forth.

I wrote to Voxeo about it, and got this reply.

You can pass an Object between scripts via the <send> element by converting your object into a string beforehand:

str = JSON.stringify(object);


and on the receiving end, simply convert this back into an object:

obj = JSON.eval(str);

As far as I can tell this sends a copy. What I was hoping to send was a reference to a single object, which would allow different scripts to update the same underlying object. That'd be handy to allow instance to keep track of each other, or let multiple instances share and modify common information. The other way to share and track between instances is via , which is quite awkward.

I'll test this and see what happens, but unless I blog otherwise, this is a copy operation.

Disposable Phone Number project

Disposable Phone Numbers™ is an open-source project that guards your privacy. DPN allows you to create and distribute unique phone numbers, which you can then control — activate, deactivate, or route in funny ways (direct to voicemail, for example, or even a "fake" voicemail. You can also use DPN to track who calls what disposable number.

This project is available as open source.

Documentation:

And no doubt this will crop up elsewhere.

Oh, and to how it works? In the absence of "real" disposable phone numbers, which will be easy enough to do when all phone numbers follow the "sip:foo@example.com" format, the current DPN uses disposable extension numbers.

New version of content management system

I've updated the web site to the latest version of Drupal.

The new version lets me post "code" style comments without having to "escape" them as &lt;, etc. However, that means any older entries will look funny... it's still worth the trouble.

Another issue: while this newer version of the web site looks pretty good on Firefox and Linux, it still has an annoyingly narrow central column when viewed with Firefox on Widows. If anyone has any ideas, please let me know what's going on!

Getting TTS to speak each digit

I had a bit of trouble getting TTS to say each digit individually.

That is, if I use

<say-as intrepret-as="vxml:digits">1234</say-as>

Then what I hear is

twelve thirty-four

instead of "one two three four," as I might expect.

Voxeo (in the person of Matt Henry) came to the rescue.

The correct method is:

<say-as interpret-as="number" format="digit">1234</say-as>.

Unfortunately, this isn't really documented. However, there is a list of all interpret-as attributes and their formats here.The official W3C spec for SSML does not specify the formats for different interpret-as values.

How "Stop Rude Calls" Works

Stop Rude Calls (see previous entry) uses a few simple tests:

  • Is the caller speaking at all? Machines tend to give a few moments before they kick in.
  • Is the caller speaking too long? Machines tend to deliver their spiel and talk right over you.
  • Does the caller respond to yes/no questions? Machines don't — well, that is, the ones that I didn't write...

I then assign the call a running score. The caller gets positive points for proper response and get negative points for machine-like responses. When the call hits a threshold, positive or negative, it's over.

New project: Stop Rude Calls

Here's a new project available from SourceForge: Stop Rude Calls, which attempts to distinguish between a human and a non-human caller. If the caller is human, the call goes through; if the call is from a machine, we can send it to voice mail.

This is a pre-alpha for testing, and if you call the demo line, you will just hear what happens and then be dumped at the end of the call instead of routed onwards. Any developer could substitute a "transfer" element for one of my "disconnect" elements and have a working system, but I have some improvements in mind; hence the pre-alpha status.

Suggestions and participation in the project are both welcome.

* Demo number: +1 312 957 6547

* Sourceforge: http://sourceforge.net/projects/stoprudecalls/

Demo number is courtesy of Voxeo's BusinessVoIP. Really, folks, if you haven't tried BusinessVoIP, you certainly should...

Solution to the Mysterious 22 s delay

Voxoe reported the origin of the mysterious 22s delay that I was experiencing with semantic errors in VoiceXML scripts. If I made one, P2006 would delay for 22 s before responding, which is a good long time.

Voxeo discovered the problem: misconfigured email servers. P2006 attempts to send logs via email when they have semantic errors, and if the attempt to mail the log fails -- as it would in my system, since it was not configured for a valid SMTP server -- then VoiceXML would delay.

Solutions: (1) Voxeo put a fix into upcoming builds to avoid delays due to email problems. (2) It's possible to deactivate outbound mailing of log files by modifying the config.xml:

&lt;item name="IsRomeoRouter" type="int"&gt;
&lt;item name="MailSendScript"&gt;
&lt;item name="MailTempFTP"&gt;
&lt;item name="MailToSenderDefault"&gt;
&lt;item name="MailToSMTP"&gt;

I've configured my config correctly instead of turning it off — after I made Voxeo promise not to keep a "Moshe's Silliest Bloopers" based on my log files.

Business VoIP: Multiple Applications Possible?

There's a hidden feature in Voxeo's Business VoIP that lets you have multiple phone numbers terminate at the same box and accomodate multiple applications.

Simply put, make the "Route ID" the same as the phone number. That is, if the incoming number is NXX-NXX-XXXX, make the Route ID "+1NXXNXXXXXX". (In other words, whatever appears between the "sip:" and the "@sip" in the incoming setup messages as shown in the log.)

I suspect this means that it's possible to terminate multiple applications at a single box. The problem is that Business VoIP to pickd where to route based on login name; and since each application has its own login name, if you dial in and there's no one logged in under that name, the call will go to oblivion.

Edit: I've done some testing, and so far I have not found a way to perform multiple terminations at a single box.

Business VOIP: Those Bridged Connections

If you're trying to set up your Business VoIP account from Voxeo, and the calls don't ever make it to the application, here's something to try: on the Voxeo Management console for VoIP, check the "Provider Requires Bridged Connections" checkbox.

As far as I can tell so far, you can't direct your call to a particular app; it's the default app or nothing.

Actually, when I try to direct the call to the Voxeo's default app, it fails, and I suspect that's because the platform attempts and fails to hand off the call to my app. In the meantime, until I've done more research, just make your app the default app.

Syndicate content