def handle_message(self,<EOL>message: BaseMessage,<EOL>responder: Responder,<EOL>create_task: True):
coro = self._handle_message(message, responder)<EOL>if create_task:<EOL><INDENT>loop = asyncio.get_event_loop()<EOL>loop.create_task(coro)<EOL><DEDENT>else:<EOL><INDENT>return coro<EOL><DEDENT>
Public method to handle a message. It requires:

    - A message from the platform
    - A responder from the platform

If `create_task` is true, them the task will automatically be added to
the loop. However, if it is not, the coroutine will be returned and it
will be the responsibility of the caller to run/start the task.