1. ตัวแปร
     จากตัวอย่างในตอนที่แล้ว เราได้ extensions.conf ดังนี้


     ====================================================

     [from-sip]                                                     ; context สำหรับโทรภายใน และโทรออก
     exten => 2000,1,Answer()
     exten => 2000,n,Dial(SIP/2000,20)
     exten => 2000,n,Hangup()

     exten => 2001,1,Answer(0)
     exten => 2001,n,Dial(SIP/2001,20)
     exten => 2001,n,Hangup()

     exten => _0[689]XXXXXXXX,1,Dial(SIP/voip/${EXTEN},30)
     exten => _0[23457]XXXXXXX,1,Dial(SIP/voip/${EXTEN},30)

     ====================================================

     จะเห็นว่าใน 2 บรรทัดสุดท้ายมี ${EXTEN}   สักษณะเช่นนี้ คือ ${NAME} เรียกว่าตัวแปร
     ${EXTEN} มีค่าเท่ากับ เลขหมายปลายทางที่ผู้โทรกด

     ${EXTEN:1}   มีค่าเท่ากับ   ตัดตัวเลขตัวแรกออกจากเลขหมายปลายทางที่ผู้โทรกด
     ตัวอย่างเช่น
    
     exten => _90[689]XXXXXXXX,Dial(SIP/voip/${EXTEN:1})

     ถ้าเรากด 90818067894 ระบบจะตัด 9 ออกแล้ว Dial เฉพาะ 0818067894

2. Application Goto()
     ใน extensions.conf ของเรา เมื่อมีสายเข้ามา ระบบจะ ring ที่ extension 2000
     ถ้าเราต้องการให้มีระบบตอบรับอัตโนมัติเราจะต้องใช้ Application Goto() มาช่วย
     
     Application Goto() จะใช้ในการบังคับให้ระบบข้ามไป process ในบรรทัดที่ต้องการ
     มีรูปแบบ ดังนี้
  
     exten => 123,1,Goto(context,extension,priority)
     หรือ
     exten => 123,1,Goto(extension,priority)   ถ้าอยู่ใน context เดียวกัน

3. Branching with Application GotoIf()
     entensions.conf ในข้อ 2 สามารถทำงานได้   แต่อาจจะเกิด loop ไม่รู้จบได้   สมมติว่ามีผูโทรเข้ามา
     แล้วไม่กดอะไรเลย   ระบบจะรอจน timeout (default = 10s) แล้ว play mainmenu   และจะวน
     loop อย่างนี้ไปเรื่อยๆ   ระบบจะเสีย incoming trunk ไปโดยเปล่าประโยชน์   จะต้องมีการกำหนดให้นับ
     จำนวน loop ถ้าครบก็ให้ Hangup()  

     GotoIf() จะมีการใช้งาน ดังนี้ 

     exten => 123,1,GotoIf(Expression?destination1:destination2)

     โดยที่ destination1, destination2 คือ

          - priority label หรือ
          - extention,priority label หรือ
          - contect,extension,priority label

     ดูตัวอย่าง

======================================================

[from-voip]

exten => s,1,Answer()
exten => s,2,Set(COUNT=0)                                         ; Set counter = 0
exten => s,3,Background(th-mainmenu)
exten => s,4,Set(COUNT=$[${COUNT} + 1])                  ; เพิ่ม counter
exten => s,5,GotoIf($[${COUNT} = 3]?stopping:goingon) ; เช็ค counter = 3 หรือไม่ (กำหนด maximum loop ที่นี่)
exten => s,6(stopping),Hangup()                                    ; counter = 3 ให้ Hangup()
exten => s,7(goingon),WaitExten()                                  ; counter < 3 ให้ทำงานต่อ


exten => t,1,Goto(s,3)
exten => i,1,Playback(th-invalid)
exten => i,2,Goto(s,3)


exten => 2000,1,Dial(SIP/2000,20)
exten => 2001,1,Dial(SIP/2001,20)

[from-sip]

exten => 2000,1,Answer()
exten => 2000,n,Dial(SIP/2000,20)
exten => 2000,n,Hangup()

exten => 2001,1,Answer()
exten => 2001,n,Dial(SIP/2001,20)
exten => 2001,n,Hangup()

exten => _0[689]XXXXXXXX,1,Dial(SIP/voip/${EXTEN},30)
exten => _0[23457]XXXXXXX,1,Dial(SIP/voip/${EXTEN},30)