Tool Hangs Up on High AppDev Costs for Voice

A small software firm in the farthest corner of the South Pacific is going to the farthest reaches to better enable devs to build and deploy a wide array of voice-driven web services and integration projects. Tired of the high cost and lock-in of proprietary vendor tools, Australia's Skunkworks has crafted a rich-voice appdev environment in Perl.

Tags:



A small software firm in the farthest corner of the South Pacific is going to the farthest reaches to better enable devs to build and deploy a wide array of voice-driven web services and integration projects. Tired of the high-cost and lock-in of proprietary vendor tools, Australia's Skunkworks has crafted a rich voice appdev environment in Perl.



SkunkWorks' Whirlwind appdev engine and toolkit to enable developers to leverage VoiceXML and SALT (Speech Application Language Tags) without knowing much about either. As a result, devs can build everything telco-related from voicemail play/record, fax, conference, text to speech, speech recognition, and even complex voice protocol conversions.



Based on the Perl, the Open Source dynamic scripting language, Whirlwind supports all major providers of SS7 and VoIP solutions. Whirlwind also includes S.100 and VoiceXML interfaces. In addition, CPAN.org provides many plug-in modules for Perl to connect to third party and legacy telco systems, including SMPP for SMS, DBI for database and LWP for web connectivity.



Thanks to Perl, SkunkWorks engineers claim, Whirlwind's telco-optimized "Telco Perl" dev environment can provide devs far greater flexibility and control of applications, compared to direct use of Speech Application Language Tags (SALT) and VoiceXML. Their reasoning is simple: SALT and VoiceXML are standards ratified by forums to extend the use of HTML and XML for speech recognition services. Perl, on the other hand, works with HTML and XML and can be readily embedded into other environments.



Telco Perl, which executes 100% native Perl 5.8.0 scripts, sports these telco-optimized features:

  • Telephony functions (answer, switch, play, record, set up conference, send fax, voicemail to email, fax to email, text-to-speech, etc.)
  • Caching of scripts
  • Intelligent distributed database connectivity
  • Call accounting
  • Fail-over, high availability architecture
  • Inter application communications
  • Purpose designed for high density
  • Application hierarchy
  • Multi-tasking
  • Just-in-time compiling
  • Real-time application provisioning
  • Multi-threading
  • Smart debugging
  • .



    Telco Perl launch has already attracted positive attention from telecom resellers and systems integrators, according to SkunkWorks' execs. "Most telephony products use proprietary languages so when customers want new features they are caught in a continuous cycle of time delays and labor costs," says SkunkWorks sales director Bill Oborn. "Using Telco Perl, you can leverage from millions of Perl developers and thousands of existing Perl modules that you can freely download. Also there's no need to train staff in proprietary languages, just grab a Perl user off the street. The savings in time and money are enormous."



    One Whirlwind distributor in Europe used Telco Perl to tie in a MySQL database into a telco messaging application. "[Our] customer said he needed the messaging service to communicate with MySQL rather than PostgreSQL," Oborn said. "He downloaded the MySQL Perl module from he Internet, and within two hours had it running and tested."



    Telco Perl scripts are 100% native Perl enhanced by the Whirlwind engine to allow total control over media resources. In specific, Telco Perl provides a Perl API and uses 100% native Perl scripts to connect a variety of legacy and Open Source databases, telephone network interfaces, billing systems and other applications. Whirlwind provides an abstraction of the low-level components, such as hardware and media resources, allowing developers to focus on constructing the target application.



    Inside Telco Perl at Work -- Code Samples

    Current Perl developers will find Telco Perl scripting simple and familiar, SkunkWorks says. The only difference, SkunkWorks says, is that all Telco Perl commands start with ``ww'' to indicate they are Whirlwind enabled.



    As an example, here is a simple TelcoPerl script for handling an incoming call by answering it, playing a simple message and then hanging up.




    eval {
    wwTrace('on');
    wwTraceFile('aph.pl.trace');
    };

    # get the necessary resources, fail with busy tone if no resources
    exit if (wwResourceGet("vox", "player") < 0);

    # let the call ring for 3 seconds then answer it
    wwStartRinging();
    sleep(3);
    wwAnswerCall();

    # play some audio
    wwPlay("common/welcome");
    wwPlay("aph/terminate");

    # hangup the call
    exit;

    as

    wwANSWER();
    wwPLAY("welcome");

    All Telco Perl commands start with ``ww'' to indicate they are Whirlwind enabled.

    eval {
    wwTrace('on');
    wwTraceFile('mytrace.txt');
    };
    $hangup = sub {
    if($child){
    wwSendMsg($child, "goodbye", 0);
    }
    exit;
    };
    $goodbye = sub {
    exit;
    };
    wwSetHandler($hangup, "hangup");
    wwSetHandler($goodbye, "goodbye");
    $child = wwStartService("demo", "out", "81234567", "81009000", "telstra", 1);
    if($child <= 0){
    exit;
    }
    while(1){
    $msg = wwRecvMsg();
    if($msg eq "ringing") {
    wwGroupConnect($child);
    }
    if($msg eq "connected"){
    sleep(60);
    wwSendMsg("goodbye", $child);
    exit;
    }
    if($msg eq "busy" || $msg eq "fail"){
    exit;
    }
    }





    back

    Share
    Go