ndg63276 / alexa-sky-hd

A smart home skill for Alexa to control a Sky+HD or SkyQ box
34 stars 15 forks source link

Issues changing to Sky Movies channels #23

Open andypburke opened 3 years ago

andypburke commented 3 years ago

I am having problems changing to Sky Movies channels as Sky keeps changing the name of the channels. Any ideas how to fix?

ndg63276 commented 3 years ago

You could set an environment variable in your lambda function, with the key CHANNELS_FILE, and the value https://raw.githubusercontent.com/ndg63276/alexa-sky-hd/master/4101-1.json

This would at least be a fixed file, that doesn't really change much. Some of the channel names or numbers might be out of date as I havent checked it in 13 months, but give it a try and let me know how you get on.

You could also host the file yourself, if that would help (eg in a fork of this repo). Download a version of the channels json file from the links in the README, stick it somewhere, and point the CHANNELS_FILE variable to it.

Let me know if you need step-by-step instructions.

Mark

andypburke commented 3 years ago

You could set an environment variable in your lambda function, with the key CHANNELS_FILE, and the value https://raw.githubusercontent.com/ndg63276/alexa-sky-hd/master/4101-1.json

This would at least be a fixed file, that doesn't really change much. Some of the channel names or numbers might be out of date as I havent checked it in 13 months, but give it a try and let me know how you get on.

You could also host the file yourself, if that would help (eg in a fork of this repo). Download a version of the channels json file from the links in the README, stick it somewhere, and point the CHANNELS_FILE variable to it.

Let me know if you need step-by-step instructions.

Mark

Thanks @ndg63276. I had already set up the CHANNELS_FILE variable for a local region here http://epgservices.sky.com/5.1.1/api/2.1/region/json/4103/71.

I can try hosting locally, but the problem I have is Alexa understanding subtle differences. For example trying to turn on Sky Premiere on 301 turns on Sky Premier 2 on 429 because they sound similar. I would like to add friendly names to help address that (e.g. 301 is Movies Premiere), but not sure which channels json file to change, even if it is possible.

Are you able to provide any advice or help?

ndg63276 commented 3 years ago

The various channels json files are for you to choose from, just point CHANNELS_FILE to whichever one you like the best. To give yourself a custom one, I would

  1. Fork this repo
  2. Point CHANNELS_FILE to https://raw.githubusercontent.com/andypburke/alexa-sky-hd/master/channels-hd.json
  3. Edit channels-hd.json in your github repo.

The format should be fairly self explanatory. Make sure your file is valid json (use jsonlint.com to check).

andypburke commented 3 years ago

The various channels json files are for you to choose from, just point CHANNELS_FILE to whichever one you like the best. To give yourself a custom one, I would

  1. Fork this repo
  2. Point CHANNELS_FILE to https://raw.githubusercontent.com/andypburke/alexa-sky-hd/master/channels-hd.json
  3. Edit channels-hd.json in your github repo.

The format should be fairly self explanatory. Make sure your file is valid json (use jsonlint.com to check).

I have set this up and now I get a response saying Sky Box is not responding when trying to change a channel, although I can turn on things like subtitles and TV guide ok. Any ideas?

ndg63276 commented 3 years ago

How odd, it works for me. If you go into your Lambda function, and go to the Test tab, then choose New Event, and give it a name like "ChangeChannel", then put this in the json:

{
  "directive": {
    "endpoint": {
      "cookie": {},
      "endpointId": "skybox-001",
      "scope": {
        "token": "",
        "type": "BearerToken"
      }
    },
    "header": {
      "correlationToken": "",
      "messageId": "",
      "name": "ChangeChannel",
      "namespace": "Alexa.ChannelController",
      "payloadVersion": "3"
    },
    "payload": {
      "channel": {},
      "channelMetadata": {
        "name": "sky sports main event"
      }
    }
  }
}

Click Save Changes, and then Test, and see what error you get, it might clarify what is going wrong.

andypburke commented 3 years ago

Thanks @ndg63276. I found an minor error in the channels JSON file and fixed that and the problem went away. However, I am still having problems changing to channels. For example the new Sky Gangsters channel to 302 works in your test file, but Alexa says she doesn’t understand when speaking the utterance using a friendly name ‘gangsters’ even though it is in the json file. Thoughts?

ndg63276 commented 3 years ago

I get the same. Unfortunately, that means Alexa is not passing the request down to the Sky Box skill, so there is nothing we can change in the code to fix it. You can always just ask for channel 302 I guess. Sorry I can't be more help!

andypburke commented 3 years ago

I get the same. Unfortunately, that means Alexa is not passing the request down to the Sky Box skill, so there is nothing we can change in the code to fix it. You can always just ask for channel 302 I guess. Sorry I can't be more help!

Ok understood. Do you have any ideas why Alexa behaves this way? I don't know too much about how Smart Home skills work to be honest, so just curious to understand why it works for some channels but not others.

ndg63276 commented 3 years ago

No, not at all. With non-smart-home skills, you can define how people talk to them, but for smart-home stuff, it is very much just try things and see what works.

andypburke commented 3 years ago

Saying 'Change Channel to gangsters' now appears to be working. Is there a cache of some kind that could be holding on to old change definitions that take some time to flush out?

andypburke commented 3 years ago

UPDATE : I think I may have a conflict with another skill for the Sony Bravia TV which may be adding to some of the challenges. Not sure how to work through that apart from invocating the full utterance (including on Sky Box) before trying other commands otherwise it tries to turn the channel over on the Sony Bravia TV smart skill. Not so smart then!