def __init__(self, botname: str='<STR_LIT>', **kwargs):
<EOL>self.config = _get_default_port_config()<EOL>self.config = {**self.config, **kwargs}<EOL>self._service_name = botname<EOL>self._logger = logging.getLogger(__name__)<EOL>self._messaging_logger = MessagingLogger(botname)<EOL>self.uuid = str(uuid.uuid1())<EOL>self._logger.info('<STR_LIT>', self.uuid)<EOL>self.subscription_socket = None<EOL>self.publish_socket = None<EOL>self.command_socket = None<EOL>self.control_socket = None<EOL>self.request_socket = None<EOL>self.pub_handler = LoopPubHandler(self)<EOL>self.loop = IOLoop()<EOL>self.scheduler = Scheduler()<EOL>self._heartbeat_helper = _HeartbeatHelper(messaging=self)<EOL>self._socket_factory = _SocketFactory(self.config['<STR_LIT:address>'],<EOL>self.config['<STR_LIT>'],<EOL>logger=self._logger,<EOL>loop=self.loop)<EOL>self._config_convert_to_address_helper()<EOL>self._address_map = _LRUCache(<NUM_LIT:100>)<EOL>self.control = _Subject()<EOL>self.command = _Subject()<EOL>self.chatter = _Subject()<EOL>
`kwargs`:
    protocol:   'tcp'
    address: '*'
    chatter_publish_port: 4000
    chatter_subscription_port: [4001,]
    command_port: 4002
    request_port: 4003
    control_port: 4005