Server-side transition

if (needMoreInfo) {
  task.setStatus(new TaskStatus(TaskState.INPUT_REQUIRED,
      "Which date would you like the flight for?"));
  return task;
}
Advertisement

Response to client

{
  "result": {
    "id": "task-9c1",
    "status": {
      "state": "input-required",
      "message": {"role": "assistant", "parts": [{"type": "text", "text": "Which date?"}]}
    }
  }
}
Advertisement

Client provides more input

client.tasksSend(TaskId.of("task-9c1"),
    Message.user(TextPart.of("July 15th")));

Same task ID. Server picks up where it left off.