class_docstr: World for recording a turker's question and answer given a context.
  
  Assumes the context is a random context from a given task, e.g. from SQuAD, CBT,
  etc.
code: def parley(self):
      act = {"episode_done": False}
      act["id"] = self.__class__.collector_agent_id
  
      if not self.question:
          """
          First, the QA Collector agent provides the context and prompts the turker to
          ask a question regarding the context.
          """
  
          # Get context from dataloader
          passage = self.teacher.act()
          self.context = passage["text"]
          act["passage"] = passage["text"]
  
          # Add a prompt telling the turker what to do next
          act["text"] = "Please provide a question given the passage."
          self.agent.observe(validate(act))
          self.question = self.agent.act(
              timeout=self.opt["turn_timeout"]
          )
          # Can log the turker's question here
          return
  
      if not self.answer:
          """
          Next, the QA Collector collects the turker's question, and then prompts the
          turker to provide the answer.
          """
  
          # A prompt telling the turker what to do next
          act[
              "text"
          ] = "Thanks. And what is the answer to your question?"
  
          self.agent.observe(validate(act))
          self.answer = self.agent.act(timeout=self.opt["turn_timeout"])
  
          self.episodeDone = True
  
file_path: ParlAI/parlai/crowdsourcing/tasks/qa_data_collection/worlds.py
imports: from parlai.crowdsourcing.utils.worlds import CrowdTaskWorld
  from parlai.core.worlds import validate
label_desc: Use image node_id 2 for calling the QADataCollectionWorld obj's underlying member method code with example usage: obj.parley() without return types