Alexa Skill - Adding Metadata for ChannelController.channel

Hello Everyone,

Does anyone know how to setup channel mapping for the ChannelController.channel metadata in the Alexa Smart Home Skill?

I currently have the following items configured as a test.

Group Bedroom "Bedroom"				            {alexa="Endpoint.TV"}
String BedroomChannel "Channel"	(Bedroom)	    {alexa="ChannelController.channel"}

The device “Bedroom” shows up as a TV in my Alexa app and I am able to say things like “Alexa change the Bedroom channel to 100” and the openHAB item changes to 100.

The Alexa Skill documentation indicates that we can add a channel map in order to change the channel by name, but it isn’t very clear on how to do this. I take this to mean that I could say something like “Alexa, change the Bedroom channel to Sportscenter” and the openHAB item (since it’s a string) will change to the value ‘Sportscenter’.

I’ve tried the following, but Alexa responds with “That command doesn’t work on device bedroom”

String BedroomChannel "Channel"	(Bedroom)	    {alexa="ChannelController.channel" [Sportscenter=100]}

Any ideas?

This is the correct way to setup a channel map. However, it appears that there is a mapping done on the Alexa side as well based on the channel name requested. It looks like you will have to use valid channel name (e.g. ESPN). I just run a test for channel “Sportscenter” and the request received by the skill has a channel name of “mgm c center”. Most likely because it is the closest to the requested channel name.

Unfortunately, Amazon doesn’t provide a list of supported channels. So this trial and errors. One way to confirm if the channel isn’t supported is to go into your voice history and see if the channel name was properly understood and the request failed.

For me Alexa reacts even worse when trying to change channels. Trying to change to channel 1 (in my language “Eins”) isn’t supported. Switching down one channel from Channel 2 works! I don’t have a complete list of the numbers networking (yet).

It is probably the way you are formulating your request. What’s the exact utterance you are using?

I’m using " schalte TV Kanal Eins" (switch TV Channel 1).
“schalte TV Kanal 2” is working.

The item is configured like:

Number TV_Kanal "Kanal [%s]" (gTV) {alexa="ChannelController.channel", channel="samsungtv:tv:0db58581_00e6_1000_a60e_508569790eff:channel"}

So based on my testing, the skill receives “Eins” as a channel name and not number. Probably because there is channel called that way in Germany? I would agree that the change Amazon made on this controller introducing a translation on their end without communicating the actually mapping used is not ideal.

Anyway, my recommendation would be to map that channel name in the metadata parameters.

Number TV_Kanal "Kanal [%s]" (gTV) {alexa="ChannelController.channel" [Eins=1], channel="samsungtv:tv:0db58581_00e6_1000_a60e_508569790eff:channel"}

As a side note, Amazon provides the below utterance example to change channel in case you didn’t know:

Alexa, wechsel auf TV zu Kanal Eins

1 Like

Thanks. Didn’t know. Will Hey.