<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 async def open_interface(self, client_id, conn_string, interface):
 """Open a device interface on behalf of a client. See :meth:`AbstractDeviceAdapter.open_interface`. Args: client_id (str):
 The client we are working for. conn_string (str):
 A connection string that will be passed to the underlying device adapter. interface (str):
 The name of the interface to open. Raises: DeviceServerError: There is an issue with your client_id such as not being connected to the device. DeviceAdapterError: The adapter had an issue opening the interface. """


        conn_id = self._client_connection(client_id, conn_string)

        # Hook first so there is no race on getting the first event
        self._hook_open_interface(conn_string, interface, client_id)
        await self.adapter.open_interface(conn_id, interface)