Comments (3)
Ohhh nice! I did not notice I was using AbstractExceptionHandler
.
I instead use the class CatchAccountLinkingErrorHandler(AbstractRequestHandler):
as the easier implementation.
Again, thank you!
from alexa-skills-kit-sdk-for-python.
Glad it worked :-) !!
from alexa-skills-kit-sdk-for-python.
Hey @cnpants , your CatchAccountLinkingErrorHandler
should be an implementation of AbstractRequestHandler class, considering you want to handle the input alexa request and respond with a custom message (similar to any of the request handler use cases). Just change the parent class of CatchAccountLinkingErrorHandler
to
class CatchAccountLinkingErrorHandler(AbstractRequestHandler):
and register the request handler before any of the intent handlers, so that the SDK will respond before it checks other intents. (ref)
The exception handler will make sense in cases when you are not using checkAccessToken
method in code but directly assuming there is an account token and using it. Considering there won't be an 'access_token' attribute in user
if there is no account linking, you can have an exception handler like
class CatchAccountLinkingErrorHandler(AbstractExceptionHandler):
def can_handle(self, handler_input, exception):
# type: (HandlerInput, Exception) -> Response
# considering there will be an attribute error for no access_token
# attribute found, when using
# handler_input.request_envelope.session.user.access_token
return type(exception).__name__ == 'AttributeError'
def handle(self, handler_input, exception):
# type: (HandlerInput, Exception) -> Response
logger.info("In CatchAccountLinkingErrorHandler")
handler_input.response_builder.speak("Your account is not linked.")
return handler_input.response_builder.response
that catches such errors and responds back with a seamless message to the user. But be careful of the conditions being checked in the can_handle
function. The above class would catch all attribute errors in your code, regardless of where it occurred hence gobbling up some other errors. So, add more conditions to the can_handle
function accordingly.
I am not sure what error response your CatchAllExceptionHandler
threw when you tried sb.add_exception_handler(CatchAccountLinkingErrorHandler())
, but in case you want to use the class as ExceptionHandler
, you need to register it before the CatchAllExceptionHandler
so that specific exceptions are processed before generic exceptions. (ref)
Let us know if this helps. As for the stack overflow tag, I will check with the team on their inputs and update the repo if we plan to adding that.
from alexa-skills-kit-sdk-for-python.
Related Issues (20)
- ask_sdk_model.services.service_exception.ServiceException: The authentication token is invalid or doesn't have access to make this HOT 11
- Sb Conflicting each other HOT 5
- `ModuleNotFoundError:` No module named 'asn1crypto'`` when importing skill adapter from flask HOT 3
- 'NoneType' object has no attribute 'system' HOT 2
- Link how to create a new security profile should be updated HOT 1
- Golang SDK - Alexa Skills kit HOT 2
- User with almost all scopes types receives unauthorized_client error HOT 2
- UserAgentManager missing from 1.15 PyPI distro HOT 3
- Alexa HOT 1
- Fail to import local modules HOT 6
- I have a intent for the alexa skill which has two slots, one of them is fulfilled while invoking the skill. I want the second slot to store the value uttered by the user at a later point of time. Is there a way to do so using python HOT 1
- Cannot import the SpokenInfo class (ask_sdk_model.services.reminder_management) HOT 2
- Receiving unauthorized_client error trying to list all skills HOT 3
- SpeakDirective doesn't create correct audio src directive HOT 1
- Outdated version of cryptography? HOT 5
- Invalid signatures with django-ask-sdk since ask-sdk-webservice-support v1.3.3 HOT 4
- ENDPOINT_TIMEOUT is not handled properly in Incorrect handling of SessionEndedRequest.
- AskForPermissionsConsentCard not showing the option to activate requested permission HOT 2
- documentation error - local_debug.py
- Bug report : Sending a voice forward consent start connection directive returns error "ask_sdk_core/response_helper.py directive.object_type has no attribute 'object_type'"
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from alexa-skills-kit-sdk-for-python.