It should be simple but thanks to extremely lacking documentation and messy code isn't:
A bot_generator spawns a bot that gets the command to walk to a bot_action_point. On his way there he walks through a trigger_multiple that is supposed to, for example, make him say a random voice command (voicemenu 0 0 or whatever).
And I have no idea if that is even possible with entity I/O. Can you set the name of bots? I can change the targetname but that doesn't help because bot_command needs <bot name>. Since they spawn as e.g. "Enemy Engineer" depending on class you don't know their name, you can't use !activator or anything to call them in a bot_command line, plus the quotes are a problem in and of themselves. They also don't seem to react to point_clientcommand? And the bot_action_point doesn't seem to accept "voicemenu 0 0" or anything as Command either.
The first is changing values of entities you'd normally only be able to set in Hammer, like names. Note that these must be referenced by their true variable name (such as targetname) rather than what's displayed by default in Hammer (Name). You can figure out this variable by disabling/enabling smartedit.
The format for the parameter is <key> <value>. Example: "targetname Bob"
I've found this useful, especially when testing payload. For example, (ent_fire payload_train addoutput "startspeed 400") sets the max speed of the cart to 400, about 4 times faster than the usual.
The second is, as the name implies, to add an output. The parameter format is
<output name> <targetname>:<inputname>:<parameter>:<delay>:<ma x times to fire, -1 means infinite>.
Example: "OnFinished game_round_win:RoundWin::0:-1,0,-1"
I'll check out the training maps when I get home to see if I can find anything that'll help.