One banter is easier than two, naturally.
You should start the banter with whatever character you want, it doesn't matter. If you want Khalid to start it, then place KHALIDJ instead of JAHEIRAJ. However, if your banter is between PC and Khalid, then any other character(Jaheira or Imoen) should only talk if they are available for dialogue, which usually goes like this:
// and you need a script with it, naturally.
CHAIN IF ~Global("VariableIsPrefixed","GLOBAL",1)~ THEN KHALIDJ chainuniquename
~Hello. <CHARNAME> and I are talking here. Hey!~
DO ~SetGlobal("VariableIsPrefixed","GLOBAL",2)~
END
++ ~Hey.~ EXIT
+ ~InParty("Jaheira") Detect("Jaheira") !StateCheck("Jaheira",CD_STATE_NOTVALID)~ + ~You know, Jaheira is here and she'd like a word.~ EXTERN JAHEIRAJ chainseconduniquename
// Pay attention to actual file names. It's probably not JaheiraJ but JaheiJ or JaheirJ, and if it's Tutu, it starts with a _.
CHAIN JAHEIRAJ chainseconduniquename
~I can speak for myself! Off with you!~
EXIT
Without these conditions? Your game may crash.