Media player: Play media --> How to get the content ID?

If I do this via the media player card, I don’t see where the event is logged. “Amy Winehouse Radio” is a favorite on my Sonos device, and I’ve seen suggestions that it’s trivial if it’s a Sonos favorite. It’s trivial from the card, but trying to wire this up to a smart button.

1 Like

The behaviour of the SONOS favourites has changed in 2022.4, instead of calling select_source you now need to call play_media, however, select_source still works.

This should work:

  • Go to:
    Open your Home Assistant instance and show your event developer tools.
  • Under “Listen to events”, in the “Event to subscribe to” text field, enter call_service and click “START LISTENING”
  • Play your favourite in the SONOS App or via the frontend card.
  • An event should now show up, looking like this:
{
    "event_type": "call_service",
    "data": {
        "domain": "media_player",
        "service": "play_media",
        "service_data": {
            "entity_id": "media_player.room_a",
            "media_content_id": "FV:2/56",
            "media_content_type": "favorite_item_id"
        }
    },
    "origin": "LOCAL",
    "time_fired": "2022-04-26T09:59:10.679020+00:00",
    "context": {
        "id": "6936fb11c237aebf521454340b4feefa",
        "parent_id": null,
        "user_id": "2e3068a7a91e3ea7e0daf434e1682718"
    }
}
  • Take note of the service and service_data, this is the data you need to call the play_media service.

I don’t know how the FV:2/56 string is constructed, but it seems like it’s just an incrementing number.
Personally, I’m in the process of migrating towards directly calling the URL I want to play like documented here.

2 Likes

You can use the “Play media” action in the script/automation editor. You can browse directly to the favorite and behind the scenes it will build out a media_player.play_media service call with all the necessary parameters. Hit “Edit in YAML” and you can re-use the service call elsewhere:

3 Likes