ผมจะแนะนำฟังชั่นๆหนึ่งใน phpagi ครับ ฟังก์ชั่นนี้จะช่วยให้รับข้อมูลจากยูสเซอร์เข้ามาสู่ระบบ แล้วเราก็เอาข้อมูลนี้ไปทำงานอื่นต่อไป
ในระบบ IVR ทั่วๆไปที่โต้ตอบกับผู้ใช้งานได้ ก็จะต้องให้ผู้ใช้งานกดปุ่มบนแป้นโทรศัพท์เพื่อเลือกตัวเลือกที่ได้ยิน เข้าสู่เมนูที่ต้องการ หรือไม่ก็ป้อนข้อมูลของตัวเองเข้าไป เช่น เบอร์โทรศัพท์ หมายเลขบัตรประชาชน รหัสประจำตัวนักเรียน นักศึกษา หมายเลขบัตรเครดิต วันเดือนปีเกิด เป็นต้น
ใน phpagi มีฟังก์ชั่น get_data() ซึ่งจะเข้ามาทำหน้าที่เล่นไฟล์เสียงที่เราต้องการให้ยูสเซอร์ได้ยิน แล้วก็รับค่าที่ยูสเซอร์กด ครับ
รูปแบบฟังก์ชั่น
get_data($filename, $timeout, $max_digits);
$filename คือไฟล์เสียงที่จะเล่นให้ยูสเซอร์ได้ยิน เช่น "กรุณากดเลขบัตรประชาชนหรือหมายเลขบัตรเครดิต"
$timeout คือ timeout หน่วย millisecond ที่ยูสเซอร์ต้องกด ต้องกดตัวเลขให้ทันภายในเวลานี้ ถ้าไม่ทันจะถือว่า timeout
$max_digits คือจำนวนหลักสูงสุดที่ฟังก์ชั่นนี้จะรับ เช่น ถ้าใส่ 8 พอยูสเซอร์กดครบ 8 ก็จะถือว่าสิ้นสุดแล้ว แต่ถ้าเราไม่ใส่ค่า $max_digits คือปล่อยไว้ว่างๆ ฟังก์ชั่นนี้ก็จะยอมให้ยู
สเซอร์กดไปได้เรื่อยๆ กี่หลักก็ได้ และพอยูสเซอร์เลิกกดและครบเวลา $timeout แล้วถึงจะเอาค่าไปทำงานอย่างอื่นต่อไป
ผมมีข้อแนะนำอย่างนี้นะครับสำหรับค่า $max_digits นี้ คือว่าถ้าข้อมูลที่ลูกค้ากดมีจำนวนหลักที่แน่นอน เช่น 1 - 9 มีแต่ 1 หลัก ก็ใส่ค่า $max_digits เป็น 1 ถ้ามี 4 หลักก็ใส่เป็น 4 แต่ถ้ามีจำนวนหลักที่ไม่แน่นอนเช่น ใส่บัตรประชาชนก็ได้ ซึ่งมี 13 หลัก หรือบัตรเครดิตก็ได้ ซึ่งมี 16 หลัก หรือวันเดือนปีเกิดก็ได้ ซึ่งมี 8 หลัก (ddmmyyyy) ก็ใส่ค่า $max_digits ไว้เป็น 16 หลัก ซึ่งถ้าลูกค้ากดเลขบัตรประชาชน เขาก็จะกดแค่ 13 หลัก และจะรอจนครบ $timeout
มาดูการใช้งานกันครับ
$prompt = $agi-> get_data("please-enter-your-birthday", 5000, 8);
$digits = $prompt['result'];
please-enter-your-birthday เป็นชื่อไฟล์เสียงที่เราอัดไว้ก่อนแล้ว ไฟล์นี้จะอยู่ที่ไดเร็คตอรี่ /var/lib/asterisk/sounds
5000 คือ 5 วินาที ยูสเซอร์ต้องกดภายใน 5 วินาที
8 คือ 8 หลัก พอครบ 8 หลักก็ถือว่าสิ้นสุดการป้อนข้อมูล
ข้อมูลที่ลูกค้ากด จะเก็บไว้ในตัวแปร $digits เราก็เอาค่าตัวแปรนี้ไปทำงานอย่างอื่นต่อไป เช่น เช็คว่าเป็นวันเดือนปีเกิดที่ถูกต้องหรือไม่ และมีอยู่ในฐานข้อมูลแล้วหรือยัง ประมาณนี้ครับ
ข้อดีของพร้อมท์เสียงในฟังก์ชั่น get_data() นะครับ คือ ยูสเซอร์กดปุ่มได้เลยไม่ต้องรอให้พูดจบ