PCBEST NETWORK SIP Software Development Kit(SDK)
You don't have to experience on so many Telecom and Internet protocols and concepts.
The SDK integrated everything for you.
Click here to download SDK v1.65c(With .NET assembly, VB.Net and C# sample code. VB.NET sample is a full-featured
SIP phone, just like our SIP ActiveX. An IVR sample - SIPServerApp is added). A new SIP ActiveX control is in this version,
which assistants VB6, Delphi and C++ Builder programers to develop SIP applications in just minutes. Music On Hold feature is ready for this version.
SDK Version History
Samples in SDK:
Simple SIP Phone Sample------ VC++6 and VS2005(VC.NET, VB.NET and C#) samples are included.
SIP ActiveX(OCX) with VB6, C++ Builder 6, and Delphi6 samples ------ In OCX sub folder of SDK.
.NET Assembly ------ GTAPIASM project is a C# sample to wrapper unmanaged C API to managed .NET classes
SIP PBX ------ which is the source code of our Production SIP PBX. (VS6 code)
SIP Oubbound Broadcasting Server ------ which can make thousands of SIP calls at once. (VS6 code)
SIP Audio Recording ------ A multipul channels server
which can record RTP package into a WAV file.
SIPServerApp ------ In order to help developers who want to use SDK to develop server
applications, this sample project is added to show how to "Play Audio", "Record Audio", "Echo
Test", "DTMF Detection", "Call Bridge" and "Music on hold". Its source code has two versions: C++ and
VB.NET.
Please be noted: The application developed by unregistered SDK can be only running for one hour each time, and each conversation is limited to 3 minutes.
PCBest Network SIP SDK PRICE LIST
6 simultaneous call/voice sessions USD $1000 for unlimited deployment(This licence is only good for softphone applications)
16 simultaneous call/voice sessions USD $320/Server
32 simultaneous call/voice sessions USD $512/Server
64 simultaneous call/voice sessions USD $896/Server
128 simultaneous call/voice sessions USD $1280/Server
Unlimited simultaneous call/voice sessions USD $2000/Server
Please contact us in case of any question.
Note: Prices are subject to change without notice
Click here to buy SIP SDK.
Click here for API Reference for configuration items.
Click here for API Reference for C++ programmers.
Click here for API Reference for .NET programmers.
Click here for API Reference for ActiveX programmers.
Perfermance Table:
Do you want to know how simple the development of a SIP project would be? See the following C++ code.
Header Code:
#include "GTAPI_Face.h"
#ifdef USE_GTAPI_NAMESPACE
using namespace GTAPI;
#endif
class CGTSIPPBXEnv : public CGTAPIEnv
//Derive an enviroment class for your application
{
public:
CGTSIPPBXEnv();
virtual ~CGTSIPPBXEnv();
virtual bool StartServer();
virtual bool StopServer();
virtual void On_RecvConnected(int ch); //virtual function to overwrite action
when a channel is connected
virtual void On_RecvOffered(int ch, const char* sCaller, const char* sCallee, const char* sDestAddr, \
const char* sViaAddr, const char* sFromIP, unsigned short nFromPort);
//virtual function to overwrite action when there is an imcoming call
virtual void On_RecvDialing(int ch, const char* sCaller, const char* sCallee); //virtual function to overwrite action when strating
to dial
virtual void On_RecvIdle(int ch); //virtual
function when call is disconnected, and the status of channel is back to idle
virtual void On_RecvRinging(int ch); //virtual function when remote
side responsed ringing
virtual void On_RecvRegStatus(int user_id, int status, int regtime);
//virtual function when a sip account is successfully registered or unregistered
virtual void On_RecvAudioPlayDone(int ch, int doneReason, const char* dtmfBuffer);
//virtual function to tell the audio is played off
virtual void On_RecvAudioRecordDone(int ch, int doneReason, const char* dtmfBuffer);
//virtual function to tell the recording audio is stopped
virtual void On_RecvAudioStatus(int ch, int resType, int statusCode);
//virtual function to report the audio status
virtual void On_RecvDTMFDone(int ch); //virtual function to tell DTMF is collected
virtual void On_RecvDTMFKeyDown(int ch, unsigned char keyValue, unsigned long ticks);
//virtual function to tell a key is pressed
virtual void On_RecvDTMFKeyUp(int ch, unsigned char keyValue, unsigned long ticks);
//virtual function to tell a key is released
};
CPP Code:
CGTSIPPBXEnv::CGTSIPPBXEnv():CGTAPIEnv()
{
//Server SIP and RTP IP address and ports
//CFG_SetValue("gtsrv.sip.ip.address", "");
CFG_SetValue("gtsrv.sip.ip.port", "7812");
CFG_SetValue("gtsrv.sip.rtpstartrange", "22400");
CFG_SetValue("gtsrv.sip.rtpendrange", "22800");
//log info
CFG_SetValue(GTSRV_INI_LOG_LEVEL, "4");
CFG_SetValue(GTSRV_INI_LOG, "c:\\gtsippbx.txt");
//channel info
CFG_SetValue("gtsrv.sip.boardnum.per.server", "1");
CFG_SetValue("gtsrv.sip.spannum.per.board", "2");
CFG_SetValue("gtsrv.sip.channum.per.span", "8");
CFG_SetValue("gtsrv.channel.inbound", "0-3");
CFG_SetValue("gtsrv.channel.outbound", "4-15");
//internal net port to report status of channels
CFG_SetValue(GTSRV_INI_NET_PORT, "9410");
//configuration files
CFG_SetValue(GTSRV_CFG_FILENAME, "GTPBXSrv.ini");
}
CGTSIPPBXEnv::~CGTSIPPBXEnv()
{
}
bool CGTSIPPBXEnv::StartServer()
{
//SIP Account info
CFG_SetValue("gtsrv.sip.reg.client.num", "1");
CFG_SetValue("gtsrv.sip.reg1.displayname", m_sipAccDisplayName);
CFG_SetValue("gtsrv.sip.reg1.username", m_sipAccUserName);
CFG_SetValue("gtsrv.sip.reg1.domain", m_sipAccDomainName);
CFG_SetValue("gtsrv.sip.reg1.proxy", m_sipAccProxyName);
CFG_SetValue("gtsrv.sip.reg1.authorization", m_sipAccAuthName);
CFG_SetValue("gtsrv.sip.reg1.password", m_sipAccPassword);
CFG_SetValue("gtsrv.sip.reg1.expire", "3600");
bool ret = CGTAPIEnv::StartServer();
Send_GetRegStatus(0);
return ret;
}
bool CGTSIPPBXEnv::StopServer()
{
return CGTAPIEnv::StopServer();
}
void CGTSIPPBXEnv::On_RecvConnected(int ch)
{
CGTAPIEnv::On_RecvConnected(ch);
}
void CGTSIPPBXEnv::On_RecvOffered(int ch, const char* sCaller, const char* sCallee, const char* sDestAddr, \
const char* sViaAddr, const char* sFromIP, unsigned short nFromPort)
{
CGTAPIEnv::On_RecvOffered(ch, sCaller, sCallee, sDestAddr, sViaAddr, sFromIP, nFromPort);
/*if(Auto_Answer)*/
Send_Answer(ch);
}
void CGTSIPPBXEnv::On_RecvDialing(int ch, const char* sCaller, const char* sCallee)
{
CGTAPIEnv::On_RecvDialing(ch, sCaller, sCallee);
}
void CGTSIPPBXEnv::On_RecvIdle(int ch)
{
CGTAPIEnv::On_RecvIdle(ch);
}
void CGTSIPPBXEnv::On_RecvRinging(int ch)
{
CGTAPIEnv::On_RecvRinging(ch);
}
void CGTSIPPBXEnv::On_RecvRegStatus(int user_id, int status, int regtime)
{
CGTAPIEnv::On_RecvRegStatus(user_id, status, regtime);
}
void CGTSIPPBXEnv::On_RecvAudioPlayDone(int ch, int doneReason, const char* dtmfBuffer)
{
}
void CGTSIPPBXEnv::On_RecvAudioRecordDone(int ch, int doneReason, const char* dtmfBuffer)
{
}
void CGTSIPPBXEnv::On_RecvAudioStatus(int ch, int resType, int statusCode)
{
}
void CGTSIPPBXEnv::On_RecvDTMFDone(int ch)
{
}
void CGTSIPPBXEnv::On_RecvDTMFKeyDown(int ch, unsigned char keyValue, unsigned long ticks)
{
}
void CGTSIPPBXEnv::On_RecvDTMFKeyUp(int ch, unsigned char keyValue, unsigned long ticks)
{
}
Please contact us if you have any questions.
|
|