เทคนิคการสั่งงาน Asterisk ให้รันสคริปต์ที่เราเขียนขึ้นเอง

Asterisk Opensource IP Pbx

เทคนิคการสั่งงาน Asterisk ให้รันสคริปต์ที่เราเขียนขึ้นเอง

โพสต์โดย nuiz » 20 ธ.ค. 2019 10:21

สมมติว่าเราต้องการให้ Asterisk สั่งรันสคริปต์ที่เราเขียนขึ้นมาเอง โดยที่สคริปต์นี้ไม่ใช่ AGI Script นะครับ แต่เป็นสคริปต์ที่เขียนด้วยภาษาโปรแกรมอะไรก็ได้ หรือเป็นไฟล์ข้อความ หรือเป็นหน้าเว็บเพจ ประมาณนี้ครับ

บทความนี้ผมจะแนะนำฟังก์ชั่น 2 ฟังก์ชั่นใน Asterisk ครับ ได้แก่ System() และ Shell() ทั้งสองฟังก์ชั่นนี้ใช้สั่งรันไฟล์ (สคริปต์) เหมือนกัน แต่คำสั่ง System() สั่งรันเฉยๆครับไม่ต้องการค่าที่คืนกลับมา เหมาะกับการสั่งทิ้งไม่สนใจผลลัพธ์ ส่วนฟังก์ชั่น Shell() นั้นมันจะมีค่าคืนกลับมาด้วย เหมาะกับกรณีที่ต้องการผลลัพธ์เพื่อไปทำงานต่อ

ทั้ง System() และ Shell() ให้เรียกใช้ใน Dialplan ครับ ซึ่งทั้ง 2 ฟังก์ชั่นเรายังส่งค่าเข้าไปให้ตัวแปรในสคริปต์ด้วยนะครับ สุดยอด!!!!

1. การเรียกใช้งานฟังก์ชั่น System()
สมมติว่าผมเขียนสคริปต์ที่อยากให้ Asterisk สั่งรันเมื่อมีคนโทรหาเบอร์ 1234 สั่งเฉยๆ ไม่ต้องการทราบว่าผลลัพธ์เป็นยังไง สคริปต์นี้อยู่ที่ /var/www/html/hello.php

exten => 1234,1,System(/var/www/html/hello.php)

ตัวอย่างการส่งค่าตัวแปร ${HELLO} เข้าไปในสคริปต์ จริงๆส่งไปได้หลายค่าครับ เป็นร้อยๆเลยก็ยังได้ ตัวแรกจะเป็น $argv[1] (ถ้าเป็น php) ตัวต่อไปจะเป็น $argv[2]
exten => 1234,1,System(/var/www/html/hello.php ${HELLO})

2. การเรียกใช้งานฟังก์ชั่น Shell()
สมมติว่าผมมีไฟล์สคริปต์หนึ่งที่ต้องการนำ ${CALLERID(number)} ไปเช็คในดาต้าเบสว่าเบอร์นี้อยู่ในระบบหรือไม่ ถ้ามีอยู่ในระบบให้เก็บไว้ในตัวแปรชื่อ ${CUSTOMER} สคริปต์นี้อยู่ที่ /opt/customs/checkcid.php

exten => s,1,Set(CUSTOMER=${SHELL(/opt/customs/checkcid.php ${CALLERID(number)})})

การใช้งาน 2 ฟังก์ชั่นนี้ก็ประมาณนี้ครับ

บทความที่เกี่ยวข้อง
เทคนิคการแก้ปัญหาเมื่อ 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
** หากมีปัญหากับอุปกรณ์ที่ซื้อมาเองหรือบริการที่ทำขึ้นมาเอง ให้โพสต์ถามในเว็บบอร์ดนี้นะครับ **
** งานเร่งด่วนติดต่อว่าจ้างที่เบอร์ 08-5161-9439 อีเมล์ iamaladin@gmail.com ไลน์ NuizVoip ครับ **
nuiz
Diamond Member
 
โพสต์: 5694
ลงทะเบียนเมื่อ: 24 มี.ค. 2010 09:33

ย้อนกลับไปยัง Asterisk SIP Server

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และ บุคคลทั่วไป 2 ท่าน