Zoho CRM Integration

Status
Not open for further replies.

JosiahF

Customer
Joined
Jan 16, 2019
Messages
4
Reaction score
0
Part 1.

I've been at this on and off. I cannot get Journalling to work. I finally bunkered down to troubleshoot this. While searching the forums I noticed to look at the 3cxSystemService.log. I find this:

2020/04/03 10:50:14.296|625|0018|Verb|Performing GET request 'https://www.zohoapis.com/crm/v2/users/search?criteria=(Phone:equals:102)'.
2020/04/03 10:50:14.299|625|0004|Verb|Enqueue Updated.PARAMETER.465
2020/04/03 10:50:14.299|625|0011|Verb|Dequeue Updated.PARAMETER.465
2020/04/03 10:50:14.486|625|0026|Erro|Exception during call reporting: System.Exception: Server returned a non successful status code - HTTPStatusCode=BadRequest - Reason= - Content={"code":"INVALID_QUERY","details":{"reason":"the field is not available for search","api_name":"Phone"},"message":"invalid query formed","status":"error"}

at CrmIntegration.ScenarioProcessorBase.ProcessRequest(ScenarioRequest request, IValueManager customManager, HttpClient client, CancellationToken token)
at CrmIntegration.ScenarioProcessorBase.ProcessScenario(ProtocolScenario scenario, IValueManager customManager, CancellationToken token)
at CrmIntegration.ScenarioProcessorBase.Execute(ProtocolScenario scenario, CancellationToken token)
at CrmIntegration.CrmProcessor.ExecuteScenarioByName(String scenarioName, IEnumerable`1 parameters, Boolean useNoAuthProvider, CancellationToken token)
at CrmIntegration.CrmProcessor.ReportCall(CallEndedEvent call, CancellationToken token)

Now, before we go on to say I need to check Zoho to see if the Phone field is there, it is. In fact, it is a Zoho CRM standard field, not customized. I originally did try with the custom field (https://www.3cx.com/docs/pbx-crm-integration-zoho/#h.qp9eqhnqzdv4), however, no matter what I called the field, it would produce the same error above. I was wondering if it was a problem with custom fields since Zoho sometimes has problems querying those, so I switched it to the built-in field.

1585929307104.png


Part 2.
Can I modify how 3cx creates the number to the Contacts module even with an API? I'd liked to make it so that "created by" is who the caller talked to first.

Thank you.
 
Part 1.

I've been at this on and off. I cannot get Journalling to work. I finally bunkered down to troubleshoot this. While searching the forums I noticed to look at the 3cxSystemService.log. I find this:

2020/04/03 10:50:14.296|625|0018|Verb|Performing GET request 'https://www.zohoapis.com/crm/v2/users/search?criteria=(Phone:equals:102)'.
2020/04/03 10:50:14.299|625|0004|Verb|Enqueue Updated.PARAMETER.465
2020/04/03 10:50:14.299|625|0011|Verb|Dequeue Updated.PARAMETER.465
2020/04/03 10:50:14.486|625|0026|Erro|Exception during call reporting: System.Exception: Server returned a non successful status code - HTTPStatusCode=BadRequest - Reason= - Content={"code":"INVALID_QUERY","details":{"reason":"the field is not available for search","api_name":"Phone"},"message":"invalid query formed","status":"error"}

at CrmIntegration.ScenarioProcessorBase.ProcessRequest(ScenarioRequest request, IValueManager customManager, HttpClient client, CancellationToken token)
at CrmIntegration.ScenarioProcessorBase.ProcessScenario(ProtocolScenario scenario, IValueManager customManager, CancellationToken token)
at CrmIntegration.ScenarioProcessorBase.Execute(ProtocolScenario scenario, CancellationToken token)
at CrmIntegration.CrmProcessor.ExecuteScenarioByName(String scenarioName, IEnumerable`1 parameters, Boolean useNoAuthProvider, CancellationToken token)
at CrmIntegration.CrmProcessor.ReportCall(CallEndedEvent call, CancellationToken token)

Now, before we go on to say I need to check Zoho to see if the Phone field is there, it is. In fact, it is a Zoho CRM standard field, not customized. I originally did try with the custom field (https://www.3cx.com/docs/pbx-crm-integration-zoho/#h.qp9eqhnqzdv4), however, no matter what I called the field, it would produce the same error above. I was wondering if it was a problem with custom fields since Zoho sometimes has problems querying those, so I switched it to the built-in field.

1585929307104.png
Please note that this query is being performed on the "Users" entity. Here 3CX needs to know which Zoho user has the extension 102, so then it can create the call activity associated to the calling contact and the agent that receives the call. In this case, this query is failing. As per our documentation, Zoho doesn't have a standard field to store the agent extension on the Users entity. So, we recommend that you create a custom field, and then configure this custom field name in 3CX. Have you done this?

Part 2.
Can I modify how 3cx creates the number to the Contacts module even with an API? I'd liked to make it so that "created by" is who the caller talked to first.
Unfortunately this is not possible. When the contact is created, 3CX doesn't know yet which agent will take this call. Therefore it's not possible to pass that information to Zoho. Only the caller number is available at this stage.
 
It seems if I set the field in Zoho & Extension Field ID in 3cx to anything but "Extension Number" / "Extension_Number", it fails. If I set it to exactly as the documentation says, it works. This is bizarre behavior. If this is intended, then the field in 3cx shouldn't be customizable.


Is it possible then with importing the CRM Contacts to be marked CRM in the CSV file? Or that I can update them in bulk?
 
It seems if I set the field in Zoho & Extension Field ID in 3cx to anything but "Extension Number" / "Extension_Number", it fails. If I set it to exactly as the documentation says, it works. This is bizarre behavior. If this is intended, then the field in 3cx shouldn't be customizable.
This is because that's the name you used when you created the field. Even if you rename it, the field ID remains unchanged. However, if you initially define the field with a different name, then the ID will be different, and that's why this is a customizable field name.

Is it possible then with importing the CRM Contacts to be marked CRM in the CSV file? Or that I can update them in bulk?
Unfortunately this is not possible, importing the contacts from a CSV will mark the contact as 3CX contact, and not CRM contact.
 
I could swear that I deleted and recreated the field with different names. I'm not willing to test that now since it is working.


Is there an API I can use to automatically gather/push my CRM contacts over?

Also, is there an ETA on the Phonebridge with Zoho CRM? When I signed up for 3cx, I did so believing that was working or in the works since the acquisition of Elastix as Elastix had this working at that time.
 
Is there an API I can use to automatically gather/push my CRM contacts over?
Unfortunately this is not possible at the moment. CRM contacts can only be synchronized when customers call you or you call them.

Also, is there an ETA on the Phonebridge with Zoho CRM? When I signed up for 3cx, I did so believing that was working or in the works since the acquisition of Elastix as Elastix had this working at that time.
No, this is something that has been around for some time, but we never started working on it. There is no ETA for this, and we're not even 100% sure if it will be implemented at all. The problem is that this integration would require a new REST API on the 3CX side, which is not available. So, it's not just developing the integration, the new REST API would need to be developed first, and then the integration on top of it...
 
Unfortunately this is not possible at the moment. CRM contacts can only be synchronized when customers call you or you call them.


No, this is something that has been around for some time, but we never started working on it. There is no ETA for this, and we're not even 100% sure if it will be implemented at all. The problem is that this integration would require a new REST API on the 3CX side, which is not available. So, it's not just developing the integration, the new REST API would need to be developed first, and then the integration on top of it...
That REST API is needed a lot anyway so why not do it? All other PBX have APIs. If you had one, Phonebridge and other similar integrations and even some for the CRMs would be muchhhhhhhh easier and offer a lot more possibilities!
 
Status
Not open for further replies.