Phone number parsing - workarounds?

Hi,
I’m trying to store a (admittedly) weird phone number. Reason: separate outgoing numbers for business/private with existing equipment.
Goal is: reach my FritzBox de-anonymized, initiate a call-through, tell the FritzBox to publish my
outgoing number, and then call the contact.
Basically it’s working fine when I dial most of this manually.
I need, in this order:

  • *31# to publish my own number to the FritzBox
  • +49 international code
  • 1234567890 the number of my landline
  • a pause
  • 1234 a pin code for the call-through function
  • a second pause
  • either a 0 when calling anonymous OR #31# to publish my landline number (preferred)
  • the contacts number with or without international code.

The sequence up to past the pin code is working fine as usual:
*31#+491234567890p1234p → is okay
I can then manually type in #31#, get a signal and can dial my contacts number anyhow.
Also working fine: the anonymous variant and no special characters:
+31#+491234567890p1234p0p012349876654321 → is okay, can be stored in contacts and can be called, but as “anonymous”, because of the missing “#31#” for the fritzbox.
International notation fails with “invalid phone number”:
+31#+491234567890p1234p0p+4912349876654321 → doesn’t work because of the “+”.
Even worse:
+31#+491234567890p1234p#31# → is misinterpreted as service request and doesn’t even open the regular phone screen.

So, I could reach my goal if the phone would allow me to store and dial whatever I want. But it won’t.

Why is it necessary to parse and check a number? Is there any workaround, any string to tell the phone NOT to check the number first?

You should open a bugreport about this. You can use Buggr from Chum to fill the bugreport template.

I just found out I can mask the #31# by writing \#31\# and at least this part is working without calling a net service. The second plus sign however is forbidden, but I can replace it with the “original” int’l prefix or just zero (because my landline will stay in Germany for sure).
So a valid, storeable contact number now will be
*31#+491234567890p1234p\#31\#0123456789
which can’t be written into the phone number field but at least pasted or generated by my nextcloud instance.

Personally I don’t think that a bug report is constructive. The parsing of elements of the dialled number as commands or replacements is more useful than my absurdly strange needs nobody else asks for.

Have you tried using the terminal to call this number? If this works you could make a script and a desktop icon. Maybe this helps:

No, didn’t try, but thought about it. Thx.
But in the end it’s not just one number, but a whole group of (future) business contacts. It’s simpler to store the numbers along with the contacts.

There should be a message in the log/journal like

     VoiceCallManager::onError message

after you get the “invalid number” from voicecall-ui. Does that say anything useful?

You could also try to comment lines 544 and 545 in /usr/share/voicecall-ui-jolla/VoiceCallManager.qml

540             } else if (message.indexOf("Error.Cancelled") !== -1) {
541                 // Don't show notification, notification already published in main when the
542                 // state first changed to disconnected/null.
543                 needsPublish = false
544             } else if (message.indexOf("Error.InvalidHandle") !== -1) {
545                 root.error = qsTrId("voicecall-la-invalid-number")
546             } else {
547                 root.error = qsTrId("voicecall-la-generic-error")
548             }

Just for testing though.

EDIT: forget that, it will just suppress the message, not the fact that an error happened.