By default busy agents on inbound are skipped. To skip busy agents on outbound, you'll have to set your dialplan to pause the agents each time they initiate an outbound call.
Assuming your dialout prefix is 7, you'll have to add the following lines to your outbound context. Make sure it is has a lower priority than the actual Dial command in the context:
exten => _7.,n,Set(CURRAGENT=Agent/${AGENTBYCALLERID${CALLERID(num)}})
exten => _7.,n,PauseQueueMember(|${CURR_AGENT}|)