LAMPIRAN 1. Detail Call Flow Diagram ------------------------------------------------------------------------------------ INVITE 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 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 --------------------------------------------------------------------------------------------- L 1
L 2 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 OK 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 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
L 3 2. Daftar Panggilan Ekstensi 101 (Softphone 1) Ekstensi 102 (Softphone 2) Ekstensi 104 (Hardphone 1)
L 4 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 Private Sub BtnDialPad0_Click() EditPhoneNo.Text = EditPhoneNo.Text + "0" Result = VaxSIPUserAgentOCX.DigitDTMF(ListLines.ListIndex, "0") Private Sub BtnDialPad1_Click() EditPhoneNo.Text = EditPhoneNo.Text + "1" Result = VaxSIPUserAgentOCX.DigitDTMF(ListLines.ListIndex, "1") Private Sub BtnDialPad2_Click() EditPhoneNo.Text = EditPhoneNo.Text + "2" Result = VaxSIPUserAgentOCX.DigitDTMF(ListLines.ListIndex, "2") Private Sub BtnDialPad3_Click() EditPhoneNo.Text = EditPhoneNo.Text + "3" Result = VaxSIPUserAgentOCX.DigitDTMF(ListLines.ListIndex, "3") Private Sub BtnDialPad4_Click() EditPhoneNo.Text = EditPhoneNo.Text + "4" Result = VaxSIPUserAgentOCX.DigitDTMF(ListLines.ListIndex, "4")
L 5 Private Sub BtnDialPad5_Click() EditPhoneNo.Text = EditPhoneNo.Text + "5" Result = VaxSIPUserAgentOCX.DigitDTMF(ListLines.ListIndex, "5") Private Sub BtnDialPad6_Click() EditPhoneNo.Text = EditPhoneNo.Text + "6" Result = VaxSIPUserAgentOCX.DigitDTMF(ListLines.ListIndex, "6") Private Sub BtnDialPad7_Click() EditPhoneNo.Text = EditPhoneNo.Text + "7" Result = VaxSIPUserAgentOCX.DigitDTMF(ListLines.ListIndex, "7") Private Sub BtnDialPad8_Click() EditPhoneNo.Text = EditPhoneNo.Text + "8" Result = VaxSIPUserAgentOCX.DigitDTMF(ListLines.ListIndex, "8") Private Sub BtnDialPad9_Click() EditPhoneNo.Text = EditPhoneNo.Text + "9" Result = VaxSIPUserAgentOCX.DigitDTMF(ListLines.ListIndex, "9") Private Sub BtnDialPadStar_Click() Result = VaxSIPUserAgentOCX.DigitDTMF(ListLines.ListIndex, "*") Private Sub BtnDialPadNo_Click() Result = VaxSIPUserAgentOCX.DigitDTMF(ListLines.ListIndex, "#") Private Sub BtnHelpMore_Click() HelpForm.Show vbmodal -Tombol Memutar Rekaman (kontroller)- Private Sub BtnPlayForward_Click() LineNo = ListLines.ListIndex Result = VaxSIPUserAgentOCX.PlayWaveSkipTo(LineNo, VaxSIPUserAgentOCX.PlayWavePosition(LineNo) + 2) Private Sub BtnPlayPause_Click() LineNo = ListLines.ListIndex Result = VaxSIPUserAgentOCX.PlayWavePause(LineNo) Private Sub BtnPlayRewind_Click() LineNo = ListLines.ListIndex Result = VaxSIPUserAgentOCX.PlayWaveSkipTo(LineNo, VaxSIPUserAgentOCX.PlayWavePosition(LineNo) - 2) Private Sub BtnPlayStop_Click()
L 6 LineNo = ListLines.ListIndex Result = VaxSIPUserAgentOCX.PlayWaveStop(LineNo) Private Sub BtnSetPlayFile_Click() LineNo = ListLines.ListIndex Result = VaxSIPUserAgentOCX.PlayWaveOpen(LineNo, EditPlayFileName.Text) Private Sub BtnStartPlay_Click() LineNo = ListLines.ListIndex Result = VaxSIPUserAgentOCX.PlayWaveStart(LineNo, CheckPlayListen.Value) -Tombol transfer panggilan- Private Sub BtnTransferCall_Click() ToURI = "sip:" + EditTransferPhoneNo.Text + "@" + EditSIPProxy.Text LineNo = ListLines.ListIndex Result = VaxSIPUserAgentOCX.TransferCall(LineNo, ToURI) -Navigasi Chek list - Private Sub CheckAGC_Click() If CheckAGC.Value = 1 Then Result = VaxSIPUserAgentOCX.EnableAGC(8000) VaxSIPUserAgentOCX.DisableAGC Private Sub CheckMuteMic_Click() Result = VaxSIPUserAgentOCX.MuteMic(CheckMuteMic.Value) 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)
L 7 Private Sub CheckSpkMute_Click() Dim Result Result = VaxSIPUserAgentOCX.MuteSpk(CheckSpkMute.Value) Private Sub CheckStartConf_Click() BusyCount = 0 For LineNo = 0 To 6 If VaxSIPUserAgentOCX.IsLineBusy(LineNo) = True Then BusyCount = BusyCount + 1 Next LineNo If BusyCount < 2 And CheckStartConf.Value Then CheckStartConf.Value = False MsgBox ("Terima/Panggil lebih dari satu panggilan, centang cekbox dan tekan mulai") Private Sub CheckStartRecording_Click() If CheckStartRecording.Value = 1 Then Result = VaxSIPUserAgentOCX.StartRecording(ListLines.ListIndex, 2, True) Result = VaxSIPUserAgentOCX.StopRecording(ListLines.ListIndex) Private Sub Form_Unload(Cancel As Integer) Retval = PlaySound(ByVal 0&, 0&, SND_ASYNC Or SND_FILENAME Or SND_LOOP Or SND_NODEFAULT) -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) 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)
L 8 -window alert- Private Sub () Dim Error Error = VaxSIPUserAgentOCX.GetVaxObjectError If Error = 10 Then MsgBox ("Anda sedang tidak online, silahkan login terlebih dahulu.") If Error = 11 Then MsgBox ("Tidak bisa melakukan komunikasi lokal. Coba gunakan softphone lain (x-ten, x- lite or skype etc).") If Error = 12 Then MsgBox ("Code lisensi tidak cocok") If Error = 13 Then MsgBox ("Tidak bisa tersambung ke VaxVoip.") If Error = 14 Then MsgBox ("Perangkat mic tidak terdeteksi.") If Error = 15 Then MsgBox ("Perangkat speaker tidak terdeteksi.") If Error = 16 Then MsgBox ("Mic tidak bisa digunakan.") If Error = 17 Then MsgBox ("Speaker tidak bisa digunakan.") If Error = 18 Then MsgBox ("Perangkat mic anda tidak support dengan pengaturan volume.") If Error = 19 Then MsgBox ("Perangkat speaker anda tidak support dengan pengaturan volume.") If Error = 20 Then MsgBox ("Tidak bisa menginisialisasi rekaman, coba periksa kesalahan.") If Error = 21 Then MsgBox ("Tidak bisa membuka file rekaman.") If Error = 22 Then MsgBox ("Provider SIP URI tidak ditemukan") If Error = 23 Then
L 9 MsgBox ("Codec tidak cocok.") If Error = 24 Then MsgBox ("Error!! membuat permintaan SDP (Session Description Protocol).") If Error = 25 Then MsgBox ("Error!! membuat permintaan SAMBUNGAN. Periksa kembali pengaturan login.") If Error = 26 Then MsgBox ("Error!! membuat permintaan REGISTER. Periksa kembali pengaturan login") If Error = 27 Then MsgBox ("Error!! membuat permintaan KELUAR-REGISTRASI. Periksa kembali.") If Error = 28 Then MsgBox ("Error!! membuat permintaan PEMUTUSAN-SAMBUNGAN.") If Error = 29 Then MsgBox ("SALURAN ini salah.") If Error = 30 Then MsgBox ("SALURAN ini sedang sibuk.") If Error = 31 Then MsgBox ("SALURAN ini tidak bisa dibuka.") If Error = 32 Then MsgBox ("ID panggilan salah.") If Error = 33 Then MsgBox ("Pengaturan login tidak benar.") If Error = 34 Then MsgBox ("ID yang dimasukan tidak terdapat di dalam List Saluran.") If Error = 35 Then MsgBox ("Kesalahan membaca file wave.") If Error = 36 Then MsgBox ("Kesalahan membuat file wave.") If Error = 37 Then MsgBox ("Tidak mensupport format wave.") -koneksi ke SIP port- Private 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 11 <> VaxSIPUserAgentOCX.GetVaxObjectError() Then Exit Do Exit Do ListenPort = ListenPort + 1 Loop If ListenPort >= 7000 Then MsgBox ("Tidak bisa membuka port SIP.") Result = False 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 11 <> VaxSIPUserAgentOCX.GetVaxObjectError() Then Exit For ErrorCount = ErrorCount + 1 LineNo = LineNo - 1 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 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" If EditLoginId.Text = "" Then MsgBox ("Masukan ID Ekstensi.") If EditSIPProxy.Text = "" Then MsgBox ("Masukan alamat SIP proxy atau URI.") VaxSIPUserAgentOCX.SetLicenceKey ("TRIAL-LICENSE-KEY") '****** Membangun SIP dari URI ****** If EditDisplayName = "" Then FromURI = EditLoginId.Text + " <sip:" + EditLoginId.Text + "@" + EditSIPProxy.Text + ">" FromURI = EditDisplayName.Text + " <sip:" + EditLoginId.Text + "@" + EditSIPProxy.Text + ">" '******************************************************************** ' 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) Result = OpenLines(MyIP, 7) If CheckRegisterToProxy.Value = 1 Then Result = VaxSIPUserAgentOCX.RegisterToProxy(3600) AddToStatusLog ("SIP Proxy telah teregister.") If CheckEchoCancel.Value Then VaxSIPUserAgentOCX.EnableEchoNoiseCancellation VaxSIPUserAgentOCX.DisableEchoNoiseCancellation VaxSIPUserAgentOCX.DeselectAllVoiceCodec If CheckGSM610.Value Then VaxSIPUserAgentOCX.SelectVoiceCodec (0) If CheckiLBC.Value Then VaxSIPUserAgentOCX.SelectVoiceCodec (1) If CheckG711A.Value Then VaxSIPUserAgentOCX.SelectVoiceCodec (2) If CheckG711U.Value Then VaxSIPUserAgentOCX.SelectVoiceCodec (3) VaxSIPUserAgentOCX.EnableKeepAlive (10) BtnOnline.Caption = "Keluar Login" UpdateSoundDevices TimerTick.Enabled = True TimerProgressBar.Enabled = True -Aktifitas konfrensi - Private Sub VaxSIPUserAgentOCX_OnCallTransferAccepted(ByVal LineNo As Long) AddToStatusLog ("Saluran-" + Trim(Str(LineNo + 1)) + ": Pemindahan diterima.") Private Sub VaxSIPUserAgentOCX_OnConnecting(ByVal LineNo As Long)
L 13 AddToStatusLog ("Saluran-" + Trim(Str(LineNo + 1)) + ": Menyambungkan.") Private Sub VaxSIPUserAgentOCX_OnDisconnectCall(ByVal LineNo As Long) AddToStatusLog ("Saluran-" + Trim(Str(LineNo + 1)) + ": Diputuskan.") Private Sub VaxSIPUserAgentOCX_OnDTMFDigit(ByVal LineNo As Long, ByVal Digit As String) AddToStatusLog ("Saluran-" + Trim(Str(LineNo + 1)) + ": Masukan kode: " + Digit) Private Sub VaxSIPUserAgentOCX_OnFailToConnect(ByVal LineNo As Long) AddToStatusLog ("Saluran-" + Trim(Str(LineNo + 1)) + ": Gagal tersambung.") Private Sub VaxSIPUserAgentOCX_OnFailToRegister() AddToStatusLog ("Gagal terregistrasi.") 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 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) 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) ListIncomingCall.AddItem ("CLI: " + UserName) If ListIncomingCall.ListIndex = -1 And ListIncomingCall.ListCount > 0 Then ListIncomingCall.ListIndex = 0 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) 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) Private Sub VaxSIPUserAgentOCX_OnPlayWaveDone(ByVal LineNo As Long) AddToStatusLog ("Saluran-" + Trim(Str(LineNo + 1)) + ": Pemutaran wave selesai.") Private Sub VaxSIPUserAgentOCX_OnProvisionalResponse(ByVal LineNo As Long, ByVal StatusCode As Long, ByVal ReasonPhrase As String) AddToStatusLog ("Saluran-" + Trim(Str(LineNo + 1)) + ": Jawab: " + ReasonPhrase) 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) Private Sub VaxSIPUserAgentOCX_OnRequestFailureResponse(ByVal LineNo As Long, ByVal StatusCode As Long, ByVal ReasonPhrase As String) AddToStatusLog ("Saluran-" + Trim(Str(LineNo + 1)) + ": Jawab: " + ReasonPhrase) Private Sub VaxSIPUserAgentOCX_OnServerFailureResponse(ByVal LineNo As Long, ByVal StatusCode As Long, ByVal ReasonPhrase As String) AddToStatusLog ("Saluran-" + Trim(Str(LineNo + 1)) + ": Jawab: " + ReasonPhrase) 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" ListLines.List(LineNo) = "Saluran-" + Trim(Str(LineNo + 1)) + " : SIBUK" 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 CheckMicBoost.Value = 0 -Pesan aktifitas- Private Sub VaxSIPUserAgentOCX_OnSuccessToRegister()
L 15 AddToStatusLog ("Registrasi sukses.") Private Sub VaxSIPUserAgentOCX_OnTryingToRegister() AddToStatusLog ("Menunggu registrasi.") Private Sub VaxSIPUserAgentOCX_OnTryingToUnRegister() AddToStatusLog ("Menunggu keluar registrasi.") Private Sub VaxSIPUserAgentOCX_OnSuccessToUnRegister() AddToStatusLog ("Telah keluar registrasi.") Private Sub VaxSIPUserAgentOCX_OnFailToUnRegister() AddToStatusLog ("Gagal keluar registrasi.") Private Sub BtnDial_Click() Dim ToURI Dim Result If EditPhoneNo.Text = "" Then MsgBox ("Masukan Nomor ID.") '******************************************************* ' 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") Result = VaxSIPUserAgentOCX.Connect(LineNo, ToURI, ComboAudioIn.ListIndex - 1, ComboAudioOut.ListIndex - 1) AddToStatusLog ("Saluran-" + Trim(Str(LineNo + 1)) + ": Memanggil.") ListLines.List(LineNo) = "Saluran-" + Trim(Str(LineNo + 1)) + " : TERSAMBUNG" -navigasi panggilan- Private Sub BtnHangUp_Click() Dim Result LineNo = ListLines.ListIndex Result = VaxSIPUserAgentOCX.Disconnect(LineNo)
L 16 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 Next ListIndex Private Sub BtnAccept_Click() SelectedItemIndex = ListIncomingCall.ListIndex If SelectedItemIndex = -1 Then LineNo = FindLine() If LineNo = -1 Then MsgBox ("Tidak ada saluran yang kosong") CallId = ListIncomingCallIds.List(SelectedItemIndex) Result = VaxSIPUserAgentOCX.AcceptCall(LineNo, CallId, ComboAudioIn.ListIndex - 1, ComboAudioOut.ListIndex - 1) 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 ListLines.List(LineNo) = "Saluran-" + Trim(Str(LineNo + 1)) + " : TERSAMBUNG" Private Sub BtnReject_Click() SelectedItemIndex = ListIncomingCall.ListIndex If SelectedItemIndex = -1 Then CallId = ListIncomingCallIds.List(SelectedItemIndex) Result = VaxSIPUserAgentOCX.RejectCall(CallId)
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 Private Sub BtnResetRecordingBuffer_Click() LineNo = ListLines.ListIndex VaxSIPUserAgentOCX.ResetRecording (LineNo) -menyimpan percakapan- Private Sub BtnSaveToWaveFile_Click() Dim Result LineNo = ListLines.ListIndex Result = VaxSIPUserAgentOCX.SaveRecordingToWaveFile(LineNo, EditSaveFileName.Text) MsgBox ("Berhasil tersimpan") -modul pengaturan lain- Private Sub CheckEchoCancel_Click() If CheckEchoCancel.Value = 1 Then VaxSIPUserAgentOCX.EnableEchoNoiseCancellation VaxSIPUserAgentOCX.DisableEchoNoiseCancellation Private Sub CheckMicBoost_Click() If CheckMicBoost.Value = 1 Then VaxSIPUserAgentOCX.EnableMicBoost VaxSIPUserAgentOCX.DisableMicBoost Private Sub CheckDisturb_Click() If CheckDisturb.Value = 1 Then VaxSIPUserAgentOCX.EnableDonotDisturb VaxSIPUserAgentOCX.DisableDonotDisturb -pemilihan codec- Private Sub CheckGSM610_Click() '****Codec No 0 untuk GSM 6.10 ***** If CheckGSM610.Value = 1 Then
L 18 VaxSIPUserAgentOCX.SelectVoiceCodec (0) VaxSIPUserAgentOCX.DeselectVoiceCodec (0) Private Sub CheckiLBC_Click() '****Codec No 1 untuk ilbc ***** If CheckiLBC.Value = 1 Then VaxSIPUserAgentOCX.SelectVoiceCodec (1) VaxSIPUserAgentOCX.DeselectVoiceCodec (1) Private Sub CheckG711A_Click() '****Codec No 2 untuk G711 A-LAW ***** If CheckG711A.Value = 1 Then VaxSIPUserAgentOCX.SelectVoiceCodec (2) VaxSIPUserAgentOCX.DeselectVoiceCodec (2) Private Sub CheckG711U_Click() '****Codec No 3 untuk G711 U-LAW ***** If CheckG711U.Value = 1 Then VaxSIPUserAgentOCX.SelectVoiceCodec (3) VaxSIPUserAgentOCX.DeselectVoiceCodec (3) -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 Private Function FindLine() As Integer LineNo = ListLines.ListIndex
L 19 If VaxSIPUserAgentOCX.IsLineBusy(LineNo) = False Then FindLine = LineNo Exit Function For LineNo = 0 To 6 If VaxSIPUserAgentOCX.IsLineBusy(LineNo) = False Then FindLine = LineNo Exit Function Next LineNo FindLine = -1 End Function -DU meter- Private Sub TimerProgressBar_Timer() SpkProgress.Value = VaxSIPUserAgentOCX.GetSpkSoundLevel() MicProgress.Value = VaxSIPUserAgentOCX.GetMicSoundLevel() Private Sub AddToStatusLog(ByVal StatusLog As String) ListStatusLog.AddItem (StatusLog) ListStatusLog.TopIndex = ListStatusLog.ListCount - 1 Private Sub UpdateListLine(LineNo As Integer) If CheckStartConf.Value Then For LineCount = 0 To 6 If VaxSIPUserAgentOCX.IsLineHold(LineCount) Then VaxSIPUserAgentOCX.UnHoldLine (LineCount) Next LineCount For LineCount = 0 To 6 If LineCount <> LineNo Then If ((VaxSIPUserAgentOCX.IsLineBusy(LineCount) = True) And (VaxSIPUserAgentOCX.IsLineHold(LineCount) = False)) Then VaxSIPUserAgentOCX.HoldLine (LineCount) Next LineCount If VaxSIPUserAgentOCX.IsLineHold(LineNo) Then VaxSIPUserAgentOCX.UnHoldLine (LineNo) -Pengaturan waktu proses- Private Sub TimerTick_Timer() If ListLines.ListCount = 0 Then For LineNo = 0 To 6
L 20 ListLines.AddItem ("Saluran-" + Trim(Str(LineNo + 1)) + " : Kosong") Next LineNo ListLines.ListIndex = 0 UpdateListLine (ListLines.ListIndex) If (VaxSIPUserAgentOCX.IsRecording(ListLines.ListIndex) = True) <> (CheckStartRecording.Value = 1) Then If VaxSIPUserAgentOCX.IsRecording(ListLines.ListIndex) Then CheckStartRecording.Value = 1 CheckStartRecording.Value = 0 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" If VaxSIPUserAgentOCX.IsLineBusy(LineNo) = True Then Then If VaxSIPUserAgentOCX.IsWaveFilePlaying(LineNo) = True Then If InStr(ItemText, "MEMUTAR") = 0 Then ListLines.List(LineNo) = "Saluran-" + Trim(Str(LineNo + 1)) + " : MEMUTAR" If VaxSIPUserAgentOCX.IsLineHold(LineNo) = True Then If InStr(ItemText, "BICARA") = 0 Then ListLines.List(LineNo) = "Saluran-" + Trim(Str(LineNo + 1)) + " : BICARA" If (InStr(ItemText, "SIBUK") = 0) And (InStr(ItemText, "TERSAMBUNG") = 0) ListLines.List(LineNo) = "Line-" + Trim(Str(LineNo + 1)) + " : SIBUK" If InStr(ItemText, "KOSONG") = 0 Then ListLines.List(LineNo) = "Saluran-" + Trim(Str(LineNo + 1)) + " : KOSONG" Next LineNo
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 Jabatan : Hafizh Ahmad : 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 Jabatan : Heri Jatmiko : 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 Jabatan : Darmawan Ismail : 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