I'd suggest going back over the discussions of correlation in the forums. This topic gets hit every couple months over the past several years with some good content available.
To take a couple steps backwards, the directly supported way to correlate multiple events is using triggers.
It requires some setup and assumptions. The main assumption is that you are going to use visibility (or one of the custom fields) to control whether an alarm is an alarm (visible = true) or the input to a trigger (visible = false). And then use that visibility flag to prevent these trigger-alarms from polluting the real alarms. (there's an idea out there to allow for an alarm type that's natively intended to drive a trigger and never show up as a real alarm but it hasn't seen much interest - here's that use case)
The second big assumption is that you have a very small number of systems you want to build such a correlation for since triggers are just fancy "pre computed filters".
Then you create an AO profile (on arrival and visible=true) that runs a script that updates the visibility to false and reposts the message for the messages that are matched by the trigger.
Then you create two triggers, one of the ping and one for the robot message.
Then you create the nas trigger logic to create an alarm that "ors" the two triggers.
If you have a large number of systems where is it prohibitive to create the triggers manually, you have to script it. That can be a little difficult to wrap one's head around because it's easy to forget that you are just processing messages as they arrive, not updating the status of alarms in a database. It is worth while to do a little reading on state table based programming otherwise you can lose yourself in all the various permutations of the message sequences.