หน้า 1 จากทั้งหมด 1

เทคนิคการบังคับให้ Asterisk วางสายโดยการสั่งงานผ่าน CLI

โพสต์โพสต์แล้ว: 11 ธ.ค. 2019 20:07
โดย nuiz
บทความนี้จะแนะนำเทคนิคการตัดสายที่กำลังสนทนาอยู่โดยใช้ Command Line นะครับ เผื่อจะนำไปประยุกต์ใช้งานได้ครับ เริ่มกันเลยครับ

1. คำสั่งที่จะสั่งให้ Asterisk วางสาย คำสั่งนี้รันใน Asterisk CLI
โค้ด: เลือกทั้งหมด
hangup request CHANNELNAME


โดยที่ CHANNELNAME คือชื่อ Channel ครับ เช่น SIP/101-0000000d แล้วเราจะหาค่า CHANNELNAME นี้มาได้ยังไง

2. หาค่า CHANNELNAME
ค่านี้จะเกิดขึ้นเมื่อมีการโทร (หรือที่เรียกว่า Active Channel) หรือการวางสาย หรือการที่ Asterisk คุยกับ Clients ของมัน เราสนใจเฉพาะการโทรครับ คำสั่งในการหา CHANNELNAME คือ
โค้ด: เลือกทั้งหมด
core show channels

หรืออีกคำสั่งที่ผมว่าดูง่ายกว่าคำสั่งแรกและมีเครื่องหมายแบ่งแยกแต่ละฟิลด์อย่างชัดเจน เหมาะแก่การเขียน php script ครับ คำสั่งที่ว่านี้ก็คือ
โค้ด: เลือกทั้งหมด
core show channels concise


3. พอเราได้ค่า CHANNELNAME แล้วก็จัดการรันคำสั่งในข้อ 1 ตัดสาย
โค้ด: เลือกทั้งหมด
hangup request SIP/101-0000000d


4. พิเศษครับ ถ้าจะสั่งให้ตัดทุกสาย คำสั่งนี้เลยครับ
โค้ด: เลือกทั้งหมด
hangup request all



มาดูตัวอย่างการใช้คำสั่งกันครับ
ผมเอาคำสั่งใน Asterisk CLI มาใส่ในคำสั่ง Linux ครับ จะได้ไม่ต้องเข้า asterisk -rvvvvv ก่อน

โค้ด: เลือกทั้งหมด
[root@pbx ~]# asterisk -rx "core show channels"
Channel              Location             State   Application(Data)             
SIP/102-0000000c     s@macro-dial-one:43  Up      Dial(SIP/101,,TtrI)           
SIP/101-0000000d     (None)               Up      AppDial((Outgoing Line))     
2 active channels
1 active call
8 calls processed

[root@pbx ~]# asterisk -rx "core show channels" | grep macro-dial-one           
SIP/102-0000000c     s@macro-dial-one:43  Up      Dial(SIP/101,,TtrI)   

[root@pbx ~]# asterisk -rx "core show channels concise"
SIP/102-0000000c!macro-dial-one!s!43!Up!Dial!SIP/101,,TtrI!102!!!3!167!SIP/101-0000000d!1575986829.12
SIP/101-0000000d!from-internal!!1!Up!AppDial!(Outgoing Line)!101!!!3!167!SIP/102-0000000c!1575986829.13

[root@pbx ~]# asterisk -rx "hangup request SIP/102-0000000c"
Requested Hangup on channel 'SIP/102-0000000c'


บทความที่เกี่ยวข้อง
เทคนิคการแก้ปัญหาเมื่อ Asterisk ฟ้อง No RTP Engine
เทคนิคการติดตั้ง Asterisk-GUI เพื่อคอนฟิก Asterisk
การเขียน Dialplan เพื่อโอนสายไปยังเบอร์อื่นตามเงื่อนไขการโทร
เทคนิคการดาวน์โหลดไฟล์เสียง mp3 จากเว็บ TTS (ใหม่)
เทคนิคการติดตั้ง Asterisk 16.x + DAHDI 2.11.1 บน CentOS 7
เปิดบริการ อบรม Issabel/FreePBX/Elastix ด้วยคอร์สพิเศษ ให้ติดตั้ง คอนฟิกคล่อง ใช้งานคล่อง ได้ใน 3 วัน
วิธีการติดตั้ง Issabel บน CentOS 7
ตัวอย่างการใช้งาน Action URL บน Grandstream IP Phone
รวมเทคนิคการใช้งาน RasPBX - Asterisk on Raspberry Pi
เทคนิคการใช้งาน Mikrotik RouterOS