ในตอนนี้เราจะสร้าง IVR ระบบตอบรับที่ใช้ในบริษัทแบบง่ายๆ
ก่อนอื่นมาดูโฟลเดอร์ที่เก็บ configuration ของ freeswitch กันก่อน
โฟลเดอร์ /etc/freeswitch/dialplan จะเก็บ xml ไฟล์ที่จัดการเรื่อง call routing
โฟลเดอร์ /etc/freeswitch/directory จะเก็บ xml ไฟล์ของ extensions
โฟลเดอร์ /etc/freeswitch/ivr_menus จะเก็บ xml ไฟล์ที่กำหนดการทำงานของ IVR
โฟลเดอร์ /etc/freeswitch/sip_profiles จะเก็บ xml ไฟล์ที่กำหนดคุณสมบัติของ SIP User Agent ทั้งฝั่ง trunk และฝั่ง extension
ดังนั้น การสร้าง IVR จะทำในโฟลเดอร์ /etc/freeswitch/ivr_menus
สร้างไฟล์ main_menu.xml ดังนี้
======================================================
<include>
<menu name="main_menu"
greet-long="custom/main_long.wav"
greet-short="custom/main_short.wav"
invalid-sound="custom/invalid.wav"
exit-sound="voicemail/vm-goodbye.wav"
confirm-attempts="3"
timeout="10000"
inter-digit-timeout="2000"
max-failures="3"
max-timeouts="3"
digit-len="4">
<entry action="menu-exec-app" digits="1" param="transfer 2001 XML default"/>
<entry action="menu-exec-app" digits="2" param="transfer 2002 XML default"/>
<entry action="menu-exec-app" digits="3" param="transfer 2003 XML default"/>
<entry action="menu-exec-app" digits="4" param="transfer 2004 XML default"/>
<entry action="menu-exec-app" digits="5" param="transfer 2005 XML default"/>
<entry action="menu-exec-app" digits="/^([1-3][0-9]{3})$/" param="transfer $1 XML features"/>
<entry action="menu-top" digits="9"/>
</menu>
</include>
======================================================
greet-long คือ เสียงหลักของ main menu เช่น บริษัท ABC สวัสดีค่ะ ติดต่อsales กด 1 ติดต่อฝ่ายเทคนิค กด 2 ติดต่อฝ่ายบัญชี กด 3
ติดต่อฝ่ายบุคคล กด 4 ร้องเรียน กด 5 หรือกดหมายเลขภายในที่ท่านทราบ เป็นต้น
greet-short คือ เสียงรองของ main menu กล่าวคือ ถ้าจะ play main menu ซ้ำก็จะ play เฉพาส่วนที่ให้ผู้โทรเลือก (ตัวเลือก 1-5)
(ไม่มีคำว่า บริษัท ABC สวัสดีค่ะ)
invalid-sound คือ เสียง ivr ที่ play เมื่อผู้โทร กดตัวเลขที่ไม่มีใน menu (ท่านกดผิด กรุณากดใหม่)
exit-sound คือ เสียง ivr ที่ play เมื่อผู้โทรกดผิดครบจำนวนครั้ง (max-failures) หรือลูกค้าไม่กดอะไรเลยจน ivr timeout ครบจำนวนครั้ง (max-timeouts)
timeout คือ ระยะเวลาที่ ivr รอให้ผู้โทรเลือกกดตัวเลือกต่างๆ ถ้าผู้โทรไม่กด ivr ก็จะถือว่ามี timeout เกิดขึ้น
digit-len คือ จำนวนตัวเลขมากที่สุด ที่ ivr จะรับจากผู้โทร
ในส่วนที่เลือกตัวเลือก 1-5 ระบบจะโอนไป extension 2001-2005 ตามลำดับ
ในส่วน entry บรรทัดที่ 6 สามารถกดเบอร์ภายในได้เลย
entry บรรทัดที่ 7 กด 9 จะกลับมา play main menu อีกครั้ง (ใช้ greet-short)
ส่วนเสียงที่บันทึก main_long.wav, main_short.wav, invalid.wav, ใช้ format ดังนี้ wav file uncompressed, 16 bit resolution,
8000 Hz sampling rate แล้ว upload ไปที่โฟลเดอร์ /usr/share/freeswitch/sounds/en/us/callie/custom/
ขั้นตอนสุดท้าย คือ การสร้าง extension เพื่อโทรเข้า main menu โดยการสร้างไฟล์ 00_main_menu.xml ในโฟลเดอร์ /etc/freeswitch/conf/dialplan/default/
============================================
<include>
<extension name="main_menu">
<condition field="destination_number" expression="^(5050)$">
<action application="answer"/>
<action application="sleep" data="2000"/>
<action application="ivr" data="main_menu"/>
</condition>
</extension>
</include>
============================================
เมื่อทำทุกอย่างเสร็จให้เข้า freeswitch console แล้ว reloadxml เริ่มทดสอบ ivr ได้แล้วว่าทำงานตามที่ต้องการหรือไม่
# chown freeswitch:freeswitch 00_main_menu.xml
# fs_cli
freeswith@sipx> reloadxml
freeswitch@sipx> /exit
ใช้สายในโทรเข้า 5050 เพื่อทดสอบ IVR ว่าทำงานตามที่คอนฟิกหรือไม่
เมื่อทดสอบเรียบร้อยแล้ว อย่าลืมสร้าง inbound route เพื่อส่งสายนอกเข้า IVR
เพื่อใช้งานจริง โดยแก้ไขไฟล์ /etc/freeswitch/dialplan/public/00_inbound_did.xml ดังนี้
=======================================================
<include>
<extension name="public_did">
<condition field="destination_number" expression="^(02579XXXX)$">
<action application="set" data="domain_name=$${domain}"/>
<action application="transfer" data="5050 XML default"/>
</condition>
</extension>
</include>
=======================================================
save file, เข้า freeswitch console (fs_cli), reloadxml แล้วลองโทรเข้าจากเบอร์บ้านและโทรศัพท์มือถือ
เป็นอันว่าตอนนี้เรามี IVR ใช้งานในระบบเรียบร้อยแล้ว