-
Notifications
You must be signed in to change notification settings - Fork 71
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
WhatsApp error handling #260
Comments
So the closest we have to this is stopping a contact when we know they can no longer be reached. That's generally in response to a Twilio code when we try to send to them: That however causes the entire contact to be marked as stopped, not just that URN. WhatsApp is an interesting case because from a WhatsApp URN you can derive a real telephone number, which is pretty unique among channels. Generally if someone is unreachable then they are unreachable, at the very least that URN specifically is. So anyways, ya, not sure how this would be modeled. I guess in an ideal future would I could imagine something like this:
That feels the most "flowy" way of addressing this long term. Basically move stopping / blocking to be flow actions (perhaps really unifying those two and letting the user annotate contacts if they want to differentiate them) and let you wire up triggers for some a broader set of channel events beyond the more typical @ericnewcomer @rowanseymour @norkans7 thoughts? Footnotes
|
I do think we still need to preserve the distinction between blocked (user initiated) and stopped (contact initiated) because you can into trouble if you revert/ignore the latter.. and I'm not sure there's a strong argument to put that burden on the user via custom fields.. but maybe there's a better way to model this than I definitely like the idea of users having control over the "stopping" and it fits with something we've talked about for a while now - "non-interactive flows" with their own rules about what is allowed. Tho for this specific use case.. I do wonder how likely is it that a user would cease to be reachable on WhatsApp but still be reachable (and the same actual person) over SMS? I'm not even sure how a phone number ceases to be a WhatsApp user.. |
We haven't done research in the specific reasons, but we do know that this happens quite a lot in practice. The reasons could be things like uninstalling WhatsApp, or switching to a non-smartphone that doesn't support WhatsApp, or they never had WhatsApp to begin with, but the previous owner of their phone number did, and the WhatsApp account only expired after they were given the number (I'm not sure how long WhatsApp keeps control of the accounts). |
I guess that's the key question - how long does WhatsApp remember the accounts. If I put my SIM card in a non-smartphone now, how long before anything changes on the WhatsApp side. |
I found this resource from WhatsApp, seems like 45 days is the answer: https://faq.whatsapp.com/en/general/24068052 |
Just want to weigh in here that I really like the event > trigger model. Not just for this case but in general. The more things that logically fit this paradigm the more multiplicative the power the platform gets. As long as we aren’t squinting too hard to fit it which in this case I don’t think we would be. |
When sending a message, the WhatsApp API might return a 400 error. Some of these errors might be useful to be able to action on, eg.
1013, not a WhatsApp user
1006, unknown contact
These kinds of errors happen often with number churn.
It would be nice to be able to do some sort of action on receipt of these errors, eg. send the user the message over SMS instead, but I'm not sure what the best way to go about this in RapidPro is.
I think it would be useful to have a discussion if this is something that RapidPro would support, and if so, how we could go about implementing it.
The text was updated successfully, but these errors were encountered: