Is this not getting fixed?
Well, one major problem is that it's not making any new instances of Dials or Resps, which is why it usually returns null. I believe this should fix most of the issues people seem to be having.
I usually do Dialogue/Conversations onscreen because I think alert/input/output is a terrible way to display important features unless you're debugging/testing then it's okay. But here's an example of the way I usually do it.

mob
var
tmp/chatting // keeps track of if you're in a Conversation.
tmp/chosen // keeps track of your choice chosen.

Login()
..()
// a macro created on the fly.. get it? flysbad? anyways.
winset(src, "Action", "parent=macro;name=space;command=Action")
Move()
if(src.chatting) return
else ..()

proc
// this proc will be used when there are more
// than multiple choices to pick.
ConversationAlert(var/text, var/list/choices=list("Ok"))
if(src.chatting) return
src.chatting=1
src.chosen=null
spawn src.chosen = input(text, "Conversation") in choices
while(!src.chosen)
sleep(1) ; continue
src.chatting=0
return src.chosen

// this proc is used for quick conversations.
// using space to advance through the messages.
Conversation(var/text)
if(src.chatting) return
src.chatting=1
src << text
while(src.chatting)
sleep(1) ; continue

verb
Action()
set hidden = 1
if(src.chatting)
src.chatting=0
return

Test_Alert()
if(ConversationAlert("This is just a simple conversation", list("Go ahead", "Leave"))== "Go ahead")
Conversation("Heh, you've continued to the next slot. Press Space to continue.")
Conversation("You've advanced to the next message!")
Page: 1 2