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. A itä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/ | 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 ] > 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 >> [ mailto:jim.vanmegge...@clearlycore.com | 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