Anda di halaman 1dari 23

LAPORAN

PROYEK TENGAH SEMESTER


JARINGAN KOMUNIKASI
“APLIKASI IVR PEMESANAN TIKET PESAWAT”

Kelas
4 D4 Telekomunikasi A
Anggota kelompok
Pitaloka Fortuna Dewi S 1210161002
Christian Jeremia 1210161006
Dhea Amalia Lutfiani 1210161013
Iis Nur Kumalasari 1210161016
Muhammad Hamzah 1210161026

TEKNIK TELEKOMUNIKASI
DEPARTEMEN ELEKTRO
POLITEKNIK ELETRONIKA NEGERI SURABAYA
A. LATAR BELAKANG
Kemajuan teknologi sekarang ini terjadi dengan sangat pesat seiring dengan
berkembangnya ilmu pengetahuan. Konsep pemenuhan segala kebutuhan di upayakan dapat
terjadi secara cepat dan mudah. Salah satu kebutuhan yang penting untuk masyarakat adalah
layanan pembelian tiket transportasi umum maupun khusus, contohnya adalah pembelian tiket
pesawat.
Pembelian tiket pesawat pada waktu-waktu tertentu bisa menjadi sebuah hal yang sangat
merepotkan karena harus melalui antrian panjang yang pastinya menghabiskan waktu berharga
dari pelanggan. Untuk mengatasi permasalahan ini dibuat sebuah sistem pemesanan tiket
pesawat melalui telepon dengan teknologi IVR (Interactive Voice Respons) sehingga
pelanggan tidak perlu pergi ke tempat pembelian tiket dan bisa dilakukan dimana saja. Sistem
pemesanan tiket dilakukan dengan cara pelanggan (yang akan membeli tiket) menelepon
nomor server dari maskapai penerbangan yang akan digunakan kemudian secara otomatis pada
saat server sedang kosong atau tidak melayani panggilan lain panggilan akan langsung diterima
dan secara otomatis dilayani oleh server. System pelayanan pada teknologi ini dilakukan secara
otomatis dan runtut sesuai dengan program yang dibangun dan file rekaman suara yang
dijalankan, sehingga tidak dibutuhkan banyak customer service untuk melayani panggilan
yang masuk. Digunakan system inbound dan outbound pada project yang di bangun.
Pada saat melakukan pemesanan tiket, pelanggan akan diminta untuk memasukkan
beberapa data penting diantaranya adalah nomor telepon, tanggal atau jadwal penerbangan,
dan data diri berupa nomor e-KTP. Nomor telepon ini nantinya akan disimpan di dalam
database untuk kemudian akan digunakan pada remainder di system outboung dimana secara
otomatis pada hari sebelum jadwal penerbangan server akan menghubungi pelanggan untuk
mengingatkan jadwal penerbang yang telah dipesan. Kemudian informasi tanggal penerbangan
ini akan disimpan didalam database begitupula data nomor e-KTP. Digunakan nomor e-KTP
karena pada suatu system pembelian tiket pasti dibutuhkan keterangan data diri dari
penumpang, namun dengan system IVR ini untuk memasukkan data diri berupa huruf alpabet
cukup sulit untuk dilakukan sehingga digunakan nomor identitas e-KTP yang mana milik
masing-masing individu adalah berbeda.
Dalam system pemesanan tiket ini disediakan beberapa pilihan diantaranya adalah tujuan
penerbangan, kelas penerbangan (bisa memilih ekonomi atau bisnis), dan jadwal penerbangan
(berupa jam penerbangan yang tersedia untuk masing-masing kelas penerbangan dan tujuan
yang dipilih). Untuk menentukan pilihan pelanggan hanya perlu menekan nomor pilihan sesuai
dengan yang dipilih.
Sehingga dengan menggunakan system pembelian tiket dengan menggunakan teknologi
IVR ini mempermudah pelanggan untuk membeli tiket, efisiensi waktu, serta dapat dilakukan
oleh semua orang yang memiliki telepon seluler meskipun tidak memiliki jaringan internet.

1
B. DESAIN SISTEM
Pada Proyek Tengah Semester ini, Desain sistem dalam aplikasi yang kami buat yaitu
“Aplikasi Pemesanan Tiket Pesawat” adalah seperti gambar 1 berikut.

Gambar 1. Desain Sistem Aplikasi Pemesanan Tiket Pesawat

C. PARAMETER
Dalam perancangan sistem aplikasi yang dibuat, akan memuat parameter-parameter berupa :
- Pilihan rute
- Pilihan kelas pesawat
- Pilihan jam penerbangan

D. FLOWCHART
Dalam pembuatan “Aplikasi Pemesanan Tiket Pesawat” digunakan sistem layanan IVR
secara outbound serta inbound. Untuk mempermudah pembuatan sistem yang mencakup
program serta implementasi secara langsung, dibuat terlebih dahulu flowchart dari masing-
masing sistem layanan. Oleh karena itu terdapat dua flowchart yang digunakan pada aplikasi
ini. Sebagaimana yang ditunjukan pada gambar 2 untuk flowchart layanan inbound serta
gambar 3 untuk flowchart layanan outbound.

2
Gambar 2. Flowchart Layanan Inbound

3
Gambar 3. Flowchart Layanan Outbound
E. FILE WAV
File wav yang digunakan untuk layanan inbound
Proses Nama File Kalimat
Salam Pembuka salampembuka.wav Selamat datang dalam layanan
jadwal penerbangan, silakan
masukan no telepon anda
Masukan data tanggal pemesanan Tanggalpemesanan.wav Masukan data tanggal pemesanan
tiket pesawat
Apakah data tanggal benar? Cek_tanggal.wav Apakah data tanggal pemesanan
yang anda inputkan sudah benar?
Tekan 1 jika data tanggal benar
Tekan 2 jika data tanggal salah
Pilih rute pilihan Pilih_rute.wav Pilih rute
Tekan 1 untuk rute penerbangan
jakarta
Tekan 1 untuk rute penerbangan
Bali

4
Proses Nama File Kalimat
Tekan * untuk keluar
Pemilihan kelas penerbangan tujuan Kelas_jakarta.wav Pilih kelas pesawat
jakarta Tekan 1 untuk bisnis
Tekan 2 untuk ekonomi
Tekan # untuk kembali ke
pemilihan rute
Pemilihan kelas penerbangan tujuan Kelas_bali.wav Pilih kelas pesawat
bali Tekan 1 untuk bisnis
Tekan 2 untuk ekonomi
Tekan # untuk kembali ke
pemilihan rute
Pemilihan jadwal penerbangan Jadwal_bisnis_JKT.wav Pilih jadwal penerbangan kelas
kelas bisnis tujuan jakarta bisnis
Tekan 1 untuk penerbangan pukul
09.00 WIB
Tekan 2 untuk penerbangan pukul
12.00 WIB
Tekan # untuk kembali ke
pemilihan rute
Pemilihan jadwal penerbangan Jadwal_ekonomi_JKT.wav Pilih jadwal penerbangan kelas
kelas ekonomi tujuan jakarta ekonomi
Tekan 1 untuk penerbangan pukul
06.00 WIB
Tekan 2 untuk penerbangan pukul
19.00 WIB
Tekan # untuk kembali ke
pemilihan rute
Pemilihan jadwal penerbangan Jadwal_bisnis_BL.wav Pilih jadwal penerbangan kelas
kelas bisnis tujuan Bali bisnis
Tekan 1 untuk penerbangan pukul
08.00 WIB
Tekan 2 untuk penerbangan pukul
17.00 WIB
Tekan # untuk kembali ke
pemilihan rute
Pemilihan jadwal penerbangan Jadwal_ekonomi_BL.wav Pilih jadwal penerbangan kelas
kelas ekonomi tujuan Bali ekonomi
Tekan 1 untuk penerbangan pukul
10.00 WIB
Tekan 2 untuk penerbangan pukul
15.00 WIB
Tekan # untuk kembali ke menu
utama
Tekan # untuk kembali ke
pemilihan rute
Info penerbangan JKT bisnis 09.00 Info1.wav Anda memilih rute pilihan jakarta
dengan jadwal penerbangan kelas
bisnis pukul 09.00 WIB
Info penerbangan JKT bisnis 12.00 Info2.wav Anda memilih rute pilihan jakarta
dengan jadwal penerbangan kelas
bisnis pukul 12.00 WIB
Info penerbangan JKT ekonomi Info3.wav Anda memilih rute pilihan jakarta
06.00 dengan jadwal penerbangan kelas
ekonomi pukul 06.00 WIB
Info penerbangan JKT ekonomi Info4.wav Anda memilih rute pilihan jakarta
19.00 dengan jadwal penerbangan kelas
ekonomi pukul pukul 19.00 WIB

5
Proses Nama File Kalimat
Info penerbangan BL bisnis 08.00 Info5.wav Anda memilih rute pilihan jakarta
dengan jadwal penerbangan kelas
bisnis pukul 08.00 WIB
Info penerbangan BL bisnis 17.00 Info6.wav Anda memilih rute pilihan bali
dengan jadwal penerbangan kelas
bisnis pukul 17.00 WIB
Info penerbangan BL Ekonomi Info7.wav Anda memilih rute pilihan bali
10.00 dengan jadwal penerbangan kelas
ekonomi pukul 10.00 WIB
Info penerbangan BL ekonomi Info8.wav Anda memilih rute pilihan bali
15.00 dengan jadwal penerbangan kelas
ekonomi pukul 15.00 WIB
Isi nomor E-KTP Isi_ktp.wav Silahkan isi data diri berupa nomor
E-KTP
Cek nomor E-KTP No_ektp Nomor ektp anda adalah
Konfirmasi E-KTP Cek_ektp.waav Apakah data nomor ektp yang anda
inputkan sudah benar
Tekan 1 jika data E-KTP benar
Tekan 2 jika data E-KTP salah
Salam penutup salampenutup.wav Terima kasih telah menggunakan
layanan pemesanan tiket pesawat.
Untuk pembayaran silahkan
transfer melalui bank mandiri
dengan nomor rekening
1400015919047

File wav yang digunakan layanan outbound


Proses Namafile.wav Kalimat
Salam pembuka Salampembuka.wav Selamat datang dalam layanan
remainder jadwal penerbangan
Remainder penerbangan pada pukul J_enam Pelanggan yang kami sayangi, anda
enam besok memiliki jadwal penerbangan
pada pukul enam
Remainder penerbangan pada pukul J_delapan Pelanggan yang kami sayangi, anda
delapan besok memiliki jadwal penerbangan
pada pukul delapan
Remainder penerbangan pada pukul J_sembilan Pelanggan yang kami sayangi, anda
sembilan besok memiliki jadwal penerbangan
pada pukul sembilan
Remainder penerbangan pada pukul J_sepuluh Pelanggan yang kami sayangi, anda
sepuluh besok memiliki jadwal penerbangan
pada pukul sepuluh
Remainder penerbangan pada pukul J_duabeleas Pelanggan yang kami sayangi, anda
duabelas besok memiliki jadwal penerbangan
pada pukul duabelas
Remainder penerbangan pada pukul J_limabelas Pelanggan yang kami sayangi, anda
limabelas besok memiliki jadwal penerbangan
pada pukul limabelas
Remainder penerbangan pada pukul J_tujuhbelas Pelanggan yang kami sayangi, anda
tujuhbelas besok memiliki jadwal penerbangan
pada pukul tujuhbelas
Remainder penerbangan pada pukul J_sembilanbelas Pelanggan yang kami sayangi, anda
sembilanbelas besok memiliki jadwal penerbangan
pada pukul sembilanbelas
Salam penutup Salampenutup.wav Semoga perjalanan anda
menyenangkan

6
F. DATABASE
Pada sistem yang dibuat diperlukan sebuah database untuk menyimpan data data pelanggan
saat diinputkan melalui layanan inbound. Lalu berdasarkan data yang ada pada database sistem
layanan outbound akan berjalan. Data pelanggan berada pada satu tabel bernama ‘data’ yang
berisi 5 field seperti Gambar 4.

Gambar 4. Rancangan database sistem

Field no_telp akan diinputkan secara manual melalui phpmyadmin dikarenakanan sistem
ivr tidak dapat mendeteksi no telepon yang masuk secra otomatis saat call berlangsung. Selain
itu field no_telp juga digunakan sebagai primary key bagi data lain saat field lain akan
diinputkan. Sedangkan empat field lainnya akan terisi secara otomatis melalui fungsi detect
digit pada program yang dibuat kemudian diupdate kan ke database nya. Setelah database
terisi, maka tampilan databasae akan sesuai dengan Gambar 5

Gambar 5. Tampilan saat database terisi data pelanggan

G. PROGRAM
Program layanan inbound

#define W32_LEAN_AND_MEAN
#include <winsock2.h>
#include "mysql.h"
#include <windows.h>
#include <fcntl.h>
#include <srllib.h>
#include <dxxxlib.h>
#include <stdio.h>
#include <string.h>
#include <time.h>

#define host "localhost"


#define user "root"
#define paswd ""
#define db "data"

char DetectDigit(int chdev,char digit [10],int x);


void PlaySuara(int chdev,char fname[10]);

char DetectDigit(int chdev,char digit[10],int x)


{
DV_TPT tpt[3];
DV_DIGIT digp;
int numdigs,cnt;
dx_clrtpt(tpt,3);
tpt[0].tp_type=IO_CONT;

7
tpt[0].tp_termno=DX_MAXDTMF;
tpt[0].tp_length=x;
tpt[0].tp_flags=TF_MAXDTMF;
tpt[1].tp_type=IO_CONT;
tpt[1].tp_termno=DX_LCOFF;
tpt[1].tp_length=10;
tpt[1].tp_flags=TF_LCOFF|TF_10MS;
tpt[2].tp_type=IO_EOT;
tpt[2].tp_termno=DX_MAXTIME;
tpt[2].tp_length=50;
tpt[2].tp_flags=TF_MAXTIME;
//Get digit//
if((numdigs=dx_getdig(chdev,tpt,&digp,EV_SYNC))==-1)
{
printf("Error get digit\n");
exit(1);
}
printf("get digit succes\n");
for(cnt=0;cnt<numdigs;cnt++)
{
digit[cnt]=digp.dg_value[cnt];
}
return(digp.dg_value[0]);
}

void PlaySuara(int chdev,char fname[10])


{
int fd;
DX_IOTT iott;
DV_TPT tpt;
DX_XPB xpb;
if((fd=dx_fileopen(fname,O_RDONLY|O_BINARY)) ==-1)
{
}
tpt.tp_type =IO_EOT;
tpt.tp_termno =DX_MAXDTMF;
tpt.tp_length =1;
tpt.tp_flags =TF_MAXDTMF;
iott.io_fhandle =fd;
iott.io_bufp =0;
iott.io_offset =0;
iott.io_length =-1;
iott.io_type =IO_DEV|IO_EOT;
xpb.wFileFormat =FILE_FORMAT_WAVE;
xpb.wDataFormat =DATA_FORMAT_DIALOGIC_ADPCM;
xpb.nSamplesPerSec =DRT_8KHZ;
xpb.wBitsPerSample =4;
if(dx_playiottdata(chdev,&iott,&tpt,&xpb,EV_SYNC)==-1)
{
printf("Error play wav file\n");
exit(1);
}
printf("play wav succes\n");
}

void pilihan_ektp(int chdev, int no_telp)


{
ektp:
int angka;

8
char number[4],dig[10];
int tanggal_pemesanan, info_penerbangan;
char query[100],terupdate[100],query1[100],terupdate1[100];
MYSQL mysql;
MYSQL_RES *result;
MYSQL_ROW row;
MYSQL *hnd=NULL;

//koneksi ke mysql
hnd = mysql_init(NULL);
if(!mysql_connect(hnd,host,user,paswd))
{
printf(mysql_error(hnd));
}
if(mysql_select_db(hnd,db))
{
printf(mysql_error(hnd));
}

PlaySuara(chdev,"isi_ktp.wav");
number[0]=DetectDigit(chdev,dig,1);
number[1]=DetectDigit(chdev,dig,1);
number[2]=DetectDigit(chdev,dig,1);
number[3]=DetectDigit(chdev,dig,1);
number[4]='\0';
angka=atoi(number);
PlaySuara(chdev,"no_ektp.wav");

//Angka pertama//

if(number[0]=='1')
{
PlaySuara(chdev,"satu.wav");
}
else if(number[0]=='2')
{
PlaySuara(chdev,"dua.wav");
}
else if(number[0]=='3')
{
PlaySuara(chdev,"tiga.wav");
}
else if(number[0]=='4')
{
PlaySuara(chdev,"empat.wav");
}
else if(number[0]=='5')
{
PlaySuara(chdev,"lima.wav");
}
else if(number[0]=='6')
{
PlaySuara(chdev,"enam.wav");
}
else if(number[0]=='7')
{
PlaySuara(chdev,"tujuh.wav");
}
else if(number[0]=='8')
{

9
PlaySuara(chdev,"delapan.wav");
}
else if(number[0]=='9')
{
PlaySuara(chdev,"sembilan.wav");
}
else if(number[0]=='0')
{
PlaySuara(chdev,"nol.wav");
}

//Angka kedua//

if(number[1]=='1')
{
PlaySuara(chdev,"satu.wav");
}
else if(number[1]=='2')
{
PlaySuara(chdev,"dua.wav");
}
else if(number[1]=='3')
{
PlaySuara(chdev,"tiga.wav");
}
else if(number[1]=='4')
{
PlaySuara(chdev,"empat.wav");
}
else if(number[1]=='5')
{
PlaySuara(chdev,"lima.wav");
}
else if(number[1]=='6')
{
PlaySuara(chdev,"enam.wav");
}
else if(number[1]=='7')
{
PlaySuara(chdev,"tujuh.wav");
}
else if(number[1]=='8')
{
PlaySuara(chdev,"delapan.wav");
}
else if(number[1]=='9')
{
PlaySuara(chdev,"sembilan.wav");
}
else if(number[1]=='0')
{
PlaySuara(chdev,"nol.wav");
}

//Angka ketiga//

if(number[2]=='1')
{
PlaySuara(chdev,"satu.wav");
}

10
else if(number[2]=='2')
{
PlaySuara(chdev,"dua.wav");
}
else if(number[2]=='3')
{
PlaySuara(chdev,"tiga.wav");
}
else if(number[2]=='4')
{
PlaySuara(chdev,"empat.wav");
}
else if(number[2]=='5')
{
PlaySuara(chdev,"lima.wav");
}
else if(number[2]=='6')
{
PlaySuara(chdev,"enam.wav");
}
else if(number[2]=='7')
{
PlaySuara(chdev,"tujuh.wav");
}
else if(number[2]=='8')
{
PlaySuara(chdev,"delapan.wav");
}
else if(number[2]=='9')
{
PlaySuara(chdev,"sembilan.wav");
}
else if(number[2]=='0')
{
PlaySuara(chdev,"nol.wav");
}

//Angka keemoat//

if(number[3]=='1')
{
PlaySuara(chdev,"satu.wav");
}
else if(number[3]=='2')
{
PlaySuara(chdev,"dua.wav");
}
else if(number[3]=='3')
{
PlaySuara(chdev,"tiga.wav");
}
else if(number[3]=='4')
{
PlaySuara(chdev,"empat.wav");
}
else if(number[3]=='5')
{
PlaySuara(chdev,"lima.wav");
}
else if(number[3]=='6')

11
{
PlaySuara(chdev,"enam.wav");
}
else if(number[3]=='7')
{
PlaySuara(chdev,"tujuh.wav");
}
else if(number[3]=='8')
{
PlaySuara(chdev,"delapan.wav");
}
else if(number[3]=='9')
{
PlaySuara(chdev,"sembilan.wav");
}
else if(number[3]=='0')
{
PlaySuara(chdev,"nol.wav");
}

PlaySuara(chdev,"cek_ektp.wav");
number[0]=DetectDigit(chdev,dig,1);
number[1]='\0';
if(number[0]=='1')
{
sprintf(terupdate,"update pelanggan set no_ktp=%d where
no_telp=%d", angka,no_telp);
mysql_query(hnd,terupdate);
result=mysql_use_result(hnd);
mysql_close(hnd);
}
else if(number[0]=='2')
{
goto ektp;
}

int main(int argc, char* argv[])


{

char number[10],dig[10];
int chdev,no_telp, tanggal_pemesanan, info_penerbangan;
char query[100],terupdate[100],query1[100],terupdate1[100];
MYSQL mysql;
MYSQL_RES *result;
MYSQL_ROW row;
MYSQL *hnd=NULL;
MYSQL *hnd1=NULL;

//koneksi ke mysql
hnd = mysql_init(NULL);
if(!mysql_connect(hnd,host,user,paswd))
{
printf(mysql_error(hnd));
}
if(mysql_select_db(hnd,db))
{
printf(mysql_error(hnd));
}

12
hnd1 = mysql_init(NULL);
if(!mysql_connect(hnd1,host,user,paswd))
{
printf(mysql_error(hnd1));
}
if(mysql_select_db(hnd1,db))
{
printf(mysql_error(hnd1));
}
awal:

//Open channel//
if((chdev = dx_open("dxxxB1C2",NULL))==-1)
{
printf("Error open channel");
exit(1);
}
printf("open channel succes\n"); //Set on hook//
if(dx_sethook(chdev,DX_ONHOOK,EV_SYNC)==-1)
{
printf("Error on hook");
exit(1);
}
printf("Onhook succes\n"); //Wait ring tone//
if(dx_wtring(chdev,2,DX_OFFHOOK,-1)==-1)
{
printf("Error off hook");
exit(1);
}
printf("off hook succes\n");
pembuka:

PlaySuara(chdev, "salampembuka.wav");

//Input no telpon//
number[0]=DetectDigit(chdev,dig,1);
number[1]=DetectDigit(chdev,dig,1);
number[2]=DetectDigit(chdev,dig,1);
number[3]=DetectDigit(chdev,dig,1);
number[4]='\0';
no_telp=atoi(number);

//Input Tanggal Pemesanan//


PlaySuara(chdev,"tanggalpemesanan.wav");
number[0]=DetectDigit(chdev,dig,1);
number[1]=DetectDigit(chdev,dig,1);
number[2]=DetectDigit(chdev,dig,1);
number[3]=DetectDigit(chdev,dig,1);
number[4]=DetectDigit(chdev,dig,1);
number[5]=DetectDigit(chdev,dig,1);
number[6]='\0';
tanggal_pemesanan=atoi(number);

PlaySuara(chdev,"cek_tanggal.wav");
number[0]=DetectDigit(chdev,dig,1);
number[1]='\0';
if(number[0]=='1')
{
sprintf(terupdate,"update pelanggan set tgl_pemesanan=%d where
no_telp=%d", tanggal_pemesanan,no_telp);

13
mysql_query(hnd,terupdate);
result=mysql_use_result(hnd);
mysql_close(hnd);

rute:
PlaySuara(chdev,"pilih_rute.wav");
number[0]=DetectDigit(chdev,dig,1);
number[1]='\0';
if(number[0]=='1')
{
PlaySuara(chdev,"kelas_jakarta.wav");
number[0]=DetectDigit(chdev,dig,1);
number[1]='\0';
if(number[0]=='1')
{
PlaySuara(chdev,"jadwal_bisnis_JKT.wav");
number[0]=DetectDigit(chdev,dig,1);
number[1]='\0';
if(number[0]=='1')
{
info_penerbangan = 9;
PlaySuara(chdev,"info1.wav");

sprintf(terupdate,"update pelanggan set


jam_penerbangan=%d where no_telp=%d", info_penerbangan,no_telp);
mysql_query(hnd1,terupdate);
result=mysql_use_result(hnd1);
mysql_close(hnd1);

pilihan_ektp(chdev, no_telp);

goto keluar;
}
else if(number[0]=='2')
{
info_penerbangan = 12;
PlaySuara(chdev,"info2.wav");

sprintf(terupdate,"update pelanggan set


jam_penerbangan=%d where no_telp=%d", info_penerbangan,no_telp);
mysql_query(hnd1,terupdate);
result=mysql_use_result(hnd1);
mysql_close(hnd1);

pilihan_ektp(chdev, no_telp);

goto keluar;
}
else if(number[0]=='#')
{
goto rute;
}
}
else if(number[0]=='2')
{
PlaySuara(chdev,"jadwal_ekonomi_JKT.wav");
number[0]=DetectDigit(chdev,dig,1);
number[1]='\0';
if(number[0]=='1')
{

14
info_penerbangan = 6;
PlaySuara(chdev,"info3.wav");

sprintf(terupdate,"update pelanggan set


jam_penerbangan=%d where no_telp=%d", info_penerbangan,no_telp);
mysql_query(hnd1,terupdate);
result=mysql_use_result(hnd1);
mysql_close(hnd1);

pilihan_ektp(chdev, no_telp);

goto keluar;
}
else if(number[0]=='2')
{
info_penerbangan = 19;
PlaySuara(chdev,"info4.wav");

sprintf(terupdate,"update pelanggan set


jam_penerbangan=%d where no_telp=%d", info_penerbangan,no_telp);
mysql_query(hnd1,terupdate);
result=mysql_use_result(hnd1);
mysql_close(hnd1);

pilihan_ektp(chdev, no_telp);

goto keluar;
}
else if(number[0]=='#')
{
goto rute;
}

}
else if(number[0]=='#')
{
goto rute;
}
}
else if(number[0]=='2')
{
PlaySuara(chdev,"kelas_bali.wav");
number[0]=DetectDigit(chdev,dig,1);
number[1]='\0';
if(number[0]=='1')
{
PlaySuara(chdev,"jadwal_bisnis_BL.wav");
number[0]=DetectDigit(chdev,dig,1);
number[1]='\0';
if(number[0]=='1')
{
info_penerbangan = 8;
PlaySuara(chdev,"info5.wav");

sprintf(terupdate,"update pelanggan set


jam_penerbangan=%d where no_telp=%d", info_penerbangan,no_telp);
mysql_query(hnd1,terupdate);
result=mysql_use_result(hnd1);
mysql_close(hnd1);

15
pilihan_ektp(chdev, no_telp);

goto keluar;
}
else if(number[0]=='2')
{
info_penerbangan = 17;
PlaySuara(chdev,"info6.wav");

sprintf(terupdate,"update pelanggan set


jam_penerbangan=%d where no_telp=%d", info_penerbangan,no_telp);
mysql_query(hnd1,terupdate);
result=mysql_use_result(hnd1);
mysql_close(hnd1);

pilihan_ektp(chdev, no_telp);

goto keluar;
}
else if(number[0]=='#')
{
goto rute;
}
}
else if(number[0]=='2')
{
PlaySuara(chdev,"jadwal_ekonomi_BL.wav");
number[0]=DetectDigit(chdev,dig,1);
number[1]='\0';
if(number[0]=='1')
{
info_penerbangan = 10;
PlaySuara(chdev,"info7.wav");

sprintf(terupdate,"update pelanggan set


jam_penerbangan=%d where no_telp=%d", info_penerbangan,no_telp);
mysql_query(hnd1,terupdate);
result=mysql_use_result(hnd1);
mysql_close(hnd1);

pilihan_ektp(chdev, no_telp);

goto keluar;
}
else if(number[0]=='2')
{
info_penerbangan = 15;
PlaySuara(chdev,"info8.wav");

sprintf(terupdate,"update pelanggan set


jam_penerbangan=%d where no_telp=%d", info_penerbangan,no_telp);
mysql_query(hnd1,terupdate);
result=mysql_use_result(hnd1);
mysql_close(hnd1);

pilihan_ektp(chdev, no_telp);

goto keluar;
}
else if(number[0]=='#')

16
{
goto rute;
}

}
else if(number[0]=='#')
{
goto rute;
}

}
else if(number[0]=='*')
{
goto keluar;
}
}
else if(number[0]=='2')
{
goto pembuka;
}
else
{
keluar:
PlaySuara(chdev,"salampenutup.wav");
goto awal;
}
}

Program layanan outbound

#define W32_LEAN_AND_MEAN
#include <winsock2.h>
#include "mysql.h"
#include <windows.h>
#include <fcntl.h>
#include <srllib.h>
#include <dxxxlib.h>
#include <stdio.h>
#include <string.h>
#include <time.h>

#define TABLE_OF_INTEREST "pelanggan"


#define SERVER_NAME "localhost"
#define DB_USER "root"
#define DB_USERPASS ""
#define DB_NAME "data"

char data[10];
char data1[10];
int chdev;
DX_CAP capp;
char dialstrg[5]="2000";
int cares;

char DetectDigit(int chdev,char digit [10],int x);


void PlaySuara(int chdev,char fname[10]);

char DetectDigit(int chdev,char digit[10],int x)


{
DV_TPT tpt[3];

17
DV_DIGIT digp;
int numdigs,cnt;
dx_clrtpt(tpt,3);
tpt[0].tp_type=IO_CONT;
tpt[0].tp_termno=DX_MAXDTMF;
tpt[0].tp_length=x;
tpt[0].tp_flags=TF_MAXDTMF;
tpt[1].tp_type=IO_CONT;
tpt[1].tp_termno=DX_LCOFF;
tpt[1].tp_length=10;
tpt[1].tp_flags=TF_LCOFF|TF_10MS;
tpt[2].tp_type=IO_EOT;
tpt[2].tp_termno=DX_MAXTIME;
tpt[2].tp_length=50;
tpt[2].tp_flags=TF_MAXTIME;
//Get digit//
if((numdigs=dx_getdig(chdev,tpt,&digp,EV_SYNC))==-1)
{
printf("Error get digit\n");
exit(1);
}
printf("get digit succes\n");
for(cnt=0;cnt<numdigs;cnt++)
{\
digit[cnt]=digp.dg_value[cnt];
}
return(digp.dg_value[0]);
}

void PlaySuara(int chdev,char fname[10])


{
int fd;
DX_IOTT iott;
DV_TPT tpt;
DX_XPB xpb;
if((fd=dx_fileopen(fname,O_RDONLY|O_BINARY)) ==-1)
{
}
tpt.tp_type =IO_EOT;
tpt.tp_termno =DX_MAXDTMF;
tpt.tp_length =1;
tpt.tp_flags =TF_MAXDTMF;
iott.io_fhandle =fd;
iott.io_bufp =0;
iott.io_offset =0;
iott.io_length =-1;
iott.io_type =IO_DEV|IO_EOT;
xpb.wFileFormat =FILE_FORMAT_WAVE;
xpb.wDataFormat =DATA_FORMAT_DIALOGIC_ADPCM;
xpb.nSamplesPerSec =DRT_8KHZ;
xpb.wBitsPerSample =4;
if(dx_playiottdata(chdev,&iott,&tpt,&xpb,EV_SYNC)==-1)
{
printf("Error play wav file\n");
exit(1);
}
printf("play wav succes\n");
}

18
void main(int argc, char* argv[])
{
MYSQL *hnd=NULL; // mysql connection handle
MYSQL_RES *res=NULL; // result of querying for all rows in table
MYSQL_ROW row; //one row returned
char sql[1024]; // sql statement used to get all rows
int i,j=0,numf=0; // number of fields returned from the query
int x,bil;
const char *sinf=NULL; // mysql server information
hnd = mysql_init(NULL);
if(NULL==mysql_real_connect(hnd,SERVER_NAME,DB_USER,DB_USERPASS,DB_NAME
,0,NULL,0))
{
fprintf(stderr,"ada masalah\n");
}
else
{
fprintf(stdout,"koneksi ok\n");
sinf = mysql_get_server_info(hnd);
if (sinf != NULL)
{
fprintf(stdout,"Got server information: '%s'\n",sinf);
balik:

sprintf(sql,"select NOW()");
if (!mysql_query(hnd,sql))
{
res = mysql_use_result(hnd);
if (res)
{
while (row=mysql_fetch_row(res))
{
for (i=0;i<mysql_num_fields(res);i++)
{
strcpy(data,row[i]);
printf("%s\n",data);
}
}
}
else
{
fprintf(stderr,"Failed to use the result
acquired!\n");
}
}

sprintf(sql,"select jam_penerbangan from pelanggan where


tanggal_reminder = '%s' ",data);
if (!mysql_query(hnd,sql))
{
res = mysql_use_result(hnd);
if (res)
{
while (row=mysql_fetch_row(res))
{
for (i=0;i<mysql_num_fields(res);i++)
{
strcpy(data1,row[i]);
printf("%s\n",data1);
bil=atoi(data1);

19
printf("%d", bil);
if((chdev = dx_open("dxxxB1C2",NULL))==-1)
{
printf("Error open channel");
exit(1);
}
printf("open channel succes\n");
awal:
if(dx_sethook(chdev,DX_OFFHOOK,EV_SYNC)==-1)
{
printf("Error off hook");
exit(1);
}

printf("off hook succes\n");


dx_clrcap(&capp);
capp.ca_nbrdna=4;

if((cares=dx_dial(chdev,dialstrg,&capp,DX_CALLP|EV_SYNC))
== -1 )
{
printf("error dial");
exit(0);
}

printf("proses dial");
switch(cares)
{
case CR_CNCT:
printf("answer\n");
PlaySuara(chdev,"salampembuka.wav");
// PlaySuara(chdev,"status.wav");
if(bil==6)
{
PlaySuara(chdev,"j_enam.wav");
}
else if(bil==8)
{
PlaySuara(chdev,"j_delapan.wav");
}
else if(bil==9)
{
PlaySuara(chdev,"j_sembilan.wav");
}
else if(bil==10)
{
PlaySuara(chdev,"j_sepuluh.wav");
}

else if(bil==12)
{
PlaySuara(chdev,"j_duabelas.wav");
}
else if(bil==15)
{
PlaySuara(chdev,"j_limabelas.wav");
}
else if(bil==17)
{
PlaySuara(chdev,"j_tujuhbelas.wav");

20
}
else if(bil==19)
{
PlaySuara(chdev,"j_sembilanbelas.wav");
}
break;
case CR_BUSY:
printf("Busy");

if(dx_sethook(chdev,DX_ONHOOK,EV_SYNC)==-1)
{
printf("Error on hook\n");
exit(1);
}

printf("on hook succes\n");


printf("\ntunggu 10 detik\n");
Sleep(10000);
goto awal;
break;
case CR_NOANS:
printf("no answer");

if(dx_sethook(chdev,DX_ONHOOK,EV_SYNC)==-1)
{
printf("Error on hook\n");
exit(1);
}
printf("on hook succes\n");
printf("\ntunggu 10 detik\n");
Sleep(10000);
goto awal;
break;
default :
printf("else");

printf("\ntunggu 10 detik\n");
Sleep(10000);
goto awal;
break;
}

PlaySuara(chdev,"salampenutup.wav");

if(dx_sethook(chdev,DX_ONHOOK,EV_SYNC)==-1)
{
printf("Error on hook\n");
exit(1);
}

printf("on hook succes\n");


}
}
}
else
{
fprintf(stderr,"Failed to use the result acquired!\n");
}
goto balik;
}

21
else
{
fprintf(stderr,"Failed to execute query. Ensure table is
valid!\n");
}
}
else

{
fprintf(stderr,"Failed to retrieve the server information string.\n");
}
}
mysql_free_result(res);
goto balik;
mysql_close(hnd);
}

H. RENCANA ANGGARAN BELANJA

RENCANA ANGGARAN BIAYA PEMBUATAN SISTEM IVR PEMESANAN TIKET PESAWAT

No Urai an Volume Satuan Harga Satuan Jumlahg Harga Jumlah


Rp Rp Bagian
1 2 3 4 5 6 7

I Produk Yang Diperlukan


1 Monitor PC + CPU + Keyboard + Mouse ( HP Pavillion All in One ) 1 buah 10.100.000,00 10.100.000,00
2 Dialogic Card D/41JCT-LS atau D/4PCI-U 1 buah 2.128.275,00 2.128.275,00
3 Telepon Server Panasonic KX-T7705 1 buah 200.000,00 200.000,00
3 Telepon Digital Panasonic KX-DT333 3 buah 4.230.000,00 12.690.000,00
4 PABX 1 buah 7.250.000,00 7.250.000,00
5 AC Sharp AH-AP5NSY 2 buah 3.150.000,00 6.300.000,00
6 UPS Prolink 1 buah 2.190.000,00 2.190.000,00
7 MDF 1 buah 300.000,00 300.000,00
8 Kabel + Plug UTP RJ-11 + Socket Sambungan Kabel 1 set 219.500 219500
Jumlah I 41.377.775,00
II Biaya Instalasi
1 Pemasangan PC 1 Unit 450.000 450.000
2 Pemasangan Telepon Server dan Digital 4 Unit 350.000 1.400.000
3 Pemasangan PABX 5 Titik 250.000 1.250.000
4 Pemasangan UPS 1 unit 150.000 150.000
5 Pemasangan Kabel-kabel 20 m 250.000,00 5.000.000
6 Pengujian Produk 1 OK 3.500.000 3.500.000
Jumlah II 11.750.000
III Gaji, Upah dan Honor
1 Programmer (1 orang) 7 hari 1.200.000 8400000
2 Mechanical dan Electrical (2 orang) 14 hari 1.700.000 23800000
3 IVR Sync and Configuration (1 orang) 1 OK 3.500.000 3500000
4 Designer dan Perancangan Sistem (1 orang) 5 OK 700.000 3500000
5 Tukang Pembuatan Ruang Server (3 orang) 21 hari 150.000 3150000
Jumlah III 42.350.000
IV Biaya Survey
1 Biaya transportasi 20 Liter 10.000 200.000
2 Biaya konsumsi ( 3 orang dalam 2 hari) 6 orang 20.000 120.000
Jumlah IV 320.000
V Pembuatan Ruang Server
1 Pembuatan Raised Floor untuk mesin server,lengkap lantai landai 2 m2 3.000.000 6.000.000
2 Pemasangan plafon panel 12 m2 95.000,00 1.140.000
3 Pemasangan wire mesh 5 m3 7.021.109,63 35.105.548
4 Memasang instalasi penerangan 3 ttk 130.000,00 390.000
5 Memasang instalasi stop kontak 6 ttk 130.000 780.000
6 Memasang instalasi saklar 2 ttk 120.000,00 240.000
7 Memasang saklar 2 buah 25.000,00 50.000
8 Memasang stop kontak 6 buah 25.000 150.000
9 Memasang Instalasi MDf 1 ttk 150.000,00 150.000
10 Memasang MDF 1 buah 75.000,00 75.000
11 Memasang AC 2 buah 125.000,00 250.000
Jumlah V 44.330.548
Jumlah I s/d V 140.128.323

22

Anda mungkin juga menyukai