Echo Binding - Nothing Works in OH 5.2.1

Just installed brand new OH 5.2.1 via docker. Set up my zwave devices with no issue. Set up Alexa Skill so I can control things via ‘alexa, turn on living room’ and that works. Now, trying the Echo Binding so I can play audio, and do text-to-speech via the Echo. I’ve gone through all the steps in the documentation, everything says ONLINE. I created 2 new Items, linked to amazonechocontrol:echo:x8997bf579:G6G22Y0721931VRT:textCommandand :textToSpeech But when I try to sendCommand(‘ECHO:system_alerts_melodic1’) to either of the Items, nothing happens. I can see the following in the debug logs:

15:29:42.762 [INFO ] [openhab.event.ItemCommandEvent       ] - Item 'Alexa_Command' received command ECHO:system_alerts_melodic1 (source: org.openhab.automation.jsscripting$rule:224c99e815)
15:29:43.265 [DEBUG] [ontrol.internal.connection.Connection] - Added 324321698 device(s) [G6G22Y0721931VRT] to queue
15:29:43.765 [DEBUG] [ocontrol.internal.handler.EchoHandler] - Handle updateState amazonechocontrol:echo:c8667bf579:G6G22Y0721931VRT
15:29:43.766 [DEBUG] [trol.internal.util.HttpRequestBuilder] - > GET: https://na-api-alexa.amazon.com/api/np/player?deviceSerialNumber=G6G22Y0721931VRT&deviceType=A4ZXE0RM7LQ7A&screenWidth=1440 (available: 2)
15:29:43.991 [DEBUG] [tpRequestBuilder$HttpResponseListener] - < GET to https://na-api-alexa.amazon.com/api/np/player?deviceSerialNumber=G6G22Y0721931VRT&deviceType=A4ZXE0RM7LQ7A&screenWidth=1440: 400
15:29:43.992 [DEBUG] [ocontrol.internal.handler.EchoHandler] - Failed to update player state: Queue expired
org.openhab.binding.amazonechocontrol.internal.ConnectionException: Queue expired
	at org.openhab.binding.amazonechocontrol.internal.util.HttpRequestBuilder$HttpResponseListener.onComplete(HttpRequestBuilder.java:379) ~[?:?]
	at org.eclipse.jetty.client.ResponseNotifier.notifyComplete(ResponseNotifier.java:218) ~[?:?]
	at org.eclipse.jetty.client.ResponseNotifier.notifyComplete(ResponseNotifier.java:210) ~[?:?]
	at org.eclipse.jetty.client.HttpReceiver.terminateResponse(HttpReceiver.java:481) ~[?:?]
	at org.eclipse.jetty.client.HttpReceiver.terminateResponse(HttpReceiver.java:461) ~[?:?]
	at org.eclipse.jetty.client.HttpReceiver.responseSuccess(HttpReceiver.java:424) ~[?:?]
	at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.messageComplete(HttpReceiverOverHTTP.java:374) ~[?:?]
	at org.eclipse.jetty.http.HttpParser.handleContentMessage(HttpParser.java:596) ~[?:?]
	at org.eclipse.jetty.http.HttpParser.parseContent(HttpParser.java:1723) ~[?:?]
	at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:1552) ~[?:?]
	at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.parse(HttpReceiverOverHTTP.java:208) ~[?:?]
	at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.process(HttpReceiverOverHTTP.java:148) ~[?:?]
	at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.receive(HttpReceiverOverHTTP.java:80) ~[?:?]
	at org.eclipse.jetty.client.http.HttpChannelOverHTTP.receive(HttpChannelOverHTTP.java:131) ~[?:?]
	at org.eclipse.jetty.client.http.HttpConnectionOverHTTP.onFillable(HttpConnectionOverHTTP.java:172) ~[?:?]
	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) ~[?:?]
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) ~[?:?]
	at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:555) ~[?:?]
	at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:410) ~[?:?]
	at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:164) ~[?:?]
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) ~[?:?]
	at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) ~[?:?]
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338) ~[?:?]
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315) ~[?:?]
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173) ~[?:?]
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131) ~[?:?]
	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409) ~[?:?]
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883) ~[?:?]
	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034) ~[?:?]
	at java.lang.Thread.run(Thread.java:1583) [?:?]

Does this binding work in USA?

yeah the binding works in the US. the 400 on /api/np/player is amazon being amazon, people have been hitting that for a while.

you’re sending ECHO:system_alerts_melodic1 to textCommand and textToSpeech though. that string is for the playAlarmSound channel. tts wants actual words, textCommand wants a spoken alexa command like play jazz. try playAlarmSound with that ECHO: thing, and send something like hello from openhab to textToSpeech.

if tts still does nothing the account is probably half logged in even if it says ONLINE. open the amazonechocontrol servlet (/amazonechocontrol) and log into amazon again. US accounts need amazon.com not the .co.uk one. 2fa being on also makes the session die after a bit.