Alexa Channel Controller: mapping of names to numbers not working

Dear all,

I successfully use the Samsung SmartTV binding.
I also have configured an item that is properly switching to the selected channel number.
Futhermore I got it successfully into operation with alexa. “Alexa, schalte DEVICE auf Kanal 2”

BUT:
if I want the Alexa Channel Controller to work with channel names (instead of numbers), I run into problems: “no video skill activated…”

My Alexa mapping at metadata of Television.channel is very simple:
1=ARD
2=ZDF
3=RTL
4=PRO sieben
5=SAT eins
Language and Country are configured correctly.

Any hint?

Try this utterance: Alexa, geh zu kanal <channel_name> auf <device>

And if your previous command interacted with the same endpoint, you can take advantage of the context-awareness using this utterance: Alexa, schalte auf kanal <channel_name>.

Unfortunately, you have to be very specific in how to formulate your request in this instance.

Keep in mind, as indicated in the documentation, only well-known channel names can be used as these are matched against a database on the Alexa side when requested.

You should check TV Channel Lists for your regional channel lineup.

Using the channel mappings you provided above, it should be:
1=Das Erste
2=ZDF
3=RTL
4=ProSieben
5=Sat.1

thx.
It’s now working for a few channels.
Very popular one like “ZDF” or “RTL” are still not recognized. Is there any chance to teach/maintain the channel database?

It should work based on my testing using the TTS Alexa Simulator. It could be the way you pronounce the channel name. Check your voice history to see how your requests were interpreted.

As indicated in the documentation I linked above, Amazon neither provides a list of supported channel names nor it gives the ability to update their channel database. This is an opaque process unfortunately which forces the user to do trial and errors.

A change was added to the skill to loosen up the channel request by name matching. It is not perfect but still an improvement from the current state. It will be included in the next release.

Dear heshab,

thx - oncev more.

I checked the history.

My speech input was correctly recognized: “kanal r. t. l.” and “kanal z.d. f.”.
Nevertheless channel change is not working for these cases.

Hope that your recent change will help.
By when do you think it will be available?

Are you using the exact utterance I suggested above? Just requesting “kanal <channel_name>” isn’t going to work. If so, please provide the response message verbatim.

This change won’t improve your current issue. It focuses on matching more complex channel name and format.

I used the exact utterance.
“kanal r. t. l.” is the short version for “schalte auf kanal r. t. l.”

Any hint?

Are you getting response message: Dieser Befehl funktioniert für das Gerät „<device_name>“ nicht.?

Unless there is an issue with the way you defined your channel mappings, I don’t see what could be the issue here. My testing using the TTS Alexa Simulator shows it should be working.

When requesting schalte auf kanal r. t. l., the skill is receiving channel name RTL which should match against the configured channel mappings. Likewise, requesting schalte auf kanal z. d. f., the channel name ZDF is sent to the skill.

Unfortunately, we don’t store logs for the live skill. So it is not possible to see what channel name your channel requests are generating.

Update
Testing using direct voice commands, it looks like channel name “SUPER RTL” is sent to the skill instead, even though the voice history shows the same interpretation. So you might want to consider using this name in your mapping. As far as “ZDF”, it is recognized the same way.

Dear jeyhab,

thanks for your time and support!

Yes, I get for the non working mappings the answer " dieser Befehl funktioniert für das Gerät „<device_name>“ nicht."

Any idea?

O

Have you tried to use “SUPER RTL” channel mapping instead? Other than that, check how your channel mappings.

here my mapping:
1=Das Erste
2=ZDF
3=RTL
4=ProSieben
5=Sat.1
6=Kabel eins
7=RTL zwei
8=Sixx
9=ZDFneo
10=3sat
18=SUPER RTL

only 1,4,5, and are working properly.

All other mappings were not executed, but the the respective speech inputs / names are correctly recogized on Alexa-site acc. Alexa-app.

Hmm,?.

O.

Sorry but I don’t have much to add here as most of these should be working based on my testing with some requiring the improvement I made above. The channel 3sat is not going to work. It seems that when a channel starts with a number, Alexa interprets it as a channel number, 3 in this case.

Are you triggering a discovery on the Alexa side each time you are making a configuration change?

As I mentioned previously, the Alexa native channel capability isn’t perfect when it comes to request by channel names especially for non-English languages. Unfortunately, using a generic capability instead, such as RangeValue with presets, isn’t any better as users would be required to specific labels with space (e.g. z d f) depending on Alexa’s interpretation along with limited supported utterances.

Dear Jeshab,

got it into operation.

I made a custom skill some time ago with very similar invocation name as the device name. This custom skill was still active and somehow interfering with the Alexa Channel Controller.
Changied the invocation name, and now I can share your opinion: it’s working.

Sorry for the confusion and many thanks for your great support.

O.

No worries. Based on the channel mappings you provided, which of the channels are still not working after you fixed your environment? I would still expect some not matching, granted that the latest change improving the matching has not been released yet.

This will greatly help capturing your use case so the skill can be updated accordingly if necessary to bridge the gap between the channel name requested and how it is matching the configured channel mappings.

Dear Jeremy,

I have to revise my last statement partly.
It was still my custom skill which made the channel to work.

I made a test run (now with disabled custom skill) for the following mapping:

1=Das Erste
2=ZDF
3=RTL
4=ProSieben
5=Sat.1
6=Kabel eins
7=RTL zwei
8=Sixx
9=ZDFneo
10=3sat
11=one
12=arte
13=vox
18=SUPER RTL

Following channels are recognized:

1,4,5,10 ad 18 (=Super RTL)

At least in my environment the mapping is not completely behaving as expected. Only some channels seems to be recognized and be mapped as expected.

Thx for your great support and engagment and best regards,
O…

I would have expected more channels to be recognized based on my testing. Skill version 3.3.3 including the improvement to chanel request by name matching has been released and should be available as the live skill in the next 24-48 hours depending on when the latest certification is approved on the Alexa side.

Dear Jeremy,
quick update assuming your improvements have been propagated in between:
no change, still only “Das Erste”, “ProSieben”, “Sat.1” , “3Sat” and “SUPER RTL” are working.
.
Best regards, O

The change has been propagated. I am not sure what else to tell you. My testing shows that most if not all the channels you have configured should work, depending on how your requests are interpreted.

Since you mentioned you had a custom skill, my suggestion at this point would be to install your own skill and check the Lambda function logs when making channel requests. That way you can see the channel metadata name the Alexa API is sending to the skill on these requests. If going that route, make sure to disable the official skill and delete all your existing OH devices in your Alexa account.

Dear Jeremy,

I already made this check. With custom skill it’s working fine.

Following slot values/ synonyms are used

arte,
one,
3sat,3 sat,drei sat
vox,
ZDF neo,z. .d. .f. neo
tele 5,
rtl2,rtl zwei
kabel eins,
sixx,
sat1,sat eins
pro7,pro sieben
rtl,r. t. l.
zdf,z. d. f.
ard,das erste

They will be mapped without any problem by the following lambda code:

handle(handlerInput) {
var tmp = handlerInput.requestEnvelope.request.intent.slots.ChannelSlot.value;
if ( tmp === “ARD”) { myrest.httpPost1( ‘/rest/items/i_SamsungQ60_Channel’, ‘1’ ) }
if ( tmp === “ZDF”) { myrest.httpPost1( ‘/rest/items/i_SamsungQ60_Channel’, ‘2’ ) }
if ( tmp === “RTL”) { myrest.httpPost1( ‘/rest/items/i_SamsungQ60_Channel’, ‘3’ ) }
if ( tmp === “pro 7”) { myrest.httpPost1( ‘/rest/items/i_SamsungQ60_Channel’, ‘4’ ) }
if ( tmp === “sat 1”) { myrest.httpPost1( ‘/rest/items/i_SamsungQ60_Channel’, ‘5’ ) }
if ( tmp === “kabel 1”) { myrest.httpPost1( ‘/rest/items/i_SamsungQ60_Channel’, ‘6’ ) }
if ( tmp === “RTL2”) { myrest.httpPost1( ‘/rest/items/i_SamsungQ60_Channel’, ‘7’ ) }
if ( tmp === “sixx”) { myrest.httpPost1( ‘/rest/items/i_SamsungQ60_Channel’, ‘8’ ) }
if ( tmp === “ZDF neo”) { myrest.httpPost1( ‘/rest/items/i_SamsungQ60_Channel’, ‘9’ ) }
if ( tmp === “3 sat”) { myrest.httpPost1( ‘/rest/items/i_SamsungQ60_Channel’, ‘10’ ) }
if ( tmp === “one”) { myrest.httpPost1( ‘/rest/items/i_SamsungQ60_Channel’, ‘11’ ) }
if ( tmp === “arte”) { myrest.httpPost1( ‘/rest/items/i_SamsungQ60_Channel’, ‘12’ ) }
if ( tmp === “vox”) { myrest.httpPost1( ‘/rest/items/i_SamsungQ60_Channel’, ‘13’ ) }
if ( tmp === “tele 5”) { myrest.httpPost1( ‘/rest/items/i_SamsungQ60_Channel’, ‘14’ ) }

    var speakOutput = tmp + " eingestellt";

As told, I’m very happy that you try to help me, knowing that my problem is somehow strange.

O.

There is a difference between a custom skill which passes on the channel name as direct text-to-speech interpretation and a smarthome skill which uses the ChannelController interface to pass the channel metadata name matching against a catalog database on the Alexa side.

I would be interested to see the actual channel metadata name that are generating from your voice requests.