I have an atypical use for SEC, in which I'm parsing Asterisk log files to 
produce CSV peg counts for downstream usage reporting. 

This is working well and I'm loving this tool! 

However, I've run into a problem that I cannot seem to find a way around. 

The log file produces events that are tied to a unique ID for each channel/call 
( C-00000000 ), and using that, plus the timestamp, I can produce output that 
is correlated with a call, and chronological. So far so good. 

However, there's one event that is difficult to work with, because it can 
happen more than once on a typical phone call, needs to correlate with an event 
that happens a few lines prior, but carries no identifying correlation. 

Here's an example of the output I'm working with (curated for brevity and 
relevance, and specific to a single unique ID; there are actually hundreds of 
lines of output per-call): 

[2022-02-08-06:17:53:] VERBOSE[24858][C-00004037] pbx.c: Executing 
[8005551234@ivr-welcome:9] Read("SIP/CHANNELNAME-000138ac", 
"EarlyChoice,prompts/001,1,,0,0.01") in new stack 
[2022-02-08-06:17:53:] VERBOSE[24858][C-00004037] app_read.c: Accepting a 
maximum of 1 digits. 
[2022-02-08-06:17:53:] VERBOSE[24858][C-00004037] file.c: 
<SIP/CHANNELNAME-000138ac> Playing 'prompts/001.slin' (language 'en') 
[2022-02-08-06:17:55:] VERBOSE[24858][C-00004037] app_read.c: User entered 
nothing. 
-- 
[2022-02-08-06:17:55:] VERBOSE[24858][C-00004037] pbx.c: Executing 
[8005551234@ivr-welcome:13] Read("SIP/CHANNELNAME-000138ac", 
"EarlyChoice,prompts/001,1,,0,0.01") in new stack 
[2022-02-08-06:17:55:] VERBOSE[24858][C-00004037] app_read.c: Accepting a 
maximum of 1 digits. 
[2022-02-08-06:17:55:] VERBOSE[24858][C-00004037] file.c: 
<SIP/CHANNELNAME-000138ac> Playing 'prompts/001.slin' (language 'fr') 
[2022-02-08-06:17:58:] VERBOSE[24858][C-00004037] app_read.c: User entered 
nothing. 
-- 
[2022-02-08-06:17:58:] VERBOSE[24858][C-00004037] pbx.c: Executing 
[8005551234@ivr-welcome:17] Read("SIP/CHANNELNAME-000138ac", 
"LanguageChoice,prompts/002,1,,,0.01") in new stack 
[2022-02-08-06:17:58:] VERBOSE[24858][C-00004037] app_read.c: Accepting a 
maximum of 1 digits. 
[2022-02-08-06:17:58:] VERBOSE[24858][C-00004037] file.c: 
<SIP/CHANNELNAME-000138ac> Playing 'prompts/002.slin' (language 'en') 
[2022-02-08-06:18:01:] VERBOSE[24858][C-00004037] app_read.c: User entered 
nothing. 
-- 
[2022-02-08-06:18:01:] VERBOSE[24858][C-00004037] pbx.c: Executing 
[8005551234@ivr-welcome:21] Read("SIP/CHANNELNAME-000138ac", 
"LanguageChoice,prompts/002,1,,1,15") in new stack 
[2022-02-08-06:18:01:] VERBOSE[24858][C-00004037] app_read.c: Accepting a 
maximum of 1 digits. 
[2022-02-08-06:18:01:] VERBOSE[24858][C-00004037] file.c: 
<SIP/CHANNELNAME-000138ac> Playing 'prompts/002.slin' (language 'fr') 
[2022-02-08-06:18:01:] VERBOSE[24858][C-00004037] app_read.c: User entered '1' 
-- 
[2022-02-08-06:18:01:] VERBOSE[24858][C-00004037] pbx.c: Executing 
[8005551234@ivr-welcome:34] Read("SIP/CHANNELNAME-000138ac", 
"ActivationHelp,prompts/902&prompts/063,1,,,15,") in new stack 
[2022-02-08-06:18:01:] VERBOSE[24858][C-00004037] file.c: 
<SIP/CHANNELNAME-000138ac> Playing 'prompts/902.slin' (language 'en') 
[2022-02-08-06:18:16:] VERBOSE[24858][C-00004037] file.c: 
<SIP/CHANNELNAME-000138ac> Playing 'prompts/063.slin' (language 'en') 
[2022-02-08-06:18:32:] VERBOSE[24858][C-00004037] app_read.c: User entered '3' 
-- 
[2022-02-08-06:19:36:] VERBOSE[24858][C-00004037] pbx.c: Executing 
[8005551234@ivr-MainMenu:2] Read("SIP/CHANNELNAME-000138ac", 
"ListenForZero,prompts/044,1,,,0.01") in new stack 
[2022-02-08-06:19:36:] VERBOSE[24858][C-00004037] app_read.c: Accepting a 
maximum of 1 digits. 
[2022-02-08-06:19:36:] VERBOSE[24858][C-00004037] file.c: 
<SIP/CHANNELNAME-000138ac> Playing 'prompts/044.slin' (language 'en') 
[2022-02-08-06:19:46:] VERBOSE[24858][C-00004037] app_read.c: User entered 
nothing. 
-- 
[2022-02-08-06:19:55:] VERBOSE[24858][C-00004037] pbx.c: Executing 
[8005551234@ivr-MainMenu:8] Read("SIP/CHANNELNAME-000138ac", 
"ListenForZero,prompts/045,1,,,0.01") in new stack 
[2022-02-08-06:19:55:] VERBOSE[24858][C-00004037] app_read.c: Accepting a 
maximum of 1 digits. 
[2022-02-08-06:19:55:] VERBOSE[24858][C-00004037] file.c: 
<SIP/CHANNELNAME-000138ac> Playing 'prompts/045.slin' (language 'en') 
[2022-02-08-06:19:57:] VERBOSE[24858][C-00004037] app_read.c: User entered 
nothing. 
-- 
[2022-02-08-06:20:02:] VERBOSE[24858][C-00004037] pbx.c: Executing 
[8005551234@ivr-MainMenu:11] Read("SIP/CHANNELNAME-000138ac", 
"ListenForZero,prompts/045a,1,,,0.01") in new stack 
[2022-02-08-06:20:02:] VERBOSE[24858][C-00004037] app_read.c: Accepting a 
maximum of 1 digits. 
[2022-02-08-06:20:02:] VERBOSE[24858][C-00004037] file.c: 
<SIP/CHANNELNAME-000138ac> Playing 'prompts/045a.slin' (language 'en') 
[2022-02-08-06:20:04:] VERBOSE[24858][C-00004037] app_read.c: User entered 
nothing. 
-- 
[2022-02-08-06:20:07:] VERBOSE[24858][C-00004037] pbx.c: Executing 
[8005551234@ivr-MainMenu:15] Read("SIP/CHANNELNAME-000138ac", 
"ListenForZero,prompts/046,1,,,0.01") in new stack 
[2022-02-08-06:20:07:] VERBOSE[24858][C-00004037] app_read.c: Accepting a 
maximum of 1 digits. 
[2022-02-08-06:20:07:] VERBOSE[24858][C-00004037] file.c: 
<SIP/CHANNELNAME-000138ac> Playing 'prompts/046.slin' (language 'en') 
[2022-02-08-06:20:09:] VERBOSE[24858][C-00004037] app_read.c: User entered 
nothing. 
-- 
[2022-02-08-06:20:18:] VERBOSE[24858][C-00004037] pbx.c: Executing 
[8005551234@ivr-MainMenu:39] Read("SIP/CHANNELNAME-000138ac", 
"ListenForZero,prompts/049,1,,,0.01") in new stack 
[2022-02-08-06:20:18:] VERBOSE[24858][C-00004037] app_read.c: Accepting a 
maximum of 1 digits. 
[2022-02-08-06:20:18:] VERBOSE[24858][C-00004037] file.c: 
<SIP/CHANNELNAME-000138ac> Playing 'prompts/049.slin' (language 'en') 
[2022-02-08-06:20:21:] VERBOSE[24858][C-00004037] app_read.c: User entered 
nothing. 
-- 
[2022-02-08-06:20:26:] VERBOSE[24858][C-00004037] pbx.c: Executing 
[8005551234@ivr-MainMenu:45] Read("SIP/CHANNELNAME-000138ac", 
"BalanceRepeatPressed,prompts/004h&prompts/004i&prompts/043,1,,,15") in new 
stack 
[2022-02-08-06:20:26:] VERBOSE[24858][C-00004037] app_read.c: Accepting a 
maximum of 1 digits. 
[2022-02-08-06:20:26:] VERBOSE[24858][C-00004037] file.c: 
<SIP/CHANNELNAME-000138ac> Playing 'prompts/004h.slin' (language 'en') 
[2022-02-08-06:20:29:] VERBOSE[24858][C-00004037] file.c: 
<SIP/CHANNELNAME-000138ac> Playing 'prompts/004i.slin' (language 'en') 
[2022-02-08-06:20:32:] VERBOSE[24858][C-00004037] app_read.c: User entered '1' 
-- 
[2022-02-08-06:20:32:] VERBOSE[24858][C-00004037] pbx.c: Executing 
[8005551234@ivr-MainMenu:2] Read("SIP/CHANNELNAME-000138ac", 
"ListenForZero,prompts/044,1,,,0.01") in new stack 
[2022-02-08-06:20:32:] VERBOSE[24858][C-00004037] app_read.c: Accepting a 
maximum of 1 digits. 
[2022-02-08-06:20:32:] VERBOSE[24858][C-00004037] file.c: 
<SIP/CHANNELNAME-000138ac> Playing 'prompts/044.slin' (language 'en') 
[2022-02-08-06:20:42:] VERBOSE[24858][C-00004037] app_read.c: User entered 
nothing. 
-- 
[2022-02-08-06:20:51:] VERBOSE[24858][C-00004037] pbx.c: Executing 
[8005551234@ivr-MainMenu:8] Read("SIP/CHANNELNAME-000138ac", 
"ListenForZero,prompts/045,1,,,0.01") in new stack 
[2022-02-08-06:20:51:] VERBOSE[24858][C-00004037] app_read.c: Accepting a 
maximum of 1 digits. 
[2022-02-08-06:20:51:] VERBOSE[24858][C-00004037] file.c: 
<SIP/CHANNELNAME-000138ac> Playing 'prompts/045.slin' (language 'en') 
[2022-02-08-06:20:53:] VERBOSE[24858][C-00004037] app_read.c: User entered 
nothing. 


The event I want to peg is each of the ' app_read.c: User entered ' events, but 
they each need to correlate with the Read("SIP/CHANNELNAME ... event that 
precedes them. 

Here is a rule I've written specifically to attempt to catch a line containing 
Read("SIP/CHANNELNAME-000138ac", 
"ActivationHelp,prompts/902&prompts/063,1,,,15,") : 
(it's a bit of a mess because I've been trying differnt things to get it to 
work the way I need it to) 
(the regexp is probably overly elaborate, but regex101.com makes it too fun not 
to!) 

type=PAIR 
desc=IVR caller offered activation or statement inquiry 
ptype=RegExp 
action=create IVR_activation_offered_$4 ; \ 
write - $4 activation or statement inquiry offered 
pattern=^.*\[(20[234][0-9]-[0-9]{2}-[0-3][0-9])-([0-2][0-9]:[0-5][0-9]:[0-5][0-9]).*VERBOSE\[([0-9]{3,6})\]\[(C-[0-9a-f]{8})\].*Executing
 \[(.+)\@(flexiti-ivr-welcome:[0-9]{1,3})\] (.+)\(\"([A-Z]{3,10})\/(.+)\", 
\"ActivationHelp,prompts.* 
ptype2=regexp 
pattern2=^.*\[(20[234][0-9]-[0-9]{2}-[0-3][0-9])-([0-2][0-9]:[0-5][0-9]:[0-5][0-9]).*VERBOSE\[([0-9]{3,6})\]\[(C-[0-9a-f]{8})\].*
 app_read.c: User entered '?(nothing|[0-9]*)'?.* 
desc2=Flexiti IVR - caller selection at activation or statement inquiry 
action2=assign %i -ivr ; \ 
write %p%i.csv $1,$2,$4,,,,,,,,,$5 ; closef %p%i.csv ; \ 
write - $4 ACTIVATION_STATEMENT %p %i $1 User entered: $5 

This works, but then keeps matching the pattern2 throughout the call, whereas 
what I want is to match the ActivationHelp, then match the very first 'User 
entered' following that, and then stop matching for this rule. There will be 
other similar matches too (but not ' ActivationHelp '), and those too need to 
correlate with one and only the first ' User entered ' that follows them. 

I'm sure it's something simple I'm missing, but I've been banging my head 
against the wall on this and I just can't see where my error is. 

I'm still learning SEC, so there's a lot I just don't get, and this is right at 
the limits of my skills. 

Any and all advice would be gratefully appreciated. 

Jim 




-- 
Jim Van Meggelen 
ClearlyCore Inc. 



+1-416-639-6001 (DID) 
+1-877-253-2716 (Canada) 
+1-866-644-7729 (USA) 
+1-416-425-6111 x6001 
jim.vanmegge...@clearlycore.com 
[ http://www.clearlycore.com/ | http://www.clearlycore.com ] 

Asterisk: The Definitive Guide 
FIFTH EDITION NOW AVAILABLE TO DOWNLOAD: 
[ https://cdn.oreillystatic.com/pdf/Asterisk_The_Definitive_Guide.pdf | 
https://cdn.oreillystatic.com/pdf/Asterisk_The_Definitive_Guide.pdf ] 
_______________________________________________
Simple-evcorr-users mailing list
Simple-evcorr-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/simple-evcorr-users

Reply via email to