Ok, ich glaube es sollte heißen „echo do_shortcode(…“
Also so:
$cf = get_post_meta($post->ID, 'ASIN', true);
if (!empty($cf)) {
asa_item($cf, 'default');
} else {
echo do_shortcode('[asa_collection items=1, type=random]my_collection[/asa_collection]');
}