L 1
1. Detail Call Flow Diagram
---
INVITE sip:102@10.30.1.62 SIP/2.0Via: SIP/2.0/UDP 10.30.1.64:5060;branch=z9hG4bK5776c63047cc4a31f5a9;rport From: Adi <sip:101@10.30.1.62>;tag=37770dfc
To: <sip:102@10.30.1.62> Call-ID: 76c630-1347cc-4a31f5a9@10.30.1.64 CSeq: 1 INVITE Contact: <sip:101@10.30.1.64:5060> User-Agent: VaxSIPUserAgent/3.0 Max-Forwards: 70
Allow: ACK, INFO, BYE, CANCEL, INVITE, NOTIFY, OPTIONS, REFER, REGISTER Content-Type: application/sdp Content-Length: 209 v=0 o=101 124478813714 124478813714 IN IP4 10.30.1.64 s=VaxSoft c=IN IP4 10.30.1.64 t=0 0 m=audio 7000 RTP/AVP 0 101 a=rtpmap:0 PCMU/8000 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-16 a=sendrecv --- SIP/2.0 100 Trying
Via: SIP/2.0/UDP 10.30.1.64:5060;branch=z9hG4bK5876c98b47cf4a31f5aa;rport To: <sip:102@10.30.1.62>;tag=4450
From: Adi <sip:101@10.30.1.62>;tag=37770dfc Call-ID: 76c630-1347cc-4a31f5a9@10.30.1.64 CSeq: 2 INVITE
User-Agent: NCH Software Axon Virtual PBX 2.04 Content-Length: 0
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP 10.30.1.64:5060;branch=z9hG4bK5876c98b47cf4a31f5aa;rport To: <sip:102@10.30.1.62>;tag=4450
From: Adi <sip:101@10.30.1.62>;tag=37770dfc Call-ID: 76c630-1347cc-4a31f5a9@10.30.1.64 CSeq: 2 INVITE
User-Agent: NCH Software Axon Virtual PBX 2.04 Content-Length: 0
---
SIP/2.0 200 OKVia: SIP/2.0/UDP 10.30.1.64:5060;branch=z9hG4bK5876c98b47cf4a31f5aa;rport To: <sip:102@10.30.1.62>;tag=4450
From: Adi <sip:101@10.30.1.62>;tag=37770dfc Call-ID: 76c630-1347cc-4a31f5a9@10.30.1.64 CSeq: 2 INVITE
User-Agent: NCH Software Axon Virtual PBX 2.04 Contact: <sip:102@10.30.1.62:5060>
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY Accept: application/sdp Supported: replaces Content-Type: application/sdp Content-Length: 207 v=0 o=102 12447881503 12447881503 IN IP4 10.30.1.62 s=VaxSoft c=IN IP4 10.30.1.62 t=0 0 m=audio 7000 RTP/AVP 0 101 a=rtpmap:0 PCMU/8000 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-16 a=sendrecv --- ACK sip:102@10.30.1.62 SIP/2.0
Via: SIP/2.0/UDP 10.30.1.64:5060;branch=z9hG4bK5776c63047cc4a31f5a9;rport From: Adi <sip:101@10.30.1.62>;tag=37770dfc
To: <sip:102@10.30.1.62> Call-ID: 76c630-1347cc-4a31f5a9@10.30.1.64 CSeq: 1 ACK Contact: <sip:101@10.30.1.64:5060> Content-Length: 0 --- RTP RTP --- BYE sip:101@10.30.1.64:5060 SIP/2.0
Via: SIP/2.0/UDP 10.30.1.62:5060;rport;branch=z9hG4bK653328 To: Adi <sip:101@10.30.1.62>;tag=37770dfc
From: <sip:102@10.30.1.62>;tag=4450 Call-ID: 76c630-1347cc-4a31f5a9@10.30.1.64 CSeq: 157 BYE
Max-Forwards: 20
User-Agent: NCH Software Axon Virtual PBX 2.04 Content-Length: 0
2.
Daftar Panggilan
Ekstensi 101 (Softphone 1)
Ekstensi 102 (Softphone 2)
Ekstensi 103 (Hardphone 2)
3. Listing Program Softphone
Private Const SND_FILENAME = &H20000 Private Const SND_LOOP = &H8
Private Const SND_ASYNC = &H1 Private Const SND_NODEFAULT = &H2
Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" _ (lpszName As Any, ByVal hModule As Long, ByVal dwFlags As Long) As Boolean
-Tombol input nomor-
Private Sub BtnClearLog_Click() ListStatusLog.Clear
End Sub
Private Sub BtnDialPad0_Click()
EditPhoneNo.Text = EditPhoneNo.Text + "0"
Result = VaxSIPUserAgentOCX.DigitDTMF(ListLines.ListIndex, "0") End Sub
Private Sub BtnDialPad1_Click()
EditPhoneNo.Text = EditPhoneNo.Text + "1"
Result = VaxSIPUserAgentOCX.DigitDTMF(ListLines.ListIndex, "1") End Sub
Private Sub BtnDialPad2_Click()
EditPhoneNo.Text = EditPhoneNo.Text + "2"
Result = VaxSIPUserAgentOCX.DigitDTMF(ListLines.ListIndex, "2") End Sub
Private Sub BtnDialPad3_Click()
EditPhoneNo.Text = EditPhoneNo.Text + "3"
Result = VaxSIPUserAgentOCX.DigitDTMF(ListLines.ListIndex, "3") End Sub
Private Sub BtnDialPad4_Click()
EditPhoneNo.Text = EditPhoneNo.Text + "4"
Result = VaxSIPUserAgentOCX.DigitDTMF(ListLines.ListIndex, "4") End Sub
Private Sub BtnDialPad5_Click()
EditPhoneNo.Text = EditPhoneNo.Text + "5"
Result = VaxSIPUserAgentOCX.DigitDTMF(ListLines.ListIndex, "5") End Sub
Private Sub BtnDialPad6_Click()
EditPhoneNo.Text = EditPhoneNo.Text + "6"
Result = VaxSIPUserAgentOCX.DigitDTMF(ListLines.ListIndex, "6") End Sub
Private Sub BtnDialPad7_Click()
EditPhoneNo.Text = EditPhoneNo.Text + "7"
Result = VaxSIPUserAgentOCX.DigitDTMF(ListLines.ListIndex, "7") End Sub
Private Sub BtnDialPad8_Click()
EditPhoneNo.Text = EditPhoneNo.Text + "8"
Result = VaxSIPUserAgentOCX.DigitDTMF(ListLines.ListIndex, "8") End Sub
Private Sub BtnDialPad9_Click()
EditPhoneNo.Text = EditPhoneNo.Text + "9"
Result = VaxSIPUserAgentOCX.DigitDTMF(ListLines.ListIndex, "9") End Sub
Private Sub BtnDialPadStar_Click()
Result = VaxSIPUserAgentOCX.DigitDTMF(ListLines.ListIndex, "*") End Sub
Private Sub BtnDialPadNo_Click()
Result = VaxSIPUserAgentOCX.DigitDTMF(ListLines.ListIndex, "#") End Sub
Private Sub BtnHelpMore_Click() HelpForm.Show vbModal End Sub
-Tombol Memutar Rekaman (kontroller)-
Private Sub BtnPlayForward_Click() LineNo = ListLines.ListIndex
Result = VaxSIPUserAgentOCX.PlayWaveSkipTo(LineNo, VaxSIPUserAgentOCX.PlayWavePosition(LineNo) + 2)
If Result = False Then ErrorMessages End If
End Sub
Private Sub BtnPlayPause_Click() LineNo = ListLines.ListIndex
Result = VaxSIPUserAgentOCX.PlayWavePause(LineNo) If Result = False Then
ErrorMessages End If
End Sub
Private Sub BtnPlayRewind_Click() LineNo = ListLines.ListIndex
Result = VaxSIPUserAgentOCX.PlayWaveSkipTo(LineNo, VaxSIPUserAgentOCX.PlayWavePosition(LineNo) - 2)
If Result = False Then ErrorMessages End If
End Sub
LineNo = ListLines.ListIndex
Result = VaxSIPUserAgentOCX.PlayWaveStop(LineNo) If Result = False Then
ErrorMessages End If
End Sub
Private Sub BtnSetPlayFile_Click() LineNo = ListLines.ListIndex
Result = VaxSIPUserAgentOCX.PlayWaveOpen(LineNo, EditPlayFileName.Text) If Result = False Then
ErrorMessages End If
End Sub
Private Sub BtnStartPlay_Click() LineNo = ListLines.ListIndex
Result = VaxSIPUserAgentOCX.PlayWaveStart(LineNo, CheckPlayListen.Value) If Result = False Then
ErrorMessages End If
End Sub
-Tombol transfer panggilan-
Private Sub BtnTransferCall_Click()
ToURI = "sip:" + EditTransferPhoneNo.Text + "@" + EditSIPProxy.Text
LineNo = ListLines.ListIndex
Result = VaxSIPUserAgentOCX.TransferCall(LineNo, ToURI) If Result = False Then
ErrorMessages End If
End Sub
-Navigasi Chek list -
Private Sub CheckAGC_Click()
If CheckAGC.Value = 1 Then
Result = VaxSIPUserAgentOCX.EnableAGC(8000) If Result = False Then
ErrorMessages End If Else VaxSIPUserAgentOCX.DisableAGC End If End Sub
Private Sub CheckMuteMic_Click()
Result = VaxSIPUserAgentOCX.MuteMic(CheckMuteMic.Value) End Sub
Private Sub CheckPlayRingTone_Click()
If CheckPlayRingTone.Value <> 1 Then
Retval = PlaySound(ByVal 0&, 0&, SND_ASYNC Or SND_FILENAME Or SND_LOOP Or SND_NODEFAULT)
End If End Sub
Private Sub CheckSpkMute_Click() Dim Result
Result = VaxSIPUserAgentOCX.MuteSpk(CheckSpkMute.Value) End Sub
Private Sub CheckStartConf_Click()
BusyCount = 0
For LineNo = 0 To 6
If VaxSIPUserAgentOCX.IsLineBusy(LineNo) = True Then BusyCount = BusyCount + 1
End If Next LineNo
If BusyCount < 2 And CheckStartConf.Value Then CheckStartConf.Value = False
MsgBox ("Terima/Panggil lebih dari satu panggilan, centang cekbox dan tekan mulai") End If
End Sub
Private Sub CheckStartRecording_Click() If CheckStartRecording.Value = 1 Then
Result = VaxSIPUserAgentOCX.StartRecording(ListLines.ListIndex, 2, True) If Result = False Then
ErrorMessages End If Else Result = VaxSIPUserAgentOCX.StopRecording(ListLines.ListIndex) End If End Sub
Private Sub Form_Unload(Cancel As Integer)
Retval = PlaySound(ByVal 0&, 0&, SND_ASYNC Or SND_FILENAME Or SND_LOOP Or SND_NODEFAULT)
End Sub
-Navigasi slider volume-
Private Sub SliderMicVol_Click()
' Pengaturan volume mic 0 samapai 250' ' tetapi dikompres menjadi 0 ke 10'
' jadi, supaya hasilnya 250 harus dikali 25 '
Dim Result
Result = VaxSIPUserAgentOCX.SetMicVolume(SliderMicVol.Value * 25)
If Result = False Then ErrorMessages End If
End Sub
Private Sub SliderSpkVol_Click()
' Pengaturan volume speaker 0 samapai 250' ' tetapi dikompres menjadi 0 ke 10'
' jadi, supaya hasilnya 250 harus dikali 25 '
Dim Result
Result = VaxSIPUserAgentOCX.SetSpkVolume(SliderSpkVol.Value * 25)
ErrorMessages End If
End Sub
-window alert-
Private Sub ErrorMessages() Dim Error
Error = VaxSIPUserAgentOCX.GetVaxObjectError
If Error = 10 Then
MsgBox ("Anda sedang tidak online, silahkan login terlebih dahulu.") End If
If Error = 11 Then
MsgBox ("Tidak bisa melakukan komunikasi lokal. Coba gunakan softphone lain (Ten, x-lite or skype etc).")
End If
If Error = 12 Then
MsgBox ("Code lisensi tidak cocok") End If
If Error = 13 Then
MsgBox ("Tidak bisa tersambung ke VaxVoip.") End If
If Error = 14 Then
MsgBox ("Perangkat mic tidak terdeteksi.") End If
If Error = 15 Then
MsgBox ("Perangkat speaker tidak terdeteksi.") End If
If Error = 16 Then
MsgBox ("Mic tidak bisa digunakan.") End If
If Error = 17 Then
MsgBox ("Speaker tidak bisa digunakan.") End If
If Error = 18 Then
MsgBox ("Perangkat mic anda tidak support dengan pengaturan volume.") End If
If Error = 19 Then
MsgBox ("Perangkat speaker anda tidak support dengan pengaturan volume.") End If
If Error = 20 Then
MsgBox ("Tidak bisa menginisialisasi rekaman, coba periksa kesalahan.") End If
If Error = 21 Then
MsgBox ("Tidak bisa membuka file rekaman.") End If
If Error = 22 Then
MsgBox ("Provider SIP URI tidak ditemukan") End If
MsgBox ("Codec tidak cocok.") End If
If Error = 24 Then
MsgBox ("Error!! membuat permintaan SDP (Session Description Protocol).") End If
If Error = 25 Then
MsgBox ("Error!! membuat permintaan SAMBUNGAN. Periksa kembali pengaturan login.") End If
If Error = 26 Then
MsgBox ("Error!! membuat permintaan REGISTER. Periksa kembali pengaturan login") End If
If Error = 27 Then
MsgBox ("Error!! membuat permintaan KELUAR-REGISTRASI. Periksa kembali.") End If
If Error = 28 Then
MsgBox ("Error!! membuat permintaan PEMUTUSAN-SAMBUNGAN.") End If
If Error = 29 Then
MsgBox ("SALURAN ini salah.") End If
If Error = 30 Then
MsgBox ("SALURAN ini sedang sibuk.") End If
If Error = 31 Then
MsgBox ("SALURAN ini tidak bisa dibuka.") End If
If Error = 32 Then
MsgBox ("ID panggilan salah.") End If
If Error = 33 Then
MsgBox ("Pengaturan login tidak benar.") End If
If Error = 34 Then
MsgBox ("ID yang dimasukan tidak terdapat di dalam List Saluran.") End If
If Error = 35 Then
MsgBox ("Kesalahan membaca file wave.") End If
If Error = 36 Then
MsgBox ("Kesalahan membuat file wave.") End If
If Error = 37 Then
MsgBox ("Tidak mensupport format wave.") End If
End Sub
-koneksi ke SIP port-
Private Function InitVaxVoIPObject(ByVal MyIP As String, ByVal FromURI As String) As Boolean Dim ListenPort As Integer
Dim Result As Boolean Result = False ListenPort = 5060 Do While ListenPort < 7000
Result = VaxSIPUserAgentOCX.Initialize(False, MyIP, ListenPort, FromURI, EditOutBoundProxy.Text, EditSIPProxy.Text, EditLoginId.Text, EditLoginPwd.Text, True, 7)
If Result = False Then If 11 <> VaxSIPUserAgentOCX.GetVaxObjectError() Then ErrorMessages Exit Do End If Else Exit Do End If ListenPort = ListenPort + 1 Loop If ListenPort >= 7000 Then
MsgBox ("Tidak bisa membuka port SIP.") Result = False End If InitVaxVoIPObject = Result End Function
-Membuka lebih dari satu port-
Private Function OpenLines(ByVal MyIP As String, ByVal TotalNoOfLine As Integer) As Boolean Dim ListenPort As Integer
Dim Result As Boolean Dim ErrorCount As Integer
Result = False ListenPort = 7000 ErrorCount = 0
For LineNo = 0 To (TotalNoOfLine - 1)
Result = VaxSIPUserAgentOCX.OpenLine(LineNo, False, MyIP, ListenPort) If Result = False Then
If 11 <> VaxSIPUserAgentOCX.GetVaxObjectError() Then ErrorMessages Exit For Else ErrorCount = ErrorCount + 1 LineNo = LineNo - 1 End If End If
ListenPort = ListenPort + 2 'dikali 2, untuk me-listen prot RTP'
If ErrorCount >= (TotalNoOfLine + 1000) Then ' Ini kalau tidak bisa membuka port lebih dari 1000 .
MsgBox ("Tidak bisa membuka komunikasi port RTP.") Result = False
End If Next LineNo OpenLines = Result End Function -Tombol login-
Private Sub BtnOnline_Click()
Dim MyIP Dim FromURI
If BtnOnline.Caption = "Keluar Login" Then TimerTick.Enabled = False TimerProgressBar.Enabled = False SpkProgress.Value = 0 MicProgress.Value = 0 VaxSIPUserAgentOCX.UnInitialize ComboAudioIn.Clear ComboAudioOut.Clear
BtnOnline.Caption = "Masuk Login" Exit Sub End If If EditLoginId.Text = "" Then MsgBox ("Masukan ID Ekstensi.") Exit Sub
End If
If EditSIPProxy.Text = "" Then
MsgBox ("Masukan alamat SIP proxy atau URI.") Exit Sub
End If
VaxSIPUserAgentOCX.SetLicenceKey ("TRIAL-LICENSE-KEY")
'****** Membangun SIP dari URI ****** If EditDisplayName = "" Then
FromURI = EditLoginId.Text + " <sip:" + EditLoginId.Text + "@" + EditSIPProxy.Text + ">"
Else
FromURI = EditDisplayName.Text + " <sip:" + EditLoginId.Text + "@" + EditSIPProxy.Text + ">"
End If
'******************************************************************** ' Listen Port: untuk SIP port 5060.
' SIP Proxy: SIP Proxy IP atau FQDN dari server secara online.
' OutboundProxy: SIP outbound/NAT proxy IP atau FQDN dari server online untuk digunakan sambungan SIP dengan NAT.
'
'******************************************************************** *
MyIP = VaxSIPUserAgentOCX.GetMyIP()
Result = InitVaxVoIPObject(MyIP, FromURI) If Result = False Then
Exit Sub End If
Result = OpenLines(MyIP, 7) If Result = False Then Exit Sub
End If
If CheckRegisterToProxy.Value = 1 Then
Result = VaxSIPUserAgentOCX.RegisterToProxy(3600) If Result = False Then
ErrorMessages Exit Sub End If
AddToStatusLog ("SIP Proxy telah teregister.") End If If CheckEchoCancel.Value Then VaxSIPUserAgentOCX.EnableEchoNoiseCancellation Else VaxSIPUserAgentOCX.DisableEchoNoiseCancellation End If VaxSIPUserAgentOCX.DeselectAllVoiceCodec If CheckGSM610.Value Then VaxSIPUserAgentOCX.SelectVoiceCodec (0) End If If CheckiLBC.Value Then VaxSIPUserAgentOCX.SelectVoiceCodec (1) End If If CheckG711A.Value Then VaxSIPUserAgentOCX.SelectVoiceCodec (2) End If If CheckG711U.Value Then VaxSIPUserAgentOCX.SelectVoiceCodec (3) End If VaxSIPUserAgentOCX.EnableKeepAlive (10)
BtnOnline.Caption = "Keluar Login" UpdateSoundDevices TimerTick.Enabled = True TimerProgressBar.Enabled = True End Sub -Aktifitas konfrensi -
Private Sub VaxSIPUserAgentOCX_OnCallTransferAccepted(ByVal LineNo As Long) AddToStatusLog ("Saluran-" + Trim(Str(LineNo + 1)) + ": Pemindahan diterima.") End Sub
AddToStatusLog ("Saluran-" + Trim(Str(LineNo + 1)) + ": Menyambungkan.") End Sub
Private Sub VaxSIPUserAgentOCX_OnDisconnectCall(ByVal LineNo As Long) AddToStatusLog ("Saluran-" + Trim(Str(LineNo + 1)) + ": Diputuskan.") End Sub
Private Sub VaxSIPUserAgentOCX_OnDTMFDigit(ByVal LineNo As Long, ByVal Digit As String) AddToStatusLog ("Saluran-" + Trim(Str(LineNo + 1)) + ": Masukan kode: " + Digit) End Sub
Private Sub VaxSIPUserAgentOCX_OnFailToConnect(ByVal LineNo As Long) AddToStatusLog ("Saluran-" + Trim(Str(LineNo + 1)) + ": Gagal tersambung.") End Sub
Private Sub VaxSIPUserAgentOCX_OnFailToRegister() AddToStatusLog ("Gagal terregistrasi.")
End Sub
Private Function FindCallIdFromList(ByVal CallId As String) As Boolean
Dim Result As Boolean
Result = False
For ListIndex = 0 To (ListIncomingCallIds.ListCount - 1)
If UCase(ListIncomingCallIds.List(ListIndex)) = UCase(CallId) Then Result = True Exit For End If Next ListIndex FindCallIdFromList = Result End Function
Private Sub VaxSIPUserAgentOCX_OnGeneralFailureResponse(ByVal LineNo As Long, ByVal StatusCode As Long, ByVal ReasonPhrase As String)
AddToStatusLog ("Saluran-" + Trim(Str(LineNo + 1)) + " Jawaban: " + ReasonPhrase) End Sub
Private Sub VaxSIPUserAgentOCX_OnIncomingCall(ByVal CallId As String, ByVal DisplayName As String, ByVal UserName As String, ByVal FromURI As String, ByVal ToURI As String)
If FindCallIdFromList(CallId) = False Then ListIncomingCallIds.AddItem (CallId)
If Len(DisplayName) <> 0 Then
ListIncomingCall.AddItem ("CLI: " + DisplayName) Else
ListIncomingCall.AddItem ("CLI: " + UserName) End If
End If
If ListIncomingCall.ListIndex = -1 And ListIncomingCall.ListCount > 0 Then ListIncomingCall.ListIndex = 0
End If End Sub
Private Sub VaxSIPUserAgentOCX_OnIncomingCallRingingStart(ByVal CallId As String)
Retval = PlaySound(ByVal "ring.wav", 0&, SND_ASYNC Or SND_FILENAME Or SND_LOOP Or SND_NODEFAULT)
End If End Sub
Private Sub VaxSIPUserAgentOCX_OnIncomingCallRingingStop(ByVal CallId As String) RemoveCallIdFromList (CallId)
Retval = PlaySound(ByVal 0&, 0&, SND_ASYNC Or SND_FILENAME Or SND_LOOP Or SND_NODEFAULT)
End Sub
Private Sub VaxSIPUserAgentOCX_OnPlayWaveDone(ByVal LineNo As Long)
AddToStatusLog ("Saluran-" + Trim(Str(LineNo + 1)) + ": Pemutaran wave selesai.") End Sub
Private Sub VaxSIPUserAgentOCX_OnProvisionalResponse(ByVal LineNo As Long, ByVal StatusCode As Long, ByVal ReasonPhrase As String)
AddToStatusLog ("Saluran-" + Trim(Str(LineNo + 1)) + ": Jawab: " + ReasonPhrase) End Sub
Private Sub VaxSIPUserAgentOCX_OnRedirectionResponse(ByVal LineNo As Long, ByVal StatusCode As Long, ByVal ReasonPhrase As String, ByVal Contact As String)
AddToStatusLog ("Saluran-" + Trim(Str(LineNo + 1)) + ": Jawab: " + ReasonPhrase) End Sub
Private Sub VaxSIPUserAgentOCX_OnRequestFailureResponse(ByVal LineNo As Long, ByVal StatusCode As Long, ByVal ReasonPhrase As String)
AddToStatusLog ("Saluran-" + Trim(Str(LineNo + 1)) + ": Jawab: " + ReasonPhrase) End Sub
Private Sub VaxSIPUserAgentOCX_OnServerFailureResponse(ByVal LineNo As Long, ByVal StatusCode As Long, ByVal ReasonPhrase As String)
AddToStatusLog ("Saluran-" + Trim(Str(LineNo + 1)) + ": Jawab: " + ReasonPhrase) End Sub
Private Sub VaxSIPUserAgentOCX_OnSuccessToConnect(ByVal LineNo As Long, ByVal ToRTPIP As String, ByVal ToRTPPort As Long)
If LineNo <> ListLines.ListIndex Then VaxSIPUserAgentOCX.HoldLine (LineNo)
ListLines.List(LineNo) = "Saluran-" + Trim(Str(LineNo + 1)) + " : BICARA" Else
ListLines.List(LineNo) = "Saluran-" + Trim(Str(LineNo + 1)) + " : SIBUK" End If
AddToStatusLog ("Saluran-" + Trim(Str(LineNo + 1)) + ": Berhasil tersambung.") Result = VaxSIPUserAgentOCX.GetSpkVolume() SliderSpkVol.Value = Result / 25 Result = VaxSIPUserAgentOCX.GetMicVolume() SliderMicVol.Value = Result / 25 Result = VaxSIPUserAgentOCX.IsMicBoostEnable() If Result = True Then
CheckMicBoost.Value = 1 Else CheckMicBoost.Value = 0 End If End Sub -Pesan aktifitas-
AddToStatusLog ("Registrasi sukses.") End Sub
Private Sub VaxSIPUserAgentOCX_OnTryingToRegister() AddToStatusLog ("Menunggu registrasi.")
End Sub
Private Sub VaxSIPUserAgentOCX_OnTryingToUnRegister() AddToStatusLog ("Menunggu keluar registrasi.") End Sub
Private Sub VaxSIPUserAgentOCX_OnSuccessToUnRegister() AddToStatusLog ("Telah keluar registrasi.")
End Sub
Private Sub VaxSIPUserAgentOCX_OnFailToUnRegister() AddToStatusLog ("Gagal keluar registrasi.")
End Sub
Private Sub BtnDial_Click()
Dim ToURI Dim Result
If EditPhoneNo.Text = "" Then MsgBox ("Masukan Nomor ID.") Exit Sub
End If
'******************************************************* ' Membuat sambungan SIP ke URI (Unified ResourceIdentifier) ' Contoh : nomorID@SIP Proxy
'********************************************************
ToURI = "sip:" + EditPhoneNo.Text + "@" + EditSIPProxy.Text
LineNo = FindLine() If LineNo = -1 Then
MsgBox ("No line is free") Exit Sub
End If
Result = VaxSIPUserAgentOCX.Connect(LineNo, ToURI, ComboAudioIn.ListIndex - 1, ComboAudioOut.ListIndex - 1)
If Result = False Then ErrorMessages Else
AddToStatusLog ("Saluran-" + Trim(Str(LineNo + 1)) + ": Memanggil.")
ListLines.List(LineNo) = "Saluran-" + Trim(Str(LineNo + 1)) + " : TERSAMBUNG"
End If End Sub
-navigasi panggilan-
Private Sub BtnHangUp_Click()
Dim Result
LineNo = ListLines.ListIndex
Result = VaxSIPUserAgentOCX.Disconnect(LineNo) If Result = False Then
ErrorMessages End If
End Sub
Private Sub RemoveCallIdFromList(ByVal CallId As String)
For ListIndex = 0 To (ListIncomingCallIds.ListCount - 1)
If UCase(ListIncomingCallIds.List(ListIndex)) = UCase(CallId) Then ListIncomingCall.RemoveItem (ListIndex) ListIncomingCallIds.RemoveItem (ListIndex) ListIndex = ListIndex - 1 End If Next ListIndex End Sub
Private Sub BtnAccept_Click() SelectedItemIndex = ListIncomingCall.ListIndex If SelectedItemIndex = -1 Then Exit Sub End If LineNo = FindLine() If LineNo = -1 Then
MsgBox ("Tidak ada saluran yang kosong") Exit Sub
End If
CallId = ListIncomingCallIds.List(SelectedItemIndex)
Result = VaxSIPUserAgentOCX.AcceptCall(LineNo, CallId, ComboAudioIn.ListIndex - 1, ComboAudioOut.ListIndex - 1)
If Result = False Then ErrorMessages Exit Sub End If
Retval = PlaySound(ByVal 0&, 0&, SND_ASYNC Or SND_FILENAME Or SND_LOOP Or SND_NODEFAULT)
RemoveCallIdFromList (CallId)
If ListIncomingCall.ListIndex = -1 And ListIncomingCall.ListCount > 0 Then ListIncomingCall.ListIndex = 0
End If
ListLines.List(LineNo) = "Saluran-" + Trim(Str(LineNo + 1)) + " : TERSAMBUNG"
End Sub
Private Sub BtnReject_Click() SelectedItemIndex = ListIncomingCall.ListIndex If SelectedItemIndex = -1 Then Exit Sub End If CallId = ListIncomingCallIds.List(SelectedItemIndex) Result = VaxSIPUserAgentOCX.RejectCall(CallId) If Result = False Then
ErrorMessages Exit Sub End If
Retval = PlaySound(ByVal 0&, 0&, SND_ASYNC Or SND_FILENAME Or SND_LOOP Or SND_NODEFAULT)
RemoveCallIdFromList (CallId)
If ListIncomingCall.ListIndex = -1 And ListIncomingCall.ListCount > 0 Then ListIncomingCall.ListIndex = 0
End If End Sub
Private Sub BtnResetRecordingBuffer_Click() LineNo = ListLines.ListIndex VaxSIPUserAgentOCX.ResetRecording (LineNo) End Sub -menyimpan percakapan-
Private Sub BtnSaveToWaveFile_Click() Dim Result
LineNo = ListLines.ListIndex
Result = VaxSIPUserAgentOCX.SaveRecordingToWaveFile(LineNo, EditSaveFileName.Text) If Result = False Then
ErrorMessages Exit Sub End If
MsgBox ("Berhasil tersimpan") End Sub
-modul pengaturan lain-
Private Sub CheckEchoCancel_Click() If CheckEchoCancel.Value = 1 Then VaxSIPUserAgentOCX.EnableEchoNoiseCancellation Else VaxSIPUserAgentOCX.DisableEchoNoiseCancellation End If End Sub
Private Sub CheckMicBoost_Click() If CheckMicBoost.Value = 1 Then VaxSIPUserAgentOCX.EnableMicBoost Else VaxSIPUserAgentOCX.DisableMicBoost End If End Sub
Private Sub CheckDisturb_Click() If CheckDisturb.Value = 1 Then VaxSIPUserAgentOCX.EnableDonotDisturb Else VaxSIPUserAgentOCX.DisableDonotDisturb End If End Sub -pemilihan codec-
Private Sub CheckGSM610_Click()
'****Codec No 0 untuk GSM 6.10 *****
VaxSIPUserAgentOCX.SelectVoiceCodec (0) Else
VaxSIPUserAgentOCX.DeselectVoiceCodec (0) End If
End Sub
Private Sub CheckiLBC_Click()
'****Codec No 1 untuk iLBC ***** If CheckiLBC.Value = 1 Then VaxSIPUserAgentOCX.SelectVoiceCodec (1) Else VaxSIPUserAgentOCX.DeselectVoiceCodec (1) End If End Sub
Private Sub CheckG711A_Click()
'****Codec No 2 untuk G711 A-LAW ***** If CheckG711A.Value = 1 Then VaxSIPUserAgentOCX.SelectVoiceCodec (2) Else VaxSIPUserAgentOCX.DeselectVoiceCodec (2) End If End Sub
Private Sub CheckG711U_Click()
'****Codec No 3 untuk G711 U-LAW ***** If CheckG711U.Value = 1 Then VaxSIPUserAgentOCX.SelectVoiceCodec (3) Else VaxSIPUserAgentOCX.DeselectVoiceCodec (3) End If End Sub
-Pemilihan perangkat suara-
Private Sub UpdateSoundDevices()
ComboAudioIn.Clear
ComboAudioIn.AddItem ("Perangkat standar")
For DeviceId = 0 To VaxSIPUserAgentOCX.GetAudioInDevTotal() - 1
ComboAudioIn.AddItem (VaxSIPUserAgentOCX.GetAudioInDevName(DeviceId)) Next DeviceId ComboAudioIn.ListIndex = 0 ComboAudioOut.Clear
ComboAudioOut.AddItem ("Perangkat standar")
For DeviceId = 0 To VaxSIPUserAgentOCX.GetAudioOutDevTotal() - 1
ComboAudioOut.AddItem (VaxSIPUserAgentOCX.GetAudioOutDevName(DeviceId)) Next DeviceId ComboAudioOut.ListIndex = 0 End Sub
Private Function FindLine() As Integer
If VaxSIPUserAgentOCX.IsLineBusy(LineNo) = False Then FindLine = LineNo Exit Function End If For LineNo = 0 To 6
If VaxSIPUserAgentOCX.IsLineBusy(LineNo) = False Then FindLine = LineNo Exit Function End If Next LineNo FindLine = -1 End Function -DU meter-
Private Sub TimerProgressBar_Timer()
SpkProgress.Value = VaxSIPUserAgentOCX.GetSpkSoundLevel() MicProgress.Value = VaxSIPUserAgentOCX.GetMicSoundLevel()
End Sub
Private Sub AddToStatusLog(ByVal StatusLog As String) ListStatusLog.AddItem (StatusLog)
ListStatusLog.TopIndex = ListStatusLog.ListCount - 1 End Sub
Private Sub UpdateListLine(LineNo As Integer) If CheckStartConf.Value Then For LineCount = 0 To 6 If VaxSIPUserAgentOCX.IsLineHold(LineCount) Then VaxSIPUserAgentOCX.UnHoldLine (LineCount) End If Next LineCount Else For LineCount = 0 To 6
If LineCount <> LineNo Then
If ((VaxSIPUserAgentOCX.IsLineBusy(LineCount) = True) And (VaxSIPUserAgentOCX.IsLineHold(LineCount) = False)) Then
VaxSIPUserAgentOCX.HoldLine (LineCount) End If End If Next LineCount If VaxSIPUserAgentOCX.IsLineHold(LineNo) Then VaxSIPUserAgentOCX.UnHoldLine (LineNo) End If End If End Sub
-Pengaturan waktu proses-
Private Sub TimerTick_Timer()
If ListLines.ListCount = 0 Then For LineNo = 0 To 6
ListLines.AddItem ("Saluran-" + Trim(Str(LineNo + 1)) + " : Kosong") Next LineNo ListLines.ListIndex = 0 End If UpdateListLine (ListLines.ListIndex) If (VaxSIPUserAgentOCX.IsRecording(ListLines.ListIndex) = True) <> (CheckStartRecording.Value = 1) Then If VaxSIPUserAgentOCX.IsRecording(ListLines.ListIndex) Then CheckStartRecording.Value = 1 Else CheckStartRecording.Value = 0 End If End If For LineNo = 0 To 6 ItemText = ListLines.List(LineNo)
If VaxSIPUserAgentOCX.IsLineOpen(LineNo) = False Then
If InStr(ItemText, "KELUAR") = 0 Then
ListLines.List(LineNo) = "Saluran-" + Trim(Str(LineNo + 1)) + " : KELUAR" End If
Else
If VaxSIPUserAgentOCX.IsLineBusy(LineNo) = True Then
If VaxSIPUserAgentOCX.IsWaveFilePlaying(LineNo) = True Then If InStr(ItemText, "MEMUTAR") = 0 Then
ListLines.List(LineNo) = "Saluran-" + Trim(Str(LineNo + 1)) + " : MEMUTAR" End If
Else
If VaxSIPUserAgentOCX.IsLineHold(LineNo) = True Then If InStr(ItemText, "BICARA") = 0 Then
ListLines.List(LineNo) = "Saluran-" + Trim(Str(LineNo + 1)) + " : BICARA" End If
Else
If (InStr(ItemText, "SIBUK") = 0) And (InStr(ItemText, "TERSAMBUNG") = 0) Then
ListLines.List(LineNo) = "Line-" + Trim(Str(LineNo + 1)) + " : SIBUK" End If
End If End If Else
If InStr(ItemText, "KOSONG") = 0 Then
ListLines.List(LineNo) = "Saluran-" + Trim(Str(LineNo + 1)) + " : KOSONG" End If End If End If Next LineNo End Sub