[159] in comp.os.os2.announce archive

home help back first fref pref prev next nref lref last post

NEW OS/2 DEVELOPMENT TOOL: Multi-Voice and Multi-Fax C Libraries

daemon@ATHENA.MIT.EDU (ggagnon@iti-logiciel.com)
Tue Sep 12 01:08:14 1995

To: os2ann.DISCUSS@bloom-picayune.MIT.EDU
Date: Tue, 12 Sep 1995 01:16:40 GMT
From: ggagnon@iti-logiciel.com
Reply-To: ggagnon@iti-logiciel.com

Submitted by:   Gilles Gagnon (ggagnon@iti-logiciel.com)
Source:         Gilles Gagnon (ggagnon@iti-logiciel.com)
Date received:  1995 September 11
Date posted:    1995 September 11
-------------------------------------------------------------------------------
Montreal, September 1995: ITI Logiciel (ITI Software) announce the release of
the OS/2 version of their Multi-Voice and Multi-Fax programmer's toolkit.

Multi-Voice and Multi-Fax can be used to create voice processing application
such as: voice mail, automated attendant, fax-on-demand, fax broadcasting, 
interactive voice response.  As a high level 'C' toolkit, it is as easy to use
as any script language, but offers speed and flexibility of the 'C' language.

Here's description of the two products.

#####

Multi-Voice Version 4.0

ITI Software proudly presents MULTI-VOICE Version 4.0, the complete set of 
tools to write multi-line voice applications on OS/2 for most of the voice 
processing boards available today.

Multi-Voice Product Description

MULTI-VOICE gives you a very high level C interface to the voice board 
features.  With a single function call, you can play or record a voice 
file. You can play date and time, numbers, spell strings.  Your Multi-Voice 
programs can detect the callers Touch-Tones or rotary pulses, even voice 
recognition is available in some versions.  Never before has it been easier 
to integrate a multi-line telephone interface to your C programs.

MULTI-VOICE has its own multi-tasking interface. You can run the same task on 
all lines in the system or different tasks on certain lines.  For most 
applications, the multi-tasking is completely transparent and there is no 
need for the programmer to have multi-tasking programming experience.

MULTI-VOICE brings the full power of voice processing boards to your finger 
tips with the speed and ease of use of Borland's C/C++ 2.0 for OS/2.

Multi-Voice Example Programs

A Multi-User Multi-Line Telephone Answering program is provided to give 
examples of how to call most functions in the library.  The source code is 
included, so this program can be modified to suit your own needs.   
We also provide all the pre-recorded prompts used by this program.  Many 
other example programs are also provided with makefiles for all supported
compilers.

Voice Boards Supported

Dialogic D4xx, D12xx, AMX, VRxxx
Rhetorex RDSPxxxx
NewVoice NVx00
Bicom xLS
Linkon's FC3000 & FC4000
Pika's V12 and InLine Series
Talking Technology's Power Line II

Portability

The programs written with Multi-Voice for any voice board can be ported without 
any modifications for use with other voice boards.  ITI Software offers C
libraries for all the supported boards, which reduces the programmer's work to
simply recompiling programs for the appropriate hardware.  And we're always
working to implement new manufacturer's products.

System Requirements

IBM PC or compatible running DOS 3.3 or higher (6.2 recommended)
Any of the supported Voice Processing boards
C/C++ Compiler: Borland's V2.0 for OS/2

Talking Clock Sample Program

/*
** This example program shows how easy and clear it is to program
** Multi-Line Voice Response applications using MULTI-VOICE Version 4.0.
** 
** The program plays the current date and time on all lines available in
** the system.  It answers the phone, plays a little introduction message,
** asks the user to press 1 for FRENCH, 2 for ENGLISH or 3 for SPANISH
** and it plays the  date and time in the selected language, in the format
** Week Day, Month Day, Hour and Minutes.
*/

#include "stdio.h"
#include "MV_Util.h"
#include "MultiVox.h"

#define TIMEOUT     10
#define RETRY       3
#define PROMPT_DIR  "PROMPTS"

void far LineHandler ( )
{
  char           answer;
  MVU_LANGUAGE   language;
  MVU_DATE       date;
  MVU_DATE_FIELD date_field;

  MV_StartLH ( );

  while (MV_Running)
  {
    MV_Answer (1);           /* answer phone after 1 ring */

    if (MV_Result ( ) == MV_SUCCESS)
    {
      MV_Play ("intro.v", MV_AbortOnDtmf);

      MVU_ReadMenu (PROMPT_DIR, "language.v", "err.v", & answer,
                    "123", TIMEOUT, RETRY);

      if (MV_Result ( ) == MV_SUCCESS)
      {
        switch (answer)
        {
          case '1' : language = MVU_French;  break;
          case '2' : language = MVU_English; break;
          case '3' : language = MVU_Spanish; break;
        }

        MVU_GetDateTime (date);

        date_field = MVU_WDAY | MVU_MDAY | MVU_HOUR | MVU_MIN;
        MVU_PlayDate (PROMPT_DIR, date, date_field, 
                         MV_NoAbortOnDtmf, language);
        MV_Play ("goodbye.v", MV_AbortOnDtmf);
      }
    }

    MV_OnHook ( );
  }

  MV_StopLH ( );
}


void main (void)
{
  MV_AllLineHandlers = LineHandler;

  if (MV_Start ( ) == MV_SUCCESS)
  {
    MV_WaitEscape ( );    /* Waits until the ESCAPE key is pressed */
    MV_Stop ( );
  }
  else
    printf ("Initialization error");
}

Multi-Voice Version 4.0 Function List

Line Control Functions
MV_Answer                  MV_WaitRing                MV_TimeAnswer 
MV_TimeRing                MV_Beep                    MV_Call 
MV_InitDID                 MV_AnswerDID               MV_InitDNIS 
MV_AnswerDNIS              MV_InitDistinctiveRinging  MV_AnswerDistinctive
MV_WaitRingDistinctive     MV_TimeAnswerDistinctive   MV_TimeRingDistinctive
MV_WaitForSilence          MV_WaitForSpeech

Voice File Control Functions

MV_Play                    MV_PlayEdit                MV_RecordAppendV3
MV_RecordAppend            MV_RecordV3                MV_Record
MV_OpenSeg                 MV_PlaySeg                 MV_PlaySegs
MV_CloseSeg

Channel Parameters Configuration

MV_SetCpbDtmfDetectLength               MV_SetCpbDtmfEdge               
MV_SetCpbMaxSilence                     MV_SetCpbRingsNoAnswer  
MV_SetCpbTimeBeforeCPM                  MV_SetCpbMaxTimeCPM 
MV_SetCpbLoopCurrentValidDelay          MV_SetCpbLoopCurrentWaitDelay 
MV_SetCpbHelloEdge                      MV_SetCpbSignalOrVoice  
MV_SetCpbContinuousSignalDelay          MV_SetCpbOnOffTolerance
MV_SetCpbBusyDetectTiming               MV_SetCpbDeglitchTiming 
MV_SetCpbDoubleRingDetectTiming         MV_SetCpbOperatorInterceptMode 
MV_SetCpbRingCadenceTiming              MV_SetCpbBusyCadenceTiming 
MV_SetCpbVoiceAnalysisFlag              MV_SetCpbMaxAnswerAnalysis 
MV_SetCpbSilenceToAnswer                MV_SetCpbVoiceAnalysisLen 
MV_SetCpbDialToneProperties             MV_SetCpbSitFreqProperties
MV_SetCpbPAMDProperties                 MV_SetCpbMaxWaitAfterRing 
MV_SetCpbMaxInterRingDelay 

DTMF Control Functions

MV_ResetDtmfBuffer         MV_WriteDtmf            MV_ReadDtmf
MV_ConditionalGetDtmf      MV_UnreadDtmf 

Line Handler Control Functions

MV_StartLH                 MV_StopLH               MV_OnHook 
MV_OffHook                 MV_Wink                 MV_ClearEventPipe 
MV_ChannelStop             MV_AlreadyDisconnect    MV_LineNo 
MV_Result                  MV_LastEvent            MV_LastDigitType 
MV_SetResult 

Line Configuration Functions

MV_SetDialMode            MV_SetCompressionRate  MV_SetSilenceCompression 
MV_SetSilenceSuppression  MV_SetSilenceDetection MV_SetNonSilenceDetection 
MV_SetDtmfDetection       MV_SetMaskedDtmf       MV_SetEditPauseTime 
MV_SetRingsNoAnswer       MV_SetMaxTimeCPM       MV_SetTimeBeforeCPM 

Program Control Functions

MV_Start                  MV_Stop               MV_StartMultiTask 
MV_StopMultiTask          MV_WaitEscape         MV_TerminateAndStayResident
MV_WaitEndOfLineHandlers  MV_StopAllLineHandlers 

Utility Functions

MV_WaitCrt                 MV_ReleaseCrt           MV_WaitLib 
MV_ReleaseLib              MV_PrintLog             MV_Delay 
MV_AllocStack              MV_IsDtmf               MV_Version 

Group Functions

MVS_CreateGroup            MVS_DeleteGroup         MVS_AddLineToGroup 
MVS_RemoveLineFromGroup    MVS_GroupStatus 

Rate ans Volume Control Functions

MVS_IncreaseVolume         MVS_DecreaseVolume      MVS_SetVolume 
MVS_GetVolume              MVS_SetDTMFVolume       MVS_ResetDTMFVolume 
MVS_IncreaseRate           MVS_DecreaseRate        MVS_SetRate 
MVS_GetRate                MVS_SetDTMFRate         MVS_ResetDTMFRate 
MVS_SetVolumeStep          MVS_SetRateStep         

Special Functions Unique To Specific Boards

MVS_MonitorCallProgress    MVS_GetOemNumber        MVS_GetSerialNumber 
MVS_MicrophoneOn           MVS_MicrophoneOff       MVS_SpeakerOn 
MVS_SpeakerOff             MVS_SetAudioMode        MVS_LoadCPMParams 
MVS_SetSilenceLevel        MVS_SetLinkMode         MVS_GetSystemInfo 
MVS_SetDtmfParam           MVS_GenerateTones       MVS_GenerateTone
MVS_SetRotaryDetection 

Global Tone Detection Functions

MVS_BuildDualTone          MVS_BuildDualToneWithCadence
MVS_BuildSingleTone        MVS_BuildSingleToneWithCadence
MVS_DeleteTones            MVS_EnableTone 
MVS_DisableTone            MVS_SetToneAmplitude

Dialogic's Perfect Call Functions

MVS_ChangePCDuration       MVS_ChangePCFrequency
MVS_ChangePCRepCount       MVS_InitPerfectCall 

High Level Voice Response Utility Functions

MVU_ReadMenu               MVU_PlayInteger         MVU_PlayIntegerFrench
MVU_PlayIntegerEnglish     MVU_PlayIntegerSpanish  MVU_PlayNumber 
MVU_PlayDateFrench         MVU_PlayDateEnglish     MVU_PlayDateSpanish
MVU_PlayDate               MVU_GetDateTime         MVU_SpellString
MVU_PlayPatternString      MVU_SetPromptDir        MVU_SetSegmentedFileDir 
MVU_SetLanguage            MVU_SetDateField        MVU_SetDtmfAbort
MVU_SetGlobalParameters    MVU_S_Playf             MVU_S_PlayInteger
MVU_S_PlayNumber           MVU_S_PlayDate          MVU_S_SpellString
MVU_S_PlayPatternString 

Multi-Tasking Functions

Task Control Functions
Keyboard Functions
Counter Functions
Mailbox Functions
Pipe Functions
Resource Functions

All this for only $799 US

#####

Multi-Fax Version 2.0

ITI Software introduces MULTI-FAX, the complete set of tools to write 
multi-line fax applications for any CAS facsimile boards on OS/2.

Multi-Fax Product Description

The MULTI-FAX toolkit allows programmers (experienced or not) to write 
applications which handle fax transmission.  The toolkit can handle up 
to ten fax boards simultaneously in a single PC.

MULTI-FAX will send any ASCII files, PCX or DCX graphic files without 
format conversion.  You can send multiple documents in a single call.

Used along with ITI Software's MULTI-VOICE toolkit, the MULTI-FAX toolkit 
allows programmers to create highly sophisticated software to handle all 
aspects of telephone interfacing.  Applications such as Fax-Mail, Document 
Broadcasting and Store-And-Forward can be implemented with minimum effort.

Multi-Fax Example Programs

Many example programs are provided to show how to call most procedures 
and functions.  You can modify these programs to suit your own needs.

System Requirements

IBM PC or compatible running DOS 3.3 or higher (5.0 recommended)
Any CAS compatible Fax Processing board.
C/C++ Compiler: Borland's V2.0..V4.5, Borland's Turbo V2.0..V3.0 or Microsoft 
V5.1..V8.0.

Fax Sending Sample Program

#include "stdio.h"
#include "MultiFax.h"

void main (void)
{
  int fax_handle

  /* Start MULTI-FAX and verify if there is a FAX board in the PC */

  if (MF_Start () == 0)
  {
    printf ("No board found. \n");
    exit (-1);
  }

  /* Create a fax entry. */
  fax_handle = MF_CreateFax ();

  /* Add company logo on cover page. */
  MF_AddLogo (fax_handle, "logo.pcx");

  /* Add a message to the cover page. */
  MF_AddCoverPageText (fax_handle, "This is the cover page message.");

  /* Add ASCII text file "FAX.TXT" and graphic document "FAX.DCX". */
  MF_AddDocument (fax_handle, MF_ASCII_80, "fax.txt", MF_LETTER);
  MF_AddDocument (fax_handle, MF_DCX, "fax.dcx", MF_LETTER);

  /* Send it using highest resolution */
  MF_SetResolution (fax_handle, MF_FINE);

  MF_SetDestinationName (fax_handle, "Your Name");
  MF_SetSenderName (fax_handle, "ITI Software");

  MF_Send (fax_handle, MF_ANY_BOARD, "555-1212");

  MF_FreeFax (fax_handle);
}

Multi-Fax Version 2.0 Function List

Program Control Functions         Send Fax Functions

MF_Start                          MF_QuickSend
MF_Stop                           MF_Send
MF_TestBoard                      MF_PolledSend 
MF_UnloadResidentManager          MF_SendNoCall 
MF_AbortCurrentEvent              MF_GetConnectionTime 
MF_DisableAutoReceive             MF_GetRemoteId 
MF_EnableAutoReceive              MF_GetPageCount 
                                  MF_GetPagesTransmitted 
Fax Document Creation Functions   MF_GetFilesTransmitted 
                                  MF_GetErrorCount 
MF_CreateFax                      MF_GetBytesTransmitted 
MF_FreeFax                        MF_GetFileSize 
MF_AddDocument                    
MF_AddCoverPage                   Receive Fax Functions
MF_AddCoverPageText               
MF_SetPageHeader                  MF_PolledReceived
MF_AddLogo                        MF_PolledReceiveNoCall 
MF_SetDestinationName             MF_GetFirstReceivedFax 
MF_SetSenderName                  MF_GetNextReceivedFax 
MF_SetResolution                  MF_MoveReceivedFax 
MF_SetSendTime                    MF_SetReceivedFaxReadStatus 
MF_SetSendDate                    MF_DeleteReceivedFax 
MF_SetSendDateTime                MF_DeleteAllReceivedFax 
MF_SetDialMode                    MF_GetReceivedFaxStatus 

Dcx File Manipulation Functions   MF_GetReceivedFaxSenderId 
                                  MF_GetReceivedFaxPageCount 
MF_BreakUpDcx                     MF_GetReceivedFaxReadStatus
MF_StripDcx 

Queue Functions (QQQ can be Log, Receive or Task)

MF_GetFirstQQQ                    MF_GetQQQSenderName                
MF_GetNextQQQ                     MF_GetQQQLogoFileName              
MF_ReadQQQ                        MF_GetQQQCoverPageText             
MF_GetQQQEventType                MF_GetQQQDocumentFileType            
MF_GetQQQTransferType             MF_GetQQQDocumentTextSize            
MF_GetQQQEventStatus              MF_GetQQQDocumentFileStatus          
MF_GetQQQDateTime                 MF_GetQQQDocumentBytesTransmitted    
MF_GetQQQFileCount                MF_GetQQQDocumentFileSize            
MF_GetQQQPhoneNumber              MF_GetQQQDocumentPagesTransmitted    
MF_GetQQQConnectTime              MF_GetQQQDocumentPageCount           
MF_GetQQQPageCount                MF_GetQQQDocumentFilename            
MF_GetQQQPageTransmitted          MF_GetQQQDocumentLength              
MF_GetQQQFileTransmitted          MF_DeleteQQQ  
MF_GetQQQErrorCount               MF_DeleteAllQQQ  
MF_GetQQQRemoteCSID               MF_DeleteAllQQQs              
MF_GetQQQDestinationName            

All this for only $299 US

home help back first fref pref prev next nref lref last post