PERCOBAAN 9 APLIKASI DATABASE UNTUK PEMROGRAMAN IVR
9.1. Tujuan : Setelah melaksanakan praktikum ini mahasiswa diharapkan mampu : •
Membuat Database Layanan IVR dengan MS-Access
•
Membuat koneksi antara Database dengan C++
•
Menjalankan rogram IVR dengan aplikasi database
9.2. Peralatan : •
PABX
•
2 pesawat Telepon
•
1 PC dilengkapi dengan Dialogic Card (D/41JCT-LS atau D/4PCI-U)
9.3. Teori : 9.3.1. Menyiapkan Aplikasi Data Base Aplikasi data base diperlukan jika Layanan sistim informasi menggunakan jenis data inventory, yaitu data yang memerlukan inventarisasi, seperti data Pelanggan, data Jenis Barang, data Nilai Mahasiswa dan sebagainya. Data base yang digunakan dalam sistim Layanan ini adalah Data base Microsoft Access. Tidak menutup kemungkinan menggunakan jenis data base yang lain, selama data base tersebut dapat di-akses dari program C yang disediakan oleh Dialogic. Langkah-langkah yang diperlukan untuk menyiapkan aplikasi data base adalah : 1. Membuat Tabel 2. Membuka ODBC untuk koneksi Database dengan C++ 3. Mengaktifkan ADODC dan ADO Data Grid 4. Me-run database melalui aplikasi C++
Percobaan 9. Aplikasi Database Pada Pemrograman IVR
83
1. Membuat Tabel Buka Microsoft Access, pilih File Æ New Æ blank Database Æ Create Table in Design view. Isi nama field dan tipe masing-masing field. Simpan dengan nama tertentu (tanpa Primary key).
Gambar 9.1. Tampilan field untuk Tabel pada Microsoft Access
Buka file Tabel yang sudah dibuat tadi. Isi masing-masing field dengan informasi yang diperlukan.
Gambar 9.2. Isi Masing-masing Field Keluar dari Tabel
Percobaan 9. Aplikasi Database Pada Pemrograman IVR
84
2. Membuka ODBC (Open Database Connectivity) ODBC adalah standarisasi yang diperlukan jika kita ingin mengakses database melalui aplikasi tertentu. ODBC membangun semacam layer tengah antara program aplikasi dan Database Management System (DBMS). Cara mengaktifkan ODBC pada Windows adalah sebagai berikut : Control Panel Æ Administrative Tools Æ Data Source (ODBC) Pada Data Source Æ System DSN Æ Add Æ Driver do Microsoft Access Æ Finish
Gambar 9.3. Tampilan ODBC
Pada ODBC Microsoft Access Setup : Data Source Name : …… (beri nama file untuk menghubungkan Database Access dengan C++). Description : ……(bisa diberi nama yang sama dengan di atas). Pilih Select Æ cari directory dimana database Access 97 disimpan. Æ Ok. Keluar dari ODBC.
Percobaan 9. Aplikasi Database Pada Pemrograman IVR
85
3. Mengaktifkan ADODC dan ADO Data Grid ADODC (ActiveX Database Object Data Control) adalah tool untuk mengontrol data dari sebuah database melalui program aplikasi (seperti Visual C++, Visual basic). Dengan tool ADODC ini data yang sudah ditulis pada Tabel Access dapat diambil atau diedit melalui program aplikasi tersebut. ADO Data Grid adalah tool untuk mendisplay kan data dari database access ke dalam display program aplikasi, sehingga melalui program aplikasi user dapat melihat isi field-field dari database yang diakses.
Langkah-langkah untuk mengaktifkan ADODC dan ADO Data Grid : a. Buka Visual C++ , buat Proyek baru. File Æ New Æ MFC AppWizard (exe) Æ beri nama file (untuk proyek) Æ buka Dialog Box . b. Menambah Microsoft ADO Data Control version 6.0 (OLEDB). Project Æ Add to Project Æ Component & Control Æ pilih : folder Registered ActiveX Control Æ Microsoft ADO Data Control version 6.0 (OLEDB) Æ Insert Æ Ok. Akan muncul komponen baru pada kotak Dialog (warna hijau). c. Menambah Microsoft Data Grid Control version 6.0 (OLEDB). Project Æ Add to Project Æ Component & Control Æ pilih : folder Registered ActiveX Control Æ Microsoft ADO Data Control version 6.0 (OLEDB) Æ Insert Æ Ok. Akan muncul komponen baru pada kotak Dialog (warna merah). Tutup Component and Control Gallery.
Percobaan 9. Aplikasi Database Pada Pemrograman IVR
86
Gambar 9.4. Component and Control Gallery
d. Mengatur Property ADODC Kembali ke Dialog Box. Drag komponen hijau (ADO Data Control) ke Dialog Box Æ klik kanan object : Properties Æ Control Æ Use ODBC Data Source Name : … (pilih nama database source yang sudah dibuat dengan ODBC). Properties Æ record Sources Æ Command Type : 2-adcmdTable (jenis pekerjaan yang akan dikoneksikan berbentuk Tabel) Æ Table or Stored Procedure Name : …(pilih nama Tabel yang akan dikoneksikan).
Tool ADODC Tool ADO Datagrid
Gambar 9.5. Tampilan Tool ADO DC dan ADO Datagrid pada Dialog Box Percobaan 9. Aplikasi Database Pada Pemrograman IVR
87
Seluruh property yang sudah di set untuk ADO DC akan ditampilkan di menu All pada Properties ADODC. e. Mengatur Property ADO Datagrid Kembali ke Dialog Box. Drag
komponen merah (ADO Datagrid) ke Dialog Box Æ klik kanan object :
Properties Æ All Æ Pilih Data Source : … (pilih nama IDC_ADODC1). Properties Æ Control Æ centang pada : AllowAddNew dan AllowDelete, sehingga pada Property All diberi nilai True. Fungsi ini digunakan untuk penambahan dan pengurangan pada Datagrid yang ditampilkan di Dialog Box, yang akan menyebabkan terjadinya perubahan pula pada Dabase Access-nya. Jadikan: True
Pilih IDC_ADODC1
Gambar 9.6. Tampilan Property All untuk pengaturan ADO Datagrid
5. Me-run database melalui aplikasi C++ Setelah seluruh persiapan sudah dilakukan, akan dilakukan eksekusi tomboltombol yang sudah dibuat pada Dialog Box melalui C++. Tombol-tombol yang sudah dibuat tersebut secara otomatis sudah dibangkitkan program-nya di Project sheet. Langkah-langkah meng-eksekusi program tersebut adalah sebagai berikut : Pilih Build Æ Rebuild All Æ tunggu beberapa saat sampai proses build selesai. Jika tidak ada kesalahan, lanjutkan dengan eksekusi program : Build Æ execute namafile.exe.
Percobaan 9. Aplikasi Database Pada Pemrograman IVR
88
Setelah proses eksekusi selesai, akan ditampilkan isi dari file database ke dalam program C++, seperti ditunjukkan pada Gambar 9.7.
Gambar 9.7. Hasil Eksekusi Isi database pada Dialog Box
9.3.2. Program Query untuk meng-akses database melalui aplikasi C++ Database adalah tempat untuk menyediakan data. Biasanya tersedia bahasa SQL untuk melakukan manipulasi data pada program database itu sendiri (misalkan pada MS Access 2003, MySQL, SQL Server 2000 dsb). Pada praktikum ini, database MS Access yang digunakan akan dipanggil oleh aplikasi C++, sebagai program utama, untuk diambil data-data yang disimpan dalam database tersebut. Selanjutnya, data yang sudah diambil ini akan dproses dengan C++ untuk keperluan yang diinginkan. Proses pemanggilan data menggunakan query seperti ditunjukkan pada program di bawah ini : query="select Bulan_1 from Pelanggan like'"+ nom +"'"; m_baris.SetCommandType(1); m_baris.SetRecordSource(query); m_baris.Refresh();
where
No_plg
m_data.SetRefDataSource(m_baris.GetDSCCursor()); dataa=m_data.GetText(); char *data1; data1=dataa.GetBuffer(255);
Percobaan 9. Aplikasi Database Pada Pemrograman IVR
89
Proses query di atas menyatakan, dilakukan seleksi pada Kolom Bulan_1 dari Tabel Pelanggan, dimana Kolom No_plg nya bernilai sama dengan nilai ‘nom’. Nilai nom adalah nilai yang diinputkan. Sedangkan variabel m_baris adalah member variabel dari IDC ADODC1 yang ditambahkan melalui Class Wizard. Demikian pula m_data merupakan member variabel yang ditambahkan pada Class Wizard dari DataGrid. Kedua nama ini boleh dibuat bebas. Jenis data yang diambil tersebut berupa karakter (char). Jika ingin diubah ke integer, cukup ditambahkan syntax atoi (nama var yang akan diubah).
9.3.3. Membuat Aplikasi Layanan Informasi Aplikasi ini merupakan aplikasi lanjutan dari tiga jenis aplikasi yang sudah dibahas, yaitu Kenal Digit, Play dan aplikasi Database. Untuk membuat aplikasi ini perlu dijelaskan gambaran proyek yang akan dibuat. Akan dibuat sebuah sistim layanan Tagihan PLN untuk pelanggan Rumah. Aplikasi ini berisi jumlah tagihan pelanggan setiap bulan selama 3 bulan terakhir.
- Field-field yang disiapkan untuk database adalah : 1. Nomor pelanggan (number 4 digit) 2. Nama pelanggan (text 25) 3. Bulan_1, Bulan_2 dan Bulan_3 (number 6 digit)
Percobaan 9. Aplikasi Database Pada Pemrograman IVR
90
- Sedangkan jenis file wav yang akan dibunyikan adalah seperti pada Tabel 9.1
Tabel 9.1. Tabel Isi file wav Nama file
Kalimat Selamat datang dalam layanan Informasi Tagihan PLN welcome.wav Wilayah Surabaya Masukkan empat digit nomor pelanggan input.wav Nomor pelanggan anda adalah konfirmasi.wav Tekan satu untuk bulan kesatu, tekan dua untuk bulan kedua, tekan tiga untuk bulan ketiga, tekan pagar untuk pilihan.wav kembali ke menu pilihan, tekan bintang untuk keluar satu satu.wav dua dua.wav tiga tiga.wav empat empat.wav ribu ribu.wav lima puluh ribu limapuluhribu.wav enam puluh ribu enampuluhribu.wav tujuh puluh lima ribu tujuhpuluhlimaribu.wav sembilan puluh ribu sembilanpuluhribu.wav seratus ribu seratusribu.wav seratusduapuluhribu.wav seratus dua puluh ribu rupiah rupiah.wav Tagihan anda bulan ke satu adalah bulan1.wav Tagihan anda bulan ke dua adalah bulan2.wav Tagihan anda bulan ke tiga adalah bulan3.wav Terima kasih telah menggunakan sistim layanan ini. Untuk pengaduan silakan hubungi lima sembilan empat tiga tiga keluar.wav empat empat.
Diagram Alir cara pengaksesan Sistim Layanan Informasi PLN ditunjukkan pada gambar 9.8.
Percobaan 9. Aplikasi Database Pada Pemrograman IVR
91
START Tekan nomor.server
N
Connect Y 4 digit nomor pelanggan
Pilihan Bulan 1 Bulan ke-1 2 Bulan ke-2 3 Bulan ke-3 # Kembali ke pilihan bulan * Keluar
Y
‘1’
Tagihan bulan ke-1
N Y
‘2’
Tagihan bulan ke-2
N Y
‘3’
Tagihan bulan ke-3 N
Y
‘ #’ N ‘*’’ STOP
Gambar 9.8. Diagram Alir cara pengaksesan Sistim Layanan Informasi PLN
Diagram Alir membunyikan masing-masing file wav ditunjukkan pada Gambar 9.9.
Percobaan 9. Aplikasi Database Pada Pemrograman IVR
92
START Tekan nomor.server
N
Connect Y welcome.wav input.wav pilihan.wav Y
‘1’
Bulan1.wav
N Y
‘2’
Bulan2.wav
N Y
‘3’
Bulan3.wav
N Y
‘ #’ N ‘*’’
Keluar.wav
STOP
Gambar 9.9. Diagram Alir membunyikan masing-masing file wav
Percobaan 9. Aplikasi Database Pada Pemrograman IVR
93
9.4. Prosedur Percobaan : 1. Siapkan file-file wav yang akan digunakan, dengan cara merekam melalui SAMPLE PROGRAM atau menggunakan software AUDACITY (penjelasan tersendiri). Isi dari file wav seperti pada Tabel 9.1. 2. Siapkan Tabel menggunakan MS-Access seperti pada Gambar 9.10. Namai : Pelanggan
Gambar 9.10. Pembuatan Field-field
3. Isilah masing-masing field dengan record seperti ditunjukkan pada Gambar 9.11.
Gambar 9.11. Pengisian Record di masing-masing Field
4. Aktifkan ODBC, isi data Source Name (nama yang digunakan sebagai penghubung Database dan C++). Pilih Select, cari directory dimana Tabel Pelanggan tadi disimpan Æ Ok. Keluar dari ODBC. 5. Buka C++, buat Project baru untuk Sistim Layanan ini (caranya seperti pada Percobaan sebelumnya). 6. Tambahkan fungsi ADODC dan ADO DataGrid (seperti dijelaskan pada sub bab 9.3.1). 7. Tambahkan fungsi PlaySuara dan GetDigit. Percobaan 9. Aplikasi Database Pada Pemrograman IVR
94
8. Buat Main Program dengan mengaktifkan Tombol yang sudah dibuat. Main Program ditunjukkan pada gambar 9.12. 9. Jalankan program sampai tidak ada error yang didapat. 10.Panggil nomor server, dan tekan digit pilihan sesuai perintah yang anda dengarkan. void CPLN4Dlg::OnTbl() { // TODO: Add your control notification handler code here CString nomi; int chdev; char dig[10],nomor[5]; //Open channel// if((chdev = dx_open("dxxxB1C1",NULL))==-1) { MessageBox("Error open channel"); exit(1); } //Set on hook// if(dx_sethook(chdev,DX_ONHOOK,EV_SYNC)==-1){ MessageBox("Error on hook"); exit(1); } //Wait ring tone// if(dx_wtring(chdev,2,DX_OFFHOOK,-1)==-1){ MessageBox("Error off hook"); exit(1); }
Suara(chdev,"welcome.wav"); digit: Suara(chdev,"input.wav"); nomor[0]=GoDigit(chdev,dig,1); nomor[1]=GoDigit(chdev,dig,1); nomor[2]=GoDigit(chdev,dig,1); nomor[3]=GoDigit(chdev,dig,1); nomor[4]='\0'; nomi=nomor; //MessageBox(nomi);
Suara(chdev,"konfirmasi.wav"); if(nomor[0]=='2') { Suara(chdev,"dua.wav"); Suara(chdev,"ribu.wav"); if(nomor[3]=='1') Suara(chdev,"satu.wav"); else if(nomor[3]=='2') Suara(chdev,"dua.wav"); else if(nomor[3]=='3') Suara(chdev,"tiga.wav"); else if(nomor[3]=='4') Suara(chdev,"empat.wav"); }
Percobaan 9. Aplikasi Database Pada Pemrograman IVR
95
else goto digit; pilih(nomi); }
void CPLN4Dlg::pilih(CString nom) { CString query1,dataa; char dig[10],bulan[2]; int chdev,dat1; if((chdev = dx_open("dxxxB1C1",NULL))==-1) { MessageBox("Error open channel"); exit(1); } awal: Suara(chdev,"pilihan.wav"); bulan[0]=GoDigit(chdev,dig,1); bulan[1]='\0'; if (bulan[0]=='1') { Suara(chdev,"bulan1.wav"); query1="select Bulan_1 from Pelanggan where No_plg like'"+ nom +"'"; m_baris.SetCommandType(1); m_baris.SetRecordSource(query1); m_baris.Refresh(); m_data.SetRefDataSource(m_baris.GetDSCCursor()); dataa=m_data.GetText(); char *data1; data1=dataa.GetBuffer(255); dat1=atoi(data1); if(dat1==50000) { Suara(chdev,"50ribu.wav"); Suara(chdev,"rupiah.wav"); } else if(dat1==60000) { Suara(chdev,"60ribu.wav"); Suara(chdev,"rupiah.wav"); } else if(dat1==75000) { Suara(chdev,"75ribu.wav"); Suara(chdev,"rupiah.wav"); } else if(dat1==90000) { Suara(chdev,"90ribu.wav"); Suara(chdev,"rupiah.wav"); } else if(dat1==100000) { Suara(chdev,"100ribu.wav"); Suara(chdev,"rupiah.wav"); }
Percobaan 9. Aplikasi Database Pada Pemrograman IVR
96
else if(dat1==120000) { Suara(chdev,"120ribu.wav"); Suara(chdev,"rupiah.wav"); } goto awal; } else if(bulan[0]=='2') { Suara(chdev,"bulan2.wav"); query1="select Bulan_2 from Pelanggan where No_plg like'"+ nom +"'"; m_baris.SetCommandType(1); m_baris.SetRecordSource(query1); m_baris.Refresh(); m_data.SetRefDataSource(m_baris.GetDSCCursor()); dataa=m_data.GetText(); char *data1; data1=dataa.GetBuffer(255); dat1=atoi(data1); if(dat1==50000) { Suara(chdev,"50ribu.wav"); Suara(chdev,"rupiah.wav"); } else if(dat1==60000) { Suara(chdev,"60ribu.wav"); Suara(chdev,"rupiah.wav"); } else if(dat1==75000) { Suara(chdev,"75ribu.wav"); Suara(chdev,"rupiah.wav"); } else if(dat1==90000) { Suara(chdev,"90ribu.wav"); Suara(chdev,"rupiah.wav"); } else if(dat1==100000) { Suara(chdev,"100ribu.wav"); Suara(chdev,"rupiah.wav"); } else if(dat1==120000) { Suara(chdev,"120ribu.wav"); Suara(chdev,"rupiah.wav"); } goto awal; } else if(bulan[0]=='3') { Suara(chdev,"bulan3.wav"); query1="select Bulan_3 from Pelanggan where No_plg like'"+ nom +"'"; m_baris.SetCommandType(1); m_baris.SetRecordSource(query1);
Percobaan 9. Aplikasi Database Pada Pemrograman IVR
97
m_baris.Refresh(); m_data.SetRefDataSource(m_baris.GetDSCCursor()); dataa=m_data.GetText(); char *data1; data1=dataa.GetBuffer(255); dat1=atoi(data1); if(dat1==50000) { Suara(chdev,"50ribu.wav"); Suara(chdev,"rupiah.wav"); } else if(dat1==60000) { Suara(chdev,"60ribu.wav"); Suara(chdev,"rupiah.wav"); } else if(dat1==75000) { Suara(chdev,"75ribu.wav"); Suara(chdev,"rupiah.wav"); } else if(dat1==90000) { Suara(chdev,"90ribu.wav"); Suara(chdev,"rupiah.wav"); } else if(dat1==100000) { Suara(chdev,"100ribu.wav"); Suara(chdev,"rupiah.wav"); } else if(dat1==120000) { Suara(chdev,"120ribu.wav"); Suara(chdev,"rupiah.wav"); } goto awal; } else if(bulan[0]=='#') goto awal; else if(bulan[0]=='*') goto keluar; keluar: Suara(chdev,"keluar.wav"); }
9.5. Pertanyaan & Tugas : Buat program Database Inventory sebuah toko berbasis IVR. Jenis toko terserah anda (usahakan hanya satu jenis saja supaya tidak terlalu banyak record yang diisikan, misalkan : toko roti, toko tanaman, toko obat dll). Disainlah variable yang diperlukan untuk pembuatan database. Buat flow chart pengaksesan dan lengkapi dengan breakdown menu pilihan.
Percobaan 9. Aplikasi Database Pada Pemrograman IVR
98