CSTADLL  2.5.0
CSTAXMLEd6

CSTAXMLEd6 is a Microsoft .NET 4.5 DLL that allows client code to communicate with a PBX or UA device.

The DLL uses the following namespaces:



The Com.Objsys.Csta.Devices namespace contains classes that allow a caller to use specific PBX or UA devices.

The Com.Objsys.Csta.Xmled(n) namespaces contain classes that are specific to the indicated edition of XML CSTA. Most of these classes are generated by XBinder from the CSTA and session management (ECMA-354) XML schema specifications. These generated classes are not documented here, but you can consult the XBinder Java/C# User Guide for information about how XML schema constructions are translated into C# classes.

Each namespace also contains several classes that are not generated by ASN1C. These classes are the ones documented in this manual.

A typical way to use the DLL is to use the PBXSession class to set up the communication to the PBX or UA device via the constructor. If the PBX or UA will be sending asynchronous data, such as monitor packets, to the client, the ClientCallback or XMLClientCallback property can be used to define a callback method to receive the asynchronous data. If no callback method is defined, asynchronous data will be ignored.

If the PBX or UA will be sending Call Detail Records Report or Call Detail Records Notification messages to the client, the CDRCallback or XMLCDRCallback property can be used to define a callback method to receive the messages. If no callback method is defined, Call Detail messages will be ignored.

The CSTADLL kit includes some samples to guide you in writing your own code. The samples are evenly split between those implemented in C# and those implemented in Visual BASIC. Each language has samples for communicating with PBX devices that use BER CSTA and with PBX devices that use XML CSTA.

The classes and methods exposed by the DLL are probably sufficient to handle operations for most PBX or UA devices. But if needed, you can write a class of your own to handle operations for a PBX device that the software doesn't explicitly support. The sample NewPBX shows how this might be accomplished. This sample contains code for a small separate DLL that could be used to support a fictitious PBX device. The assumption in the sample is that this device uses standard messages for all operations except for the initial association messages. These messages are the ones that are most commonly different from one PBX to the next. The NewPBX sample shows how the EncodeACSEConnectionRequest() method within the GenericCSTAp2 class (for BER PBX devices) or the EncodeStartSession() method within the GenericXMLEd4 class (for XML PBX devices) can be overridden in a class that you can write. The override implementation handles the details that are specific to the device.

The DLL can log message traffic between a client program and the PBX or UA device if so desired. The logging is controlled by the LoggingEnabled property with the PBXSessionHelper class. The logging is off by default. Both of the provided sample clients enable the logging. The log file used is named cstadll_<program>.log, where <program> is the name of the executable image that is using the DLL. The location of the log file is the folder where the executable image resides. The default behavior is that if the log file grows to more then 5 Mb, it is copied to cstadll_<program>.backup.log, and a new log file is opened. If there is already a file with the backup file name, it is overwritten. That default size of 5 Mb can be modified by using the MaxLogFileSize property of the PBXSessionHelper class.

If your CSTADLL kit is licensed (i.e., not unlimited), and its license file has a file type of .lic, then you will need to deploy your application with the DLLs Reprise.dll and rlm1212.dll that are in the kit. The file rlm1212.dll is a 32-bit native DLL as opposed to a .NET DLL. As such, if you build your code with a Makefile, you will need to use the /platform:x86 qualifier to the csc or vbc command. If you build your code with a Visual Studio project, you will need to use x86 as the target platform instead of AnyCPU. These steps are to ensure proper interfacing to the native 32-bit rlm1212.dll. There is also a 64-bit version of rlm1212.dll available if you prefer to target the x64 platform. If your license file is an osyslic.txt file, these steps are not necessary.