INTERACTIVE VOICE RESPONSE
OBJECTIVES
¾What is IVR ?
¾General Benefits
¾How IVR works ?
¾IVR infrastructure
¾IVR services
¾IVR Applications
¾Voice Processing Board
¾IVR Programming
What is IVR ?
Definisi :
IVR adalah teknologi teleponi dimana sebuah komputer bisa
mendeteksi suara (voice) dan penekanan tombol pesawat telepon dengan menggunakan panggilan telepon normal
Sistim IVR dapat me-respon panggilan menggunakan suara yang telah direkam terlebih dahulu, kepada pemanggil untuk pemrosesan
berikutnya.
Definisi Lain :
IVR adalah sistem teleponi otomatis yang berinteraksi dengan
pemanggil, menghasilkan informasi dan me-rute kan panggilan ke tujuan yang tepat.
IVR adalah salah satu aplikasi dari teknologi CTI
Mengapa memilih IVR ?
1. IVR bisa diaplikasikan untuk berbagai jenis layanan yang tidak
memerlukan proses diskusi antara user dengan penyedia jasa
layanan (misal : telephone-banking, layanan tagihan pulsa telepon,
layanan prakiraan cuaca, validasi credit card dsb)
2. IVR hanya berbasis input dari keypad pesawat telepon user
(12 tombol yang tersedia : 1,2,3,4,5,6,7,8,9,*,0,#) dan jalur PSTN
3. Speech recognition bisa diaplikasikan pada sistim IVR untuk
menggantikan fungsi keypad.
Pada intinya, IVR mendukung tiga ‘A’ :
Anyone, Anywhere, Anytime
General Benefits
1. Membatasi / mengurangi waktu agent / operator.
2. Membatasi kelelahan agent terhadap pertanyaan yang berulang-ulang.
3. Nilai tambah untuk waktu tunggu.
4. Kemampuan mem-broadcast message yang berulang-ulang. 5. Menguntungkan bagi user lepas, yang tidak ingin mengunjungi
website karena tidak memiliki PC, atau merasa membuang waktu untuk memboot-up PC mereka hanya untuk menjalankan transaksi yang sederhana.
6. Penyediaan supply informasi ter-update secara konstan via voice. 7. Bisa diakses selama 24 jam perhari, 365 hari dalam setahun.
8. Menyimpan informasi dari pemanggil / customer. 9. Menyediakan operasi-operasi streamline
Apa saja yang bisa dilakukan oleh IVR ?
9 Pengenalan DNIS (Dialed Number Identification Service)
9 Kemampuan konversi Text-to-Speech
9 Arsitektur dari skala kecil sampai besar
9 Multiple Development Platform
9 Dilengkapi dengan Graphical Design sesuai selera
9 Punya kemampuan Speech Recognition
9 Dapat dikoneksikan dengan bermacam-macam jenis jalur
(twisted-pair, T1, E1, IP maupun ISDN)
9 Punya konektifitas Database
9 Memiliki kemampuan monitoring
9 Kemampuan call transfer ke ekstensi lain
9 Punya konektifitas web site
How IVR works ?
1. Pemanggil mendial nomor server IVR, sampai terkoneksi dengan diberikannya jawaban dari server IVR (biasanya berupa greeting). 2. Sistim IVR mengeksekusi aplikasi yang dipilih berdasarkan DNIS
(Dialed Number Identification Service).
3. Di dalam aplikasi tersebut akan dimainkan suara yang sudah direkam sebelumnya kepada pemanggil.
4. Pemanggil memilih opsi-opsi yang disediakan dalam aplikasi dengan cara menekan tombol-tombol keypad pesawat teleponnya
(menggunakan sistim DTMF) atau membunyikan kata (Speech
recognition).
IVR Infrastructure
Hardware :
1. PC + Accessories (detailed on Voice Processing Board Explanation) 2. Voice Processing Board
3. Phone Terminal
Software :
1. Application Programming (Visual Basic, C++, Java, etc) 2. Database Programming (MySQL, MS Access, Oracle) 3. Voice Processing Board Driver
Tambahan :
•Jalur telepon (analog, digital, E1, T1) •Alarm eksternal
Flow Chart Pengaksesan IVR (Inbound)
Dial Server No.
Connected ? Opening Greeting Choose Menu : 1.. 2.. . # Out of System START A N Y B 1 2 Closing Greeting # STOP .. Database Menu 2 Database Menu 1 A B Y Y N N
Jenis Layanan IVR
INBOUND SERVICE
Æ Jenis layanan yang akan dijalankan setelah user /
customer mendial nomor IVR server
OUTBOUND SERVICE
Æ Jenis layanan yang bersifat delivering messaging,
pemberitahuan atau pengingat suatu event
Æ Disampaikan pada waktu tertentu dengan
mem-broadcast suara yang telah direkam sebelumnya ke
telepon customer, karyawan atau khalayak umum
IVR Applications :
Inbound Service
1. Business Applications
Phone Banking
Credit card validation Human Resources
Inventory queries and stock availability Survey automation Employee Scheduler Tax information 2. Educational Applications Transcripts Grades Course registration Special events Prima K - PENS
3. Service Applications
Health care
Medical Lab test results Physician selection
Hotel reservation and information
4. Entertainment Applications
Voting in TV game shows such as Pop Idol
Take orders for mobile content, such as ringtones Weather forecasts
IVR Applications :
Outbound Service
¾ Hotel wake up calls
¾ Medication reminder untuk pasien
¾ Pemberitahuan darurat untuk bisnis atau sekolah (misal :
pemadaman listrik, atau issue keamanan)
¾ Pemberitahuan Event khusus (misal : pertandingan
olahraga, musik dll)
¾ Iklan Politik atau komersial
¾ Patient Appointment
¾ Payment Reminder
IVR Illustration
Outdial Patient Reminder
Dokter Perangkat IVR Sentral Telepon Agus Wayan Butet 5947288 8712345 3942215IVR Customer’s Profile
"For ten of the last twelve years, Pizza Hut® was named Best Pizza Chain in America in the "Choice in Chains" national consumer survey published annually by Restaurants & Institutions Magazine. In 1997 Consumer
Reports named Pizza Hut the best pizza chain in America and in 2000 and 2003, The Dallas Business Journal named Pizza Hut "The Best Company to Work For" in Dallas/Fort Worth. This is our mission. Everything we do
reflects this mission and the values that make it possible" -www.pizzahut.com
Pizza Hut utilizes phone answering services at Database Systems Corp. to provide announcements and special offers to its existing clients. As a
special promotion to customers who have previously placed orders, Pizza Hut offers discounts and free specials with new orders. Pizza Hut has
VOICE PROCESSING BOARD
Fungsi-fungsi :
- Digital Signal Processing,
- Telephone Signaling System Handling
- Voice processing and recognizing
- DTMF (Dual Tone Multi Frequency) Recognizing.
Manufacturer :
• Intel Æ Dialogic
• Brooktrout Æ Rhetorex
• Altigen Æ TRITON
Minimum System Requirements
IBM PC/AT based on Pentium I 233MHz (or higher) processor.
64 Megabytes RAM
1.44 MB Floppy Drive.
Minimum 4.0 GB Hard Disk (Note: 10 MB. 1 Hour of voice).
56K Hayes Compatible MODEM. (3Com U.S. Robotics
Recommended) Æ optional
VGA Card.
SVGA Monitor
Keyboard and Mouse
4-Port Voice Processing Boards. (Up to 12 boards per system)
Konfigurasi IVR via PBX
Computer PBX Telepon 1 Telepon 2 Card Dialogic Card Computer Telepon 2 Telepon 1 PBX Prima K - PENSD/41JCT-LS
This board contains of 4 analog ports, J series, PCI slot, CT Bus Windows and Linux Operating System
Software driver is installed first, followed by hardware installation Features :
• Voice mail / messaging
• Interactive Voice Response • Contact Center • Audiotext • Operator Service • Dictation • Autodialer • Unified messaging
D/4PCIU
This board contains of 4 analog port, with PCI slot
Windows 2000, NT Operating System
Features :
•Networked voice messaging
•Automated attendant
•Interactive voice response
•Enhanced messaging
Plug & Play Board, implemented for small or medium
Enterprise application
IVR PROGRAMMING
Persiapan-persiapan :
1. Install Voice Board Driver pada PC
2. Pasang Voice Board pada PC, untuk digunakan sebagai IVR Server 3. Aktifkan Voice Board
4. Siapkan Software Pemrograman (C/C++) untuk membuat program Aplikasi IVR
5. Rekam suara dengan informasi tertentu. SImpan dalam file.
6. Koneksikan port-port analog pada Voice Board dengan jalur telepon analog
Instalasi Voice Board Driver
Untuk tipe D/41JCT-LS Æ Dialogic System Release 5.1
Æ Driver ini juga dilengkapi beberapa fungsi untuk pemrosesan Voice dan fungsi teleponi lainnya oleh Dialogic Card, berbasis C
Programming
Untuk tipe D/4PCI-U Æ Dialogic System Release 5.1.1 dan Feature Pack Æ idem dengan di atas
Pemasangan Voice Board pada slot PCI
Pembuatan Software Aplikasi IVR
#include <stdio.h> Preprocessor directive
fungsi_lain(); Prototype fungsi lain
main() {
statement; Fungsi utama
}
fungsi_lain() {
statement; Fungsi lain
}
Struktur Pemrograman C/C++
Beberapa Fungsi Dialogic yang harus disiapkan :
1. dx_open()Fungsi ini untuk membuka channel pada card.
Fungsi lain dapat dijalankan setelah channel dibuka. Command yang digunakan adalah :
int dx_open(namep, oflags)
char *namep=pointer ke channel yang akan dibuka channel B1C1=dxxxB1C1
channel B1C2=dxxxB1C2 channel B1C3=dxxxB1C3 channel B1C4=dxxxB1C4
int oplags=disediakan fungsi selanjutnya oflags=null
2. dx_sethook()
Fungsi yang mengontrol status kondisi hook dari channel tertentu.
int dex_sethook(chdev, hookstate, mode)
Parameter Penjelasan
chdev Menunjukkan channel yang telah
dibuka
hookstate
Menunjuk kondisi hook
•DX_ONHOOK untuk kondisi onhook
•DX_OFFHOOK untuk kondisi off hook
mode
•EV_SYNC : menjalankan
dengan mode sinkron
•EV_ASINC : menjalankan dengan mode asinkron
3. dx_wtring()
Fungsi yang menunggu banyaknya jumlah ring tone dan merubah kondisi channel menjadi On Hook atau Off Hook.
int dx_wtring(chdev, nrings, hookstate, timeout)
Parameter Penjelasan
chdev menunjukkan channel yang sudah dibuka dx_open
rings banyaknya rings yang ditunggu sebelum setting hookstate
hookstate Menunjuk kondisi hook
•DX_ONHOOK untuk kondisi onhook
•DX_OFFHOOK untuk kondisi off hook
4. dx_getdig ()
Fungsi ini digunakan untuk menerima digit dari penelpon.
int dx_getdig(chdev, tptp, digitp, mode)
DV_TPT*tpt = menunjuk ke stuktur tabel parameter terminasi DV_DIGIT = menunjuk ke struktur User Digit Buffer
Stuktur dari DV_DIGIT :
typedef struct dv_digit {
char dg_value[DG_MAXDIGS-1]; char dg_type[DG_MAXDIGS-1]; } DV_DIGIT;
5. dx_playiottdata()
Fungsi untuk menjalankan rekaman suara (file suara) dari beberapa sumber.
short dx_playiottdata (chdev, iottp, tptp, xpbp, mode)
Parameter Penjelasan
chdev menunjukkan channel yang telah
dibuka dx_open
iottp menunjuk ke struktur DX_IOTT
tptp menunjuk ke struktur DX_TPT
xpbp menunjuk ke struktur DX_XPB
mode menunjukkan mode yang digunakan;
•EV_SYNC : mode sinkron
•EV_ASYNC : menjalankan dengan mode asinkron
DV_TPT tpt[3]; 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;
Program Deteksi Digit
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){
MessageBox("Error get digit"); exit(1);
}
SetDlgItemText(IDC_DIGIT1,"Get digit success"); for(cnt=0;cnt<numdigs;cnt++){
digit[cnt]=digp.dg_value[cnt]; } return(digp.dg_value[0]); Prima K - PENS
Program Play Suara 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){
Contoh Informasi yang direkam dan disimpan dalam file suara
Nama File Kalimat
intro.wav Selamat datang dalam Layanan Informasi Restoran Cepat Saji Makan Enak pilihan.wav Tekan 1 untuk informasi menu makanan
Tekan 2 untuk informasi menu spesial hari ini Tekan 3 untuk informasi menu diet
Tekan * untuk keluar makanan.wav Ayam saus Inggris
Ayam Bakar Mentega Kepiting Saus Asam Manis Udang Cah Jamur
Mie goreng spesial
spesial.wav Menu spesial hari ini adalah Ikan Bakar Madu diet.wav Tekan 1 untuk informasi diet rendah kolesterol
Tekan 2 untuk informasi diet rendah kalori Tekan # untuk kembali ke menu utama
kolesterol.wav Menu rendah kolesterol yang disarankan adalah nasi putih tumis kangkung tempe bacem
kalori.wav Menu rendah kalori yang disarankan adalah kentang stik daging salad buah keluar.wav Terima kasih telah mengakses layanan Informasi Restoran Cepat Saji Makan
Enak
START Tekan nomor.serve r Connect intro.wav pilihan.wav ‘1’ Makanan.wav ‘2’ 1’ ‘3’ 1’ spesial.wav diet.wav ‘ * ’ ‘1’ ‘2’ 1’ ‘ # ’’ kolesterol.wav kalori.wav keluar.wav musik.wav Y Y Y Y Y N N N N N Y N A A
Flow Chart Aplikasi IVR
Program Utama
void CKenalDigitDlg::OnTombol() { int chdev; char number[4],dig[10]; //Open channel// if((chdev = dx_open("dxxxB1C1",NULL))==-1) { MessageBox("Error open channel");exit(1); }
SetDlgItemText(IDC_CHANNEL,"Open channel success");
//Set on hook//
if(dx_sethook(chdev,DX_ONHOOK,EV_SYNC)==-1){ MessageBox("Error on hook");
exit(1); }
SetDlgItemText(IDC_HOOK,"On hook success");
//Wait ring tone//
if(dx_wtring(chdev,2,DX_OFFHOOK,-1)==-1){ MessageBox("Error off hook");
exit(1); }
SetDlgItemText(IDC_WAITRING,"Off hook success");
PlaySuara(chdev,"intro.wav"); awal: PlaySuara(chdev,"pilihan.wav"); number[0]=DetectDigit(chdev,dig,1); number[1]='\0'; if(number[0]=='1') { PlaySuara(chdev,"makanan.wav"); goto awal; } else if(number[0]=='2') {
else if(number[0]=='3') { PlaySuara(chdev,"diet.wav"); number[0]=DetectDigit(chdev,dig,1); number[1]='\0'; if(number[0]=='1') { PlaySuara(chdev,"kolesterol.wav"); goto keluar; } else if(number[0]=='2') { PlaySuara(chdev,"kalori.wav"); goto keluar; } else if(number[0]=='#') goto awal; } else if(number[0] == '*') { keluar: PlaySuara(chdev,"keluar.wav"); PlaySuara(chdev,"musik.wav"); } }