hi Jim, it is great to hear that the rule example was useful! As for supporting the project, the best way of doing it is to post interesting questions to the mailing list :) The discussions in the mailing list will be helpful for all the subscribers, and will also provide new ideas for further development of SEC.
kind regards, risto Risto, > > I tried that out and it looks to be doing what it should! > > Thank you so much for generously taking your time to help me with this. > I'm still trying to wrap my head around how contexts and descriptions and > such connect it all together, but I am learning! > > Is there some way I can support the project by way of thanks? > > Warm regards and thanks again. Aitäh! > > 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 > > > *Asterisk: The Definitive GuideFIFTH EDITION NOW AVAILABLE TO DOWNLOAD:* > https://cdn.oreillystatic.com/pdf/Asterisk_The_Definitive_Guide.pdf > > ------------------------------ > > *From: *"Risto Vaarandi" <risto.vaara...@gmail.com> > *To: *"Jim Van Meggelen" <jim.vanmegge...@clearlycore.com> > *Cc: *"simple-evcorr-users" <simple-evcorr-users@lists.sourceforge.net> > *Sent: *Thursday, 31 March, 2022 12:50:46 > *Subject: *Re: [Simple-evcorr-users] Parsing Asterisk log files for > downstream reporting - so far so good! > > hi Jim, > > if you want to match the "ActivationHelp" event and react to the earliest > "User entered" event, provided that these events share the same caller ID, > you could use the following rule: > > type=PAIR > desc=IVR caller $4 offered activation or statement inquiry > ptype=RegExp > action= 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 > \[(.+)\@(ivr-welcome:[0-9]{1,3})\] (.+)\(\"([A-Z]{3,10})\/(.+)\", > \"ActivationHelp,prompts.* > ptype2=regexp > rem=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]*)'?.* > 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})\]\[($4)\].* > app_read.c: User entered '?(nothing|[0-9]*)'?.* > desc2=Flexiti IVR - caller selection at activation or statement inquiry > action2=assign %p flexity; \ > 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 > window=10800 > > Let me also explain the changes I have made in the original version: > > 1) in the 'pattern' field, I have replaced "flexity-ivr-welcome" with > "ivr-welcome", so that the example events would be properly matched. Also, > I have set %p in the 'action2' field, since this variable was originally > used without a value. > > 2) the 'desc' field of the rule has been set to the string 'IVR caller $4 > offered activation or statement inquiry'. Since the value of the 'desc' > field determines the ID of the event correlation operation, the presence of > the $4 variable (corresponds to the caller ID) in the 'desc' field ensures > that the rule will start a separate Pair operation for each distinct caller > ID. That will prevent situations where there is only one operation that > mistakenly reacts to "ActivationHelp" and "User entered" events for > different caller ID's. > > 3) in the 'pattern2' field, "\[(C-[0-9a-f]{8})\]" has been replaced with > "\[($4)\]". The use of $4 variable in 'pattern2' field allows for narrowing > the regular expression match to the particular caller ID you are expecting > to see. For instance, after seeing the event > > [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 > > the Pair operation is started which expects another event matching the > following regular expression (note that $4 has been replaced with the > caller ID from the previous event): > > ^.*\[(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\-00004037)\].* > app_read.c: User entered '?(nothing|[0-9]*)'?.* > > Without this modification to 'pattern2', the regular expression would > match the "User entered" event for *any* caller ID (that is probably not > what you want). > > 4) I have also set the "window" parameter to 3 hours (10800 seconds) -- if > for some reason you would never be seeing "User entered" event for the > given caller ID, the Pair operation will not exist forever but will rather > time out after 3 hours. > > 5) If there is a chance of not seeing the "User entered event", you can > also utilize the following Single rule after the Pair rule for terminating > the hanging Pair operation when the call is ended: > > type=Single > ptype=RegExp > 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})\].*pbx\.c: > Spawn extension \(.*\) exited non-zero on.* > desc=End of call for caller $4 > action=reset -1 IVR caller $4 offered activation or statement inquiry > > Note that the first parameter of the 'reset' action (-1) indicates that an > event correlation operation started by the previous rule (i.e., the Pair > rule) has to be terminated. And the second parameter "IVR caller $4 offered > activation or statement inquiry" provides the ID of this operation (in > other words, whenever a call with some ID has ended, we will be terminating > the Pair operation for this call ID). Also, if this Pair operation does not > exist for the given call ID (maybe because the ActivationHelp event was > never seen for this particular call), the 'reset' action is a no-op. > > However, if you are absolutely confident that the "User entered" event > always occurs after "ActivationHelp", you don't need the above Single rule. > > Does this solution work for you? I hope I understood the problem > description correctly, and if there are any other questions or something > that needs improvement, feel free to ask. > > kind regards, > risto > > > Risto, >> >> Absolutely. >> >> The following pattern should catch it: >> >> ^.*\[(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})\].* >> pbx.c: Spawn extension \(.*\) exited non-zero on.* >> >> >> Here's a few lines leading up to it (interesting because here is a Read() >> operation where the caller does not make a choice but instead hangs up >> while the system is waiting for a response): >> >> [2022-02-08-06:21:22:] 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:21:22:] VERBOSE[24858][C-00004037] app_read.c: Accepting a >> maximum of 1 digits. >> [2022-02-08-06:21:22:] VERBOSE[24858][C-00004037] file.c: >> <SIP/CHANNELNAME-000138ac> Playing 'prompts/004h.slin' (language 'en') >> [2022-02-08-06:21:25:] VERBOSE[24858][C-00004037] file.c: >> <SIP/CHANNELNAME-000138ac> Playing 'prompts/004i.slin' (language 'en') >> [2022-02-08-06:21:28:] VERBOSE[24858][C-00004037] file.c: >> <SIP/CHANNELNAME-000138ac> Playing 'prompts/043.slin' (language 'en') >> [2022-02-08-06:21:33:] VERBOSE[24858][C-00004037] app_read.c: User >> disconnected >> [2022-02-08-06:21:33:] VERBOSE[24858][C-00004037] pbx.c: Executing >> [h@ivr-MainMenu:1] NoOp("SIP/CHANNELNAME-000138ac", "Hangup handler >> GlobalCallCount=0 CHANNELNAME=0 ") in new stack >> [2022-02-08-06:21:33:] VERBOSE[24858][C-00004037] pbx.c: Executing >> [h@ivr-MainMenu:2] NoOp("SIP/CHANNELNAME-000138ac", "SurveyType is ") in >> new stack >> [2022-02-08-06:21:33:] VERBOSE[24858][C-00004037] pbx.c: Executing >> [h@ivr-MainMenu:3] ExecIf("SIP/CHANNELNAME-000138ac", "1?Hangup()") in >> new stack >> *[2022-02-08-06:21:33:] VERBOSE[24858][C-00004037] pbx.c: Spawn extension >> (ivr-MainMenu, h, 3) exited non-zero on 'SIP/CHANNELNAME-000138ac'* >> >> >> >> -- >> 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 >> >> >> *Asterisk: The Definitive GuideFIFTH EDITION NOW AVAILABLE TO DOWNLOAD:* >> 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