As some folks may be aware, I'm working on adapting a "chat bot" into something that can control an avatar inside Paragon Chat and interact with a human.
Having recently spent some effort to make the bot capable of sending on an arbitrary CoH chat channel (Local, Broadcast, Request) and also of automatically replying on the channel a message was received from - I've realized that a NPC bot should almost never be broadcasting a reply to the whole zone, unless doing so is part of a specific function the bot is performing.
This wasn't an issue in "real" City of Heroes. You didn't actually "talk" to a NPC. You initiated a series of dialogs and nobody but you ever saw the text. (This was actually something of an immersion issue when it came to task forces and such.)
A chat bot "NPC" has to behave more like a NPC in Everquest. EQ is "old school" trigger-response interaction. In the really old days, you never knew just what the right thing to say to a NPC might be. You started with "Hail!" and looked at what the NPC said in response and decided which of the words in the response might trigger the next "link" in the dialog chain. At a certain point, EQ (and similar "chat with a NPC" type games) adopted a convention of bracketing trigger keywords so the player didn't have to guess whether to ask about "what map", "who has the map", "what direction", "what enemy", etc... The NPC would say, "My [treasure map] has been stolen!" and you'd know what to ask about.
A bot is going to "hear" on whatever channel the player happens to have set as his chat channel. The player could be standing three feet away and still be in Broadcast, shouting, "Tell me about the bank robbery!"
This means that a bot has to be selective rather than automatic about how it responds to messages from players.
Off the top of my head, these are the options that present themselves:
1) The NPC ignores broadcast entirely and only responds to direct /tell or Local channel prompts.
2) The NPC responds to broadcast with directed /tells in the Local channel, regardless of the <channel/> associated with the incoming message. A player who shouts "Treasure Map!" to the whole zone will get a private response from the bot.
3) The NPC always responds only to the player who said the trigger phrase. This has the disadvantage that people in that player's group can't "hear" the dialog. An outsider watching would see five people all shouting "Treasure Map!" at a silent NPC.
4) The NPC always responds in Local chat to every player within "earshot", regardless of who said the trigger phrase. This has the disadvantage of someone nearby getting overloaded with responses if many people are interacting with the bot simultaneously.
I'm thinking at the moment that choices 1 and 3 are the "best", though I tend to think that 3 & 4 are a matter of taste and server population. If only a few people are ever around the bot then 4 might be the best choice instead.
I'd be interested in how users of Paragon Chat might feel about this sort of interaction. If you talk "out loud" to a bot, do you want the bot to reply "out loud" so that everyone nearby "hears" it, or do you prefer it to be totally private between you and the bot, even if you initiated the conversation "locally" instead of "privately"?