Vasic - The Product of Computer Telephony Engine
What it does:
Vasic is a telephony engine. You can consider it something similar to
web server or database server. Web server will provide interactive media
across the IP network using a number of HTML documents and to user's web
brower. If you update the HTML document, then the next click (and/or refresh!)
will
bring up the new revised web page on the user's browser. Similar to this
concept, Vasic telephony engine provides interactive telephony service
using our flexible and powerful scripting language (.VS) and to user's
telephone (caller). If you update the .vs script, the very next caller
will be serviced with the new script. While the web server provides the
information via vast IP network, Vasic uses telephone lines (both PSTN
and VoIP) and each connection to Vasic is handled with exceptional stability
and performance. So as you would need leased line or IP network connection
for your web server, you need to install telephone lines (or VoIP infrastructure)
to use Vasic engine.
What do I need in a Vasic system:
The system specification and requirement will vary depending on the load
and the capacity you want to have with Vasic engine.
What it does not do:
Vasic engine need to be programmed for customized applications. You would
need some sort of programming knowledge in order to use Vasic to its fullest
potential.
How it runs:
There are three ways of executing a script with Vasic.
1. Incoming call : When there is an incoming call signal from one of the telephone lines connected to the system, the associated telephony hardware (BRI, PRI, E1/T1, analogue) will trigger off an event in Vasic. It will activate an incoming call signal with the telephone number associated with the line. This is either called DDI or DID. In another words, it is the telephone number dialed in by a caller. When Vasic detects that there is an incoming call with DID, let's say 3452344, then Vasic will look for corresponding script file (3452344.vs) in a directory configured in vasic.cfg (it is usually ./Scripts/). Because Vasic script files (.vs) are normal text files, it is easy to open and save. Once you update the file, then Vasic will immediately use the new file. Therefore, you do not need to restart the Vasic engine or the ohter scripts (services) will not be effected while modifing a script file.
If the script file with the DDI does not exists in the designated directory, then Vasic will look for one more file before disconnecting the call. All telephone lines in Vasic system are labeled with NET and TS. NET represents a group of TS (timeslot = line), usually associated with digital interfaces such as E1/T1 or PRI. But in order to uniform labeling, Vasic also labels BRI and analogue lines within NET, followed by two digit ID number. So, first 32 possible telephone line will be in NET00 and the next 32 will be in NET01, and so on. The same convention is used for executing the same script in a NET (no matter what number DDI is received) when there is no associated script file. In short, if 3452344.vs does not exist, then Vasic will look for 'defaultxx.vs' (where xx is the NET ID number) in the same directory.
2. DIALOUT command : While running a script, Vasic can make one or more out-going calls using a different timeslot (= line). You can specify to run the same or different scripts for every out-going calls. You can connect all outgoing calls in to a single conference or play different messages, for example. Please refer to the Vasic Programmer's manual for more information.
3. Socket command : What if you would like Vasic to start a script and make an out-going call all by itself? The solution Vasic provides in this particular application is done via a small socket server running inside the Vasic engine. Once you configure vasic.cfg for correct IP addresses and Valid IPs (firewall protection), you can send a socket-based command to Vasic and 'wake up' one or more out-going calls. This kind of technique is used in preditive dialers for all center. Again, you can run as many different scripts as you like for each out-dialing and the syntax used here is similar to the one used in DIALOUT command.
Vasic engine provides unlimited possibilities in value-added services and call control applications with the three execution techniques which are mentioned above.
Scripts:
The standard script structure has three minimum components.
Init( )
AtExit( )
Main( )
So, if you would like to just play a file after answering a call, here
is an
example.
---------------------------------------
int Init( )
{
return 1;
}
int AtExit( )
{
return 2;
}
int Main( )
{
AllocateVoiceResource();
Play(d:\voice\hello.wav);
}
-----------------------------------------
If you save this file as 3452344.vs, then it will only run when 3452344
is called. If you name this file as default00.vs, then any call in NET00,
without having individually designated script file, will run this script
file. If you name this file 1000.vs and then issue a socket command 'dial
12 025254444 1000 22', then Vasic will dial the telephone number 025254444
using the line number 12 and the script 1000.vs. Vasic will play the file
once the call is answered by the called party. The last number '22' is
extra parameter for further option.
Please refer to the Vasic Programmer's manual for more detail information.
Features:
These are the built-in functions in Vasic. You can development
more functions as an external program and interface with Vasic using PIPE,
SOCKET or HTTP commands.
AbortPlay | AbortRecord | AllocateVoiceResource |
CallCause | CallnamedPipe | CallSocket |
CharlnStr | CloseFile | Date |
DeleteFile | DialOut | Disconnect |
EndBlock | FindFiles | FloatToChar |
FloatToInt | FloatToStr | FreeVoiceResource |
GetCallFineTime | GetCallTime | GetCLI |
GetDDI | GetDTMF | GetFirstFileName |
GetLastFileName | GetIntGlobal | GetParam |
GetStrGlobal | GruntDetect | IntToChar |
IntToStr | IsFileExist | IsPlaying |
IsRecording | JoinConf | LeaveConf |
LineStatus | Listen | Lock |
MoveFile | OpenFile | Play |
PlayDTMF | PlayTone | ReadFile |
Record | Rnd | SetIntGlobal |
SetStrGlobal | SetTraceLevel | Sleep |
SQLCommandAdd | SQLCommandEXE |
SQLCommandStart |
SQLConnect | SQLDisconnect | SQLExeDirect |
SQLFetch | SQLGetData | StartBlock |
StartPlay | StartRecord | StrCmp |
StrGetAt | StrLeft | StrLen |
StrParse | StrRight | StrSub |
StrToChar | StrToFloat | StrToInt |
Time | Timeslot | Unlock |
WriteFile | WriteToLog | GetHTMLPages |
SendFax | ReceiveFAX | AllocateFAXResource |
FreeFAXResource |