CRM integration without ContactUrl

Status
Not open for further replies.

ltri37

Silver Partner
Advanced Certified
Joined
Jan 9, 2023
Messages
47
Reaction score
17
Hello,

3CX uses the ContactUrl as unique key to identify the contact, as such, when the ContactUrl is not unique (e.g. an empty string), previous contacts are always overwritten.


I'm not sure why 3CX would use the ContactUrl for this, it doesn't make a lot of sense when ContactID is available as a unique ID.

I don't want to show the ContactUrl to the user in the clients, because it would be a bogus URL created to satisfy this 3CX requirement. All contacts have a unique database ID that I'm passing to 3CX with ContactID.

How can I make multiple unique CRM contacts in 3CX without showing any (in this case bogus) Urls to the clients?



Thank you,

Lukas
 
Hello,

3CX uses the ContactUrl as unique key to identify the contact, as such, when the ContactUrl is not unique (e.g. an empty string), previous contacts are always overwritten.


I'm not sure why 3CX would use the ContactUrl for this, it doesn't make a lot of sense when ContactID is available as a unique ID.

I don't want to show the ContactUrl to the user in the clients, because it would be a bogus URL created to satisfy this 3CX requirement. All contacts have a unique database ID that I'm passing to 3CX with ContactID.

How can I make multiple unique CRM contacts in 3CX without showing any (in this case bogus) Urls to the clients?



Thank you,

Lukas
You just simply cannot. The ContactURL is very important as the "key" to sync contacts (that can be disabled tho, so that it queries the CRM every time) and is also required to consider a match.

If the URL is abitrary, simply generate it in your template and set it anyway, then disable the "add contacts to phonebook". This way, the URL can be random every time.
 
This doesn't solve the problem. The problem is that the (desktop) client always shows the ContactURL for every call, unless it is empty.

Disabling "Add CRM contacts to 3CX Company Phonebook" doesn't fix this, it would still show the bogus URL. It just introduces a new problem which is that since the contacts are not added to the phonebook over time, every non-desktop client, ever call list and every log would lack the customer name (even if its not the first call).

I'm assuming there is a proper solution to this, because considering the ContactURL the one and only unique ID while simultaneously forcing the client to show the link to it doesn't make sense, especially considering that we have a ContactID.
 
Then do this:
1. Set the ContactURL to just a random unique ID for each contact, like just the item ID.
2. In the PWA/Webclient/DesktopApp, go and disable the autopopup (Settings > Integration > Off.)
3. Enable your sync to phonebook. Note that devices that use the phonebook to get the name will only work beginning with the second call. First call goes to devices too quickly for the integration to have time to add the contact to the phonebook.
 
I'm assuming there is a proper solution to this, because considering the ContactURL the one and only unique ID while simultaneously forcing the client to show the link to it doesn't make sense, especially considering that we have a ContactID.
One of the reason it's done this way is because not all CRMs have IDs. Some use other types of primary keys and some use URLs as well. Just because you don't need it that way, doesn't mean it's valid for everyone.

Also, the client is not "forced" to open the link. You can disable that.
 
This doesn't make a whole lot of sense.

For a CRM that provides an URL, the URL can easily be mapped to the unique id, the CRM doesn't have to provide anything.

On the other hand, we can't put a unique ID in the URL, because it will always be displayed in the client, even with Settings > Integration > Off.

ContactID and EntityId are parameters available in the XML template, but this doesn't matter as ContactURL is always used.


So in the end, I need to provide a bogus URL to the client:

- "Settings > Integration > Off" does not matter at all, the button is always displayed when contactURL is set
- if the URL is a http link, the client can click on it and open a broken web page
- if the URL is not a http link (like just an ID), a click on it leads to a blank black 3CX page that can't be closed anymore.

None of this is acceptable UI for us.


@edossantos do you have any suggestion what could be done so that:

- in the client we do NOT have a clickable button
- while at the same time using proper CRM contact integration, and saving multiple contacts to the 3CX phonebook from CRM


The least bad idea I have is to create a html site somewhere with a non catastrophic explanation that the CRM does not support clickable links, and generate ContactURL like:

Code:
https://example.org/3cxNoContactURLsupport.htm?id=<ID>

The HTML can be static, the id argument is only for 3CX to consider the URL unique.


But those are very elaborate workarounds for a necessity that seams pretty basic, which is why I ask @edossantos for a comment.



Thank you!
 
Also, to have hundreds of end-user manually disable CRM integration in "Settings > Integration > Off" (which again only fixes the autopopup, it doesn't fix the button creation) is not scalable and not user friendly.

We are forced into a feature that we don't want to use, due to a limitation that doesn't make sense.

We just want to sync contacts from CRM to 3CX, nothing else. No popups, no clickable buttons, no other magic.


edit: I have retested it once again and I believe CRM integration in the client is off by default. This alleviates the situation a little bit. I still have a button to a website, and I still need to deploy a static html page with an error message for no other reason than to circumvent the ContactURL requirement of 3CX.
 
Last edited:
Also, to have hundreds of end-user manually disable CRM integration in "Settings > Integration > Off" (which again only fixes the autopopup, it doesn't fix the button creation) is not scalable and not user friendly.

We are forced into a feature that we don't want to use, due to a limitation that doesn't make sense.

We just want to sync contacts from CRM to 3CX, nothing else. No popups, no clickable buttons, no other magic.


edit: I have retested it once again and I believe CRM integration in the client is off by default. This alleviates the situation a little bit. I still have a button to a website, and I still need to deploy a static html page with an error message for no other reason than to circumvent the ContactURL requirement of 3CX.
You cannot "sync" contacts from the CRM to 3CX without the integration and the integration is made in that way and I can tell you it won't change.

Your desired result is not something 3CX can do with its CRM integration. At all.

Therefore, you'll want to either find another solution or use a different platform.
 
  • Like
Reactions: edossantos
I know you are just trying to help, but you really aren't. I respectfully ask you to stop responding to this thread, so that 3CX can answer.
 
I know you are just trying to help, but you really aren't. I respectfully ask you to stop responding to this thread, so that 3CX can answer.
I have nothing to add on top of what @ConceptsWeb has said so far. You just can't avoid the Contact URL.
 
  • Like
Reactions: Evolute IT
I don't need to avoid Contact URL.

I need to avoid showing the Contact URL in the client, and I need to avoid the user interface showing a blank black page when the Contact URL is just an ID instead of an URL.
 
I don't need to avoid Contact URL.

I need to avoid showing the Contact URL in the client, and I need to avoid the user interface showing a blank black page when the Contact URL is just an ID instead of an URL.
You can't.
 
  • Like
Reactions: Evolute IT
Then the sorry solution is to point to a static error page. Fantastic.

With all the flexibility the XML template gives us, this seemed like a no-brainer.
 
I brought this up with commercial support and indeed it is confirmed:

3CX insists on using ContactUrl for two completely different purposes at the same time and doesn't not intend to make any chances in this regard.

We ended up with a static HTML page showing an explanation (CRM does not have a contact page), and use a url parameter to make unique ContactURLs that is ignored at this webserver.

Code:
https://example.org/3cxCrmNoContactUrl.html?id=<unique-id>



The fact that this is the only way to bring contacts into 3CX is unfortunate. If Office 365 contact sync would have the same issue, it would be fixed in a heartbeat.
 
Status
Not open for further replies.