User login

Navigation

Breadcrumbs

Asterisk

Say Thai สำหรับ Asterisk 1.2

Say Thai สำหรับ Asterisk 1.2

มาแล้ว สิ่งที่รอคอย Asterisk Embeded

http://www.rowetel.com/ucasterisk/ip04.html

ผมติดตาม Project นี้มานานพอสมควร พอได้มา ก็คุ้มค่ากับการรอคอย การที่ opensource ทั้งหมด ทำให้การเข้าถึงส่วนของ boot loader (ใช้ u-Boot) เป็นเรื่องที่ง่ายมาก นอกจาก lilo , grub แล้วผมแทบจะไม่ได้แต่ต้อง boot loader ตัวใดเลย แม้จะเคยทำ firmware ให้ WRT54G ก็ไม่ได้แต่ boot loader มีแต่รอเสียบ ตอน boot wait ด้วย tftp

IP04 ทำให้ได้มีโอกาส แกะ u-Boot ไปด้วย ได้ลอง build asterisk พร้อม gui ตัวใหม่เข้าไป ถอด เสียบๆๆ โดยไม่ต้องกังวลว่าจะ boot ไม่ขึ้นแล้วเข้าถึงไม่ได้ เพราะ u-Boot อยู่ในมือ

ทุกอย่างดูง่ายไปหมด จะยากหน่อยก็ต้องที่จะต้อง port app ที่ต้องการพวก curl , openvpn ให้ใช้ได้กับ
cpu blackfin โชคดี ที่ได้ david และ mark ช่วย แต่ก็กำลังปวดหัวกับ fax เพราะ spandsp ใช้ floating point แต่ blackfin cpu ไม่มี FPU เลยอาจจะต้อง modify spandsp เพื่อใ้ห้ใช้ fax ได้

ความสนุก รออยู่ข้างหน้า

Asterisk tips

  • Video ต้อง canreinvite=no
  • สิ่งจำเป็นสำหรับ Realtime DB กับ SIP
    sip.conf ต้องเปิด
    rtcachefriends = yes
    rtsavesysname = yes
    rtupdate = yes
  • dialplan save มีปัญหาให้ compile แบบ don't optimize ใน make menuselect

WorldsipManager Class - สั่ง reload config

สร้างคลาสเรียกใช้ asterisk-java

Asterisk dial plan revise

รำคาญ dial plan script ของ Freepbx (AMP) มานานได้โอกาสจัดการซะที ทำใน AEL
ติดเรื่อง Call Waiting อันเนื่องมาจาก การเช็ค channel status เพื่อจะรู้ว่า Device นั้นอยู่ในสถานะอะไร
ทำได้เฉพาะใน manager API (ไม่รู้เพราะอะไร) Call Waiting จริงๆก็เป็น Function ที่ประหลาด
มันจะใช้กรณีที่ Device มีมากกว่า 1 line เช่น X-Lite กรณีที่กำลังรับสาย 1 อยู่แล้วมีสาย 2 เ้ข้ามา ถ้าปิด Call Waiting ระบบจะส่ง Busy กลับไปหาผู้โทร
AEL มันเข้า manager API ไม่ได้ แต่มีทางออกคือเลี่ยงไปใช้ call-limit แทน (ตั้งเป็น 1 ไม่รับ Call Waiting
ถ้า ต้องการก็ ตั้งให้มากกว่า 1)

Code

macro ws-std-exten( ext , user ,cont) {
// check forwarding
Set(ck_cf=${DB_EXISTS(CF/${cont}/${ext})});
Set(ck_cfb=${DB_EXISTS(CFB/${cont}/${ext})});
Set(ck_cfu=${DB_EXISTS(CFU/${cont}/${ext})});
Set(ck_dnd=${DB_EXISTS(DND/${cont}/${ext})});
if(${ck_cf}=0) {
Set(cf_dial=0);
}else {
Set(cf_dial=${DB(CF/${cont}/${ext})});
};

CallWeaver ชื่อนี่น่าจับตามอง

Asterisk ถูกท้าทายด้วยการ fork หลายครั้ง ครั้งนี้ถือเป็นครั้งที่น่าสนใจที่สุด CallWeaver ก็คือ openpbx ที่ fork ไปจาก Asterisk เมื่อ 2 ปีก่อนนั่นเอง หลังจาก Vote เลือกชื่อใหม่และกำลังประกวด logo ฝากนักพัฒนาก็ย้าย source code ทั้งหมดขึ้นไปที่ SVN เรียบร้อย ก็

Bug ประหลาดใน Asterisk 1.2.18

ใน version 1.2.3,1.2.4 เมื่อเขียน app ไปเรียก dial app ถึงแม้จะเป็น native bridge call
dial app ก็จะยังไม่หลุดออกมา ทำให้ duration ถูกต้องเสมอ

แต่ใน version 1.2.18 กลับไม่เป็นเช่นนั้น พอ native bridge call ปุ๊ป dial app ก็จะหลุดออกมา ถึงแม้ call จะยัง connect อยู่ ทำให้ duration ออกมาเป็น 0