When handle_action in protocols.py fails (success=False), it only logs a warning and closes the transport without sending an HTTP response. This causes Alexa to timeout and report 'something went wrong' to the user.
The fix is to always send a valid SOAP response even on failure. Around line 187 in protocols.py, instead of only writing a response when success is True, always send the SOAP message.
This affects any plugin where on(), off(), or get_state() might fail or return unexpected values.
When handle_action in protocols.py fails (success=False), it only logs a warning and closes the transport without sending an HTTP response. This causes Alexa to timeout and report 'something went wrong' to the user.
The fix is to always send a valid SOAP response even on failure. Around line 187 in protocols.py, instead of only writing a response when success is True, always send the SOAP message.
This affects any plugin where on(), off(), or get_state() might fail or return unexpected values.