?? mainunit.pas
字號:
unit MainUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, OleCtrls, HelpUnit, VAXSIPUSERAGENTOCXLib_TLB,
ExtCtrls, MMSystem;
type
TMainForm = class(TForm)
GroupBox1: TGroupBox;
EditLoginId: TEdit;
EditLoginPwd: TEdit;
EditSIPProxy: TEdit;
EditOutboundProxy: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
BtnInit: TButton;
EditPhoneNo: TEdit;
BtnDial1: TButton;
BtnDial2: TButton;
BtnDial3: TButton;
BtnDial4: TButton;
BtnDial5: TButton;
BtnDial6: TButton;
BtnDial7: TButton;
BtnDial8: TButton;
BtnDial9: TButton;
BtnDialStar: TButton;
BtnDial0: TButton;
BtnDialNo: TButton;
GroupBox2: TGroupBox;
BtnAcceptCall: TButton;
BtnDial: TButton;
BtnHangUp: TButton;
GroupBoxVolume: TGroupBox;
LabelSpeaker: TLabel;
Label5: TLabel;
TrackBarSpkVol: TTrackBar;
CheckBoxSpkMute: TCheckBox;
GroupBoxLine: TGroupBox;
CheckBoxMuteMic: TCheckBox;
TrackBarMicVol: TTrackBar;
GroupBox3: TGroupBox;
BtnRejectCall: TButton;
GroupBox4: TGroupBox;
Label7: TLabel;
Label8: TLabel;
GroupBox5: TGroupBox;
GroupBox6: TGroupBox;
GroupBox7: TGroupBox;
Label10: TLabel;
CheckBoxStartRecording: TCheckBox;
BtnResetBuffer: TButton;
BtnSave: TButton;
EditRecordFileName: TEdit;
CheckEchoCancel: TCheckBox;
CheckMicBoost: TCheckBox;
CheckDonotDisturb: TCheckBox;
CheckGSM610: TCheckBox;
CheckiLBC: TCheckBox;
CheckG711A: TCheckBox;
CheckG711U: TCheckBox;
EditTotalLines: TEdit;
Label11: TLabel;
CheckBoxEnableSoundDevice: TCheckBox;
ComboBoxDial: TComboBox;
Label12: TLabel;
BtnHold: TButton;
BtnUnhold: TButton;
ListBoxIncomingCall: TListBox;
Label13: TLabel;
ComboBoxIncomingCall: TComboBox;
CheckBoxRingTone: TCheckBox;
ListBoxIcomingCallId: TListBox;
Label14: TLabel;
ComboBoxRecord: TComboBox;
GroupBox8: TGroupBox;
Label15: TLabel;
Label16: TLabel;
CheckBoxPlayListen: TCheckBox;
BtnPlayWaveStart: TButton;
BtnOpenPlayWave: TButton;
EditPlayFileName: TEdit;
ComboBoxPlayWave: TComboBox;
BtnPlayWaveRewind: TButton;
BtnPlayWaveForward: TButton;
BtnPlayWavePause: TButton;
BtnPlayWaveStop: TButton;
BtnMoreHelp: TButton;
CheckBoxAGC: TCheckBox;
GroupBox9: TGroupBox;
Label9: TLabel;
Label17: TLabel;
BtnTransferCall: TButton;
EditTransferNo: TEdit;
ComboBoxTransferCall: TComboBox;
GroupBox10: TGroupBox;
ListStatusLog: TListBox;
Button10: TButton;
TimerTick: TTimer;
SpkProgBar: TProgressBar;
MicProgBar: TProgressBar;
Label6: TLabel;
Label18: TLabel;
TimerProgress: TTimer;
Label19: TLabel;
EditDisplayName: TEdit;
Label20: TLabel;
Label21: TLabel;
Label22: TLabel;
ListViewLineStatus: TListView;
CheckBoxRegisterToProxy: TCheckBox;
GroupBox11: TGroupBox;
GroupBox12: TGroupBox;
ListAudioOut: TListBox;
ListAudioIn: TListBox;
VaxSIPUserAgentOCX: TVaxSIPUserAgentOCX;
function InitVaxObject() : WordBool;
function OpenLines() : WordBool;
procedure FillComboBoxes();
procedure ErrorMessages();
procedure TrackBarSpkVolChange(Sender: TObject);
procedure TrackBarMicVolChange(Sender: TObject);
procedure BtnInitClick(Sender: TObject);
procedure BtnDial1Click(Sender: TObject);
procedure BtnDial2Click(Sender: TObject);
procedure BtnDial3Click(Sender: TObject);
procedure BtnDial4Click(Sender: TObject);
procedure BtnDial5Click(Sender: TObject);
procedure BtnDial6Click(Sender: TObject);
procedure BtnDial7Click(Sender: TObject);
procedure BtnDial8Click(Sender: TObject);
procedure BtnDial9Click(Sender: TObject);
procedure BtnDialStarClick(Sender: TObject);
procedure BtnDial0Click(Sender: TObject);
procedure BtnDialNoClick(Sender: TObject);
procedure BtnDialClick(Sender: TObject);
procedure BtnHangUpClick(Sender: TObject);
procedure BtnAcceptCallClick(Sender: TObject);
procedure BtnRejectCallClick(Sender: TObject);
procedure BtnClearClick(Sender: TObject);
procedure BtnSaveClick(Sender: TObject);
procedure CheckBoxStartRecordingClick(Sender: TObject);
procedure BtnResetBufferClick(Sender: TObject);
procedure CheckBoxSpkMuteClick(Sender: TObject);
procedure CheckBoxMuteMicClick(Sender: TObject);
procedure AddToStatusLog(LogText : String);
function GetCodecName(CodecNo : Integer) : String;
procedure UpdateListAudioIn();
procedure UpdateListAudioOut();
function GetSelectedAudioOut() : Integer;
function GetSelectedAudioIn() : Integer;
procedure VaxSIPUserAgentOCXFailToRegister(Sender: TObject);
procedure VaxSIPUserAgentOCXFailToUnRegister(Sender: TObject);
procedure VaxSIPUserAgentOCXSuccessToUnRegister(Sender: TObject);
procedure CheckEchoCancelClick(Sender: TObject);
procedure CheckMicBoostClick(Sender: TObject);
procedure CheckDonotDisturbClick(Sender: TObject);
procedure CheckGSM610Click(Sender: TObject);
procedure CheckiLBCClick(Sender: TObject);
procedure CheckG711AClick(Sender: TObject);
procedure CheckG711UClick(Sender: TObject);
procedure VaxSIPUserAgentOCXSuccessToRegister(Sender: TObject);
procedure BtnHoldClick(Sender: TObject);
procedure BtnUnholdClick(Sender: TObject);
procedure ComboBoxRecordChange(Sender: TObject);
procedure BtnOpenPlayWaveClick(Sender: TObject);
procedure BtnPlayWaveStartClick(Sender: TObject);
procedure BtnPlayWaveRewindClick(Sender: TObject);
procedure BtnPlayWaveForwardClick(Sender: TObject);
procedure BtnPlayWavePauseClick(Sender: TObject);
procedure BtnPlayWaveStopClick(Sender: TObject);
procedure BtnTransferCallClick(Sender: TObject);
procedure TimerTickTimer(Sender: TObject);
procedure VaxSIPUserAgentOCXCallTransferAccepted(ASender: TObject;
LineNo: Integer);
procedure VaxSIPUserAgentOCXConnecting(ASender: TObject;
LineNo: Integer);
procedure VaxSIPUserAgentOCXDisconnectCall(ASender: TObject;
LineNo: Integer);
procedure VaxSIPUserAgentOCXFailToConnect(ASender: TObject;
LineNo: Integer);
procedure VaxSIPUserAgentOCXGeneralFailureResponse(ASender: TObject;
LineNo, StatusCode: Integer; const ReasonPhrase: WideString);
procedure VaxSIPUserAgentOCXProvisionalResponse(ASender: TObject;
LineNo, StatusCode: Integer; const ReasonPhrase: WideString);
procedure VaxSIPUserAgentOCXRedirectionResponse(ASender: TObject;
LineNo, StatusCode: Integer; const ReasonPhrase,
Contact: WideString);
procedure VaxSIPUserAgentOCXRequestFailureResponse(ASender: TObject;
LineNo, StatusCode: Integer; const ReasonPhrase: WideString);
procedure VaxSIPUserAgentOCXServerFailureResponse(ASender: TObject;
LineNo, StatusCode: Integer; const ReasonPhrase: WideString);
procedure VaxSIPUserAgentOCXIncomingCallRingingStart(ASender: TObject;
const CallId: WideString);
procedure VaxSIPUserAgentOCXIncomingCallRingingStop(ASender: TObject;
const CallId: WideString);
procedure VaxSIPUserAgentOCXPlayWaveDone(ASender: TObject;
LineNo: Integer);
procedure VaxSIPUserAgentOCXTryingToRegister(Sender: TObject);
procedure VaxSIPUserAgentOCXTryingToUnRegister(Sender: TObject);
procedure CheckBoxRingToneClick(Sender: TObject);
procedure BtnMoreHelpClick(Sender: TObject);
procedure VaxSIPUserAgentOCXDTMFDigit(ASender: TObject;
LineNo: Integer; const Digit: WideString);
procedure VaxSIPUserAgentOCXIncomingCall(ASender: TObject;
const CallId, DisplayName, UserName, FromURI, ToURI: WideString);
procedure VaxSIPUserAgentOCXSuccessToConnect(ASender: TObject;
LineNo: Integer; const ToRTPIP: WideString; ToRTPPort: Integer);
procedure FormCreate(Sender: TObject);
procedure TimerProgressTimer(Sender: TObject);
procedure VaxSIPUserAgentOCXFailToReRegister(Sender: TObject);
procedure VaxSIPUserAgentOCXSuccessToReRegister(Sender: TObject);
procedure VaxSIPUserAgentOCXTryingToReRegister(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
MainForm: TMainForm;
implementation
{$R *.dfm}
procedure TMainForm.ErrorMessages();
var
ErrorCode : DWORD;
begin
ErrorCode := VaxSIPUserAgentOCX.GetVaxObjectError();
case ErrorCode of
10: application.MessageBox('You are not Online, please click the ''Online'' button first.', 'VaxVoIP SDK', MB_ICONEXCLAMATION);
11: application.MessageBox('Cann''t open local communication port.', 'VaxVoIP SDK', MB_ICONEXCLAMATION);
12: application.MessageBox('License Key is not valid.', 'VaxVoIP SDK', MB_ICONEXCLAMATION);
13: application.MessageBox('Fail to initialize VaxVoIP task window.', 'VaxVoIP SDK', MB_ICONEXCLAMATION);
14: application.MessageBox('Cann''t access Input/Mic device or device is already in use.', 'VaxVoIP SDK', MB_ICONEXCLAMATION);
15: application.MessageBox('Cann''t access Output/Speaker device or device is already in use.', 'VaxVoIP SDK', MB_ICONEXCLAMATION);
16: application.MessageBox('Input/Mic device is not open.', 'VaxVoIP SDK', MB_ICONEXCLAMATION);
17: application.MessageBox('Output/Speaker device is not open.', 'VaxVoIP SDK', MB_ICONEXCLAMATION);
18: application.MessageBox('Your sound device does not support mic volume.', 'VaxVoIP SDK', MB_ICONEXCLAMATION);
19: application.MessageBox('Your sound device does not support speaker volume.', 'VaxVoIP SDK', MB_ICONEXCLAMATION);
20: application.MessageBox('Recording media initialization fail.', 'VaxVoIP SDK', MB_ICONEXCLAMATION);
21: application.MessageBox('Cann''t open the wave file.', 'VaxVoIP SDK', MB_ICONEXCLAMATION);
22: application.MessageBox('Provided SIP URI is not valid.', 'VaxVoIP SDK', MB_ICONEXCLAMATION);
23: application.MessageBox('Codec is not supported.', 'VaxVoIP SDK', MB_ICONEXCLAMATION);
24: application.MessageBox('Error to create SDP (Session Description Protocol) request.', 'VaxVoIP SDK', MB_ICONEXCLAMATION);
25: application.MessageBox('Error to create CONNECTION request. Please check the provided SIP URI is valid.', 'VaxVoIP SDK', MB_ICONEXCLAMATION);
26: application.MessageBox('Error to create REGISTER request. Please check the provided SIP URI is valid.', 'VaxVoIP SDK', MB_ICONEXCLAMATION);
27: application.MessageBox('Error to create UN-REGISTER request. Please check the provided SIP URI is valid.', 'VaxVoIP SDK', MB_ICONEXCLAMATION);
28: application.MessageBox('Error to create DISCONNECT request.', 'VaxVoIP SDK', MB_ICONEXCLAMATION);
29: application.MessageBox('Line No is not valid.', 'VaxVoIP SDK', MB_ICONEXCLAMATION);
30: application.MessageBox('Line is already busy.', 'VaxVoIP SDK', MB_ICONEXCLAMATION);
31: application.MessageBox('Line is not open.', 'VaxVoIP SDK', MB_ICONEXCLAMATION);
32: application.MessageBox('Invalid Call-Id.', 'VaxVoIP SDK', MB_ICONEXCLAMATION);
33: application.MessageBox('Provided value is not valid.', 'VaxVoIP SDK', MB_ICONEXCLAMATION);
34: application.MessageBox('Selected line is not in voice session.', 'VaxVoIP SDK', MB_ICONEXCLAMATION);
35: application.MessageBox('Fail to read wave file.', 'VaxVoIP SDK', MB_ICONEXCLAMATION);
36: application.MessageBox('Fail to write wave file.', 'VaxVoIP SDK', MB_ICONEXCLAMATION);
37: application.MessageBox('Unsupported wave file format.', 'VaxVoIP SDK', MB_ICONEXCLAMATION);
end;
end;
procedure TMainForm.TrackBarSpkVolChange(Sender: TObject);
begin
{***************************************************************
SetSpkVolume method requires Volume value from 0 to 255 range
but the slider range is 0 to 10, so we multiply the slider value
to 25 to get the required value to pass to SetSpkVolume method
For more detail, please see the method details document
*****************************************************************}
VaxSIPUserAgentOCX.SetSpkVolume(TrackBarSpkVol.Position * 25);
end;
procedure TMainForm.TrackBarMicVolChange(Sender: TObject);
begin
{***************************************************************
SetMicVolume method requires Volume value from 0 to 255 range
but the slider range is 0 to 10, so we multiply the slider value
to 25 to get the required value to pass to SetMicVolume method
For more detail, please see the method details document
*****************************************************************}
VaxSIPUserAgentOCX.SetMicVolume(TrackBarMicVol.Position * 25);
end;
function TMainForm.InitVaxObject() : WordBool;
var
MyIP : string;
FromURI : string;
ListenPort : Integer;
RetValue : WordBool;
Begin
{****** Constructing SIP From URI for IP Telephony *******}
if EditDisplayName.Text = '' then
FromURI := EditLoginId.Text + ' <sip:' + EditLoginId.Text + '@' + EditSIPProxy.Text + '>'
else
FromURI := EditDisplayName.Text + ' <sip:' + EditLoginId.Text + '@' + EditSIPProxy.Text + '>';
{********************************************************************
Listen Port: default SIP port 5060.
SIP Proxy: SIP Proxy IP or FQDN provided by your service provider.
OutboundProxy: SIP outbound/NAT proxy IP or FQDN provided by your
service provider to use SIP phone behind the NAT.
*********************************************************************}
MyIP := VaxSIPUserAgentOCX.GetMyIP();
RetValue := True;
for ListenPort := 5060 to 7000 do
Begin
If False = VaxSIPUserAgentOCX.Initialize(False, MyIP, ListenPort, FromURI, EditOutBoundProxy.Text, EditSIPProxy.Text, EditLoginId.Text, EditLoginPwd.Text, CheckBoxEnableSoundDevice.Checked, StrToInt(EditTotalLines.Text)) Then
begin
if VaxSIPUserAgentOCX.GetVaxObjectError() <> 11 then
begin
ErrorMessages();
RetValue := False;
break;
end
end
else
begin
break;
end;
end;
If ListenPort >= 7000 Then
begin
application.MessageBox('Cann''t open SIP communication port.', 'VaxVoIP SDK', MB_ICONEXCLAMATION);
RetValue := False;
end;
Result := RetValue;
end;
function TMainForm.OpenLines() : WordBool;
var
MyIP : string;
PortRTP : Integer;
LineNo : Integer;
RetValue : WordBool;
ErrorCount : Integer;
Begin
MyIP := VaxSIPUserAgentOCX.GetMyIP();
PortRTP := 7000;
LineNo := 0;
ErrorCount := 0;
RetValue := True;
while LineNo < StrToInt(EditTotalLines.Text) do
Begin
If VaxSIPUserAgentOCX.OpenLine(LineNo, False, MyIP, PortRTP) = False Then
begin
if VaxSIPUserAgentOCX.GetVaxObjectError() = 11 then
begin
ErrorCount := ErrorCount + 1;
LineNo := LineNo - 1;
end
else
begin
ErrorMessages();
RetValue := False;
break;
end;
end;
LineNo := LineNo + 1;
PortRTP := PortRTP + 2; // It is importent to increament RTP Listen Port by 2
If ErrorCount >= (StrToInt(EditTotalLines.Text) + 1000) Then
begin
application.MessageBox('Unable to open RTP communication port.', 'VaxVoIP SDK', MB_ICONEXCLAMATION);
RetValue := False;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -