Welcome
conaito VoIP EVO SDK - Enterprise Edition/ Secure Edition
conaito VoIP EVO SDK for VoIP conferencing

The conaito VoIP EVO Enterprise SDK contains a high performance VoIP conferencing client capable of delivering crystal clear sound even for both low and high-bandwidth users. conaito VoIP EVO users are arranged in a tree-structure where each node is a room/channel where users can talk, send instant messages and share files. More than 40 users can be in each room/channel and participate in a conference while resource usage, both memory-wise and CPU-wise, is still kept at an acceptable level for gaming and other types of resource intensive tasks.

What´s new in Enterprise Edition - Version 3.0
The most important new feature is the ability for the admin to record conversations to files. The admin can now also stream .wav files to clients. Volume levels can now be controlled by AGC (automatic gain control) so all users have the same audio level.

• Switched to Unicode clients
• Improved AGC (auto gain controller) to ensure all users have the same volume level
• Record VoIP conferences to WAV and MP3
• Admin can store all conversations to disk (wav or mp3)
• Play (Stream) WAV to conferences (for IVR solutions)
• Added ability to do stereo playback
• Ignore audio, private text messages and channel text messages
• Fully updated examples with source code
• Phased out the OCX (but still available as v2.2)

Here is a list of the main features of the conaito VoIP EVO VoIP SDK (Enterprise and Secure Edition):

• VoIP conferencing with crystal clear sound even for both low and high-bandwidth users (Speex Codec)
• Full Duplex - VoIP conferencing solution (multi-user conferences)
• Comes with Windows as well Linux server (running as service).
• Work with DirectSound as well with Windows Audio.
• Multiple-Instances support (It's now possible to instantiate multiple objects of the COM, OCX and DLL client and admins. Now you can connect to multiple conaito Evo Servers.)
• Clients can see users in other channels (It's now possible to develop a Messenger like solution.)
• Access to the raw audio data (It's The raw audio data can e.g. be encoded to a different format and stored to disk. Also consider using the VoiceLog library included with this SDK to mix audio from multiple users talking at the same time.)
• Reinitialize sound system while connected (Restart the sound system without disconnecting from the server.)
• "Message of the Day" can now be configured with variable information (Use e.g. %users% in the MOTD to see number of users in the server's config.)
• Remote console server administration (e.g. use telnet to control the server)
• Administrator EVO Server API (VoIP EVO Admin COM control) - 2 SDK versions (VoIP EVO Client SDK and VoIP EVO Admin SDK) are available.
• Record conferences to WAV and MP3 - Voice conferencing recording (*.wav and *.mp3 format)
• Cryptography (SSL for TCP data transmission and BLOW FISH for UDP data transmission) is used for Encryption/Decryption (only by Secure Edition).
• Arrange users in rooms/channels with topics and passwords.
• Full rooms/channels control including protection.
• User status control (participant available, away) including status messages.
• Get user talking function - Check whether a user is talking.
• Private and public instant text messaging.
• Broadcast server messages - sending text messages from server to all connected users.
• Channel Messages as well Message of the Day support.
• File Transfer - Share files among users in the same channel.
• Ban/ Un-Ban/ Kick Clients as well as set Client connection number limits.
• Set Clients to Operator or Administrator for different rights.
• Listing of participants and rooms/channels.
• Push-to-talk (set Keyboard shortcuts) to enable voice transmission.
• VAD (Voice Activity Detection) to enable voice transmission.
• Denoising - Noise reduction of outgoing audio
• AGC (auto gain controller) - gaining of outgoing audio by set the voice gain level.
• Position users using 3D sound.
• Microphone and Speaker Volume with Mute support.
• Microphone and Speaker Visualization support
• Individual volume for each user including Mute all.
• Mic Boost - more Microphone sensitivity
• 8 KHz, 16 KHz and 32 KHz voice recording each with multiple voice quality levels.
• Throughput between approx. 600 to 6000 bytes/sec. depending on voice quality.
• Packet loss resistant.
• Build-In Auto Voice Lag Controller
• Bound Data Control (Data flow control)
• NAT (Router) & Firewall friendly
• Works with all kinds of Internet connections
• Royalty free licensing
• No Yearly/Monthly fee
• Very easy to incorporate
• Comes with VoIP EVO Live Demo (Client and Admin) to demonstrate all the features
• A new conaito VoIP EVO Client Web-based example demonstration is included

… and much more!

Having the above features available makes it simple to develop any type of VoIP-enabled application, like e.g. a teaching tool, live support, chat, meeting tool, a multiplayer game or any other type of application which requires users being able to talk, type messages and send files to each other. For conaito VoIP Evo clients to be able to interact with each other they must connect to a conaito VoIP EVO server which keeps track of where users are located and forwards voice-data packets between clients. The conaito VoIP EVO server can be hosted in both LAN and internet environments.

Please, don't hesitate trying our VoIP EVO Enterprise SDK at once and get yourself, as well as your customers, the exciting experience of easy, fast and high quality standard applications which VoIP-enable your application and websites.

We hope you enjoy the new conaito VoIP EVO Enterprise SDK – A simple way to VoIP-enable your applications and websites.

The conaito Technologies Team

ANY QUESTIONS?
Our Support Forum or Knowledgebase/ Helpdesk is the best way for your questions.
Please feel free to contact the conaito Support Team incase of any question.
COPYRIGHT © 2007, CONAITO TECHNOLOGIES - WWW.CONAITO.COM - ALL RIGHTS RESERVED


What´s new?
conaito VoIP EVO SDK - Enterprise Edition/ Secure Edition
conaito VoIP EVO Enterprise SDK v3.0 released - 05/2009
The most important new feature is the ability for the admin to record conversations to files. The admin can now also stream .wav files to clients. Volume levels can now be controlled by AGC (automatic gain control) so all users have the same audio level.
• added: Switched to Unicode clients
• added: Improved AGC (auto gain controller) to ensure all users have the same volume level
• added: Record VoIP conferences to WAV and MP3
• added: Admin can store all conversations to disk (wav or mp3)
• added: Play (Stream) WAV to conferences (for IVR solutions)
• added: Added ability to do stereo playback
• added: Ignore audio, private text messages and channel text messages
• added: Fully updated examples with source code
• changed: Phased out the OCX (but still available as v2.2)

conaito VoIP EVO Enterprise SDK v2.2 released - 12/2008
• added: Improved server stability - The server now performs better with many clients.
• added: Better connectivity for clients - The admin and client now have a more stable server connection with less chance of being disconnected.
• fixed: some reported bugs

conaito VoIP EVO Enterprise SDK v2.1 released - 02/2008
• NEW: Create multiple instance of the COM, OCX and DLL client + It's now possible to instantiate multiple objects of the COM, OCX and DLL client and admins.
• NEW: Clients can see users in other channels + Check OnAddUser(..) event. This feature can be disabled in the server's config file but is on by default.
• NEW: Ability to set max users in channels + Check DoUpdateChannel(....) in the admin.
• NEW: Access to the raw audio data (It's The raw audio data can e.g. be encoded to a different format and stored to disk. Also consider using the VoiceLog library included with this SDK to mix audio from multiple users talking at the same time.)
• NEW: Reinitialize sound system while connected + Check RestartSoundSystem(...) in the client.
• NEW: "Message of the Day" can now be configured with variable information + Use e.g. %users% in the MOTD to see number of users in the server's config.
• added: GetUserGainLevel method
• added: RegisterTalkingCallback method
• added: SetUserGainLevel method
• added: UnregisterTalkingCallback method
• added: OnUserAudioData event
• changed: RestartSoundSystem method (parameters added)
• changed: OnAddUser event (+ nChannelID)
• changed: OnUpdateUser event (+ nChannelID)
• fixed: some reported bugs

conaito VoIP EVO Enterprise SDK v2.0 released - 10/2007
• NEW: New COM control in Admin-folder for remote administration + Instead of using a TCP socket interface for the server you can now use a COM control which provides the developer which an easy way to change settings on the VoIP EVO server.
• NEW: Example added to Admin-folder showing remote administration features + Check out the example EvoVoIPAdminGUI to see how to use the remote administration COM control.
• NEW: Added C-API DLL for recording conversation into MP3 files + Chat session can now be saved into a MP3 file using the VoiceLog DLL.
• NEW: new Webdemo (HTML/JavaScript) for conaito VoIP EVO ActiveX (OCX)
• NEW: new Live Demos (new features added) + Live Demos with record conversation feature
• added: IP access-list for remote administrators in server + In the server's EvoVoIP.xml file you'll now see a -tag which can be used to limit access for remote administration to certain IPs.
• added: Server supports banning user after X login attempts + A user can now be banned after specifying an incorrect password after a certain number of times. Look up the -tag in the server's EvoVoIP.xml file.
• added: Added text-message broadcast ability + Admins can not broadcast messages to all connected users.
• added: Added SetLocalBindIP(.) to COM control + Clients can now bind to a specific IP just like the server.
• added: many new functions (more informations in documentation) * changed: conaito VoIP EVO Admin commands protocol changed to 3.5
• changed: Reduced latency a bit for low voice qualities + When using 8KHz and 16KHz sound you should now experience lower latencies than before due to a change for smaller packet sizes.
• changed: Better support for reestablishing dropped UDP connections (audio tranfer) + If a router is closing a UDP connection the client should now be better to reestablish the connection.
• changed: OnBroadcastMessage (new parameter nUserID) - more informations in documentation
• fixed: some reported bugs

conaito VoIP EVO Enterprise SDK v1.1.1 released
 • added: evo Protocol are now supported in VoIP EVO Client Demo - for easy start EVO Demo Client with HTML Link from each Website
• fixed: some reported bugs

conaito VoIP EVO Enterprise SDK v1.1 released
• added: conaito VoIP EVO Client Demo - for easy try the features of the conaito VoIP EVO Enterprise SDK
• added: conaito VoIP EVO Admin Demo - allows easy Administration of the conaito VoIP EVO Server
• fixed: some reported bugs


Technical walkthrough
of conaito VoIP EVO conferencing
The conaito VoIP EVO client is a network enabled application which requires a conaito VoIP EVO server to connect to in order to interact with other users. The conaito VoIP EVO server's tasks are very simple in the sense that all it does is keep track of where users are located and forward the voice-data it receives from a user to other users in the same conference.

VoIP EVO Client/Server interaction
A conaito VoIP EVO client connects to a server by first opening a TCP connection (typically to port 10300) and afterwards sends a UDP "hello" packet (typically to port 10301) to the server. The TCP connection is used for handling all "administrative" commands like joining and leaving channels whereas the UDP connection is only used for handling voice-data. All administrative commands sent on the TCP connection are human readable and it's fairly simple to interact with a conaito VoIP EVO server using e.g. Telnet in a Linux-shell or Windows command-prompt. The conaito VoIP EVO SDK contains a list of all the administrative commands which can be issued to the server.

Voice-data transmission
Voice-data recorded by a conaito VoIP EVO client is transmitted to users in the same conference by sending the voice-data to the conaito VoIP EVO server which then forwards the voice-data to the other users. By having the server forward the voice-data takes the load of the clients so each client doesn't have to send its voice-data packet to every other user in the same conference. Since voice-data is simply forwarded by the conaito VoIP EVO server, a client can receive voice-data from multiple users at the same time. This increases the load on the client's download bandwidth but since a conference typically only have one speaker it's not a big issue and today's ADSL and cable internet users typically have higher download than upload speed. Given this information it's possible to calculate the bandwidth required for the server to host, say a 12 user conference. If one user is talking and uses a 2 KBytes/sec voice quality the server must transmit (12 - 1) * 2 KBytes/sec = 22 KBytes/sec. If three users are talking it's 3 * 22 KBytes/sec = 66 KBytes/sec in bandwidth usage on the server. For each "non-talking" client participating in this conference where three people are talking they must have a downstream of at least 3 * 2 KBytes/sec = 6 KBytes/sec.

Integrating the conaito VoIP EVO VoIP client
The conaito VoIP EVO client is available as a Win32 DLL with a C-interface, a Win32 COM control and a Win32 OCX. All client implementations provide pretty much the same interface only with minor differences in the naming of functions. Visual Basic and .NET users will probably be most comfortable with the COM control whereas C++ developers are most likely to prefer the C-interface DLL. The DLL, however, requires thorough knowledge of HWND and Win32 message passing (PostMessage, SendMessage and GetMessage).

Security
The licensed conaito VoIP EVO Enterprise SDK is available in both an encrypted (Secure Edition) and an unencrypted (Enterprise Edition) version. For most applications the unencrypted (Enterprise Edition) version provides enough security in the way that a server and the channels on a server can be password-protected so unauthorized users are denied access. If, however, it is also important that the data being transmitted between clients and the server then it is necessary to use the encrypted (Secure Edition) version of the SDK which uses SSL encryption for TCP data transmission and Blowfish encryption for UDP data transmission. The API exposed by the VoIP clients and EVO Server API in both the encrypted (Secure Edition) and unencrypted (Enterprise Edition) SDK are exactly the same.


Getting started
conaito VoIP EVO SDK - Enterprise Edition/ Secure Edition
Introduction

This Software Development Kit (SDK) is designed to let developers evaluate the capabilities of the conaito VoIP EVO voice conferencing client. Since it's only for evaluation purposes it will expire after 30 days. The SDK is, however, fully functional during this time. If you decide to use the conaito VoIP EVO Enterprise SDK in an application you must purchase a license. For information on how to obtain a license check out http://www.conaito.com. Once you have obtained a license you also have the right to use the conaito VoIP EVO server for commercial use. If you have any problems, questions, etc. feel free to email support@conaito.com.

Getting started

As you may have noticed the conaito VoIP EVO Enterprise SDK contains three versions of the conaito VoIP EVO client, a regular Win32 DLL with a C-API, a COM control and an OCX file. All clients are built on the same code-based but the APIs provided by the voice clients are different. .NET users will (most likely) find the COM DLL easier to use, since it provides a simple way to handle events whereas the regular Win32 DLL version of the client requires thorough knowledge of HWNDs and Win32 message passing. The OCX version of the client should also be easy to use in .NET as well as other development environments. A conaito VoIP EVO server for your voice client can be found in the 'Server' folder of the SDK. The conaito VoIP EVO server is available as a NT service and a console application. If you prefer to run the server on Linux it can be obtained here http://www.conaito.com. To quickly get started developing your own voice conferencing application I recommend looking at the examples which are included in this SDK.

Files and folders

Here's a brief description of the files in the conaito VoIP EVO Enterprise SDK.

Win32 DLL files:
DLL\EvoVoIP.dll 'conaito VoIP EVO client as regular Win32 DLL
DLL\include\EvoVoIP.h 'C/C++ include file for EvoVoIP.dll
DLL\lib\EvoVoIP.lib 'MS Visual C++ import library for EvoVoIP.dll
DLL\Documentation 'Doxygen style documentation of the conaito VoIP EVO API
DLL\Examples 'MFC based conaito VoIP EVO client example

COM DLL files:
COM\EvoVoIP.dll 'conaito VoIP EVO client as a COM control
COM\Register COM client.bat 'Register the EvoVoIP.dll in registry
COM\Unregister COM client.bat 'Unregister the EvoVoIP.dll in registry Documentation '.chm style documentation of the COM control
COM\Examples 'C# and VB.NET conaito VoIP EVO client examples

OCX files:
OCX\EvoVoIP.ocx 'conaito VoIP EVO client as ActiveX control
OCX\Register OCX client.bat 'Register the EvoVoIP.ocx file in registry
OCX\Unregister OCX client.bat 'Unregister the EvoVoIP.ocx file from registry Documentation '.chm style documentation of the conaito VoIP EVO client
OCX\Examples 'C#, C++/MFC, JavaScript/HTML and VB 6.0 conaito VoIP EVO client examples

VoiceLog Recording files:
VoiceLog_Recording\VoiceLog.dll 'conaito VoIP EVO client VoiceLog control
VoiceLog_Recording\lame_enc.dll 'LAME MP3 control for VoiceLog control
VoiceLog_Recording\SteamMixer.dll 'SteamMixer for VoiceLog control
VoiceLog_Recording\lib\VoiceLog.lib 'Voice recording library
VoiceLog_Recording\include\VoiceLog.h 'C/C++ include file for VoiceLog.dll
VoiceLog_Recording\Examples 'Examples 'MFC based conaito VoIP EVO recording example

conaito VoIP EVO server files:
Server\Readme_Server.txt 'Explains how to use the conaito VoIP EVO server
Server\Windows\evosvc.exe 'The conaito VoIP EVO server (as NT service)
Server\Windows\evoserver.exe 'The conaito VoIP EVO server as console app
Server\Windows\EvoVoIP.xml 'Config-file for conaito VoIP EVO server
Server\Linux\ 'conaito VoIP EVO server for Linux

Administration files:
Admin\conaitoVoIPEvo_AdminCmds.html 'conaito VoIP EVO remote administration commands
Admin\conaitoVoIPEvo_CmdErrors.html 'conaito VoIP EVO server error number and messages
Admin\Examples 'C# examples of a conaito VoIP EVO administration tool, console as well with the EVO Server API (COM control)

LiveDemo´s
LiveDemo\LiveDemo_with_recording\EvoVoIPClient.exe 'compiled LiveDemo to see the complete VoIP EVO client features with recording feature
LiveDemo\LiveDemo_with_recording\EvoVoIPAdmin.exe 'compiled LiveDemo to see the complete VoIP EVO admin features with recording feature
LiveDemo\LiveDemo_without_recording\EvoVoIPClient.exe 'compiled LiveDemo to see the complete VoIP EVO client features without recording feature
LiveDemo\LiveDemo_without_recording\EvoVoIPAdmin.exe 'compiled LiveDemo to see the complete VoIP EVO admin features without recording feature
WebDemo\ 'JavaScript/HTML example of a conaito VoIP EVO client

Tools
Tools\conaitoRegister\conaitoRegister.exe 'Tool to easy register OCX and COM controls

Versioning of conaito VoIP EVO Enterprise SDK

Instead of starting the conaito VoIP EVO Enterprise SDK from 1.0 the version number of the SDK is based on the conaito VoIP EVO engine which the SDK is based on followed by an additional letter.

Please, don't hesitate trying our VoIP EVO Enterprise SDK at once and get yourself, as well as your customers, the exciting experience of easy, fast and high quality standard applications which VoIP-enable your application and websites.

We hope you enjoy the new conaito VoIP EVO Enterprise SDK – A simple way to VoIP-enable your applications and websites.

The conaito Technologies Team


Setting up the EVO Server

Setting up the conaito VoIP EVO Server as NT service
conaito VoIP EVO SDK - Enterprise Edition/ Secure Edition
Setting up the conaito VoIP EVO NT service

evosvc.exe reads its configuration from EvoVoIP.xml which you can modify to fit your settings. The conaito VoIP EVO NT service accepts the following parameters which can be printed by typing 'evosvc.exe -?' :

-i
Install the service. (calls "InstallService()" - see below)

-l < account >
< account > is the name of a user, under which the service shall run. This option is useful with -i only. < account > needs to have the advanced user-right "Log on as a service" (see User-Manager) < account > should have the following format: "< Domain >\< user >" "MyDomain\bdr" for instance. The domain "." is predefined as the local machine. So one might use ".\bdr" too.

-p < password >
The password of the user, under which the service shall run. Only useful with -i and -l together.

-u
Uninstall the service (calls "RemoveService()" - see below)

-d
Debug the service (run as console process; calls "DebugService()" see below)

-wd
<directory> Specify working directory Example: -wd C:\my_serv1

-e
Stop the service (if it is running)

-s
Start the service (if it is not running) (Note that *you* normally cannot start an NT-service from the command-line. The SCM can.)

Administrating the conaito VoIP EVO server

You can checkout the 'Admin' folder of the SDK for examples on how to build your own administration tool. Before you're able to log onto your server using your administrator tool you first need to enable remote administation in the EvoVoIP.xml configuration file (look for < admin-enabled >, < admin-username > and < admin-password >).


Development environment
conaito VoIP EVO SDK - Enterprise Edition/ Secure Edition
The conaito VoIP EVO Enterprise SDK provides the documentation, samples and related libraries you need to integrate with other applications or systems. Conaito VoIP EVO Enterprise SDK also includes a Win32 DLL with a C-interface, a Win32 COM control and a Win32 OCX that can be used from any programming language like C++, Visual Basic, Delphi, ASP, JSP, PHP, JavaScript, VBScript, etc.

The contents of conaito VoIP EVO Enterprise SDK and the supported development environments include all of the necessary software components for building systems based on conaito VoIP EVO Enterprise SDK including documented operational software applications, examples (with source code), explanations as well as necessary service programs, libraries and components.

The supported development environments include:
• Visual Basic .NET
• Visual C++ .NET
• Visual C# .NET
• ASP.NET
• ASP, JSP, PHP
• JavaScript/HTML
• Visual Basic
• Visual C++
• Borland Delphi
• and all development environments with Win32 DLL with a C-interface, a Win32 COM control and a Win32 OCX support

Server system requirements:
Operating system: Windows, Linux


Licensing
conaito VoIP EVO SDK - Enterprise Edition/ Secure Edition
The conaito VoIP EVO Enterprise SDK and Secure Edition is available as a trial version which expires after 30 days.

Licensing Overview
• Single Product/Service based Licensing
• Support and Maintenance
• Unlimited Redistribution/Royalty Free License

Our support team welcomes the opportunity to answer any questions you may have.

Single Product/Service based Licensing
We provide a 'Single License' to 'Single Service/Product'. You are limited to use the Single License under your Single Service or Product. So, if you have two different Products/Services, then you would have to buy two license keys. But you are free to use a single license for as many copies of the product/ service for which you have purchased the License Key.

The exclusive selling of the conaito VoIP EVO Enterprise SDK and Secure Edition without it being integrated into product/service is not permitted.

Here you can find more Information about our reseller program.

Support and Maintenance
The Support and Maintenance subscription provides you with eMail and VoIP technical support for all of our products. In addition your subscription provides all new product releases and updates while your subscription is active.

The conaito VoIP EVO Enterprise SDK and Secure Edition can be purchased with either a without, 30 days, 6 months, 1 year, 2 years or Lifetime of support and maintenance subscription. If your support and maintenance agreement has expired it can be renewed by purchasing a "Subscription Renewal" within 30 days after expiration.

Unlimited Redistribution/ Royalty Free License and other Fees
You are free to redistribute, as many conaito VoIP EVO Enterprise SDK and Secure Edition incorporated copies of your product or service. conaito Technologies provides royalty free licensing, you don't have to pay any fee or royalty to redistribute your products or services which incorporate conaito VoIP EVO Components. We do not charge any yearly or monthly fee.

Further information can be found in our license agreement or in the download section.

Pricing of the conaito VoIP EVO Enterprise SDK can be found in the "Pricing" section of the conaito.com website.


License Agreement
conaito VoIP EVO SDK - Enterprise Edition/ Secure Edition
This License Agreement defines the terms and conditions under which you (the Licensee) are permitted by conaito.com (conaito Technologies - the Licensor) to use the conaito VoIP EVO Enterprise SDK.

1. Definitions
1.1 "Software Development Kit" shall mean and include the software programs and files needed to integrate the conaito Technologies software components with a software application, including documentation, examples, include files, declarations, source code, utility programs and conaito VoIP EVO Enterprise SDK components.

1.2 "Application Program" shall mean and include one or more software programs created by the Licensee which use the conaito Technologies Software components.

2. License grant
2.1 Licensor hereby grants to the Licensee, and Licensee hereby accepts, subject to the terms and conditions set forth in this Agreement, a non-exclusive license to use Software Development Kit subject to the terms of this Agreement. The term "license" as used in this Agreement shall mean and include:

2.1.1 The right to use Software Development Kit under single:
• Product
• Service

2.1.2 The right to redistribute one copy of the Redistributable Software with each copy of the Licensee's Application Program.

3. Restrictions
3.1 In accepting the license granted by Licensor, Licensee agrees that it shall not

3.1.1 Include the Redistributable Software with a product which is itself a software development kit, software component, or software library;

3.1.2 Permit its end-users to redistribute the Redistributable Software;

3.1.3 Loan or rent Software Development Kit to a third party;

3.1.4 Attempt to disassemble or reverse-engineer software included with the Software Development Kit.

3.1.5 Pass the license key, which you have received from conaito Technologies, to any user.

4. Term of Agreement
4.1 The term of this Agreement shall commence at the time Licensee receives Software Development Kit and shall continue in effect indefinitely unless terminated as specified in Termination of Agreement, below.

5. Termination of Agreement
5.1 The Licensee may terminate this Agreement at any time by destroying all copies of Software Development Kit. In the event of a material default by the Licensee or the Licensee's agent or representative, of any provision of this Agreement, the Licensor may terminate this Agreement upon thirty (30) days written notice, and the Licensee also has thirty (30) days of notice for termination. Upon termination of the Agreement, the Licensee shall either destroy all licensed copies of Software Development Kit, and all backups, or return them to Licensor. This obligation shall survive the termination of this Agreement.

6. Copyright and proprietary information
6.1 Licensee acknowledges that Software Development Kit and all supporting documentation constitute valuable property of Licensor and that all title and ownership rights in Software Development Kit and related materials remain exclusively with Licensor.

6.2 Licensor reserves all rights with respect to Software Development Kit under all applicable laws for the protection of proprietary information, including, but not limited to, trade secrets, copyrights, trademarks, and patents.

6.3 Except as otherwise provided in this Agreement, Licensee shall not cause or permit unauthorized copying, reproduction, or disclosure of any portion of the Software Development Kit or supporting documentation, or the delivery or distribution of any part thereof to any third person or entity, for any purpose whatsoever, without the prior written permission of Licensor. This restriction shall continue to bind Licensee and its agents and representatives beyond the termination of this Agreement.

Indemnification
7.1 Licensee shall indemnify and defend against any and all claims, including claims by third parties or employees of Licensee, which arise directly or indirectly out of Licensee's use or operation of the Software Development Kit or Redistributable Software.

7.2 The Licensor shall indemnify and hold the Licensee harmless from loss, damage, or liability for direct infringement of any United States, Canadian, or European Union member state patent or copyright with respect to the Software Development Kit or Redistributable Software, provided that the Software Development Kit or Redistributable Software have not been modified and provided the Licensor is promptly notified by the Licensee in writing of any infringement and is permitted to defend, compromise or settle such suit or claim, and provided the Licensee gives to the Licensor such available information, assistance and authority as the Licensor deems necessary to the defense of such suit or claim. Should the use of the Software Development Kit or Redistributable Software be enjoined, or in the event that the Licensor desires to minimize its liabilities hereunder, the Licensor shall have the right, at its sole option and expense to:

7.2.1 Procure for the Licensee the right to continue the use of the Software Development Kit or Redistributable Software; or,

7.2.2 Replace the Software Development Kit or Redistributable Software with a non-infringing product; or,

7.2.3 Modify the Software Development Kit or Redistributable Software so that it becomes non-infringing; or,

7.2.4 Refund to the Licensee the purchase price paid, if any, by the Licensee for the Software Development Kit.

DISCLAIMER OF WARRANTY

THIS SOFTWARE DEVELOPMENT KIT IS SOLD "AS IS" AND WITHOUT WARRANTIES AS TO PERFORMANCE OR MERCHANTABILITY. THIS SOFTWARE DEVELOPMENT KIT IS SOLD WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES WHATSOEVER. BECAUSE OF THE DIVERSITY OF CONDITIONS AND HARDWARE UNDER WHICH THIS SOFTWARE DEVELOPMENT KIT MAY BE USED, NO WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE IS OFFERED. THE USER IS ADVISED TO TEST THE SOFTWARE DEVELOPMENT KIT AND APPLICATIONS MAKING USE OF IT THOROUGHLY BEFORE RELYING ON IT. THE USER MUST ASSUME THE ENTIRE RISK OF USING THE SOFTWARE DEVELOPMENT KIT.

ANY LIABILITY OF SELLER OR MANUFACTURER WILL BE LIMITED EXCLUSIVELY TO PRODUCT REPLACEMENT OR REFUND OF THE PURCHASE PRICE.

Our support team ARE AVAILABLE TO answer your questions.


Interface Methods
conaito VoIP EVO SDK - Enterprise Edition/ Secure Edition
The section Interface Methods members gives a quick overview of the methods which can be called to interact with the conaito VoIP EVO VoIP client.

The section Interface Events members contain the events which takes place after calling certain conaito VoIP EVO members.

To quickly setup and use the VoIP client in your project you first call InitVoIP() to initialize the conaito VoIP EVO client. Afterwards you call LaunchSoundSystem() to setup the sound system and finally you call the method Connect() to connect to a server. Once connected, the event OnConnectSuccess() is called and you're now able to logon to the server by calling DoLogin(). If you provided the correct password you'll get the event OnAccepted() event with your user ID and you're now ready to join a channel. You join a channel by calling DoJoinChannel() and wait for the event OnJoinChannel(). To start transmitting audio you call StartTransmitting(). To shutdown the conaito VoIP EVO client you call Disconnect() then ShutdownSoundSystem and finally CloseVoIP(). Always remember to shutdown the conaito VoIP EVO client before you close your application.


CancelFileTransfer
File Transfer
Cancel a file transfer.

Function CancelFileTransfer(nTransferID As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nTransferID | Long | No | - | The ID of the file transfer

Method description:
Can chancel an active file transfer. File transfer are started by either the command DoRecvFile or DoSendFile.

See also:

Example:
For more details please see the source code examples.


CloseVoIP
Initialization
Close down the conaito VoIP EVO client.

Function CloseVoIP As Boolean

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Close the conaito VoIP EVO client and release its resources. You'll need to call InitVoIP before you call any of the other functions.

See also:

Example:


Connect
Connection
Connect to a conaito VoIP EVO server.

Function Connect(szAddress As String, nTcpPort As Long, nUdpPort As Long, nLocalTcpPort As Long, nLocalUdpPort As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
szAddress | String | No | - | The IP-address or hostname of the server.
nTcpPort | Long | No | - | The host port of the server (TCP).
nUdpPort | Long | No | - | The sound port of the server (UDP).
nLocalTcpPort | Long | No | - | The local Tcp port which should be used. Setting it to 0 makes Windows select a port number (recommended).
nLocalUdpPort | Long | No | - | The local Udp port which should be used. Setting it to 0 makes Windows select a port number (recommended).

Method description:
Connect to a server. This is a non-blocking call, the event OnConnectSuccess will be called once the connection has been established or OnConnectFailed if connection could not be established. Note that sound system must be initialized before you connect to a server.

See also:

Example:


Disconnect
Connection
Disconnect from a conaito VoIP EVO server.

Function Disconnect As Boolean

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Disconnect from a conaito VoIP EVO server. Remember to disconnect from the server and afterwards shutdown the sound system when you quit your application.

See also:

Example:


DoBroadcastMessage
Commands
Broadcast a message to all other users on the server. Check server's config.

Function DoBroadcastMessage(szMessage As String) As Boolean

Parameters:

Name | Type | Optional | Default | Description
szMessage | String | No | - | Message to broadcast

Method description:
Broadcast a text-message to all users connected to the server. Note that the server has to be configured to allow this. By default this ability is not allowed by the server.

See also:

Example:


DoChangeNick
Commands
Change your nick name.

Function DoChangeNick(szNewNickName As String) As Boolean

Parameters:

Name | Type | Optional | Default | Description
szNewNickName | String | No | - | -

Method description:
Change your nick name.

See also:

Example:


DoChangeStatus
Commands
Change your status mode.

Function DoChangeStatus(nStatusMode As Long, szStatusMsg As String) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nStatusMode | Long | No | - | Use 0 for available and 1 for away.
szStatusMsg | String | No | - | The users message associated with the status mode.

Method description:
Change you currect status.

See also:

Example:


DoChannelMessage
Commands
Send a text message to your channel.

Function DoChannelMessage(szContent As String) As Boolean

Parameters:

Name | Type | Optional | Default | Description
szContent | String | No | - | The message to send.

Method description:
Send a message to the channel you're currently parcipating in.

See also:

Example:


DoChannelOp
Commands
Make another user operator of your channel.

Function DoChannelOp(nUserID As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | The user ID of the channel to make operator.

Method description:
Make another user channel operator. Requires that you are channel operator.

See also:

Example:


DoDeleteFile
Commands
Delete a file in your current channel. Need operator status to do this.

Function DoDeleteFile(nFileID As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nFileID | Long | No | - | The file ID of the file to delete.

Method description:
Delete a file in your current channel.

See also:

Example:
void CMyDlg::OnChannelsDelete()
{
int index = m_wndFiles.GetCurSel();
if(index != LB_ERR)
{
int fileid = m_wndFilesList.GetItemData(index);
m_VoIPEvo.DoDeleteFile(fileid);
}
}


DoJoinChannel
Commands
Join a channel on the server.

Function DoJoinChannel(szChannelPath As String, szPassword As String, szTopic As String, szOpPassword As String) As Boolean

Parameters:

Name | Type | Optional | Default | Description
szChannelPath | String | No | - | The channel to join. Channels are separated by a '/'.
szPassword | String | No | - | The password for the channel to join or for a new channel.
szTopic | String | No | - | A topic that can be set for a new channel. Don't include a topic if the channel already exists.
szOpPassword | String | No | - | Password users can specify to become operator of a channel.

Method description:
Join a channel. DoJoinChannel(...) also works as a channel creator. It's a bit similar to IRC. If you try to join a channel which does not exist it will be created as a new channel. If you are the last user in the channel you're leaving then the channel will be removed on the server (unless it's a static channel). Subchannels are separated by '/' so to create a channel called "foo" with the password "bar" and the topic "FooBar" you call DoJoinChannel in the following way: DoJoinChannel("/foo", "bar", "FooBar"). If the channel is created successfully the event OnAddChannel will be called followed by OnJoinedChannel.

See also:

Example:


DoKickUser
Commands
Kick a user of the server.

Function DoKickUser(nUserID As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | The user ID of the user to kick.

Method description:
Kick a user out of a channel and off the server. The user calling this function must be channel operator for this to be allowed.

See also:

Example:


DoLeaveChannel
Commands
Leave the current channel.

Function DoLeaveChannel As Boolean

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Leave the channel you're currently participating in.

See also:

Example:


DoLogin
Commands
Logon to a server.

Function DoLogin(szNickName As String, szServerPassword As String) As Boolean

Parameters:

Name | Type | Optional | Default | Description
szNickName | String | No | - | The nick name to use.
szServerPassword | String | No | - | The password required to join the server.

Method description:
Logon to a conaito VoIP EVO server. Once connected to a server call DoLogin(..) to logon. If the login is successful the OnAccepted event will be called with the user ID assigned to you. Once logged on you're not in a channel. Call DoJoinChannel to join a channel.

See also:

Example:


DoLogout
Commands
Log out of server (but don't disconnect).

Function Function DoLogout As Boolean

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Logout of the server. Call DoLogin() to relogin.

See also:

Example:


DoRecvFile
Commands
Download a file from the channel you're in.

Function DoRecvFile(nFileID As Long, szLocalFilePath As String) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nFileID | Long | No | - | The file ID of the file to download.
szLocalFilePath | String | No | - | The location of where to store the file.

Method description:
Download a file from the channel you're currently participating in.

See also:

Example:
void CMyDlg::OnChannelsDownload()
{
int index = m_wndFiles.GetCurSel();
if(index != LB_ERR)
{
int fileid = m_wndFilesList.GetItemData(index);
m_VoIPEvo.DoRecvFile(fileid, "C:\\test.txt");
}
}


DoSendFile
Commands
Send a file to the channel you're in.

Function DoSendFile(szLocalFilePath As String) As Boolean

Parameters:

Name | Type | Optional | Default | Description
szLocalFilePath | String | No | - | The path to the file to upload.

Method description:
Send a file to the channel you're currently participating in.

See also:

Example:
void CMyDlg::OnChannelsUpload()
{
m_VoIPEvo.DoSendFile("C:\\test.txt");
}


DoUserMessage
Commands
Send a private text message to user.

Function DoUserMessage(nToUserID As Long, szContent As String) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nToUserID | Long | No | - | The user ID of the user who should receive the message.
szContent | String | No | - | The content of the message to send.

Method description:
Send a private message to a user.

See also:

Example:


DoUserSubscribe
Commands
Subscribe to user data, e.g. audio, user messages, etc.

Function DoUserSubscribe(nUserID As Long, uSubscriptions As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | The user ID of the user.
uSubscriptions | Long | No | - | The subscriptions to enable, see Subscribptions enumeration.

Method description:
A user can enable or disable whether he want to receive audio, user text messages or channel text messages from a specific user by calling DoUserSubscribe/DoUserUnsubscribe. By default a user is subscribed to everything from another user.

See also:

Example:


DoUserUnsubscribe
Commands
Subscribe to user data, e.g. audio, user messages, etc.

Function DoUserUnsubscribe(nUserID As Long, uSubscriptions As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | The user ID of the user.
uSubscriptions | Long | No | - | The subscriptions to disable, see Subscribptions enumeration.

Method description:
A user can enable or disable whether he want to receive audio, user text messages or channel text messages from a specific user by calling DoUserSubscribe/DoUserUnsubscribe. By default a user is subscribed to everything from another user.

See also:

Example:


EnableAGC
Sound system
Enable Automatic Gain Control (AGC).

Function EnableAGC(bEnable As Boolean) As Boolean

Parameters:

Name | Type | Optional | Default | Description
bEnable | Boolean | No | - |

Method description:
Enable/disable Automatic Gain Control. This is a simple way to ensure all users have the same voice level.

See also:

Example:


GetAGCSettings
Sound system
Get Automatic Gain Control settings.

Function GetAGCSettings As AGC

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Get Automatic Gain Control settings. Since microphone volumes may vary AGC can be used to adjust a signal to a reference volume. That way users will speak at the same volume level.

See also:

Example:


GetBytesReceived
Connection
Get number of bytes received.

Function GetBytesReceived As Long

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Get the number of bytes sent. Note that the number of bytes transferred does not include TCP/IP overhead.

See also:

Example:


GetBytesSent
Connection
Get number of bytes sent.

Function GetBytesSent As Long

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Get the number of bytes received. Note that the number of bytes transferred does not include TCP/IP overhead.

See also:

Example:


GetChannel
Channel
Get the channel with the specified ID.

Function GetChannel(nChannelID As Long) As Channel

Parameters:

Name | Type | Optional | Default | Description
nChannelID | Long | No | - | The channel ID of the channel to examine.

Method description:
Get a channel's properties, i.e. name, parent channel, topic, etc.

See also:

Example:


GetChannelFile
Channel
Get file with specified ID.

Function GetChannelFile(nChannelID As Long, nFileID As Long) As FileInfo

Parameters:

Name | Type | Optional | Default | Description
nChannelID | Long | No | - | The channel ID of the channel to examine.
nFileID | Long | No | - | The file ID of the file to examine.

Method description:
Get the properties of a file in a channel.

See also:

Example:


GetChannelFileFromIndex
Channel
Get file with specified index based on GetChannelFilesCount().

Function GetChannelFileFromIndex(nChannelID As Long, nFileIndex As Long) As FileInfo

Parameters:

Name | Type | Optional | Default | Description
nChannelID | Long | No | - | The channel ID of the channel to examine.
nFileIndex | Long | No | - |

Method description:
Get the properties of a file from its index.

See also:

Example:


GetChannelFilesCount
Channel
Get the number of files in a channel.

Function GetChannelFilesCount(nChannelID As Long) As Long

Parameters:

Name | Type | Optional | Default | Description
nChannelID | Long | No | - | The channel ID of the channel to examine.

Method description:
Get the number of files in a channel.

See also:

Example:


GetChannelPath
Channel
Get a channel's path (channel's are separated by '/').

Function GetChannelPath(nChannelID As Long) As String

Parameters:

Name | Type | Optional | Default | Description
nChannelID | Long | No | - | The channel ID of the channel to examine.

Method description:
Get a the path of the channel with the specified ID. Channels are separated by '/'. The channel which has the parent ID 0 is the root channel.

See also:

Example:


GetCurrentInputLevel
Sound system
Get the VU-meter value of currently recorded audio (0-20).

Function GetCurrentInputLevel As Long

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Get the currently recorded voice level.

See also:

Example:


GetDenoising
Sound system
Check whether voice gain is enabled.

Function GetDenoising As Boolean

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Whether out recorded audio is being denoised before it's sent.

See also:

Example:


GetErrorMessage
Commands
Get the description of an error number reported by OnCommandError.

Function GetErrorMessage(nCmdError As Long) As String

Parameters:

Name | Type | Optional | Default | Description
nCmdError | Long | No | - | The number of the error.

Method description:
A command issue to the server caused an error. All Do* prefixed functions are commands which are issued to the conaito VoIP EVO server.

See also:

Example:


GetFileTransfer
File Transfer
Get the File transfer with the specified ID.

Function GetFileTransfer(nTransferID As Long) As FileTransfer

Parameters:

Name | Type | Optional | Default | Description
nTransferID | Long | No | - | The transfer ID to examine.

Method description:
Get the properties of a file transfer.

See also:

Example:


GetForwardToAll
Connection
Whether server is broadcasting your client's packet.

Function GetForwardToAll As Boolean

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Whether server is broadcasting packets or the client is doing it.

See also:

Example:


GetInputDeviceCount
Sound system
Get the number of recorder devices available.

Function GetInputDeviceCount(nSoundSystem As Long) As Long

Parameters:

Name | Type | Optional | Default | Description
nSoundSystem | Long | No | - | The sound system to examine. Use 1 for Windows Sound system and 2 for DirectSound.

Method description:
Get the number of input devices. Note that DirectSound is HIGHLY recommended.

See also:

Example:


GetInputDeviceID
Sound system
Get the ID of a recorder device.

Function GetInputDeviceID(nSoundSystem As Long, nIndex As Long) As Long

Parameters:

Name | Type | Optional | Default | Description
nSoundSystem | Long | No | - | The sound system to examine. Use 1 for Windows Sound system and 2 for DirectSound.
nIndex | Long | No | - | The index of the device. Must be less than GetInputDeviceCount..

Method description:
Get the ID of the specified sound input device. You use the ID of the sound input device in the LaunchSoundSystem method.

See also:

Example:


GetInputDeviceName
Sound system
Get the name of a recorder device.

Function GetInputDeviceName(nSoundSystem As Long, nIndex As Long) As String

Parameters:

Name | Type | Optional | Default | Description
nSoundSystem | Long | No | - | The sound system to examine. Use 1 for Windows Sound system and 2 for DirectSound.
nIndex | Long | No | - | The index of the device. Must be less than GetInputDeviceCount..

Method description:
Get the name of the specified sound input device.

See also:

Example:


GetMasterVolume
Sound system
Get the master volume.

Function GetMasterVolume As Long

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Get the master volume. Don't call this function before you have initialized the sound system.

See also:

Example:


GetMixerCount
Mixer
Get the number of Windows mixers.

Function GetMixerCount As Long

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Get the number of mixer available. You typically have one for each sound card.

See also:

Example:


GetMixerName
Mixer
Get a Windows mixer's name.

Function GetMixerName(nMixerID As Long) As String

Parameters:

Name | Type | Optional | Default | Description
nMixerID | Long | No | - | The index of the mixer to examine. Must be less than GetMixerCount.

Method description:

See also:

Example:


GetMixerWaveInBoost
Mixer
Check if microphone boost is enabled.

Function GetMixerWaveInBoost(nMixerIndex As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nMixerIndex | Long | No | - | The index of the mixer to examine. Must be less than GetMixerCount.

Method description:
Check whether microphone boost is currently enabled.

See also:

Example:


GetMixerWaveInDeviceCount
Mixer
Get the number of a mixer's input devices.

Function GetMixerWaveInDeviceCount(nMixerIndex As Long) As Long

Parameters:

Name | Type | Optional | Default | Description
nMixerIndex | Long | No | - | The index of the mixer to examine. Must be less than GetMixerCount.

Method description:
Get the number of devices in the mixer. Use GetMixerWaveInDeviceName(..) to get the name of each of the devices.

See also:

Example:


GetMixerWaveInDeviceName
Mixer
Get the name of a mixer's input device.

Function GetMixerWaveInDeviceName(nMixerIndex As Long, nDeviceIndex As Long) As String

Parameters:

Name | Type | Optional | Default | Description
nMixerIndex | Long | No | - | The index of the mixer to examine. Must be less than GetMixerCount.
nDeviceIndex | Long | No | - | -

Method description:
Get the name of a wave-in device based on its index.

See also:

Example:


GetMixerWaveInDeviceSelected
Mixer
Get the section state of a mixer's input device.

Function GetMixerWaveInDeviceSelected(nMixerIndex As Long, nDeviceIndex As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nMixerIndex | Long | No | - | The index of the mixer to examine. Must be less than GetMixerCount.
nDeviceIndex | Long | No | - | The index of the device in the mixer. Must be less than GetMixerWaveInDeviceCount

Method description:
Check if a wave-in device is selected.

See also:

Example:


GetMixerWaveInSelected
Mixer
Get the selection state of a mixer's input device. 3 = Microphone, 4 = Line In, 5 = Wave Out.

Function GetMixerWaveInSelected(nMixerIndex As Long, nDevice As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nMixerIndex | Long | No | - | The index of the mixer to examine. Must be less than GetMixerCount.
nDevice | Long | No | - | 3 = Microphone, 4 = Line In, 5 = Wave Out.

Method description:
Check whether Microphone, Line In or Wave Out is selected in the mixer.

See also:

Example:


GetMixerWaveInVolume
Mixer
Get volume of a mixer's input device. 3 = Microphone, 4 = Line In, 5 = Wave Out.

Function GetMixerWaveInVolume(nMixerIndex As Long, nDevice As Long) As Long

Parameters:

Name | Type | Optional | Default | Description
nMixerIndex | Long | No | - | The index of the mixer to examine. Must be less than GetMixerCount.
nDevice | Long | No | - | 3 = Microphone, 4 = Line In, 5 = Wave Out.

Method description:
Get the volume setting of a wave-in device.

See also:

Example:


GetMixerWaveOutMute
Mixer
Get the mute state of a mixer's output device. 0 = Volume Control, 1 = Wave, 2 = Microphone.

Function GetMixerWaveOutMute(nMixerIndex As Long, nDevice As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nMixerIndex | Long | No | - | The index of the mixer to examine. Must be less than GetMixerCount.
nDevice | Long | No | - | 0 = Volume Control, 1 = Wave, 2 = Microphone.

Method description:
Check whether a wave-out device is muted.

See also:

Example:


GetMixerWaveOutVolume
Mixer
Get volume of a mixer's output device. 0 = Volume Control, 1 = Wave, 2 = Microphone.

Function GetMixerWaveOutVolume(nMixerIndex As Long, nDevice As Long) As Long

Parameters:

Name | Type | Optional | Default | Description
nMixerIndex | Long | No | - | The index of the mixer to examine. Must be less than GetMixerCount.
nDevice | Long | No | - | 0 = Volume Control, 1 = Wave, 2 = Microphone.

Method description:
Get the volume of a wave-out device.

See also:

Example:


GetMuteAll
Sound system
Check whether all users has been muted.

Function GetMuteAll As Boolean

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Check whether all users are muted. Don't call this before you have initialized the sound system.

See also:

Example:


GetMyChannelID
Channel
Get the ID of the channel you are participating in.

Function GetMyChannelID As Long

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Get the ID of the channel you are currently participating in. Call DoJoinChannel to join a channel.

See also:

Example:


GetMyUserID
User
Get the user ID assigned to you.

Function GetMyUserID As Long

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Get the user ID assigned to you.

See also:

Example:


GetOutputDeviceCount
Sound system
Get the number of player devices available.

Function GetOutputDeviceCount(nSoundSystem As Long) As Long

Parameters:

Name | Type | Optional | Default | Description
nSoundSystem | Long | No | - | The sound system to examine. Use 1 for Windows Sound system and 2 for DirectSound.

Method description:
Get the number of sound output devices available on the computer.

See also:

Example:


GetOutputDeviceID
Sound system
Get the ID of a player device.

Function GetOutputDeviceID(nSoundSystem As Long, nIndex As Long) As Long

Parameters:

Name | Type | Optional | Default | Description
nSoundSystem | Long | No | - | The sound system to examine. Use 1 for Windows Sound system and 2 for DirectSound.
nIndex | Long | No | - | The index of the device to examine. The index must be less than GetOutputDeviceCount.

Method description:
Get the ID of the specified sound output device. You use the ID of the sound output device in the LaunchSoundSystem method.

See also:

Example:


GetOutputDeviceName
Sound system
Get the name of a player device.

Function GetOutputDeviceName(nSoundSystem As Long, nIndex As Long) As String

Parameters:

Name | Type | Optional | Default | Description
nSoundSystem | Long | No | - | The sound system to examine. Use 1 for Windows Sound system and 2 for DirectSound.
nIndex | Long | No | - | The index of the device to examine. The index must be less than GetOutputDeviceCount.

Method description:
Get the name of the specified sound output device.

See also:

Example:


GetPacketSize
Connection
Get the size of a voice packet.

Function GetPacketSize(nRecorderFreq As Long, nQuality As Long) As Long

Parameters:

Name | Type | Optional | Default | Description
nRecorderFreq | Long | No | - | Use either 8000, 16000 or 32000.
nQuality | Long | No | - | Use a value between 1 and 10.

Method description:
Get the number of bytes in a packet with the specified settings.

See also:

Example:


GetPlaybackMode
Sound system
Get the mode used for playing users' audio streams.

Function GetPlaybackMode As PlaybackMode

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Several playback modes are supported to ensure a good playback of voice streams in different environments. There's four ways to play sound from users: PLAYBACKMODE_STABLE uses a very defensive approach for playback where it tries to play all audio packets which are received from a client. PLAYBACKMODE_LOWLATENCY uses a very agressive approach for playback where it tries to keep the playback buffer empty by skipping packets if needed. PLAYBACKMODE_VARIABLE uses variable playback rate which increases and decreases the samplerate of the user's sound to prevent either a buffer overflow or buffer underflow of incoming packets. PLAYBACKMODE_JITTER uses a jitter buffer to ensure real-time playback of user's sound.

See also:

Example:


GetRootChannelID
Channel
Get the ID of the root channel.

Function GetRootChannelID As Long

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Get the ID of the root channel.

See also:

Example:


GetSamplesPerPacket
Connection
Get the number of samples in a voice packet.

Function GetSamplesPerPacket(nRecorderFreq As Long, nQuality As Long) As Long

Parameters:

Name | Type | Optional | Default | Description
nRecorderFreq | Long | No | - | Use either 8000, 16000 or 32000.
nQuality | Long | No | - | Use a value between 1 and 10.

Method description:
Get the number of samples required for conaito VoIP EVO to send a packet using the specified recorder frequency and quality.

See also:

Example:


GetServerProperties
Connection
Get the server's properties.

Function GetServerProperties As ServerProperties

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Get the properties of a server the client is connected to.

See also:

Example:


GetServerTimeout
Connection
Get the number of seconds the client should allow the server not to respond to keepalive requests.

Function GetServerTimeout As Long

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Get how many seconds the client can be inactive before getting dropped.

See also:

Example:


GetTcpKeepAliveInterval
Connection
Gets how often the ping command should be sent to the server.

Function GetTcpKeepAliveInterval As Long

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Get the number of seconds between the client sending keepalive's to the server. 30 seconds is default.

See also:

Example:


GetUser
User
Get user with specified ID.

Function GetUser(nUserID As Long) As User

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | The user ID of the user to examine.

Method description:
Get the properties of a user, i.e. nickname, status, sound quality, etc.

See also:

Example:


GetUserGainLevel
General
Get software gain volume. Returns a value from 100 to 8000.

Function GetUserGainLevel(nUserID As Long) As Long

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | -

Method description:
Get the User Gain Level.

See also:

Example:


GetUserMute
User
Check whether a user has been muted.

Function GetUserMute(nUserID As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | The user ID of the user to examine.

Method description:
Whether the user has been muted.

See also:

Example:


GetUserPosition
User
Get the 3D sound position of a user.

Function GetUserPosition(nUserID As Long, x As Single, y As Single, z As Single) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | The user ID of the user to examine.
x | Single | No | - | -
y | Single | No | - | -
z | Single | No | - | -

Method description:
Get the 3D sound position of the user.

See also:

Example:


GetUserStereo
User
Check if a user is set to be played in only one speaker.

Function GetUserStereo(nUserID As Long, lpbLeftSpeaker As Boolean, lpbRightSpeaker As Boolean) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | The user ID of the user to examine.
lpbLeftSpeaker | Boolean | No | - |
lpbRightSpeaker | Boolean | No | - |

Method description:
Check if a user is set to be played in only one speaker.

See also:

Example:


GetUserVolume
User
Get a user's volume (0-255).

Function GetUserVolume(nUserID As Long) As Long

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | The user ID of the user to extract information from.

Method description:
Get the volume of a user.

See also:

Example:


GetVersion
General
Get the version number of the DLL.

Function GetVersion As String

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Check which version of the VoIP client the user is using.

See also:

Example:


GetVoiceActivated
Sound system
Check whether voice activation is enabled.

Function GetVoiceActivated As Boolean

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Whether voice activation is enabled.

See also:

Example:


GetVoiceActivationLevel
Sound system
Get the voice activation level (0-20).

Function GetVoiceActivationLevel As Long

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Get the voice activation level.

See also:

Example:


GetVoiceGainLevel
Sound system
Check whether voice gain is enabled.

Function GetVoiceGainLevel As Long

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Whether recorded audio is being gained before it's sent.

See also:

Example:


InitVoIP
Initialization
Initialize the conaito VoIP EVO client.

Function InitVoIP(bLowLevelMouseHook As Boolean) As Boolean

Parameters:

Name | Type | Optional | Default | Description
bLowLevelMouseHook | Boolean | No | - | -

Method description:
Initialize the conaito VoIP EVO client. This function must be invoked before any other of the functions can be called. Call CloseVoIP to shutdown the conaito VoIP EVO client.

See also:

Example:


InstallTestKeyHook
General
Install a test key hook for setting up hotkeys. The event OnTestKeyToggle is called when a key is toggled.

Function InstallTestKeyHook As Boolean

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:

See also:

Example:


IsAuthorized
Connection
Check if client is logged in (received the OnAccepted-event).

Function IsAuthorized As Boolean

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Check if client is logged in (received the OnAccepted-event).

See also:

Example:


IsChannelOperator
Channel
Check whether a user is operator of a channel.

Function IsChannelOperator(nUserID As Long, nChannelID As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | The user ID of the channel to examine.
nChannelID | Long | No | - | The channel ID of the channel to examine.

Method description:
Check whether user is operator of a channel.

See also:

Example:


IsConnected
Connection
Whether the client is connected to a server.

Function IsConnected As Boolean

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Whether the client is currently connected to a server.

See also:

Example:


IsConnecting
Connection
Whether the client is trying to connect to a server.

Function IsConnecting As Boolean

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Whether the client is currently connecting to a server.

See also:

Example:


IsSoundSystemInitialized
Sound system
Whether sound system and encoder has been launched.

Function IsSoundSystemInitialized As Boolean

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Whether sound system has been initialized successfully.

See also:

Example:


IsTransmitting
Sound System
Check whether voice transmission is currently active.

Function IsTransmitting As Boolean

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Whether user is currently transmitting voice data.

See also:

Example:


LaunchSoundSystem
Sound system
Launch the sound system and encoder.

Function LaunchSoundSystem(nSoundSystem As Long, nInputDeviceID As Long, nOutputDeviceID As Long, nRecorderFreq As Long, nQuality As Long, bStereoPlayback As Boolean) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nSoundSystem | Long | No | - | The sound system to examine. Use 1 for Windows Sound system and 2 for DirectSound.
nInputDeviceID | Long | No | - | The ID of the input device to use. Obtain this through GetInputDeviceID.
nOutputDeviceID | Long | No | - | The ID of the output device to use. Obtain this through GetOutputDeviceID.
nRecorderFreq | Long | No | - | The recorder frequency to use. It can either be 8000, 16000 or 32000 Hz.
nQuality | Long | No | - | The quality settings the voice encoder should use. Use a value between 1 and 10.
bStereoPlayback | Boolean | No | - |

Method description:
Launch the sound system. Note that DirectSound is HIGHLY recommended, since Windows sound system has very poor performance.

See also:

Example:


ProcessMessageQueue
Windows
Process the Windows message queue. This is for use in applications without a Windows message queue (e.g. console-apps).

Function ProcessMessageQueue(bAllMessages As Boolean) As Boolean

Parameters:

Name | Type | Optional | Default | Description
bAllMessages | Boolean | No | - | -

Method description:
Process the Windows message loop. This function must be processed constantly if the client application is a console application which doesn't provide a message loop. Window application already have a Windows message loop.

See also:

Example:


RegisterHotKey
HotKey
Register a hotkey.

Function RegisterHotKey(nHotKeyID As Long, bCtrl As Boolean, bAlt As Boolean, bShift As Boolean, bWin As Boolean, nVirtualKey As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nHotKeyID | Long | No | - | The ID of the hotkey to register. The ID will be provided in the OnHotKeyActive event.
bCtrl | Boolean | No | - | True if the control key is part of the hotkey.
bAlt | Boolean | No | - | True if the alt key is part of the hotkey.
bShift | Boolean | No | - | True if the shift key is part of the hotkey.
bWin | Boolean | No | - | True if the windows key is part of the hotkey.
nVirtualKey | Long | No | - | The number of a virtual key. If 'A' is a hotkey use the char-value of 'A'.

Method description:
Register a global hotkey. Once a hotkey is active it calls the event OnHotKeyActive and OnHotKeyInactive when it becomes inactive. If a registered hotkey should be used as push-to-talk you can call StartTransmitting when the OnHotKeyActive event is called and StopTransmitting when OnHotKeyInactive is called.

See also:

Example:


RegisterTalkingCallback
Sound system
Receive callbacks of audio which has been played. Check event OnUserAudioData().

Function RegisterTalkingCallback As Boolean

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Receive callbacks of audio which has been played. Check event OnUserAudioData().

See also:

Example:


RestartSoundSystem
Sound system
Restart the sound system without disconnecting from the server.

Function RestartSoundSystem(nSoundSystem As Long, nInputDeviceID As Long, nOutputDeviceID As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nSoundSystem | Long | No | - | -
nInputDeviceID | Long | No | - | -
nOutputDeviceID | Long | No | - | -

Method description:
Restart the sound system while being connect to a server. The is a function which has been added because some people are having problems with distorted sound after more than 36 hours of continues use.

See also:

Example:


SetAGCSettings
Sound system
Set Automatic Gain Control settings.

Function SetAGCSettings(pAGC As AGC) As Boolean

Parameters:

Name | Type | Optional | Default | Description
pAGC | AGC | No | - |

Method description:
Set Automatic Gain Control settings. Since microphone volumes may vary AGC can be used to adjust a signal to a reference volume. That way users will speak at the same volume level. Here's an explanation of the values of the AGC-structure used by this method: nGainLevel - A value from 0 to 32768. Default is 8000. nMaxIncrement - Used so volume should not be amplified too quickly (maximal gain increase in dB/second). Default is 12. nMaxDecrement - Negative value! Used so volume should not be attenuated too quickly (maximal gain decrease in dB/second). Default is -40. nMaxGain - Ensure volume doesn't become too loud (maximal gain in dB). Default is 30.

See also:

Example:


SetDenoising
Sound system
Enable denoising of recorded audio.

Function SetDenoising(bEnable As Boolean) As Boolean

Parameters:

Name | Type | Optional | Default | Description
bEnable | Boolean | No | - | -

Method description:
Enable denoising of outgoing audio.

See also:

Example:


SetForwardToAll
Connection
Server should broadcast packet if true (default).

Function SetForwardToAll(bEnable As Boolean) As Boolean

Parameters:

Name | Type | Optional | Default | Description
bEnable | Boolean | No | - | -

Method description:
When set to true the server will broadcast audio packets instead of the client. Forwarding through the server is enabled by default.

See also:

Example:


SetLocalBindIP
Connection
Bind to specific IP-address locally.

Function SetLocalBindIP(szIPAddress As String) As Boolean

Parameters:

Name | Type | Optional | Default | Description
szIPAddress | String | No | - | -

Method description:
Call this method before connecting to a server if the client should bind to a specific IP-address.

See also:

Example:


SetMasterVolume
Sound system
Set the master volume.

Function SetMasterVolume(nVolume As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nVolume | Long | No | - | -

Method description:
Set the master volume. Don't call this function before you have initialized the sound system.

See also:

Example:


SetMixerWaveInBoost
Mixer
Enable/disable microphone boost.

Function SetMixerWaveInBoost(nMixerIndex As Long, bEnable As Boolean) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nMixerIndex | Long | No | - | The index of the mixer. Must be less than GetMixerCount.
bEnable | Boolean | No | - | -

Method description:
Enable Microphone boost.

See also:

Example:


SetMixerWaveInDeviceSelected
Mixer
Select a mixer's input device.

Function SetMixerWaveInDeviceSelected(nMixerIndex As Long, nDeviceIndex As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nMixerIndex | Long | No | - | The index of the mixer. Must be less than GetMixerCount.
nDeviceIndex | Long | No | - | The index of the mixer device. Must be less than GetMixerWaveInCount.

Method description:
Select an index specified device as the device which should be used for recording.

See also:

Example:


SetMixerWaveInSelected
Mixer
Select a mixer's input device. 3 = Microphone, 4 = Line In, 5 = Wave Out.

Function SetMixerWaveInSelected(nMixerIndex As Long, nDevice As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nMixerIndex | Long | No | - | The index of the mixer. Must be less than GetMixerCount.
nDevice | Long | No | - | 3 = Microphone, 4 = Line In, 5 = Wave Out.

Method description:
Select either Microphone, Line In or Wave Out as the selected wave-in device.

See also:

Example:


SetMixerWaveInVolume
Mixer
Set volume of a mixer's input device. 3 = Microphone, 4 = Line In, 5 = Wave Out.

Function SetMixerWaveInVolume(nMixerIndex As Long, nDevice As Long, nVolume As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nMixerIndex | Long | No | - | The index of the mixer to examine. Must be less than GetMixerCount.
nDevice | Long | No | - | 3 = Microphone, 4 = Line In, 5 = Wave Out.
nVolume | Long | No | - | A value between 0 and 65535.

Method description:
Set volume of a mixer's input device. 3 = Microphone, 4 = Line In, 5 = Wave Out.

See also:

Example:


SetMixerWaveOutMute
Mixer
Mute a mixer's output device. 0 = Volume Control, 1 = Wave, 2 = Microphone.

Function SetMixerWaveOutMute(nMixerIndex As Long, nDevice As Long, bMute As Boolean) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nMixerIndex | Long | No | - | -
nDevice | Long | No | - | 0 = Volume Control, 1 = Wave, 2 = Microphone.
bMute | Boolean | No | - | -

Method description:
Mute either the Volume Control, Wave or the Microphone.

See also:

Example:


SetMixerWaveOutVolume
Mixer
Set volume of a mixer's output device. 0 = Volume Control, 1 = Wave, 2 = Microphone.

Function SetMixerWaveOutVolume(nMixerIndex As Long, nDevice As Long, nVolume As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nMixerIndex | Long | No | - | -
nDevice | Long | No | - | 0 = Volume Control, 1 = Wave, 2 = Microphone.
nVolume | Long | No | - | A value between 0 and 65535.

Method description:
Set the volume of either Volume Control, Wave and Microphone.

See also:

Example:


SetMuteAll
Sound system
Mute all users in your channel.

Function SetMuteAll(bEnable As Boolean) As Boolean

Parameters:

Name | Type | Optional | Default | Description
bEnable | Boolean | No | - | -

Method description:
Mute all users.

See also:

Example:


SetPlaybackMode
Sound system
Set the mode to use for playing users' audio streams.

Function SetPlaybackMode(nPlaybackMode As PlaybackMode) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nPlaybackMode | PlaybackMode | No | - | -

Method description:
Several playback modes are supported to ensure a good playback of voice streams in different environments. There's four ways to play sound from users: PLAYBACKMODE_STABLE uses a very defensive approach for playback where it tries to play all audio packets which are received from a client. PLAYBACKMODE_LOWLATENCY uses a very agressive approach for playback where it tries to keep the playback buffer empty by skipping packets if needed. PLAYBACKMODE_VARIABLE uses variable playback rate which increases and decreases the samplerate of the user's sound to prevent either a buffer overflow or buffer underflow of incoming packets. PLAYBACKMODE_JITTER uses a jitter buffer to ensure real-time playback of user's sound.

See also:

Example:


SetServerTimeout
Connection
Set the number of seconds the client should allow the server not to respond to keepalive requests.

Function SetServerTimeout(nTimeoutSec As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nTimeoutSec | Long | No | - | -

Method description:
Specify how long the client should allow the server to be inactive before dropping the connection. Default is 3 minutes.

See also:

Example:


SetTcpKeepAliveInterval
Connection
Sets how often the ping command should be sent to the server.

Function SetTcpKeepAliveInterval(nPingIntervalSec As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nPingIntervalSec | Long | No | - | -

Method description:
Set how many seconds should be between client to server keepalives. Default is 30 seconds.

See also:

Example:


SetUserGainLevel
General
Set gain volume using software. nGainValue range from 100 to 8000.

Function SetUserGainLevel(nUserID As Long, nGainLevel As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | -
nGainLevel | Long | No | - | -

Method description:
Set gain volume using software. nGainValue range from 100 to 8000.

See also:

Example:


SetUserMute
User
Mute a user.

Function SetUserMute(nUserID As Long, bMute As Boolean) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | The user ID of the user to change.
bMute | Boolean | No | - | -

Method description:
Mute a user.

See also:

Example:


SetUserPosition
User
Set the 3D sound position of a user.

Function SetUserPosition(nUserID As Long, x As Single, y As Single, z As Single) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | The user ID of the user to change.
x | Single | No | - | -
y | Single | No | - | -
z | Single | No | - | -

Method description:
If the sound output device support 3D-sound the method can be used to position a user.

See also:

Example:


SetUserStereo
User
If stereo playback is enable user can be played in either left or right speaker.

Function SetUserStereo(nUserID As Long, bLeftSpeaker As Boolean, bRightSpeaker As Boolean) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | -
bLeftSpeaker | Boolean | No | - | -
bRightSpeaker | Boolean | No | - | -

Method description:
Set gain volume using software. nGainValue range from 100 to 8000.

See also:

Example:


SetUserVolume
User
Set a user's volume (0-255).

Function SetUserVolume(nUserID As Long, nVolume As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | The user ID of the user to change.
nVolume | Long | No | - | -

Method description:
Set the volume of a user.

See also:

Example:


SetVoiceActivated
Sound system
Enable voice activation.

Function SetVoiceActivated(bEnable As Boolean) As Boolean

Parameters:

Name | Type | Optional | Default | Description
bEnable | Boolean | No | - | -

Method description:
Enable voice activation. Use set voice activation level to change the sensitivity of when voice should be transmitted.

See also:

Example:


SetVoiceActivationLevel
Sound system
Set the voice activation level (0-20).

Function SetVoiceActivationLevel(nLevel As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nLevel | Long | No | - | A value between 0 and 20.

Method description:
Set the voice activation level. When set to 0 voice will always be transmitted.

See also:

Example:


SetVoiceGainLevel
Sound system
Enable voice gain of recorded audio (100-4000, 1000 = no gain).

Function SetVoiceGainLevel(nLevel As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nLevel | Long | No | - | A value between 100 and 4000. 1000 means no gain.

Method description:
Set voice gaining of recorded audio. The gain level ranges from 100 - 4000 where 1000 is no gain. So 100 is 1/10 of the original volume and 4000 is 4 times the original volume.

See also:

Example:


ShutdownSoundSystem
Sound system
Shutdown the sound system and encoder.

Function ShutdownSoundSystem As Boolean

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Shutdown the sound system. Remember to disconnect from the server and shutdown the sound system when you quit your application.

See also:

Example:


StartSoundLoopbackTest
Sound system
Perform a loopback test of specified sound devices.

Function StartSoundLoopbackTest(nSoundSystem As Long, nInputDeviceID As Long, nOutputDeviceID As Long, nRecorderFreq As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nSoundSystem | Long | No | - | The sound system to examine. Use 1 for Windows Sound system and 2 for DirectSound.
nInputDeviceID | Long | No | - | Use GetInputDeviceID to get this value.
nOutputDeviceID | Long | No | - | Use GetOutputDeviceID to get this value.
nRecorderFreq | Long | No | - | Should be either 8000, 16000 or 32000.

Method description:
Perform a record and playback test of specified sound devices. Note that this test cannot be performed while the sound system is launch. Call StopSoundLoopbackTest() to stop the loopback test.

See also:

Example:


StartTransmitting
Connection
Start transmitting voice packets (like when you press a hotkey).

Function StartTransmitting As Boolean

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Start transmitting voice data.

See also:

Example:


StartTransmittingWaveFile
Connection
Replace microphone input by this wave-file. Microphone input will be active again once wave-file finishes.

Function StartTransmittingWaveFile(szWaveFilePath As String, bEchoWaveFile As Boolean) As Boolean

Parameters:

Name | Type | Optional | Default | Description
szWaveFilePath | String | No | - | -
bEchoWaveFile | Boolean | No | - | -

Method description:
Replace microphone input with a .wav file. Wave-file will be played to all users in the current channel.

See also:

Example:


StopSoundLoopbackTest
Sound system
Stop the loopback test of specified sound devices.

Function StopSoundLoopbackTest As Boolean

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Stop recorder and playback test. Don't call this function if you have initialized the sound system through LaunchSoundSystem.

See also:

Example:


StopTransmitting
Connection
Stop transmitting voice packets.

Function StopTransmitting As Boolean

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Stop transmitting voice data.

See also:

Example:


StopTransmittingWaveFile
Connection
Stop transmitting wave-file.

Function StopTransmittingWaveFile As Boolean

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Stop playing a .wav file.

See also:

Example:


UninstallTestKeyHook
General
Uninstall a test key hook for setting up hotkeys.

Function UninstallTestKeyHook As Boolean

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Stop invoking the event OnTestKeyToggle(.) whenever a key or mouse is clicked.

See also:

Example:


UnregisterHotKey
HotKey
Unregister a hotkey.

Function UnregisterHotKey(nHotKeyID As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nHotKeyID | Long | No | - | The ID of the registered hotkey.

Method description:
Unregister a hotkey.

See also:

Example:


UnregisterTalkingCallback
Sound system
Cancel reception of callback for audio which has been played.

Function UnregisterTalkingCallback As Boolean

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Call this function to stop the event OnUserAudioData(..) from being called.

See also:

Example:


Interface Events
conaito VoIP EVO SDK - Enterprise Edition/ Secure Edition
The conaito VoIP EVO Events members are called when certain events take place in the conaito VoIP EVO client. When you call most of the commands (the Do* methods) an event will be called afterwards. E.g. if you call DoLogin() the event OnAccepted() will be called if the login was successful and event OnCommandError() will be called if unsuccessful.


OnAccepted
Commands
Login command successful.

Sub OnAccepted(nUserID As Long)

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | The user ID assigned to you.

Event description:
If login was successfull after calling DoLogin the OnAccepted event will be called.

See also:

Example:


OnAddChannel
Commands
A new channel has appeared on the server.

Sub OnAddChannel(nChannelID As Long)

Parameters:

Name | Type | Optional | Default | Description
nChannelID | Long | No | - | The ID of the new channel.

Event description:
A new channel has appeared.

See also:

Example:


OnAddFile
Commands
A file has been added to your channel.

Sub OnAddFile(nChannelID As Long, nFileID As Long)

Parameters:

Name | Type | Optional | Default | Description
nChannelID | Long | No | - | The channel ID which received the new file.
nFileID | Long | No | - | The file ID of the file which was added to the channel.

Event description:
A new file has appear in the channel you're participating in.

See also:

Example:


OnAddUser
Commands
A new user has appeared in your channel.

Sub OnAddUser(nUserID As Long, nChannelID As Long)

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | The ID of the new user.
nChannelID | Long | No | - | The ID of the channel the user joined.

Event description:
A new user has joined the channel you're in.

See also:

Example:


OnBroadcastMessage
Commands
An administrator sent a broadcast message.

Sub OnBroadcastMessage(nUserID As Long, szMessage As String)

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | The user ID.
szMessage | String | No | - | The content of the message which was broadcasted.

Event description:
An administrator has broadcast a message to all users on the server.

See also:

Example:


OnChannelMessage
Commands
A user sent a channel message.

Sub OnChannelMessage(nChannelID As Long, nFromUserID As Long, szMessage As String)

Parameters:

Name | Type | Optional | Default | Description
nChannelID | Long | No | - | The ID of the channel the message was posted to.
nFromUserID | Long | No | - | The ID of the user who sent the message.
szMessage | String | No | - | The content of the message.

Event description:
Someone has typed a channel message in the channel you're currently participating in.

See also:

Example:


OnCommandError
Commands
A command you issued could not be performed.

Sub OnCommandError(nError As Long)

Parameters:

Name | Type | Optional | Default | Description
nError | Long | No | - | The error number (error code).

Event description:
You issued a command which could not be performed. Check out Error Codes section for a list of error numbers and their description.

See also:

Example:


OnConnectFailed
Connection
Failed to connect to server.

Sub OnConnectFailed

Parameters:
Name
Type
Optional
Default
Description
No parameters

Event description:
This event is called if connection to the server could not be established. This event is called after a call to Connect.

See also:

Example:


OnConnectionLost
Connection
Server dropped connection.

Function OnConnectionLost

Parameters:
Name
Type
Optional
Default
Description
No parameters

Event description:
The connection to the server was unexpectedly lost.

See also:

Example:


OnConnectSuccess
Connection
Connection established to server.

Function OnConnectSuccess

Parameters:
Name
Type
Optional
Default
Description
No parameters

Event description:
Connection to the server was established. This event is called after a call to Connect. You can now called DoLogin to logon to the server.

See also:

Example:


OnFileTransferBegin
Commands
A file transfer has started.

Sub OnFileTransferBegin(nTransferID As Long)

Parameters:

Name | Type | Optional | Default | Description
nTransferID | Long | No | - | The transfer ID of the file transfer.

Event description:
A file transfer has started by either a call to DoRecvFile or DoSendFile. Use GetFileTransfer* prefixed functions to get information about the file transfer.

See also:

Example:


OnFileTransferCompleted
Commands
A file transfer has completed.

Sub OnFileTransferCompleted(nTransferID As Long)

Parameters:

Name | Type | Optional | Default | Description
nTransferID | Long | No | - | The transfer ID of the file transfer.

Event description:
A file transfer has completed after being started by either DoRecvFile or DoSendFile.

See also:

Example:


OnFileTransferFailed
Commands
A file transfer has failed.

Sub OnFileTransferFailed(nTransferID As Long, nErrorNum As Long)

Parameters:

Name | Type | Optional | Default | Description
nTransferID | Long | No | - | The transfer ID of the file transfer.
nErrorNum | Long | No | - | -

Event description:
A file transfer has failed.

See also:

Example:


OnHotKeyToggle
HotKey
A registered hotkey was toggled.

Sub OnHotKeyToggle(nHotKeyID As Long, bActive As Boolean)

Parameters:

Name | Type | Optional | Default | Description
nHotKeyID | Long | No | - | The hotkey ID of the registered hotkey.
bActive | Boolean | No | - | True if hotkey has become active and false if has become inactive.

Event description:
A hotkey registered through RegisterHotKey(..) has been activated or deactivated.

See also:

Example:


OnJoinedChannel
Commands
You have joined a new channel.

Sub OnJoinedChannel(nChannelID As Long)

Parameters:

Name | Type | Optional | Default | Description
nChannelID | Long | No | - | The channel ID of the channel you have joined.

Event description:
You have successfully joined a channel. This event is typically called after you have called DoJoinChannel.

See also:

Example:


OnKicked
Commands
You've been kicked off the server.

Function OnKicked

Parameters:
Name
Type
Optional
Default
Description
No parameters

Event description:
You have been kicked off the server.

See also:

Example:


OnLeftChannel
Commands
You have left a channel.

Sub OnLeftChannel(nChannelID As Long)

Parameters:

Name | Type | Optional | Default | Description
nChannelID | Long | No | - | The channel ID of the channel you left.

Event description:
You have left a channel. This is typically because of a call to DoLeaveChannel.

See also:

Example:


OnListCommandCompleted
Commands
A list command has completed, e.g. DoLogin, DoJoinChannel, etc.

Function OnListCommandCompleted

Parameters:
Name
Type
Optional
Default
Description
No parameters

Event description:
A list command has completed. Examples of list commands are: DoLogin, DoJoinChannel, etc.

See also:

Example:


OnLoggedOut
Commands
You have logged out of the server.

Function OnLoggedOut

Parameters:
Name
Type
Optional
Default
Description
No parameters

Event description:
You have logged out of the server.

See also:

Example:


OnRemoveChannel
Commands
A channel on the server was removed.

Sub OnRemoveChannel(nChannelID As Long)

Parameters:

Name | Type | Optional | Default | Description
nChannelID | Long | No | - | The channel ID of the channel.

Event description:
A channel has been removed. Note that you cannot extract information about the channel since it no longer exists.

See also:

Example:


OnRemoveFile
Commands
A file has been remove from your channel.

Sub OnRemoveFile(nChannelID As Long, nFileID As Long)

Parameters:

Name | Type | Optional | Default | Description
nChannelID | Long | No | - | The channel ID where the file was removed from.
nFileID | Long | No | - | The file ID of the file removed.

Event description:
A file has been removed from the channel.

See also:

Example:


OnRemoveUser
Commands
A user has left your channel.

Sub OnRemoveUser(nUserID As Long, nChannelID As Long)

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | The ID of the user.
nChannelID | Long | No | - | The ID of the channel the user left.

Event description:
A user has left the channel. Note that you cannot extract information about the user since the user no longer exists.

See also:

Example:


OnServerUpdate
Commands
The server updated its settings.

Function OnServerUpdate

Parameters:
Name
Type
Optional
Default
Description
No parameters

Event description:
The server has updated its settings. Either its name has changed or a new message of the day has been set.

See also:

Example:


OnSoundDeviceError
General
A sound device failed to initialize. Most likely when a user joined the channel.

Sub OnSoundDeviceError(nDeviceID As Long)

Parameters:

Name | Type | Optional | Default | Description
nDeviceID | Long | No | - | The device ID of the device.

Event description:
A sound device failed to initialize. Most likely when a user joined the channel.

See also:

Example:


OnTestKeyToggle
HotKey
A key was pressed as a result of calling InstallTestKeyHook().

Sub OnTestKeyToggle(nKeyCode As Long, bActive As Boolean)

Parameters:

Name | Type | Optional | Default | Description
nKeyCode | Long | No | - | The virtual key code.
bActive | Boolean | No | - | True if the key is down and false if released.

Event description:
When enabling test keys through InstallTestKeyHook() this event is called when a key is pressed, so it's possible to set up key combinatons.

See also:

Example:


OnUpdateChannel
Commands
A channel has been updated.

Sub OnUpdateChannel(nChannelID As Long)

Parameters:

Name | Type | Optional | Default | Description
nChannelID | Long | No | - | The channel ID of the channel which was updated.

Event description:
A channel changed state.

See also:

Example:


OnUpdateUser
Commands
A user in your channel changed settings.

Sub OnUpdateUser(nUserID As Long, nChannelID As Long)

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | The user ID of the user who changed state.
nChannelID | Long | No | - | The ID of the channel the user is in.

Event description:
A user changed state.

See also:

Example:


OnUserAudioData
Commands
Access the raw audio data which has been played. nSamples parameter is 0 when playback has finished.

Sub OnUserAudioData(nUserID As Long, nSampleRate As Long, pRawAudio() As Integer, nSamples As Long)

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | The ID of the user talking.
nSampleRate | Long | No | - | The sample rate used for playing the stream.
pRawAudio | Integer() | No | - | The short (16-bit) array of raw audio data.
nSamples | Long | No | - | The number of samples in the array. 0 when the stream stops playing.

Event description:
When this event is called it's possible to access the raw audio data which has been played by the sound system. The raw audio data can e.g. be encoded to a different format and stored to disk. Also consider using the VoiceLog library included with this SDK to mix audio from multiple users talking at the same time. For this event to be invoked the method RegisterTalkingCallback(.) must called.

See also:

Example:


OnUserLoggedIn
General
A new user has logged onto the server.

Sub OnUserLoggedIn(nUserID As Long)

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | The user ID of the user.

Event description:
A new user has logged onto the server.

See also:

Example:


OnUserLoggedOut
General
A user has logged of the server.

Sub OnUserLoggedOut(nUserID As Long)

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | The user ID of the user.

Event description:
A user has logged of the server.

See also:

Example:


OnUserMessage
Commands
A user sent you a private message.

Sub OnUserMessage(nUserID As Long, szMessage As String)

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | The user ID of the user who sent the message.
szMessage | String | No | - | The content of the message.

Event description:
You have received a message from a user.

See also:

Example:


OnUserStoppedTalking
Commands
A user in your channel stopped talking.

Sub OnUserStoppedTalking(nUserID As Long)

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | The user ID of the user.

Event description:
A user stopped talking (stopped transmitting voice data).

See also:

Example:


OnUserTalking
Commands
A user in your channel is talking.

Sub OnUserTalking(nUserID As Long)

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | The user ID of the user.

Event description:
A user has started talking (started transmitting voice data).

See also:

Example:


Error Codes
conaito VoIP EVO SDK- Enterprise Edition/ Secure Edition
This document outlines the errors which the conaito VoIP EVO server will return if the command issued cannot be performed. In the Win32 client this would be when you receive the ERROR message and in the .NET client it would be when the event OnCommandError is called and in the COM it would be the event OnCommandError.

General command errors:

Error number | Error description
100 | Syntax error on command. Probably a loose " in a string parameter.
101 | The server does not recognize the command. The command issue is either misspelled or the server does not support the command.
102 | Incompatible protocols. The server is not compatible with the protocol version you have specified.
103 | User doesn't support audio file streams.

Command errors due to insufficent rights:

Error number | Error description
200 | Incorrect password specified for logging onto the server.
201 | Incorrect password for joining channel.
202 | Cannot login. Banned from server.
203 | Cannot perform last command because client is not a channel operator.
204 | Cannot create channel because server does not allow user created channels.
205 | Cannot perform command because client is not an administrator.
206 | Cannot perform command because client is not logged on as user. This error will be issued if the client has logged on with the "admin"-command and tries to join a channel.
207 | Cannot join channel because you have been banned from the channel.
208 | Maximum number of users exceeded. Check < max-users > in EvoVoIP.xml.
209 | Maximum disk usage exceed. Check < max-diskusage > in EvoVoIP.xml.
210 | Failed to open file.
211 | Admin IP is not in access-list.
212 | Maximum number of channel users exceeded.
213 | User doesn't subscribe to audio.
214 | User doesn't subscribe to user messages.
215 | User doesn't subscribe to channel messages.
216 | Maximum number of audio file streams exceeded (only one allowed).
217 | Subscriptions are not enabled.
218 | Subscription is not allowed.

Command errors due to incorrect state:

Error number | Error description
300 | Cannot logon because client is already logged on.
301 | Cannot perform command because client is not logged on.
302 | Cannot logon because connecting on UDP has not been completed. Note that this command only applies to users and not admins, since admins do not require an UDP connection.
303 | Already in channel.
310 | Cannot make new channel because it already exists.
311 | Cannot perform last command because no user with the ID specified exists.
312 | Cannot perform command because the channel specified does not exists.
313 | Cannot delete user-ban because it doesn't exist.
314 | Unkown file transfer.
315 | File not found.
316 | File already exists.
317 | File sharing disabled.
318 | File path not found.
319 | Audio file stream not found.

Misc. errors:

Error number | Error description
400 | File transfer failed.


EVO Server API (COM control)
conaito VoIP EVO SDK - Enterprise Edition/ Secure Edition - EVO Server API (COM)
This help file explains the API exposed by the conaito VoIP EVO Server/Administrator COM control.

Before you're able to use the control you first need to register the DLL-file in the Admin-folder. You do this by typing "regsvr32.exe EvoVoIPAdmin.dll" and a control called "conaito VoIP EVO Server/Admin Type Library" should appear in the list of COM Components.

The conaito VoIP EVO Administrator is a COM control which provides a developer with an administrator interface to a conaito VoIP EVO server. This administration interface can be used to create channels, delete channels, kick users, ban user, etc. To setup a conaito VoIP EVO server open the folder called 'Server' and type "EvoVoIPService.exe -d" to start the server in debug-mode. If you wish to install the server as a Windows service run the "installservice.bat" file. Make sure you enable remote administration in the server's config-file "EvoVoIP.xml" before you try to connect to the server.

Check out the EvoVoIPAdminGUI-example in the Admin-folder to see how to use the conaito VoIP Evo Administrator.


Interface Methods

Interface Methods - EVO Server API (COM)
conaito VoIP EVO SDK - Enterprise Edition/ Secure Edition - EVO Server API (COM)
The section members gives a quick overview of the methods which can be called to interact with the conaito VoIP EVO server.

The section Events members contain the events which takes place after calling certain conaito VoIP EVO members.

To quickly setup and use the admin in your project you first call InitVoIP() to initialize the conaito VoIP EVO admin. Afterwards you call the method Connect() to connect to a server. Once connected, the event OnConnectSuccess() is called and you're now able to logon to the server by calling DoAdminLogin(). If you provided the correct password you'll get the event OnAccepted() event and you're now ready to administrate the server. To shutdown the conaito VoIP EVO admin you call Disconnect() and finally CloseVoIP().

Check out the EvoVoIPAdminGUI-example in the Admin-folder to see how to use the conaito VoIP EVO Administrator.


CancelFileTransfer
File Transfer
Cancel a file transfer.

Function CancelFileTransfer(nTransferID As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nTransferID | Long | No | - | The ID of the file transfer

Method description:
Can chancel an active file transfer. File transfer are started by either the command DoRecvFile or DoSendFile.

See also:

Example:


CloseVoIP
Initialization
Close down the conaito VoIP EVO admin.

Function CloseVoIP As Boolean

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Close the conaito VoIP EVO admin and release its resources. You'll need to call InitVoIP before you call any of the other functions.

See also:

Example:


Connect
Connection
Connect to a conaito VoIP EVO server. Set nUdpPort to 0 unless you intend to use DoSubscribe(..)

Function Function Connect(szHostAddress As String, nTcpPort As Long, nUdpPort As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
szAddress | String | No | - | The IP-address or hostname of the server.
nTcpPort | Long | No | - | The host port of the server (TCP).
nUdpPort | Long | No | - | The host port of the server (UDP).

Method description:
Connect to a conaito VoIP EVO server. This is a non-blocking call, the event OnConnectSuccess will be called once the connection has been established or OnConnectFailed if connection could not be established. Set nUdpPort to 0 unless you intend to use DoSubscribe(..)

See also:

Example:


Disconnect
Connection
Disconnect from a conaito VoIP EVO server.

Function Disconnect As Boolean

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Disconnect from a conaito VoIP EVO server.

See also:

Example:


DoAdminLogin
Commands
Send command to login as administrator to a conaito VoIP EVO server.

Function DoAdminLogin(szUserName As String, szPassword As String) As Boolean

Parameters:

Name | Type | Optional | Default | Description
szUserName | String | No | - | The Username to login on the server.
szPassword | String | No | - | The password to login on the server.

Method description:
Send command to login as administrator to a conaito VoIP EVO server.

See also:

Example:


DoAdminLoginEx
Commands
Alternative login which optional nickname as administrator to a conaito VoIP EVO server.

Function DoAdminLoginEx(szUserName As String, szPassword As String, szNickName As String) As Boolean

Parameters:

Name | Type | Optional | Default | Description
szUserName | String | No | - | The username to login on the server.
szPassword | String | No | - | The password to login on the server.
szNickName | String | No | - | The nick name to login on the server.

Method description:
Alternative login which optional nickname as administrator to a conaito VoIP EVO server.

See also:

Example:


DoBanUser
Commands
Send command to ban user.

Function DoBanUser(nUserID As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | The user ID of the user who should ban from the server.

Method description:
Send command to ban user.

See also:

Example:


DoChangeNick
Commands
Change the nick name.

Function DoChangeNick(szNewNickName As String) As Boolean

Parameters:

Name | Type | Optional | Default | Description
szNewNickName | String | No | - | The new nick name.

Method description:
Change the nick name.

See also:

Example:


DoChangeStatus
Commands
Change the status mode.

Function DoChangeStatus(nStatusMode As Long, szStatusMsg As String) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nStatusMode | Long | No | - | The status mode.
szStatusMsg | String | No | - | The status message.

Method description:
Like the client an admin can have a status mode.

See also:

Example:


DoChannelMessage
Commands
Send a text message to a channel.

Function DoChannelMessage(nChannelID As Long, szMessage As String) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nChannelID | Long | No | - | The channel ID.
szMessage | String | No | - | The message to send.

Method description:
Send a message to a channel.

See also:

Example:


DoCloseStreamFile
Commands
Stop a .wav file being streamed to a user.

Function DoCloseStreamFile(nUserID As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | The user ID.

Method description:
Close a file which is currently being streamed to a user.

See also:

Example:


DoDeleteFile
Commands
Delete a file in a channel.

Function DoDeleteFile(nChannelID As Long, nFileID As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nChannelID | Long | No | - | The channel ID of the file to delete.
nFileID | Long | No | - | The file ID of the file to delete.

Method description:
Delete a file in a channel.

See also:

Example:
void CMyDlg::OnChannelsDelete()
{
int index = m_wndFiles.GetCurSel();
if(index != LB_ERR)
{
int fileid = m_wndFilesList.GetItemData(index);
m_VoIPEvo.DoDeleteFile(fileid);
}
}


DoKickUser
Commands
Send command to kick a user out of the server.

Function DoKickUser(nUserID As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | The user ID of the user to kick.

Method description:
Send command to kick a user out of the server.

See also:

Example:


DoListBans
Commands
Send command to list bans.

Function DoListBans As Boolean

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Send command to list bans.

See also:

Example:


DoMakeChannel
Commands
Send command to make channel.

Function DoMakeChannel(szChannelPath As String, szPassword As String, szTopic As String, szOpPassword As String, nDiskQuota As Empty, nMaxUsers As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
szChannelPath | String | No | - | -
szPassword | String | No | - | -
szTopic | String | No | - | -
szOpPassword | String | No | - | -
nDiskQuota | Empty | No | - | -
nMaxUsers | Long | No | - | -

Method description:
Send command to make channel.

See also:

Example:


DoMakeOperator
Commands
Make a user to operator of the channel.

Function DoMakeOperator(nUserID As Long, nChannelID As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | The user ID of the channel to make operator.
nChannelID | Long | No | - | The channel ID of the channel to make operator.

Method description:
Make a user to operator of the channel.

See also:

Example:


DoMoveUser
Commands
Send command to move user into a channel.

Function DoMoveUser(nUserID As Long, nDestChannelID As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | The user ID.
nDestChannelID | Long | No | - | The channel ID of the destination channel.

Method description:
Send command to move user into a channel.

See also:

Example:


DoQuerySubscribers
Commands
Query who a user is subscribing to.

Function DoQuerySubscribers(nUserID As Long, uSubscriptionMask As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | -
uSubscriptionMask | Long | No | - | -

Method description:
Query what a user is subscribing to, e.g. can he receive audio from the admin.

See also:

Example:


DoQuit
Commands
Send command to quit and disconnect the server.

Function DoQuit As Boolean

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Send command to quit and disconnect the server.

See also:

Example:


DoRecvFile
Commands
Send command to receive file.

Function DoRecvFile(nChannelID As Long, nFileID As Long, szLocalFilePath As String) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nChannelID | Long | No | - | The channel ID of the file to download.
nFileID | Long | No | - | The file ID of the file to download.
szLocalFilePath | String | No | - | The location of where to store the file.

Method description:
Send command to receive file.

See also:

Example:
void CMyDlg::OnChannelsDownload()
{
int index = m_wndFiles.GetCurSel();
if(index != LB_ERR)
{
int fileid = m_wndFilesList.GetItemData(index);
m_VoIPEvo.DoRecvFile(fileid, "C:\\test.txt");
}
}


DoRemoveChannel
Commands
Send command to remove channel.

Function DoRemoveChannel(nChannelID As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nChannelID | Long | No | - | The channel ID.

Method description:
Send command to remove channel.

See also:

Example:


DoSaveConfig
Commands
Send command to save the server's current state to the server's config file.

Function DoSaveConfig As Boolean

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Send command to save the server's current state to the server's config file.

See also:

Example:


DoSendFile
Commands
Send command to upload file.

Function DoSendFile(nChannelID As Long, szLocalFilePath As String) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nChannelID | Long | No | - | The channel ID.
szLocalFilePath | String | No | - | The path to the file to upload.

Method description:
Send command to upload file.

See also:

Example:
void CMyDlg::OnChannelsUpload()
{
m_VoIPEvo.DoSendFile("C:\\test.txt");
}


DoStreamFileToUser
Commands
Stream a .wav file to a user. nSendSampleRate must be either 8000, 16000 or 32000.

Function DoStreamFileToUser(nUserID As Long, szFileName As String, nSendSampleRate As Long, nQuality As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | -
szFileName | String | No | - | -
nSendSampleRate | Long | No | - | -
nQuality | Long | No | - | -

Method description:
Stream a .wav file to a user.

See also:

Example:


DoSubscribe
Commands
Subscribe to all users data, i.e. audio, user messages and channel messages.

Function DoSubscribe(uSubscriptions As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
uSubscriptions | Long | No | - | -

Method description:
Subscribe globally to audio, user messages and channel messages.

See also:

Example:


DoUnbanUser
Commands
Send command to unban user.

Function DoUnbanUser(szIpAddress As String) As Boolean

Parameters:

Name | Type | Optional | Default | Description
szIpAddress | String | No | - | The IP Adress of the who should unban from the server.

Method description:
Send command to unban user.

See also:

Example:


DoUnsubscribe
Commands
Unsubscribe to all users data, i.e. audio, user messages, etc.

Function DoUnsubscribe(uSubscriptions As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
uSubscriptions | Long | No | - | -

Method description:
Unsubscribe to all users data, i.e. audio, user messages, etc.

See also:

Example:


DoUpdateAdmin
Commands
Send command to update the administrator login.

Function DoUpdateAdmin(szUserName As String, szPassword As String) As Boolean

Parameters:

Name | Type | Optional | Default | Description
szUserName | String | No | - | The new user name.
szPassword | String | No | - | The new password.

Method description:
Send command to update the administrator login.

See also:

Example:


DoUpdateChannel
Commands
Send command to update channel.

Function DoUpdateChannel(nChannelID As Long, szPassword As String, szTopic As String, szOpPassword As String, bStatic As Boolean, nDiskQuota As Empty, nMaxUsers As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nChannelID | Long | No | - | -
szPassword | String | No | - | -
szTopic | String | No | - | -
szOpPassword | String | No | - | -
bStatic | Boolean | No | - | -
nDiskQuota | Empty | No | - | -
nMaxUsers | Long | No | - | -

Method description:
Send command to update channel.

See also:

Example:


DoUpdateServer
Commands
Update the server's properties.

Function DoUpdateServer(pServerProp As ServerProperties) As Boolean

Parameters:

Name | Type | Optional | Default | Description
pServerProp | ServerProperties | No | - | -

Method description:
Update the server's properties.

See also:

Example:


DoUserMessage
Commands
Send an administrator text-message to a user.

Function DoUserMessage(nUserID As Long, szMessage As String) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | -
szMessage | String | No | - | -

Method description:
Send an administrator text-message to a user.

See also:

Example:


GetBannedUser
Bans
Get banned user with specified index based on GetBannedUserCount().

Function GetBannedUser(nIndex As Long) As BannedUser

Parameters:

Name | Type | Optional | Default | Description
nIndex | Long | No | - | -

Method description:
Get banned user with specified index based on GetBannedUserCount().

See also:

Example:


GetBannedUserCount
Bans
Get the number of banned users (only valid after a call to DoListBans).

Function GetBannedUserCount As Long

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Get the number of banned users (only valid after a call to DoListBans).

See also:

Example:


GetChannel
Channel
Get the channel with the specified ID.

Function GetChannel(nChannelID As Long) As Channel

Parameters:

Name | Type | Optional | Default | Description
nChannelID | Long | No | - | The channel ID of the channel to examine.

Method description:
Get the channel with the specified ID.

See also:

Example:


GetChannelFile
Channel
Get file with specified ID.

Function GetChannelFile(nChannelID As Long, nFileID As Long) As FileInfo

Parameters:

Name | Type | Optional | Default | Description
nChannelID | Long | No | - | The channel ID of the channel to examine.
nFileID | Long | No | - | The index of the file to extract. Must be less that GetChannelFilesCount.

Method description:
Get file with specified ID.

See also:

Example:


GetChannelFileFromIndex
Channel
Get file with specified index based on GetChannelFilesCount().

Function GetChannelFileFromIndex(nChannelID As Long, nFileIndex As Long) As FileInfo

Parameters:

Name | Type | Optional | Default | Description
nChannelID | Long | No | - | The channel ID of the channel to examine.
nFileIndex | Long | No | - | The index of the file to extract. Must be less that GetChannelFilesCount.

Method description:
Get file with specified index based on GetChannelFilesCount().

See also:

Example:


GetChannelID
Channel
Get the ID of a channel by providing its channel path.

Function GetChannelID(szChannelPath As String) As Long

Parameters:

Name | Type | Optional | Default | Description
szChannelPath | Sting | No | - | The channel path of the channel to examine.

Method description:
Get the ID of a channel by providing its channel path.

See also:

Example:


GetErrorMessage
General
Get the description of an error ID.

Function GetErrorMessage(nCmdError As Long) As String

Parameters:

Name | Type | Optional | Default | Description
nCmdError | Long | No | - | The number of the error.

Method description:
Get the description of an error ID.

See also:

Example:


GetFileTransfer
File Transfer
Get the file transfer with the specified ID.

Function GetFileTransfer(nTransferID As Long) As FileTransfer

Parameters:

Name | Type | Optional | Default | Description
nTransferID | Long | No | - | The transfer ID to examine.

Method description:
Get the file transfer with the specified ID.

See also:

Example:


GetMyUserID
Connection
Get the user ID assigned to you.

Function GetMyUserID As Long

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Get the user ID assigned to you.

See also:

Example:


GetServerProperties
Server
Get the server's properties.

Function GetServerProperties As ServerProperties

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Get the server's properties.

See also:

Example:


GetServerTimeout
Server
Get the number of seconds the client should allow the server not to respond to keepalive requests.

Function GetServerTimeout As Long

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Get the number of seconds the client should allow the server not to respond to keepalive requests.

See also:

Example:


GetTcpKeepAliveInterval
Connection
Gets how often the ping command should be sent to the server.

Function GetTcpKeepAliveInterval As Long

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Gets how often the ping command should be sent to the server.

See also:

Example:


GetUser
User
Get the user with the specified ID.

Function GetUser(nUserID As Long) As User

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | The user ID of the user to examine.

Method description:
Get the user with the specified ID.

See also:

Example:


GetVersion
Initialization
Get the version number of the admin DLL.

Function GetVersion As String

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Get the version number of the admin DLL.

See also:

Example:


InitVoIP
Initialization
Initialize the conaito VoIP EVO admin.

Function InitVoIP As Boolean

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Initialize the conaito VoIP EVO admin.

See also:

Example:


IsAuthorized
Connection
Check if administrator login has been performed (successful call to DoAdminLogin).

Function IsAuthorized As Boolean

Parameters:
Name
Type
Optional
Default
Description
No parameters

Method description:
Check if administrator login has been performed (successful call to DoAdminLogin).

See also:

Example:


IsChannelOperator
General
Check if user if channel operator of the specificed channel.

Function IsChannelOperator(nUserID As Long, nChannelID As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | The user ID of the user to extract information from.
nChannelID | Long | No | - | The channel ID to examine.

Method description:
Check if user if channel operator of the specificed channel.

See also:

Example:


SetChannelAudioFolder
Channel
Set the path of where to store a channel's audio files.

Function SetChannelAudioFolder(nChannelID As Long, szFolderPath As String) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nChannelID | Long | No | - | The channel ID to examine.
szFolderPath | String | No | - | The folder path.

Method description:
Set the path of where to store a channel's audio files.

See also:

Example:


SetServerTimeout
Connection
Set the number of seconds the client should allow the server not to respond to keepalive requests.

Function SetServerTimeout(nTimeoutSec As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nTimeoutSec | Long | No | - | -

Method description:
Set the number of seconds the client should allow the server not to respond to keepalive requests.

See also:

Example:


SetTcpKeepAliveInterval
Connection
Sets how often the ping command should be sent to the server.

Function SetTcpKeepAliveInterval(nPingIntervalSec As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nPingIntervalSec | Long | No | - | -

Method description:
Sets how often the ping command should be sent to the server.

See also:

Example:


SetUserVoiceLogReset
User
Interupt a voice log, e.g. so the file doesn't get too big.

Function SetUserVoiceLogReset(nUserID As Long) As Boolean

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | The user ID of the user to examine.

Method description:
Interupt a voice log, e.g. so the file doesn't get too big.

See also:

Example:


Interface Events

Interface Events - EVO Server API (COM)
conaito VoIP EVO SDK - Enterprise Edition/ Secure Edition - EVO Server API (COM)
The conaito VoIP EVO Events members are called when certain events take place in the conaito VoIP EVO admin. When you call most of the commands (the Do* methods) an event will be called afterwards. E.g. if you call DoAdminLogin() the event OnAccepted() will be called if the login was successful and event OnCommandError() will be called if unsuccessful.

Check out the EvoVoIPAdminGUI-example in the Admin-folder to see how to use the conaito VoIP EVO Administrator.


OnAccepted
Connection
Logged in successfully (DoAdminLogin(.) succeeded).

Sub OnAccepted(nUserID As Long)

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | The user ID assigned to you.

Event description:
If login was successfull after calling DoAdminLogin the OnAccepted event will be called.

See also:

Example:


OnAddChannel
Channel
A new channel has been created.

Sub OnAddChannel(nChannelID As Long)

Parameters:

Name | Type | Optional | Default | Description
nChannelID | Long | No | - | The ID of the new channel.

Event description:
A new channel has been created.

See also:

Example:


OnAddFile
Channel
A file has been added to a channel.

Sub OnAddFile(nChannelID As Long, nFileID As Long)

Parameters:

Name | Type | Optional | Default | Description
nChannelID | Long | No | - | The channel ID which received the new file.
nFileID | Long | No | - | The file ID of the file which was added to the channel.

Event description:
A file has been added to a channel.

See also:

Example:


OnAddUser
Channel
A user has joined a channel.

Sub OnAddUser(nUserID As Long)

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | The ID of the joined user.

Event description:
A user has joined a channel.

See also:

Example:


OnAudioFileStatus
User
A user's audio log file has changed status.

Sub OnAudioFileStatus(nUserID As Long, nFileStatus As AudioFileStatus, szFileName As String, nDuration As Long)

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | -
nFileStatus | AudioFileStatus | No | - | -
szFileName | String | No | - | -
nDuration | Long | No | - | -

Event description:
A user's audio log file has changed status.

See also:

Example:


OnBroadcastMessage
Server
A broadcast message has been sent to the server.

Sub OnBroadcastMessage(nUserID As Long, szMessage As String)

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | The user ID.
szMessage | String | No | - | The content of the message which was broadcasted.

Event description:
A broadcast message has been sent to the server.

See also:

Example:


OnChannelMessage
Channel
A user has sent a message to a channel.

Sub OnChannelMessage(nChannelID As Long, nFromUserID As Long, szMessage As String)

Parameters:

Name | Type | Optional | Default | Description
nChannelID | Long | No | - | The ID of the channel the message was posted to.
nFromUserID | Long | No | - | The ID of the user who sent the message.
szMessage | String | No | - | The content of the message.

Event description:
A user has sent a message to a channel.

See also:

Example:


OnCommandError
Commands
An issued command failed (a Do*-method). Server insures FIFO order of commands.

Sub OnCommandError(nError As Long)

Parameters:

Name | Type | Optional | Default | Description
nError | Long | No | - | The error number (error code).

Event description:
You issued a command which could not be performed. Check out Error Codes section for a list of error numbers and their description.

See also:

Example:


OnConnectionLost
Connection
The connection to the server was lost.

Function OnConnectionLost

Parameters:
Name
Type
Optional
Default
Description
No parameters

Event description:
The connection to the server was unexpectedly lost.

See also:

Example:


OnConnectSuccess
Connection
Connection established to server.

Function OnConnectSuccess

Parameters:
Name
Type
Optional
Default
Description
No parameters

Event description:
Connection to the server was established. This event is called after a call to Connect. You can now called DoAdminLogin to logon to the server.

See also:

Example:


OnFileTransferBegin
File Transfer
A file transfer has started.

Sub OnFileTransferBegin(nTransferID As Long)

Parameters:

Name | Type | Optional | Default | Description
nTransferID | Long | No | - | The transfer ID of the file transfer.

Event description:
A file transfer has started by either a call to DoRecvFile or DoSendFile. Use GetFileTransfer* prefixed functions to get information about the file transfer.

See also:

Example:


OnFileTransferCompleted
File Transfer
A file transfer has completed.

Sub OnFileTransferCompleted(nTransferID As Long)

Parameters:

Name | Type | Optional | Default | Description
nTransferID | Long | No | - | The transfer ID of the file transfer.

Event description:
A file transfer has completed after being started by either DoRecvFile or DoSendFile.

See also:

Example:


OnFileTransferFailed
File Transfer
A file transfer has failed.

Sub OnFileTransferFailed(nTransferID As Long, nErrorNum As Long)

Parameters:

Name | Type | Optional | Default | Description
nTransferID | Long | No | - | The transfer ID of the file transfer.
nErrorNum | Long | No | - | -

Event description:
A file transfer has failed.

See also:

Example:


OnListCommandCompleted
Commands
A list command has completed, e.g. DoAdminLogin(.) or DoListBans(.)

Function OnListCommandCompleted

Parameters:
Name
Type
Optional
Default
Description
No parameters

Event description:
A list command has completed. Examples of list commands are: DoAdminLogin or DoListBans.

See also:

Example:


OnRemoveChannel
Channel
A channel has been removed.

Sub OnRemoveChannel(nChannelID As Long)

Parameters:

Name | Type | Optional | Default | Description
nChannelID | Long | No | - | The channel ID of the channel.

Event description:
A channel has been removed. Note that you cannot extract information about the channel since it no longer exists.

See also:

Example:


OnRemoveFile
Channel
A file has been removed from a channel.

Sub OnRemoveFile(nChannelID As Long, nFileID As Long)

Parameters:

Name | Type | Optional | Default | Description
nChannelID | Long | No | - | The channel ID where the file has been removed from.
nFileID | Long | No | - | The file ID of the file removed.

Event description:
A file has been removed from the channel.

See also:

Example:


OnRemoveUser
Channel
A user has quit a channel.

Sub OnRemoveUser(nUserID As Long)

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | The ID of the user.

Event description:
A user has quit a channel. Note that you cannot extract information about the user since the user no longer exists.

See also:

Example:


OnServerUpdate
Server
The server has updated its properties.

Function OnServerUpdate

Parameters:
Name
Type
Optional
Default
Description
No parameters

Event description:
The server has updated its properties.

See also:

Example:


OnStreamFileCompleted
User
A .wav file finish streaming to a user. Result of DoStreamFileToUser().

Sub OnStreamFileCompleted(nUserID As Long)

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | -

Event description:
A .wav file finish streaming to a user. Result of DoStreamFileToUser().

See also:

Example:


OnUpdateChannel
Channel
A channel has been updated.

Sub OnUpdateChannel(nChannelID As Long)

Parameters:

Name | Type | Optional | Default | Description
nChannelID | Long | No | - | The channel ID of the channel which was updated.

Event description:
A channel changed state.

See also:

Example:


OnUpdateUser
User
A user has updated his settings.

Sub OnUpdateUser(nUserID As Long)

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | The user ID of the user who changed state.

Event description:
A user changed state.

See also:

Example:


OnUserLoggedIn
Server
A user logged in.

Sub OnUserLoggedIn(nUserID As Long)

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | The user ID of the user who logged in.

Event description:
A user logged in.

See also:

Example:


OnUserLoggedOut
Server
A user logged out.

Sub OnUserLoggedOut(nUserID As Long)

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | The user ID of the user who logged out.

Event description:
A user logged out.

See also:

Example:


OnUserMessage
User
A user has sent a private message to another user.

Sub OnUserMessage(nFromUserID As Long, nToUserID As Long, szMessage As String)

Parameters:

Name | Type | Optional | Default | Description
nFromUserID | Long | No | - | The user ID of the user who sent the message.
nToUserID | Long | No | - | The user ID of the user who recieved the message.
szMessage | String | No | - | The content of the message.

Event description:
A user has sent a private message to another user.

See also:

Example:


OnUserSubscribersResult
User
Result of DoQuerySubscribers. Number of subscribers in nSubscribersCount parameter. Note that array 'pSubscriberUserIDs' can have elements although 'nSubscribersCount' is zero.

Sub OnUserSubscribersResult(nUserID As Long, uSubscriptionMask As Long, pSubscriberUserIDs() As Long, nSubscribersCount As Long)

Parameters:

Name | Type | Optional | Default | Description
nUserID | Long | No | - | -
uSubscriptionMask | Long | No | - | -
pSubscriberUserIDs | Long() | No | - | -
nSubscribersCount | Long | No | - | -

Event description:
Result of DoQuerySubscribers. Number of subscribers in nSubscribersCount parameter. Note that array 'pSubscriberUserIDs' can have elements although 'nSubscribersCount' is zero.

See also:

Example:


Admin commands
conaito VoIP EVO SDK - Server (protocol 3.9)
conaito VoIP EVO Admin commands (protocol 3.9)

conaito VoIP EVO uses an asynchronous protocol for communication between client and server. This means that if a client sends a command to the server the first reply/command that is received from the server might not be a response to the previous command sent by the client.

The protocol used by conaito VoIP EVO is text-based which means that you can e.g. use telnet to control the server. Each command is issued by pressing Enter. Simply telnet to the host port of your conaito VoIP EVO server and you should see the server's welcome command. Before issuing commands you should be aware that backspace and arrow-keys are currently not supported. Putty and Linux's telnet don't send data to a server until you press Enter therefore these are recommended.

Remember to send the "ping" command to the server every 60 seconds or less otherwise you'll be dropped by the server.

 Command layout

The commands used for controlling a conaito VoIP EVO server are quite similar to commands used in a console. To illustrate this consider the following command used for moving users:

moveuser userid=10 srcchannel="/" destchannel="/abcd/"

The command in the above example is "moveuser" and the parameters required in order to complete the command are "userid", "srcchannel" and "destchannel". As you've probably figured out the command moves the user with the userid 10 from the root channel to a subchannel called "/abcd/".

The parameters supplied to a command can either be a string, a boolean, an integer or an integer list. If it's a string you must be aware of so-called escape characters which in conaito VoIP EVO's case is \. The reason for this is that strings are encapsulated by the character " so for a string to contain the " character it must be escaped. Because \ is an escape character it must also be escaped in order to be used, so you must use \\ to make a back slash. Since Enter is the command issuer a new line is also escaped which is done by escaping \r\n with \\r\\n.

Currently the conaito VoIP EVO protocol supports four types of parameters which are:

Type | Example | Note
INT | userid=10 | Negative value is supported but never used
STR | message="my \"quoted\" string with a backslash \\ and a new line\\r\\nstarting here." | \ is escape character for \, " and \r\n
BOOL | static=1 | 0 = false, 1 = true
LIST | operators=[3,44,51,67] |

Client to server commands
Login
Command | Parameters | Type
admin | username | STR
 | password | STR

Note:

Server reply: { error | accepted, [addchannel | adduser | addfile]*, serverupdate, fileshareinfo, done }

Example:
admin username="admin" password="secret"

Keepalive
Command | Parameters | Type
ping |  |

Note:

Server reply: { pong }

Example:
ping

Make channel
Command | Parameters | Type
makechannel | channel | STR
 | password | STR
 | topic | STR
 | diskquota | INT
 | oppassword | STR
 | maxusers | INT

Note: A channel created by an administrator is always static.

Server reply: { error | addchannel }

Example:
makechannel channel="/abcd/subabcd" password="secret" topic="my topic"

Update channel
Command | Parameters | Type
updatechannel | channel | STR
 | password | STR
 | topic | STR
 | diskquota | INT
 | oppassword | STR
 | maxusers | INT
 | static | BOOL

Note:

Server reply: { error | updatechannel }

Example:
updatechannel channel="/abcd/subabcd" password="newpasswd" topic="my new topic" diskquota=2000000

Remove channel
Command | Parameters | Type
removechannel | channel | STR

Note: Root channel cannot be removed. Resursive delete is supported (users will be kicked).

Server reply: { error | removechannel }

Example:
removechannel channel="/abcd/subabcd"

Move user
Command | Parameters | Type
moveuser | userid | INT
 | srcchannel | STR
 | destchannel | STR

Note: The destination channel must exist before moving the user.

Server reply: { error | removeuser, adduser }

Example:
moveuser userid=332 srcchannel="/Channel 1" destchannel="/Channel 2"

Kick User
Command | Parameters | Type
kick | userid | INT
 | channel | STR

Note:

Server reply: { error | removeuser }

Example:

Op User
Command | Parameters | Type
op | userid | INT
 | channel | STR

Note:

Server reply: { error | updatechannel}

Example:

Message user
Command | Parameters | Type
message | to | INT
 | channel | STR
 | content | STR
 | type | INT

Note: Send messages to either a user, a channel, as broadcast or as admin.

Server reply: { error | ok }

Example:

message type=1 to=2443 content="This is a user to user message"
message type=2 channel="/Channel 2" content="This is a admin to channel message"
message type=3 content="This is a broadcast message"
message type=4 to=2443 content="This is a admin to user message"

Update server
Command | Parameters | Type
updateserver | servername | STR
 | serverpassword | STR
 | motd | STR
 | forwarding | BOOL
 | channels | BOOL
 | operators | BOOL
 | maxusers | INT
 | opmepassword | STR
 | autosave | BOOL
 | usertimeout | INT
 | subscriptions | BOOL

Note:

Server reply: { error | serverupdate }

Example:

Update admin
Command | Parameters | Type
updateadmin | username | STR
 | password | STR

Note: Update administrator's username and password. An empty username and password will disable remote administration.

Server reply: { error | ok }

Example:

Ban user
Command | Parameters | Type
ban | userid | INT
 | channel | STR

Note: Ban a user from logging into the server.

Server reply: { error | ok }

Example:
ban userid=223 channel="/Channel 1"

Unban user
Command | Parameters | Type
unban | address | STR

Note: Remove the ban of an IP-address from the server. Get

Server reply: { error | ok }

Example:
unban address="192.168.1.10"

List banned users
Command | Parameters | Type
listbans |  |

Note: List the users who are banned from the server.

Server reply: { error | [userbanned]*, done }

Example:

Delete file from channel
Command | Parameters | Type
deletefile | channel | STR
 | filename | STR

Note: Delete a file from a channel.

Server reply: { error | [userbanned]*, done }

Example:
deletefile channel="/Channel 1" filename="MyFile.txt"

Save configuration
Command | Parameters | Type
saveconfig |  |

Note: Make server save current settings in its settings file.

Server reply: { ok }

Example:

Quit
Command | Parameters | Type
quit |  |

Note:

Server reply:

Example:

 Server to client commands
Welcome message
Command | Parameters | Type
welcome | userid | INT
 | servername | STR
 | motd | STR
 | protocol | STR
 | forwarding | BOOL
 | channels | BOOL
 | operators | BOOL

Note:

Example:

Server update
Command | Parameters | Type
serverupdate | motd | STR
 | forwarding | BOOL
 | channels | BOOL
 | operators | BOOL

Note:

Example:

Add user
Command | Parameters | Type
adduser | userid | INT
 | nickname | STR
 | address | STR
 | soundport | INT
 | channel | STR
 | bandmode | INT
 | framesize | INT
 | encodedframesize | INT
 | fpp | INT
 | statusmode | INT
 | statusmessage | STR

Note:

Example:

Update user
Command | Parameters | Type
updateuser | userid | INT
 | nickname | STR
 | address | STR
 | soundport | INT
 | channel | STR
 | bandmode | INT
 | framesize | INT
 | encodedframesize | INT
 | fpp | INT
 | statusmode | INT
 | statusmessage | STR

Note:

Example:

Remove user
Command | Parameters | Type
removeuser | userid | INT

Note:

Example:

Add channel
Command | Parameters | Type
addchannel | channel | STR
 | password | STR
 | topic | STR
 | static | BOOL

Note:

Example:
addchannel channel="/abcd" password="" static=1 topic="The \"root\" topic" operators=[10,23,2]

Add channel
Command | Parameters | Type
addchannel | channel | STR
 | password | STR
 | topic | STR
 | static | BOOL

Note:

Example:

Update channel
Command | Parameters | Type
updatechannel | channel | STR
 | password | STR
 | topic | STR
 | static | BOOL

Note:

Example:

Remove channel
Command | Parameters | Type
removechannel | channel | STR

Note:

Example:

Listing done
Command | Parameters | Type
done |  |

Note: The "done" command will appear when a listing command is completed. In the admin protocol the only listing command is the "login" command which, when successful, will make the server list all the current channels and users (in other words issue a bunch of "addchannel" and "adduser" commands). The "done" command is included because some applications need to know when the entire server state has been issued, so they can disconnect again. This is e.g. useful if you make a PHP-plugin where you want to extract the current state of the server and list the users and channels on a webpage.

Example:

Error
Command | Parameters | Type
error | number | INT
 | message | STR

Note:

Example:


Technical support
conaito VoIP EVO SDK - Enterprise Edition/ Secure Edition
In case you would like to download latest version of conaito VoIP EVO SDK , find out relative information, or licence this SDK, please visit our website http://www.conaito.com

Our technical support staff will provide timely service on your problems encountered during using our product.

Please provide the following information when you submit your questions:
· The installed version of conaito VoIP EVO SDK
· The installed type and version of your operation system
· The details of the problem you encounter. And if it is possible, please inform us how to reproduce this problem
· Please provide your license informations in case you have a licensed SDK

and our technical support staff will deal with your problem with priority.

At the meanwhile, it's our pleasure and honor to receive any comments and suggestions from you.


Our Service

Our Service for your Solutions
conaito Technologies
There is no doubt that "Voice over IP" telephony applications are increasing in importance. The strong demand is reflected in the steep upward trends in take-up. Significant costs can be saved and profits increased through VoIP. We offer a professional support for your projects and solutions to help you realize these benefits. Our experienced development team can assist you modify one of our SDKs or help with advice on how to design your own solutions within other applications.

There are many advantages to be gained for your business, or your own customers, through a range of possible solutions including:

· Direct voice access
The convenience of free and instantaneous direct voice contact with individuals

· Voice messenging
Leaving messages to be listened to at the receiver’s convenience.

· Virtual workgroups
Creating focused group work involving individuals who are in different locations. This is the best way to keep everyone up to date on developments and involving substantial cost savings in travel.

· Virtual workplaces
Virtual workgroups operate in virtual workplaces and this results in significant savings in real estate rental or upkeep.

· Meeting & conferences
Convenient group reviews and discussions, rapid resolution of group issues, can involve corporate or mixed customer-company groups, significant levels of saving of costs such as travel and accommodation.

· Education, schools and eLearning
Particularly useful in supporting home-based learning and economising on student travel and accommodation costs and even books! This can help increase the numbers wishing to use such a basis for education. Teachers can serve a larger number of students without involving buildings, classrooms and associated maintenance and can themselves save costs of travel.

· eCommuting
Major savings can be gained with staff working from home but using “free” data and voice communications. Such eCommuting reduces the real estate burden on companies; particularly important in service industries.

· Online support
Particularly useful in supporting home-based learning and economising on student travel and accommodation costs and even books! This can help increase the numbers wishing to use such a basis for education. Teachers can serve a larger number of students without involving buildings, classrooms and associated maintenance and can themselves save costs of travel.

A large range of online support issues are better resolved using voice communications. In many conventional arrangements customers have to pay for line time when using telephonic support and VoIP eliminates this cost. There are many other potential applications and benefits. Try imaging how VoIP might improve some aspect of your business operations or competitive position as well as help your customers. Let this potential for innovation inspire you to create better ideas! Why not contact us to review your requirements or explore possibilities by benefiting from our extended experience.

The conaito Team
www.conaito.com