เล่าสู่กันฟังนะครับ ข้อมูลนี้อาจไม่ถูกต้อง 100%
ปัญหาอย่างหนึ่งที่ผมคิดว่าท่านที่ใช้งาน Free Softphone (Zoiper, PortGo, หรือโปรแกรมอื่นๆ) บน Smartphone ไม่ว่าจะเป็นค่าย Android หรือ IOS ต้องเจอก็คือ เวลาหน้าจอดับไป Softphone ก็ดับไปด้วย โทรไม่เข้าอีกเลยจนกว่าจะเปิดหน้าจอขึ้นมาอีกครั้ง
ถ้าเจอปัญหาแบบนี้ สาเหตุก็คือ ระบบปฏิบัติการไม่ว่าจะเป็น Android หรือ IOS มันสั่งปิดโปรแกรมไปครับ สั่งปิดเพื่อประหยัดแบตเตอรี่ แม้ว่าเราจะคอนฟิก Softphone ให้รัน Background แล้วก็ตาม ก็ยังอาจจะเจอปัญหาอยู่
ปัญหานี้บน Android ไม่หนักเท่ากับ IOS ครับ ตามที่ผมได้ยินมานะครับ พอดีผมใช้แต่ Android ครับ
มีปัญหาแบบนี้ตอนไหน?
จะมีปัญหาตอนโทรเข้าครับ โทรจากเบอร์อื่นเข้าเบอร์ Softphone ครับ ถ้าหน้าจอดับ (โปรแกรมดับ) จะโทรไม่เข้าเพราะสถานะเบอร์ที่ Asterisk มองเห็นจะเป็น Unreachable หรือ Unknown ส่วนการโทรออกจะไม่มีปัญหาเลย เพราะก่อนโทรออกเราต้องเปิดหน้าจอ Smartphone และเปิดโปรแกรม Softphone ขึ้นมาก่อนจึงจะโทรออกได้ เมื่อเปิดโปรแกรม Softphone มันจะรีจิสเตอร์กับ Asterisk ทันทีครับ
เราจะแก้ไขปัญหานี้ยังไง...
วิธีหนึ่งที่นิยมใช้กันตอนนี้คือ ส่ง PUSH Notification ไปปลุก Softphone ให้ตื่นแม้ว่าหน้าจอ Smartphone จะยังดับอยู่ก็ตาม (ไม่ได้ปิดเครื่องนะครับ) เทคนิคนี้ใช้งานได้ทั้ง Android และ IOS ครับ โปรแกรมอื่นๆไม่ว่าจะเป็น Fabebook, Line, Lazada, Shopee, ... ก็น่าจะใช้เทคนิคนี้ด้วยครับ (เดาเอาครับ ถ้าไม่ใช่ต้องขออภัยครับ)
โดยที่เมื่อเราติดตั้ง App มันจะวิ่งไปลงทะเบียนกับ Server ของเจ้าของ App ข้อมูลที่ส่งไปด้วยมีข้อมูลหนึ่งที่สำคัญมากคือ Device ID หรือ Token ID ของเครื่องครับ Smartphone แต่ละเครื่องจะมี Token ID ไม่ซ้ำกัน เมื่อเราต่อเน็ตไม่ว่าจะผ่าน 3G/4G หรือ Wifi ก็ตาม ทาง Android/IOS จะรู้เลยว่าเครื่องเราออนอยู่ตรงไหนของโลก มีไอพีอะไร
เวลาเราจะสั่ง PUSH Notification ให้ไปปลุก Softphone เราต้องรู้ Token ID ของเครื่องที่ติดตั้งและรู้เบอร์ Extension ด้วย เมื่อสั่ง PUSH เราต้องส่งข้อมูลไปยัง Server ของ Android/IOS ให้มันจัดการปลุก Softphone บนเครื่องปลายทาง
เราจะส่ง PUSH ไปยังเครื่องปลายทางเองไม่ได้นะครับ เพราะเมื่อ Softphone ดับไป มันจะไม่รีจิสเตอร์กับ SIP Server แล้ว เราจะไม่รู้ IP ของเครื่อง แต่ Android/IOS รู้ IP เครื่องเพราะเครื่องต้องติดต่อกับ Server ของ Android/IOS ตลอดเวลา
เราจะเอามาประยุกต์ใช้งานกับ FreePBX/Issabel/Elastix ได้อย่างไร?
1. เราต้องพัฒนาระบบ PUSH Notification
2. เราต้องพัฒนา Softphone ที่รองรับ Push Notification - โปรแกรม Softphone ที่ดาวน์โหลดได้ฟรีนั้น ถ้ามันมี PUSH Notification ก็แสดงว่ามันต้องทำงานร่วมกับ PUSH Server ของเจ้าของ Softphone ครับ
3. แก้ไข Dialing Plan บน FreePBX/Issabel/Elastix ทำนองว่า ถ้าเบอร์ Unreachable ก็ให้ส่ง PUSH Notification ออกไปปลุก
ถ้ายังรัน Softphone ในโหมด Background ได้ ควรต้องทำ PUSH Notification มั๊ย?
ผมว่าใช้ Background เถอะครับ เปลือง Battery หน่อยไม่เป็นไร เพราะกระบวนการทำระบบ PUSH Notification มันค่อนข้างยุ่งยากและมีค่าใช้จ่าย (ถ้าจ้างทำ)
ประมาณนี้ครับ ถ้าผมนึกอะไรออกอีกผมจะมาเขียนต่อครับ
เทคนิคการใช้งาน Issabel
เทคนิคการใช้งาน Elastix
เทคนิคการใช้งาน Asterisk
เทคนิคการใช้งาน FreePBX