A siege that started with gunmen detonating a bomb and spraying bullets in a hotel in Somalia ended Saturday with at least 20 people dead, authorities said.