anchor.diff:          let (newDialogue, result) = runDialogue(d, String.Join(" ", tail))
           state.activeDialogues.TryUpdate(channel, newDialogue, d) |> ignore
   
  -        // if the dialogue is in the ComputerSpeaking state, set up an async handler to advance it to the
  -        // next state after a moment.
  -        match newDialogue.s with
  -        | DialogueState.ComputerSpeaking -> 
  -            async {
  -                do! Async.Sleep(1000)
  -                let (newDialogue2, result2) = runDialogue(newDialogue, "")
  -                state.activeDialogues.TryUpdate(channel, newDialogue2, newDialogue) |> ignore
  -
  -                // send the request to the webhook
  -                let response = "{\"text\": \"" + result2 + "\"}"
  -                Http.RequestString(state.incomingWebhook, httpMethod = "POST", body = TextRequest(response), headers = [ HttpRequestHeaders.ContentType(HttpContentTypes.Json) ]) |> ignore
  -            } |> Async.StartAsTask |> ignore
  -        | _ -> ()
  +        advanceComputerSpeakingIfNecessary(state, newDialogue, channel)
           { SlackResponse.responseType = InChannel; text = result }
       | _ -> { SlackResponse.responseType = Ephemeral; text = "Unrecognized command or something else failed" }
   
  
positive.code:         incomingWebhook: string
      }
  
  let newDialogueHandler(state: State, name: string, channel: string, uid: string) = 
      match (state.conversations |> Seq.tryFind (fun c -> c.name = name)) with
      | Some(c) ->
  
negative.code:                 Http.RequestString(state.incomingWebhook, httpMethod = "POST", body = TextRequest(response), headers = [ HttpRequestHeaders.ContentType(HttpContentTypes.Json) ]) |> ignore
  
                  do! Async.Sleep(1000)
                  advanceComputerSpeakingIfNecessary(state, newDialogue, channel)                
              } |> Async.StartAsTask |> ignore
              { SlackResponse.responseType = InChannel; text = "Started new dialogue [" + name + "]" }
      | _ -> { SlackResponse.responseType = Ephemeral; text = "Couldn't find dialogue named [" + name + "]" }
  