| 
 CLIR is used to display Asterisk debug information. Please read how to take the CLIR.  Output information is used to pinpoint the problem; for example, if the  call is not reaching its destination. Please read the instructions  below on how to interpret the debug information: 
 
 AGI variables:    The  first part of CLIR consist of variables that are being sent from  Asterisk to us. It basically gives information about who is calling who,  callerid, account code, channel type, and so on.  So let's describe some of these fields: 
     19:05:51 VAR: agi_channel: SIP/1001-08185a40  |        This  is channel type. It can be SIP, IAX2, or Zap depending on the incoming  transport. In the previous version this was used to identify extensions,  but it now uses the account code first (look below). If accountcode  fails, then we go for this.     19:05:51 VAR: agi_language: en  19:05:51 VAR: agi_type: SIP  19:05:51 VAR: agi_uniqueid: 1173377151.6  |        This  is an important number. It tells us the unique id of the call. Each  call has a unique number which consists of the current timestamp of the  call. Recordings, CDRs, and CLIRs are all stored and linked up with this  key.    It  is important to remember that on certain actions, such as Queue exit  and some types of transfers, this number is preserved. That means that 3  or 4 separate calls can have 1 single unique id. That is how we link  them up on the CDR page in the latest versions.    19:05:51 VAR: agi_callerid: 1001  |        This tells us the caller id.      19:05:51 VAR: agi_calleridname: x-lite  |        This  is the name part of the caller id. Previously, these two variables were  showed as: x-lite <100> and were parsed like that. But they are  now two separate fields.      19:05:51 VAR: agi_callingpres: 0  19:05:51 VAR: agi_callingani2: 0  19:05:51 VAR: agi_callington: 0  19:05:51 VAR: agi_callingtns: 0  19:05:51 VAR: agi_dnid: *149  19:05:51 VAR: agi_rdnis: unknown   19:05:51 VAR: agi_context: default  |        Another important field is the context we are in. If the context is ‘default’, it means that it is a local call (extension to extension, extension to outside).      If  the context is the name of the trunk, it means it is an incoming call.  In such contexts, only DIDs are allowed. That is why you may have CLIRs  which say ‘Destination not found’ because we do not allow anything except DIDs.   There are several other contexts that essentially tell PBXware what limitations are to be performed.  When we are in ‘transfer’ context, there are no limitations for destinations.
     19:05:51 VAR: agi_extension: *149  |        Extension that is being called. This tells us it is *149.      19:05:51 VAR: agi_priority: 1  19:05:51 VAR: agi_enhanced: 0.0  19:05:51 VAR: agi_accountcode: 1001  |          This variable will be used to identify local extensions.   Now we are going to identify the second part of the CLIR. It consist of three parts:   The TIME command-to-be-performed result-from-asterisk  Command to be performed can be of two types: If it begins with APP: it means that we tell Asterisk to do something.     If it doesn’t being with APP: it means we are just echoing some debug information so we can easily track what is going on if there is a problem.   result-from-asterisk  usually consist of result=something, and it really is useful only for  APP: entries as that is when we actually would like to read some result  from Asterisk.  So, lets begin: 
     19:05:51 APP: get variable TRANSFER_PARENT 200 result=0  |          Here  we ask Asterisk for TRANSFER_PARENT variable. As you can see Asterisk  said result=0, meaning there is no such variable. If the result was  something like this result=1131023912.1 then it means the variable is  set.  This  variable tells us that we are either part of a transferred call or we  are basically a new call. This works only for Blind transfers and normal  transfers. Attendant transfers are shown as new calls and therefore  TRANSFER_PARENT equals 0 there.      19:05:51 APP: set variable __TRANSFER_PARENT  1173377151.6 200 result=1  |         Here  we set TRANSFER_PARENT variable with our current uniqueid. Note the __  before variable: it means that Asterisk should copy this variable to all  calls  that follow up this one.
     19:05:51 APP: set variable DNID *149 200 result=1  19:05:51 APP: get variable ReferenceID 200 result=0  |         This is for Denises application, so you can skip this.
     19:05:51 Detected accountcode '1001' ... 200 result=1  |         Ok, this means we detected accountcode 1001 from agi_accountcode.
     19:05:51 APP: get variable BLINDTRANSFER 200 result=0  |         Checking for Blind transfer. What does this mean? If somebody transferred a 3rd party, it means we have to force a ‘transfer’  context which will allow that party to be transffered to ANY extension.  This is might be a security risk, but it is the only way to transfer 3rd party successfully.
     19:05:51 '*149' is not in DID database,  continuing ... 200 result=1  |          Ok, now we check if *149 is in DID database. Why are we doing this? Well for two reasons:  1) Sometimes we have to use context ‘default’  for SIP calls as there are many broken SIP trunks (they send calls from  different IP addresses). This way we detect DID and immediately block  it.  2) If local extensions calls a local DID, that means we won’t  dial out, but actually we will just dial in the local extension.  Example: say we have a DID 061400500 and if local extensions calls that  number, we won’t dial out thru our trunk (say BH Telecom), but we would actually just translate that number to extension 100.
     19:05:51 Set limit - 246 200 result=1  |         Ok, here we set a limit on global level. At the moment this tells us we set limit to 246 global calls.
     19:05:51 Limit not exceeded (1 < 246) for  localextensions 200 result=1  |         Now  we compare global limit to current number of calls. This is the first  call so we are continuing. If we reached the limit we wouldn’t progress with the call.
     19:05:51 Set limit - 3 200 result=1  |         Now we print out the limit for this particular extension. At the moment it is 3 for outgoing.
     19:05:51 Limit not exceeded (1 < 3) for 1001_out 200 result=1  |         We compare this with current number of outgoing calls for extension 1001. This is first call so all is fine.
     19:05:51 Set limit - 9999 200 result=1  |         Now  we echo limit for special types. Special type is basically whatever  begins with * as that is special type of an extension for us.     19:05:51 Limit not exceeded (1 < 9999) for  special_in 200 result=1  |         We continue.
     19:05:51 Lastcaller enabled 200 result=1  |         We check if the Lastcaller (*149) is enabled for this particular extension. It is enabled, so we progress.
     19:05:51 APP: answer 200 result=0  |         We answer the call.
     19:05:51 Playing macro 'last-num-to-call' ... 200 result=1  |         Now we echo out that we will stream a file to the other party.
     19:05:53 APP: stream file last-num-to-call 200 result=0 endpos=19040  |         We are streaming the file out.
     19:05:53 APP: exec SayDigits unknown 200 result=0  |         Now we are executing SayDigits with ‘unknown’. This will actually never work, as SayDigits can only ‘say’ numbers. This is just an example of how *149 won’t work if there wasn’t any CallerID.
     19:05:53 APP: exec Set TIMEOUT(digit)=3 200 result=0  19:05:53 APP: exec Set TIMEOUT(response)=6 200 result=0  19:05:53 APP: answer 200 result=0  |         Now  we are setting some timeouts. We are basically saying that after digit  is pressed we are waiting additional 3 seconds for next digit. We are  also saying that global response timeout is 6 seconds, meaning if  nothing is entered in 6 seconds, we consider that as end of input.
     19:05:53 Playing macro 'to-call-this-number' ... 200 result=1  |           19:05:55 APP: stream file to-call-this-number 200 result=0 endpos=11040     |          Now we are streaming a file.
     19:05:55 APP: exec Set TIMEOUT(response)=5 200 result=0  19:05:55 APP: exec Set TIMEOUT(digit)=3 200 result=0  |         We are re-resetting that limit again.
     19:05:59 APP: exec read dtmfdata|press_one 200 result=0  |         Now we execute application READ and we tell asterisk to play out file ‘press_one’  and if a digit is pressed to store that in dtmfdata variable. You can  find description for each application from CLIR by going to Asterisk and  saying: show application read, or for functions such as TIMEOUT() you  would say show function TIMEOUT. It will tell you much more info.
     19:05:59 APP: get variable dtmfdata 200 result=1 (1)  |         Now we check if 1 is pressed. If it is pressed we continue. As you can see 1 is in brackets (1), so it means it is pressed.
     19:05:59 Checking for 'Other Network' prefix ...  200 result=1  |         So now we check if there is any Other Network prefix allocated with extension ‘unknown’. Of course this will never work!
     19:05:59 Detecting destination for  '38732unknown' ... 200 result=1  |         Since we are not Other Network, we now check the route.
     19:05:59 Destination range -- Max: 7, Min: 1 200 result=1  19:05:59 Found Destination proper (route 135,  range 38700 - 38732) 200 result=1  |         We found a route ‘135’  (that is probably Bosnia-Herzegovina, check route id in URL in Settings  > Destinations in GUI). As you can see althought the number is  completely wrong we are passing it thru because we have a range of 38730  - 38732. So we allow anything that begins with 38732.
     19:05:59 Setting destination 'proper' ... 200 result=1  |         So this is group ‘proper’ so we echo that out.    
 
 19:05:59 APP: exec Set TIMEOUT(absolute)=3600 200 result=0    |          19:05:59 Setting AbsoluteTimeout to 3600 seconds  ... 200 result=1  |        Now we are setting absolute timeout for a particular call. We allow only 1 hour.
     19:05:59 Checking for Time Based Dialing data  ... 200 result=1          |         Now we check for Time Based Dialling. That would be Settings > TBD. I am not sure if this works anymore.
     19:05:59 Found primary trunk '032445231' ... 200 result=1  |         So, we were searching for the trunk and we found a primary trunk 032445231 for this particular destination.
     19:06:00 Secondary trunk set as '-- None --',  skipping it ... 200 result=1  19:06:00 Tertiary trunk set as '-- None --',  skipping it ... 200 result=1  |         Since there were no other trunks, we are skipping them.
     19:06:00 Detecting LCR data ... 200 result=1  |         So,  above trunks where from Settings > Default Trunks. Now we try to  fetch LCR data from either global LCR table (Settings > miniLCR or in  newer menu LCR) or from LCR table in extensions. There is no trunks in  there so we didn’t find anything.
     19:06:00 APP: get variable CALLERID 200 result=1 ("x-lite" )  |          19:06:00 Setting backup CallerID to 'x-lite' ...  200 result=1  |         We are saving our previous CallerID.
     19:06:00 Set limit - 246 200 result=1  19:06:00 Limit not exceeded (1 < 246) for remote 200 result=1  19:06:00 Set limit - 246 200 result=1  19:06:00 Limit not exceeded (1 < 246) for zaptel 200 result=1  |         Again we check for limits. First we try remote and then we try zaptel as we found a zaptel trunk.
     19:06:00 Trunk does not support E164 ... 200 result=1  |         This is important info. It tells us trunk is not set for E164 so there will be some number translation happening.
     19:06:00 Dialing over Zaptel protocol ... 200 result=1  |          19:06:00 APP: set variable DYNAMIC_FEATURES automon 200 result=1  19:06:00 APP: set variable TOUCH_MONITOR_SILENT FALSE 200 result=1  19:06:00 APP: exec Set MONITOR_EXEC=|g 200 result=0  19:06:00 APP: set variable TOUCH_MONITOR_ARGS  wav49|1173377151.6|m 200 result=1  19:06:00 APP: set variable TOUCH_MONITOR_START_SOUND  recorded 200 result=1  19:06:00 APP: set variable TOUCH_MONITOR_STOP_SOUND  beep 200 result=1     |         These options are setting recording stuff. As we can see ‘automon’ is enabled, that is basically ‘Instant Recording’  in our interface (when you are in the call and want to start recording  by inputing access code). So watch all TOUCH_MONITOR_* variables and it  will tell you that we will play out recorded on start, and beep on stop.  We will also save file as wav49 and as our current uniqueid.     MONITOR_EXEC is a global recording variable and is not related to ‘Instant Recording’ but rather for ‘Record Calls’  option in Extension. Watch that out for additional options. At the  moment as you can see it is empty, so it means that the Recording  is  set to ‘off’.
     19:06:06 APP: exec Dial ZAP/G1/32unknown|| 200 result=-1  |     Now we are dialling out.      19:06:06 APP: get variable DIALSTATUS 200 result=1 (ANSWER)  19:06:06 APP: get variable ANSWEREDTIME 200 result=1 (4)     |         We are checking for state of the call (is it ANSWERED, BUSY..) and if it is ANSWERED, we check how long did the call last.
     19:06:06 Total time: 4 200 result=1  |          We print out total time.
  Now we check one incoming call:     19:02:22 VAR: agi_network: yes   19:02:22 VAR: agi_request: agi://127.0.0.1   19:02:22 VAR: agi_channel: Zap/2-1      |        This is Zaptel based call.     19:02:22 VAR: agi_language: us   19:02:22 VAR: agi_type: Zap   19:02:22 VAR: agi_uniqueid: 1173376937.3   19:02:22 VAR: agi_callerid: unknown   19:02:22 VAR: agi_calleridname: unknown   19:02:22 VAR: agi_callingpres: 0   19:02:22 VAR: agi_callingani2: 0   19:02:22 VAR: agi_callington: 0   19:02:22 VAR: agi_callingtns: 0   19:02:22 VAR: agi_dnid: unknown   19:02:22 VAR: agi_rdnis: unknown   19:02:22 VAR: agi_context: 032445231   |         Remember this? This tells us this is a trunk incoming call.
     19:02:22 VAR: agi_extension: s   |         And it also tells us that it is an anologue trunk as it went for extension ‘s’. On TDM-based cards, we cannot know our own number.
     19:02:22 VAR: agi_priority: 1   19:02:22 VAR: agi_enhanced: 0.0   19:02:22 VAR: agi_accountcode:   |       As you can see no accountcode.          19:02:22 APP: get variable TRANSFER_PARENT 200 result=0   19:02:22 APP: set variable __TRANSFER_PARENT  1173376937.3 200 result=1   19:02:22 APP: set variable DNID unknown 200 result=1   19:02:22 APP: get variable Referen  |      
 |