Go to main page
Biography, Resume, Projects, Blog

IntelleScript 3 project

IntelleScript 3 (IS3) is the biggest, commercially successfull project I have been working at. The development began in the middle of 2004, and in June 2005 we already had working alpha version. Fully developed and tested project has been commissioned in 2008, but new features are still being implemented.

IS3 is the replacement for older IS2 project, which also was commercially successfull, but had much less features and was a little bit buggy. IS3 software and hardware are now installed all over Russia (several dozens of installations in many cities) and is used by one of the largest russian cellphone network operators Beeline.

In fact, my present job in Forte-IT as Senior Software Engineer is to support and implement this new features (along with other projects).

IS3 is powerful IVR (Interactive Voice Response) hardware-software platform for developing modern telecommunication applications. It is used in call-centers, voice conference applications, SMS processing applications, VoiceXML, CallControlXML and other hi-tech telecommunication applications. The core of IS3 is its message-oriented transport layer model and scripting language.

IS3 Language is a high-level procedural, event-driven language with built-in objects (string, array, map, etc.) and Microsoft's Component Object Model (COM) support. The syntax is a mixture of Pascal, C and Basic. IS3 is rather powerful language. It has numerous built-in routines and COM-objects for data processing including mathematical, string, date/time, file, message-oriented and other services. It also has strong support for message-oriented programming and exception handling.

Below the architecture of IS3 (which is IntelleScript Pro - its production name) is shown:

Copyright (c) Sergey B. Voinov.
IntelleScript 3 project.

You can find more about IS3 on Forte-IT IS3 web page.

IS3 Language Support consists of the following components:
  • Integrated Development Environment - ScriptoGen - used for development, compiling and debugging scripts (described below).
  • Scripts Translator - used to compile scripts in bytecode in order to execute them later in Scripts Engine.
  • Scripts Engine - used to execute scripts (like Java virtual machine).
  • Scripts Dispatcher - used to control scripts execution and dispatch messages between scripts and IS3 Transport Layer.
  • Surrogate Process - used to hold all instances of scripts engines. The main purpose of this module is to protect the rest of the system from possible script failures and third-party COM-objects executed in the same process.

I have designed and implemented all these Language Support modules from scratch (except of Dispatcher and Surrogate, which were originally implemented by my colleague, but after he left Forte-IT I still had to rewrite all his code).

Besides, I also responsible for other IS3 modules: COM-objects, Transport Layer, Process Control module and many others.

Today IS3 brings good profit to our company; it has been installed in several leading Russian telecommunications companies, e.g. Beeline, Interregional Transit Telecom and others.

IS3 Scriptogen

ScriptoGen is a powerful IDE for development, compiling and debugging scripts. You can see the screenshots at the bottom of the page. Main features of ScriptoGen are as follows:
  • Syntax highlighting using different user-selected and user-defined color schemes (see fig. 1, 8).
  • Project tree window – used to display scripts in the project along with all scripts instances and messages in debug mode (see fig. 2).
  • COM-objects window – used to display method descriptions of selected COM-objects identified by ProgId (see fig. 3).
  • Watch window – used to show the value of any selected variable. Scroll bars are provided for displaying complex variables’ values. When choosing a COM-object, all its properties are being displayed (see fig. 4).
  • Logs - build log (warning and error messages at compilation phase) and debug log (messages generated by Scripts Engine) (see fig. 5).
  • Context help for built-in and third-party COM-objects. When you type a '.' after the name of an object variable, you get context help with complete list of methods and properties of this object (see fig. 6).
  • Context watch popup - pointing to a variable's name with mouse cursor in debug mode will result in displaying its current value (see fig. 7).
  • Conditional and unconditional break points. There can be any number of breakpoints in a script. Some of them can be conditional, i.e. they only "break" if a specified condition is met. For example, an "i == 10" condition is suitable for a loop of 100 iterations.
  • Multi-script debugging – allows you to debug several scripts simultaneously.
  • Offline and Online debug modes. In offline mode you debug a script on your local machine, using local COM objects and limited functionality. Online mode is more powerful and allows debugging scripts on a remote telephony server, for example, by making calls to a test number and watching your script's progress in real-time. This mode is particularly useful when debugging very complex voice applications involving numerous voice menus, voice conference resources, etc.
  • Wizards for creating projects and scripts (see fig. 9).
  • Flexible compiler settings including warnings disabling (see fig. 10).

Screenshots (click to enlarge)


Fig. 1. Main window representing active script.

Copyright (c) Sergey B. Voinov.
Screenshots (click to enlarge).

Fig. 2. Project tree window.

Copyright (c) Sergey B. Voinov.
Screenshots (click to enlarge).

Fig. 3. COM objects window.

Copyright (c) Sergey B. Voinov.
Screenshots (click to enlarge).

Fig. 4. Watch window.

Copyright (c) Sergey B. Voinov.
Screenshots (click to enlarge).

Fig. 5. Debug log window.

Copyright (c) Sergey B. Voinov.
Screenshots (click to enlarge).

Fig. 6. Context help.

Copyright (c) Sergey B. Voinov.
Screenshots (click to enlarge).

Fig. 7. Context watch popup.

Copyright (c) Sergey B. Voinov.
Screenshots (click to enlarge).

Fig. 8. Source code highlighting settings.

Copyright (c) Sergey B. Voinov.
Screenshots (click to enlarge).

Fig. 9. "New file" window with wizard's icon.

Copyright (c) Sergey B. Voinov.
Screenshots (click to enlarge).

Fig. 10. Compiler settings.

Copyright (c) Sergey B. Voinov.
Screenshots (click to enlarge).