heh. If you want "Best Practices" of OTRS development, I might not be the best source. I come from a JFDI background. :) :)
Assuming that GenericAgent.pm is calling Kernel/System/GenericAgent/NotifyAgentGroupOfCustomQueue.pm
It's calling TicketObject->SendAgentNotification and that's about it.
This is in Kernel/System/Ticket/Article.pm which ends in ArticleAgentNotification event.
"But this happens all the time!" yeah, pretty much.
"How to test escalation response?"
it's not the event that's EscalationxxxTimexxx. That latter is actually a Parameter attached to the result from TicketGet against the ticket object. Basicaly, upon ArticleAgentNotification Event, you'd check the TicketGet result's
EscalationResponseTime (unix time stamp of response time escalation)
EscalationUpdateTime (unix time stamp of update time escalation)
EscalationSolutionTime (unix time stamp of solution time escalation)
versus "now" and determine if now is > than escalation and check that other NotifyAgentGroupOfCustomQueue.pm for methods to check if it's sent but if you're already there, you might just copy that and modify the method of send to be jabber, then use it instead.
"What would you do?"
That last. The code to send the message only once is already made. It's all about SendAgentNotification that's the meat of the difference between whether to send by email or send by Jabber anyway....
"So, now what?"
Well, if I really wanted to, I'd determine if I'd plug ArticleAgentNotification Event directly to jabber anyway. What I mean is, the event of ArticleAgentNotification may trigger the send via Jabber event all the time. And why not? I think that's the point of your jabber interface anyway.