async def send_message(self, msg: str, msg_type: str, msg_title: str) -> str:
        """
            Send a generic message to the connection
            :param msg:
            :param msg_type:
            :param msg_title:
            :return:
            """
        if not hasattr(Connection.send_message, "cb"):
            self.logger.debug("vcx_connection_send_message: Creating callback")
            Connection.send_message.cb = create_cb(CFUNCTYPE(None, c_uint32, c_uint32, c_char_p))

        c_connection_handle = c_uint32(self.handle)
        c_msg = c_char_p(msg.encode('utf-8'))
        c_msg_type = c_char_p(msg_type.encode('utf-8'))
        c_msg_title = c_char_p(msg_title.encode('utf-8'))

        result = await do_call('vcx_connection_send_message',
                               c_connection_handle,
                               c_msg,
                               c_msg_type,
                               c_msg_title,
                               Connection.send_message.cb)

        self.logger.debug("vcx_connection_send_message completed")
        return result