There have been several instances where a user has managed to get multiple (sometimes a dozen or more) purchased Bandwidth numbers from the same Customer ID during signup, with only the last number being active. This might be due to the first number they tried not being available after payment cleared, and then some bug only showing itself in that case, which causes Cheogram Android to give strange errors and/or otherwise encourage the user to try re-buying a number (which appears to cause the re-buy, but doesn't properly put it on their account, or otherwise indicate to the user that it has succeeded).
While details are usually rare, we did receive a fairly detailed rundown, including screenshots, from a user in the Soprani.ca MUC recently. The following abridged transcript starts on 2024-08-18 and uses the PDT timezone (image URLs adjusted for longevity):
[10:32:41 PM] grizzlybear22: Can somebody help me with cheogram registration, it took 15 dollars in bitcoin from me and wouldn't let me register a number, and gave me an error message every time I tried after I paid, and now my payment notification is gone
[10:33:12 PM] grizzlybear22: https://ossguy.com/grizzlybear22/UCi2Ut10wt5a3kTO/5rCjLal-RQ21QSnnTXN-0g.jpg
[10:34:04 PM] grizzlybear22: It is asking me to pay again
[10:41:10 PM] grizzlybear22: https://ossguy.com/grizzlybear22/ieGt2Wljhz729x5f/4YIGRK4VSbOBbngQP2UWRw.jpg
[05:16:45 AM] grizzlybear22: > Hi all, I'm in a similar situation as grizzlybear22. I tried registering via Cheogram app and submitted payment in Bitcoin but I never received a notification even though $15 was sent to the bitcoin provided. This morning Cheogram app says the phone number is no longer available.
Did you try scrolling back to the chats menu, the app is so unintuitive that I spent 2 hours on that screen waiting for something to happen when all I had to do was hit the close button and scroll back to the chats menu where the bot will be
[05:17:25 AM] grizzlybear22: The screen after sending payment
[05:19:43 AM] grizzlybear22: But thhen it made me pick a new number, and it wouldn't be able to finish the process of getting a jmp number, and I'm back to square one with 16 dollars less in bitcoin
[05:24:25 AM] [user2]: Yeah this is not intuitive at all. I do see the bot and I click on the link to complete registration and it just routes me back to step one of selecting a number again.....
[05:24:52 AM] grizzlybear22: Yeah now select the number
[05:25:13 AM] grizzlybear22: It 'shouldn't ask you to pay again'
[05:25:55 AM] grizzlybear22: https://ossguy.com/grizzlybear22/JlgkCGJOAdPvNolC/rcfK2fkoRxGb_PD8VHHomg.jpg
[05:26:30 AM] grizzlybear22: This is what happened to me when I tried getting a jmp number
[05:32:44 AM] grizzlybear22: https://ossguy.com/grizzlybear22/SHElLqpJoJ3k3VhP/PivbmyS7SgGPfXGuPBZ2yQ.jpg
[05:33:02 AM] grizzlybear22: My bitcoin is gone and I'm back to this screen
[05:37:43 AM] grizzlybear22: https://ossguy.com/grizzlybear22/48leqJZ0uq70HX0b/cNX8FPDPSICygWa-oUsLXw.jpg
[05:41:50 AM] grizzlybear22: I was probably at 9 to 12 confirmations when I was trying to select a number for 3 hours, it had a screen with a loading circle that said 'please be patient' and after a few minutes of that it would show me the error message
[05:42:16 AM] grizzlybear22: > grizzlybear22: did you sign up with an existing JID?
No I clicked create account
[05:44:20 AM] grizzlybear22: Then it asked me to select a number and pay, which I did, somehow all of that got erased and I'm back to square 1
[05:53:11 AM] grizzlybear22: I can't even look at the phone number, all I have is the transaction data, it's as if I reinstalled the app
[05:53:13 AM] singpolyma: If you got your payment but now it's asking you to pay again it is possible you cancelled out of onboarding or pushed the Twilio button or something. Support will have to find your account for you and finish setup manually if that's the case. Send them your txhash and the address you sent to
[05:53:48 AM] grizzlybear22: > If you got your payment but now it's asking you to pay again it is possible you cancelled out of onboarding or pushed the Twilio button or something. Support will have to find your account for you and finish setup manually if that's the case. Send them your txhash and the address you sent to
That is exactly what happened, thank you
[06:38:52 AM] grizzlybear22: https://ossguy.com/grizzlybear22/FHdhzrX5gtKbFwSo/gqPHfFP5RMm_FKZ6_OeFmA.jpg
[06:39:05 AM] grizzlybear22: Should I just reinstall from here
[06:51:15 AM] singpolyma: It looks from the screenshot like you are logged in already
[06:51:38 AM] singpolyma: Just need to tap xmpp:cheogram.com and choose the register with backend option
[06:54:12 AM] grizzlybear22: https://ossguy.com/grizzlybear22/z7HXi4l0S2frrbkH/FL5bC2FvS-Wj0Q_bRx4eNQ.jpg
[06:54:18 AM] grizzlybear22: https://ossguy.com/grizzlybear22/5VnpmewVBVZPku0i/yUp3ZhNnQS-j39MnOGarUQ.jpg
[06:54:30 AM] grizzlybear22: It gave me the wrong number
[06:54:46 AM] grizzlybear22: But now it should work?
[06:57:09 AM] Gnafu the Great: Yes, it should work. That is the number that was associated with the onboarding account that had your transaction ID. If you find a different number you like on https://jmp.chat/ you can send a private inquiry to support and we can change your number to it.
And here is a history of their number buy attempts (also PDT):
[21:40:40] 9492202053 - failed (reservation not found)
[22:33:21] 9492202053 - success
[22:33:25] 9493393801 - success
[22:33:28] 9493712251 - success
[22:33:30] 9493570014 - success
[22:33:31] 9493572048 - success
[22:33:33] 9493572114 - success
[22:33:35] 9493572141 - success
[22:33:41] 7144506493 - success
[22:33:43] 9493572251 - success
[22:33:51] 8104765701 - success
[07:24:38] 949220xxxx - success
Hopefully the above is enough to figure out what's going on. I think the thrashing (multiple number buy attempts in quick succession) may be related to the error the user is getting back - e.g. they try to buy a number then hit an error, then try again.
So the issue is that we assume the bandwidth number order is effectively instant. We poll for it as bandwidth's API demands, but usually it is done in seconds and so it isn't a big deal.
However, if it takes long enough the command in the bot can actually time out. Or they could have a network interruption, or get bored and leave the app, all kinds of crazy things. In this case sgx-jmp is still in process of buying their number, but when then run register again it doesn't know that since nothing has been recorded yet (until the order completes).
So we need to maybe stop doing the inline poll (especially if it goes past some time limit) and instead save the order id to redis and let them poll it by pushing "next" over and over like we do with snikket instance launch. If we enter register flow and this key exists, jump right to that step and let them keep polling instead of letting them buy a new number when there is an order in progress.