AsteriskThailand
February 08, 2012, 01:16:22 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: Set(CDR(userfield) ใช้งานอย่างไรครับ  (Read 1139 times)
Patrickz
Global Moderator
Sr. Member
*****
Posts: 274


View Profile WWW
« on: October 12, 2007, 04:37:10 PM »

จะนำตัวแปรอื่นๆ มาใส่ไว้ใน userfield ใช้คำสั่ง ดังนี้
Code:
exten => s,n,Set(CDR(userfield)=myvar)

แต่มันไม่ work ครับ!
Logged

dome
Star
Newbie
***
Posts: 15


View Profile Email
« Reply #1 on: October 16, 2007, 01:16:20 AM »

ใช้
exten => 111,1,Answer
exten => 111,2,Set(provider=dome)
exten => 111,3,SetCDRUserField(${provider})
exten => 111,4,Verbose(${CDR(userfield)})

ไปได้อีกซักพักครับ แล้วก็ต้อง

exten => 111,1,Answer
exten => 111,2,Set(provider=dome)
exten => 111,3,Set(CDR(userfield)=${provider})
exten => 111,4,Verbose(${CDR(userfield)})

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


View Profile WWW
« Reply #2 on: October 16, 2007, 02:07:09 PM »

ที่คุณโดมบอกว่านั้นถูกครับ แต่ผมใช้ผิด
ผมไปดักเอาที่ context [macro-hangupcall] ดังนี้
Code:
[macro-hangupcall]
exten => s,1,ResetCDR(w)
exten => s,n,Set(CDR(userfield)=value)
ซึ่งผิดครับ เพราะมันไป ResetCDR() ก่อน value เ่ลยไม่ไปบันทึกอย่างที่ควรจะเป็น ตอนนี้เลยดันให้ exten => s,1,Set(CDR(userfield)=helloworld) ขึ้นแทน เป็น

Code:
[macro-hangupcall]
exten => s,1,Set(CDR(userfield)=Oh YES!)
exten => s,n,ResetCDR(w)
....
Logged

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


View Profile WWW
« Reply #3 on: October 16, 2007, 02:20:22 PM »

Quote
ไปได้อีกซักพักครับ แล้วก็ต้อง
อันนี้คุณโดมคงหมายถึง 1.4.x  แต่ผมใช้บน 1.2.22 ปรากฏว่า ไม่สามารถใช้ SetCDRUserField ได้
เมื่อดูใน http://www.voip-info.org/wiki/index.php?page=Asterisk+cmd+SetCDRUserField เค้า note เอาไว้ว่า
Quote
Note: This function is depricated. It has been replaced by Set(CDR(userfield)=Value) in latest SVN.
แต่ก็ไม่ได้ระบุ versions ที่แน่นอน

ช่วงนี้เป็นช่วงถ่ายเลือด  จาก 1.2 ไปยัง 1.4  เลยงงงงว่าคำสั่งต่างๆ เปลี่ยนไปพอสมควร  บางคำสั่งที่จะใช้ใน 1.4 ก็ดันมาอยู่ใน 1.2 ซะดี ซึ่งน่าจะแยกจากกันเด็ดขาดไปเลย


อันนี้เป็นอีกกรณีหนึ่ง คือการใช้ Originate และกำหนด SetCDRUserField ไปเลย (จริงๆ ผมต้องการใช้แบบนี้)
จริงๆ ได้วิธีแก้ใน สั่ง Call ผ่าน AMI (Originate) แต่ผมใช้วิธีอ้อมๆ ไป  (ซึ่งก็ไม่ได้ใช้ userfiled)

Action: Originate
Channel: Local/3000@from-internal
Exten: 3001
Context: from-internal
Priority: 1
Application: SetCDRUserField
Data: var1=1|var2=2



ถ้าใช้แบบนี้ ใน userfiled จะมีค่าตามที่กำหนด  แต่เวลาสั่งโทร พอกดรับปุ๊บ จะ hangup ที่ขาแรกทันทีเลย...
« Last Edit: October 16, 2007, 02:24:52 PM by Patrickz » Logged

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


View Profile WWW
« Reply #4 on: October 17, 2007, 02:41:46 PM »

สวัสดีครับ ได้แล้วครับ Smiley

ผมใช้ Set(CDR(userfield)=value) ตามที่คุณโดมแนะนำเลยครับ  สำหรับ AMI ใช้แบบนี้

Action: SetVar
Channel: SIP/3000-0825ff00
Variable: CDR(userfield)
Value: Patrickz


ขอบคุณครับ! Smiley
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