AsteriskThailand
February 08, 2012, 01:17:24 AM *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
News:
 
   Home   Help Search Login Register  
Pages: [1]
  Print  
Author Topic: สั่ง Call ผ่าน AMI (Originate)  (Read 1334 times)
Patrickz
Global Moderator
Sr. Member
*****
Posts: 274


View Profile WWW
« on: October 11, 2007, 03:36:28 PM »

สวัสดีครับ  ตอนนี้ผมมีปัญหาสองประการ

1. หลังจากสั่ง Call ผ่านคำสั่ง Originate แล้ว จะทราบได้อย่างไรว่า ใช้ channel ช่องใดอยู่?

2. ผมต้องการใช้งาน userfield  โดยกำหนดจากคำสั่ง Originate โดยผ่าน Application และ Data
ดูที่ CDR ก็มาจาก  แต่ว่าในการเชื่อมต่อนั้น ระบบสั่งวางทันทีเมื่อสายแรกรับ ไม่ทราบว่าปกติการใช้งาน userfield ผ่าน AMI ใช้วิธีนี้หรือไม่้ครับ?  แล้วปัญหานี้เกิดจากสาเหตุใด?

ขอบคุณครับ
Logged

Patrickz
Global Moderator
Sr. Member
*****
Posts: 274


View Profile WWW
« Reply #1 on: October 11, 2007, 04:32:38 PM »

ได้ทางแก้แล้วครับ Smiley ด้านบนนั้ันจะเป็นการใช้งานดังนี้
Quote
Action: Originate
Channel: Local/3000@from-internal
Exten: 3001
Context: from-internal
Priority: 1
Application: SetCDRUserField
Data: var1=1|var2=2

พอใช้ Application ก็จะทำให้เกิดปัญหาอย่างที่บอกไปครับ

ทางแก้ของผมคือ ใช้ Variable แทน ก็จะได้เป็น
Quote
Action: Originate
Channel: Local/3000@from-internal
Exten: 3001
Context: from-internal
Priority: 1
Variable: var1=1
Variable: var2=2
แล้วไปรับใน dialplans แทน
Quote
[my-context]
exten => s,n,system(echo "var1: ${var1}" >> /var/log/asterisk/debug.log)

ยังเหลือ
Quote
1. หลังจากสั่ง Call ผ่านคำสั่ง Originate แล้ว จะทราบได้อย่างไรว่า ใช้ channel ช่องใดอยู่?
ต้องทำอย่างไรดี?
Logged

dome
Star
Newbie
***
Posts: 15


View Profile Email
« Reply #2 on: October 16, 2007, 01:21:26 AM »

หมายถึง channel ที่โทรไป  3001@from-internal
เหรอครับ ?
พอส่งคำสั่ง
   Action: Originate
   Channel: Local/3000@from-internal
   Exten: 3001
   Context: from-internal
   Priority: 1
ไปมันก็ dial ไป Local/3000@from-internal พอรับสายมันก็จะต่อ 3001@from-internal ให้ ซึ่ง 3001@from-internal อาจจะไป dial sip หรือ ออก zap ต่อไปได้

ที่ Patrickz ต้องการทราบ channel นี่หมายถึงตรงที่ 3001@from-internal ต่อออกไปหรือเปล่า
Logged
Patrickz
Global Moderator
Sr. Member
*****
Posts: 274


View Profile WWW
« Reply #3 on: October 16, 2007, 10:49:21 AM »

(Trixbox 2.2.4)
ปัญหาอยู่ตรงนี้ครับ  แม้ว่าเราจะกำหนด channel ให้

Channel: Local/3000@from-internal

แต่ในเวลามันโทรออกจริง มันจะเพิ่ม random string ต่อท้ายมาด้วย ดังั้น ไอ้ที่ควรจะเป็น @from-internal ก็กลายเป็น

from-internal-b753,1 (leg1)
from-internal-b753,2 (leg2)


เหตุผลเพราะว่า SIP Account สามารถเื่ชื่อมต่อได้หลายแห่งพร้อมกัน (ที่บ้าน ที่ทำงาน รถยนต์) การที่มี random แบบนี้ทำให้แยกได้ว่า account ใช้ channel ไหนกันแน่

ตอนนี้ผมคิดว่าได้วิธีแล้ว  (ยังไม่ confirm)  คือพอหลังจากสั่งโทร (Originate) เสร็จ ก็ให้ไปดัก events ต่างๆ เช่น newchannel, Newcallerid, newexten, newstate เป็นต้น

ตัวอย่างที่ได้จาก event newchannel
Event: Newchannel
Privilege: call,all
Channel: Local/3000@from-internal-a989,2
State: Ring
CallerID: <unknown>
CallerIDName: <unknown>
Uniqueid: 1192502845.309


ทีนี้ก็จะทราบได้ว่า channel name ที่เราสั่ง Call ไปนั้น คืออะไรกันแน่....  ไม่ทราบว่าวิธีนี้เป็นอย่างไรครับ?
Logged

Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.12 | SMF © 2006-2009, Simple Machines LLC Valid XHTML 1.0! Valid CSS!
SEM | Asterisk | สถานที่ท่องเที่ยว | สัมมนา SEM