เคยส่ง Fax ด้วยเว็บเพจมั๊ยครับ ถ้าไม่เคยตอนนี้เราก็จะได้มาลองทำกันแล้ว เป็นการส่ง Fax อีกรูปแบบหนึ่งซึ่งเหมาะสำหรับตอนที่เราไม่มีเครื่อง Fax โดยเราสามารถอัพโหลดเอกสารที่ต้องการส่ง Fax (แน่นอนว่าต้องอัพโหลดจากหน้าเว็บของ Elastix แต่จริงๆเราก็ทำหน้าเว็บของเราขึ้นมาต่างหากก็ได้ถ้าต้องการ) เข้าไปในเว็บเพจ แล้วให้ Elastix จัดส่งเอกสารนั้นไปยังเครื่อง Fax ปลายทาง
** คนส่ง Fax ไม่ต้องมีเครื่อง Fax เพียงแค่มีเอกสารที่ต้องการส่ง, Web Browser และเน็ตที่เชื่อมมาที่ Elastix เท่านั้น **
** เครื่อง Fax ปลายทาง อาจจะอยู่ภายในออฟฟิศหรือภายนอกก็ได้ แล้วแต่ว่าเราเชื่อมต่อสายโทรศัพท์กับการ์ด TDM410P ที่เราจะใช้อย่างไร หากสายโทรศัพท์เส้นนั้นเป็นเบอร์ Extension ภายในออฟฟิศ (ต่อกับตู้สาขาโทรศัพท์ และโทรออกไปภายนอกได้) ก็สามารถ Fax ไปเบอร์ Fax ภายในและภายนอกได้สบายๆ **
** มีช่องทางการส่ง Fax อีกวิธีหนึ่งที่ไม่ต้องใช้การ์ด Analog ก็คือส่งผ่าน IP Network ส่งไปเบอร์ Extension ที่เป็นอุปกรณ์ FXS Gateway เช่น Linksys หรืออาจจะส่งผ่าน SIP Trunk ของผู้ให้บริการ VoIP ก็ได้ วิธีนี้ค่าใช้จ่ายจะถูกกว่าแบบโทรผ่านการ์ด แต่ก็ไม่ค่อยชัวร์ครับ **
บทความนี้ผมจะสาธิตการส่ง Fax ออกทางการ์ด Analog โดยใช้การ์ด TDM410P นะครับ
มาดูวิธีทำกันเลยครับ
1. สร้าง Virtual Fax
ในตอนที่ 1 ของ การส่ง Fax ด้วย Elastix ผมได้แนะนำวิธีการสร้าง Virtual Fax ไว้แล้วนะครับ ยังไงก็คลิ๊กเข้าไปดูวิธีการสร้างได้
2. คอนฟิกการ์ด TDM410P ให้โทรออกไปภายนอกได้
ซึ่งก็ดูได้จากบทความในเว็บนี้นะครับ มีอยู่หลายบทความด้วยกัน
3. เข้าหน้าเว็บ Elastix
คลิ๊ก "Fax" -> "Virtual Fax" -> "Send Fax"
เลือก Virtual Fax ที่ต้องการจะใช้งาน (เปรียบเสมือนเราเลือก Channel ในการโทรออกหน่ะครับ) แล้วใส่เบอร์ Fax ปลายทาง ซึ่งต้องชัวร์ว่าเราเซ็ต Outbound Routes และ Trunks ให้ออกทางการ์ด TDM410P เรียบร้อยแล้ว เวลาใส่เบอร์ปลายทางก็ใส่ให้อยู่ในฟอร์แม็ตที่จะโทรออกไปได้ อย่างเช่นเครื่องผมเซ็ตไว้ว่าต้องกด 9 ตามด้วยเบอร์ปลายทาง ผมก็ใส่อย่างในรูป
ไฟล์ที่จะส่ง Fax ได้ต้องเป็น PDF หรือ TIFF หรือ TXT เท่านั้นนะครับ
4. กด Send
รอสักพักประมาณ 10 วินาทีก็จะเริ่มส่ง Fax ออก
** ถ้า Fax ครั้งแรกไม่สำเร็จ เช่นเบอร์ Fax ปลายทางไม่ว่าง Elastix ก็จะส่งใหม่ให้อีก 1 ครั้ง ห่างกันประมาณ 5 นาที **
** ถ้าส่งครั้งที่สองแล้วยังไม่ได้ Elastix จะส่ง Fax ไปเข้า Email ที่เราคอนฟิกไว้ใน Virtual Fax ซึ่งเราเลือกไว้ใน Fax Device to Use **
5. ข้อความขณะ Send Fax
ในระหว่างที่ Elastix กำลังส่ง Fax ออกไป จะมีข้อความลักษณะนี้เกิดขึ้นใน Asterisk Console (รันคำสั่ง asterisk -r หรือ asterisk -rvvvv)
- โค้ด: เลือกทั้งหมด
[Feb 22 09:24:08] -- Accepting AUTHENTICATED call from 127.0.0.1:
> requested format = slin,
> requested prefs = (),
> actual format = ulaw,
> host prefs = (ulaw|alaw|gsm),
> priority = mine
[Feb 22 09:24:08] -- Executing [9029009000@from-internal:1] Macro("IAX2/8000-6193", "user-callerid,SKIPTTL,") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-user-callerid:1] ExecIf("IAX2/8000-6193", "0]?Set(CALLERID(number)=08000)") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-user-callerid:2] ExecIf("IAX2/8000-6193", "0]?Set(CALLERID(number)=08000)") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-user-callerid:3] ExecIf("IAX2/8000-6193", "0?Set(CALLERID(number)=0)") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-user-callerid:4] Set("IAX2/8000-6193", "AMPUSER=8000") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-user-callerid:5] GotoIf("IAX2/8000-6193", "0?report") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-user-callerid:6] ExecIf("IAX2/8000-6193", "0?Set(REALCALLERIDNUM=8000)") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-user-callerid:7] Set("IAX2/8000-6193", "AMPUSER=8000") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-user-callerid:8] Set("IAX2/8000-6193", "AMPUSERCIDNAME=Fax Marketing") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-user-callerid:9] GotoIf("IAX2/8000-6193", "0?report") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-user-callerid:10] Set("IAX2/8000-6193", "AMPUSERCID=8000") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-user-callerid:11] Set("IAX2/8000-6193", "CALLERID(all)="Fax Marketing" <8000>") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-user-callerid:12] ExecIf("IAX2/8000-6193", "0?Set(CHANNEL(language)=)") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-user-callerid:13] GotoIf("IAX2/8000-6193", "1?continue") in new stack
[Feb 22 09:24:08] -- Goto (macro-user-callerid,s,22)
[Feb 22 09:24:08] -- Executing [s@macro-user-callerid:22] NoOp("IAX2/8000-6193", "Using CallerID "Fax Marketing" <8000>") in new stack
[Feb 22 09:24:08] -- Executing [9029009000@from-internal:2] Set("IAX2/8000-6193", "_NODEST=") in new stack
[Feb 22 09:24:08] -- Executing [9029009000@from-internal:3] Macro("IAX2/8000-6193", "record-enable,8000,OUT,") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-record-enable:1] GotoIf("IAX2/8000-6193", "1?check") in new stack
[Feb 22 09:24:08] -- Goto (macro-record-enable,s,4)
[Feb 22 09:24:08] -- Executing [s@macro-record-enable:4] ExecIf("IAX2/8000-6193", "0?MacroExit()") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-record-enable:5] GotoIf("IAX2/8000-6193", "0?Group:OUT") in new stack
[Feb 22 09:24:08] -- Goto (macro-record-enable,s,15)
[Feb 22 09:24:08] -- Executing [s@macro-record-enable:15] GotoIf("IAX2/8000-6193", "0?IN") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-record-enable:16] ExecIf("IAX2/8000-6193", "1?MacroExit()") in new stack
[Feb 22 09:24:08] -- Executing [9029009000@from-internal:4] Macro("IAX2/8000-6193", "dialout-trunk,3,029009000,,") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-dialout-trunk:1] Set("IAX2/8000-6193", "DIAL_TRUNK=3") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-dialout-trunk:2] GosubIf("IAX2/8000-6193", "0?sub-pincheck,s,1") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-dialout-trunk:3] GotoIf("IAX2/8000-6193", "0?disabletrunk,1") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-dialout-trunk:4] Set("IAX2/8000-6193", "DIAL_NUMBER=029009000") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-dialout-trunk:5] Set("IAX2/8000-6193", "DIAL_TRUNK_OPTIONS=tr") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-dialout-trunk:6] Set("IAX2/8000-6193", "OUTBOUND_GROUP=OUT_3") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-dialout-trunk:7] GotoIf("IAX2/8000-6193", "0?nomax") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-dialout-trunk:8] GotoIf("IAX2/8000-6193", "0?chanfull") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-dialout-trunk:9] GotoIf("IAX2/8000-6193", "0?skipoutcid") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-dialout-trunk:10] Set("IAX2/8000-6193", "DIAL_TRUNK_OPTIONS=") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-dialout-trunk:11] Macro("IAX2/8000-6193", "outbound-callerid,3") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-outbound-callerid:1] ExecIf("IAX2/8000-6193", "0?Set(CALLERPRES()=)") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-outbound-callerid:2] ExecIf("IAX2/8000-6193", "0?Set(REALCALLERIDNUM=8000)") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-outbound-callerid:3] GotoIf("IAX2/8000-6193", "1?normcid") in new stack
[Feb 22 09:24:08] -- Goto (macro-outbound-callerid,s,6)
[Feb 22 09:24:08] -- Executing [s@macro-outbound-callerid:6] Set("IAX2/8000-6193", "USEROUTCID="Marketing Dept" <8000>") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-outbound-callerid:7] Set("IAX2/8000-6193", "EMERGENCYCID=") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-outbound-callerid:8] Set("IAX2/8000-6193", "TRUNKOUTCID=") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-outbound-callerid:9] GotoIf("IAX2/8000-6193", "1?trunkcid") in new stack
[Feb 22 09:24:08] -- Goto (macro-outbound-callerid,s,12)
[Feb 22 09:24:08] -- Executing [s@macro-outbound-callerid:12] ExecIf("IAX2/8000-6193", "0?Set(CALLERID(all)=)") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-outbound-callerid:13] ExecIf("IAX2/8000-6193", "1?Set(CALLERID(all)=Marketing Dept <8000>)") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-outbound-callerid:14] ExecIf("IAX2/8000-6193", "0?Set(CALLERID(all)=)") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-outbound-callerid:15] ExecIf("IAX2/8000-6193", "0?Set(CALLERPRES()=prohib_passed_screen)") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-dialout-trunk:12] ExecIf("IAX2/8000-6193", "1?AGI(fixlocalprefix)") in new stack
[Feb 22 09:24:08] -- Launched AGI Script /var/lib/asterisk/agi-bin/fixlocalprefix
[Feb 22 09:24:08] == fixlocalprefix: Dialpattern X. matched. 029009000 -> 029009000
[Feb 22 09:24:08] -- <IAX2/8000-6193>AGI Script fixlocalprefix completed, returning 0
[Feb 22 09:24:08] -- Executing [s@macro-dialout-trunk:13] Set("IAX2/8000-6193", "OUTNUM=029009000") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-dialout-trunk:14] Set("IAX2/8000-6193", "custom=DAHDI/g0") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-dialout-trunk:15] ExecIf("IAX2/8000-6193", "0?Set(DIAL_TRUNK_OPTIONS=M(setmusic^))") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-dialout-trunk:16] Macro("IAX2/8000-6193", "dialout-trunk-predial-hook,") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-dialout-trunk-predial-hook:1] MacroExit("IAX2/8000-6193", "") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-dialout-trunk:17] GotoIf("IAX2/8000-6193", "0?bypass,1") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-dialout-trunk:18] GotoIf("IAX2/8000-6193", "0?customtrunk") in new stack
[Feb 22 09:24:08] -- Executing [s@macro-dialout-trunk:19] Dial("IAX2/8000-6193", "DAHDI/g0/029009000,300,") in new stack
[Feb 22 09:24:08] -- Called g0/029009000
[Feb 22 09:24:15] -- DAHDI/4-1 answered IAX2/8000-6193
[Feb 22 09:25:01] -- Remote UNIX connection
[Feb 22 09:25:01] -- Remote UNIX connection disconnected
[Feb 22 09:26:56] -- Executing [h@macro-dialout-trunk:1] Macro("IAX2/8000-6193", "hangupcall,") in new stack
[Feb 22 09:26:56] -- Executing [s@macro-hangupcall:1] GotoIf("IAX2/8000-6193", "1?noautomon") in new stack
[Feb 22 09:26:56] -- Goto (macro-hangupcall,s,3)
[Feb 22 09:26:56] -- Executing [s@macro-hangupcall:3] NoOp("IAX2/8000-6193", "TOUCH_MONITOR_OUTPUT=") in new stack
[Feb 22 09:26:56] -- Executing [s@macro-hangupcall:4] GotoIf("IAX2/8000-6193", "1?noautomon2") in new stack
[Feb 22 09:26:56] -- Goto (macro-hangupcall,s,6)
[Feb 22 09:26:56] -- Executing [s@macro-hangupcall:6] NoOp("IAX2/8000-6193", "MONITOR_FILENAME=") in new stack
[Feb 22 09:26:56] -- Executing [s@macro-hangupcall:7] GotoIf("IAX2/8000-6193", "1?skiprg") in new stack
[Feb 22 09:26:56] -- Goto (macro-hangupcall,s,10)
[Feb 22 09:26:56] -- Executing [s@macro-hangupcall:10] GotoIf("IAX2/8000-6193", "1?skipblkvm") in new stack
[Feb 22 09:26:56] -- Goto (macro-hangupcall,s,13)
[Feb 22 09:26:56] -- Executing [s@macro-hangupcall:13] GotoIf("IAX2/8000-6193", "1?theend") in new stack
[Feb 22 09:26:56] -- Goto (macro-hangupcall,s,15)
[Feb 22 09:26:56] -- Executing [s@macro-hangupcall:15] Hangup("IAX2/8000-6193", "") in new stack
[Feb 22 09:26:56] == Spawn extension (macro-hangupcall, s, 15) exited non-zero on 'IAX2/8000-6193' in macro 'hangupcall'
[Feb 22 09:26:56] -- Hungup 'DAHDI/4-1'
[Feb 22 09:26:56] == Spawn extension (macro-dialout-trunk, s, 19) exited non-zero on 'IAX2/8000-6193' in macro 'dialout-trunk'
[Feb 22 09:26:56] == Spawn extension (from-internal, 9029009000, 4) exited non-zero on 'IAX2/8000-6193'
[Feb 22 09:26:56] -- Hungup 'IAX2/8000-6193'
6. ผลลัพธ์ที่เครื่อง Fax ปลายทาง
ผมลองส่งเอกสารไฟล์ pdf จำนวน 3 แผ่น คุณภาพก็ประมาณนี้ครับ แสกนมาให้ดู
บทความที่เกี่ยวข้อง
เทคนิคการรับส่ง Fax ด้วย Elastix ตอนที่ 1 - ส่ง Fax จาก PSTN -> Elastix -> Email
เทคนิคการรับส่ง Fax ด้วย Elastix ตอนที่ 3 - โปรแกรม Winprint HylaFAX
เทคนิคการติดตั้งการ์ด X100P
เทคนิคการติดตั้งการ์ด TDM410P บน Elastix
เทคนิคการติดตั้งการ์ด TDM400P
เทคนิคการคอนฟิกพอร์ต FXO ของการ์ด TDM410P