LAMPIRAN
1. Detail Call Flow Diagram
-----------------------------------------------------------------------------------INVITE sip:
[email protected] SIP/2.0 Via: SIP/2.0/UDP 10.30.1.64:5060;branch=z9hG4bK5776c63047cc4a31f5a9;rport From: Adi <sip:
[email protected]>;tag=37770dfc To: <sip:
[email protected]> Call-ID:
[email protected] CSeq: 1 INVITE Contact: <sip:
[email protected]: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:
[email protected]>;tag=4450 From: Adi <sip:
[email protected]>;tag=37770dfc Call-ID:
[email protected] CSeq: 2 INVITE User-Agent: NCH Software Axon Virtual PBX 2.04 Content-Length: 0 ---------------------------------------------------------------------------------------------
L1
L2 SIP/2.0 180 Ringing Via: SIP/2.0/UDP 10.30.1.64:5060;branch=z9hG4bK5876c98b47cf4a31f5aa;rport To: <sip:
[email protected]>;tag=4450 From: Adi <sip:
[email protected]>;tag=37770dfc Call-ID:
[email protected] CSeq: 2 INVITE User-Agent: NCH Software Axon Virtual PBX 2.04 Content-Length: 0
------------------------------------------------------------------------------------SIP/2.0 200 OK Via: SIP/2.0/UDP 10.30.1.64:5060;branch=z9hG4bK5876c98b47cf4a31f5aa;rport To: <sip:
[email protected]>;tag=4450 From: Adi <sip:
[email protected]>;tag=37770dfc Call-ID:
[email protected] CSeq: 2 INVITE User-Agent: NCH Software Axon Virtual PBX 2.04 Contact: <sip:
[email protected]: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:
[email protected] SIP/2.0 Via: SIP/2.0/UDP 10.30.1.64:5060;branch=z9hG4bK5776c63047cc4a31f5a9;rport From: Adi <sip:
[email protected]>;tag=37770dfc To: <sip:
[email protected]> Call-ID:
[email protected] CSeq: 1 ACK Contact: <sip:
[email protected]:5060> Content-Length: 0 -----------------------------------------------------------------------------------------------RTP RTP ------------------------------------------------------------------------------------------------BYE sip:
[email protected]:5060 SIP/2.0 Via: SIP/2.0/UDP 10.30.1.62:5060;rport;branch=z9hG4bK653328 To: Adi <sip:
[email protected]>;tag=37770dfc From: <sip:
[email protected]>;tag=4450 Call-ID:
[email protected] CSeq: 157 BYE Max-Forwards: 20 User-Agent: NCH Software Axon Virtual PBX 2.04 Content-Length: 0
L3 2.
Daftar Panggilan
Ekstensi 101 (Softphone 1)
Ekstensi 102 (Softphone 2)
Ekstensi 104 (Hardphone 1)
L4 Ekstensi 103 (Hardphone 2)
3.
Listing Program Softphone Private Private Private Private
Const Const Const Const
SND_FILENAME = &H20000 SND_LOOP = &H8 SND_ASYNC = &H1 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 nomorPrivate 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
L5 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 Private Sub BtnPlayStop_Click()
L6 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 panggilanPrivate 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
L7 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 volumePrivate 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) If Result = False Then
L8 ErrorMessages End If End Sub -window alertPrivate 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 (x-Ten, xlite 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 If Error = 23 Then
L9 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 portPrivate Function InitVaxVoIPObject(ByVal MyIP As String, ByVal FromURI As String) As Boolean Dim ListenPort As Integer
L 10 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 portPrivate 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 Exit For
L 11 End If Next LineNo OpenLines = Result End Function -Tombol loginPrivate 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. ' '******************************************************************** *
L 12
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 Private Sub VaxSIPUserAgentOCX_OnConnecting(ByVal LineNo As Long)
L 13 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) If CheckPlayRingTone.Value = 1 Then
L 14 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, StatusCode As Long, ByVal ReasonPhrase As String) AddToStatusLog ("Saluran-" + Trim(Str(LineNo + 1)) + ": Jawab: " + ReasonPhrase) End Sub
ByVal
Private Sub VaxSIPUserAgentOCX_OnRedirectionResponse(ByVal LineNo As Long, StatusCode As Long, ByVal ReasonPhrase As String, ByVal Contact As String) AddToStatusLog ("Saluran-" + Trim(Str(LineNo + 1)) + ": Jawab: " + ReasonPhrase) End Sub
ByVal
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 aktifitasPrivate Sub VaxSIPUserAgentOCX_OnSuccessToRegister()
L 15 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 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 panggilanPrivate Sub BtnHangUp_Click() Dim Result LineNo = ListLines.ListIndex Result = VaxSIPUserAgentOCX.Disconnect(LineNo) If Result = False Then ErrorMessages End If
-
1,
L 16
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
L 17 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 percakapanPrivate 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 lainPrivate 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 codecPrivate Sub CheckGSM610_Click() '****Codec No 0 untuk GSM 6.10 ***** If CheckGSM610.Value = 1 Then
L 18 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 suaraPrivate 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 LineNo = ListLines.ListIndex
L 19
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 meterPrivate 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) (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 prosesPrivate Sub TimerTick_Timer() If ListLines.ListCount = 0 Then For LineNo = 0 To 6
=
True)
And
L 20 ListLines.AddItem ("Saluran-" + Trim(Str(LineNo + 1)) + " : Kosong") Next LineNo ListLines.ListIndex = 0 End If UpdateListLine (ListLines.ListIndex) If (VaxSIPUserAgentOCX.IsRecording(ListLines.ListIndex) (CheckStartRecording.Value = 1) Then If VaxSIPUserAgentOCX.IsRecording(ListLines.ListIndex) Then CheckStartRecording.Value = 1 Else CheckStartRecording.Value = 0 End If End If
=
True)
<>
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
L 21 4. Hasil Wawancara
Berikut ini adalah hasil wawancara penulis dengan beberapa narasumber dari LPP RRI Jakarta: Wawancara tentang sistem jaringan data yang sedang berjalan Nama
: Hafizh Ahmad
Jabatan
: Staff IT Teknik RRI Jakarta
Tanggal Wawancara : 17 Juni 2009 Jam Wawancara
: 10.00 WIB
Tempat
: Ruang Multimedia RRI Jakarta lantai 6
1. Masalah apakah yang sering terjadi oleh jaringan di RRI Jakarta sekarang ini? Sebenarnya masalah yang kami hadapi jarang bahkan hampir tidak ada. Masalah yang timbul hanyalah masalah koneksi jaringan yang kadang kala putus. Dikarenakan sambungan ISP yang mengalami masalah, itu pun jarang terjadi. 2. Bagaimanakah pengalokasian dan pengaturan bandwidth di RRI yang dilakukan? Tidak ada pengalokasian khusus untuk bandwidth yang ada di RRI baik untuk bandwidth di jaringan LAN maupun bandwidth untuk akses internet. Hal ini dikarenakan belum ada kebutuhan mendesak untuk menggunakan pengalokasian bandwidth secara khusus. Bila nantinya ada kebutuhan kami tinggal membicarakan hal ini ke ISP yang ada untuk melakukan pengalokasian bandwidth khusus seperti menerapkan QoS misalnya sementara untuk jaringan dalam saya kira bandwidth yang ada pun masih cukup untuk mengatasi arus lalu lintas yang ada, hal ini dikarenakan infrastruktur kami sudah mendukung
L 22 penggunaan FastEthernet malah di beberapa bagian sudah mendukung penggunaan GigabitEthernet. 3. Berapa client kah yang dikelola oleh network admin di RRI? Saya tidak dapat mengatakan secara pasti tetapi dari daftar user yang kami miliki terdapat sekitar 77 komputer yang kami kelola. 4. Teknologi apakah yang digunakan oleh RRI untuk melalukan koneksi dengan kantor-kantor cabang di daerah? Di kantor cabang utama RRI menggunakan jalur VPN. Tetapi teknologi ini hampir tidak terpakai dikarenakan SDM yang kurang Jaringan internet kami tetap tersambung ke internet dengan menggunakan ISP Telkom Speedy dengan koneksi 1 Mbps sehingga untuk komunikasi pertukaran data atau informasi menggunakn email. 5. Seberapa besarkah penggunaan komunikasi suara di RRI bila dibandingkan dengan komunikasi menggunakan data dan video? Penggunaan komunikasi suara di RRI menurut saya masih cukup besar karena penggunaan komunikasi suara dinilai lebih efektif dibanding komunikasi data dan video. Efektif dalam hal kompleksitas penggunaannya. 6. Apakah infrastruktur yang ada sudah dapat menerapkan VoIP? Saya rasa itu mungkin saja kalau melihat dari keperluan bandwidth tentu VoIP mungkin diterapkan. Tetapi dilihat dari invetasi system sampai saat ini kami belum melihat ke arah sana, karena harus ada penelitian dan perencanaan lebih mendalam terhadap investasi yang harus kami keluarkan dan juga manfaatnya bagi RRI sendiri.
L 23 Wawancara tentang sistem jaringan suara yang sedang berjalan Nama
: Heri Jatmiko
Jabatan
: Staff Fasilitas Teknik RRI Jakarta
Tanggal Wawancara : 17 Juni 2009 Jam Wawancara
: 13.00 WIB
Tempat
: Ruang PABX RRI Jakarta lantai 6
1. Bagaimanakah jaringan komunikasi suara yang sedang berjalan di RRI? Jaringan suara yang sedang berjalan di RRI saat ini secara garis besar dibagi dua, yang pertama ialah menggunakan PABX server Phillips SHOPO S-1000 yang mengatur lebih dari xxx ekstensi telepon yang berada di RRI cabang Jakarta. Kemudian kamu juga memiliki 45 line telepon yang kamu sewa dari PT. Telkom, ke 45 line ini kami gunakan untuk melakukan koneksi keluar seperti melakukan sambungan lokal, SLJJ dan SLI. 2. Apakah line PABX tersambung dengan line Telkom yang ada? Tidak, PABX dan line Telkom yang ada terpisah satu sama lain jadi ringkasnya adalah line telepon milik PT. Telkom kami gunakan untuk melakukan panggilan keluar sementara line PABX kami gunakan untuk melakukan panggilan antar karyawan RRI yang berada di kantor RRI cabang Jakarta sendiri. 3. Apakah dengan pembagian jalur telepon yang ada itu menguntungkan RRI atau tidak? Saya tidak bisa memastikannya tetapi yang jelas pembagian yang ada menyebabkan tidak fleksibelnya jaringan yang ada karena terjadi pemisah line
L 24 Telkom dan PABX terutama line Telkom yang menjadi sulit untuk diawasi penggunaannya. 4. Fitur-fitur apa saja dari PABX server yang digunakan? Fitur-fitur dari PABX server yang digunakan sampai saat ini masih standar seperti, fitur ekstensi, call forwarding, dan call hold. 5. Apakah masalah yang sering dihadapi oleh jaringan suara yang ada di RRI? Masalah yang ada ialah rusaknya beberapa jalur yang ada saat ini, tetapi hal itu dapat kami atasi dan tidak terlalu berpengaruh serius terhadap berjalannya jaringan yang ada. Mungkin masalah yang ada ialah pada sisi biaya yang dikeluarkan oleh pihak manajemen RRI tiap bulannya yang cukup besar, tetapi saya sendiri tidak memiliki wewenang untuk mengatakan hal tersebut.
L 25 Wawancara tentang komunikasi suara keluar yang dikeluarkan oleh bagian penyiaran Nama
: Darmawan Ismail
Jabatan
: Staff Produksi Program dan Berita RRI Jakarta
Tanggal Wawancara : 17 Juni 2009 Jam Wawancara
: 15.00 WIB
Tempat
: Studio Pro-4 RRI Jakarta lantai 6
1. Seberapa besarkah penggunaan komunikasi suara di RRI bila dibandingkan dengan komunikasi menggunakan data dan video? Kami
tidak
menggunakan
video
untuk
berkomunikasi.
Kami
hanya
menggunakan komunikasi suara, email dan chatting. 2. Digunakan ke mana saja sambungan telepon yang ada saat ini? Sambungan telepon yang ada di bagian Penyiaran RRI digunakan untuk melakukan sambungan ke kantor-kantor media baik dalam negeri maupun luar negeri. Baik itu untuk mendapatkan bahan berita maupun mengkonfirmasikan bahan berita yang kami peroleh. 3. Kantor berita asing mana saja yang sering dihubungi oleh bagian Penyiaran RRI? Kantor berita asing yang kami hubungi biasanya kantor-kantor berita yang sudah memiliki hubungan erat dengan RRI, seperti Reuters dan BBC di Inggris, kemudian VoA dan AP di Amerika Serikat, NHK di Jepang, negara-negara ASEAN dan juga di beberapa negara seperti Australia, China, Korea, Arab Saudi, Perancis, Jerman, Mesir, Rusia, Afrika Selatan, Argentina, Brazil, dan Italia