Call Journaling issue.

JR99

Customer
Joined
Jan 31, 2024
Messages
17
Reaction score
1
I set up Zoho to 3cx to try out to see if I want to switch over ti Zoho for CRM. I have read through the set up guide a few times, and as far as I can tell everything is set up properly. Ive looked on for forums for a similar issue, but haven't gotten anywhere., I have both chat and call journaling enabled. When texts come through it attaches just fine, but no calls are being attached in Zoho. If I am understanding the Zoho logs properly, then it doesn't look like a call record is being pushed to Zoho, but can't say for certain.

here is a screenshot of the set up for 3cx. As well as what has gotten pushed to Zoho on a test customer. If there are some specific logs that need to be seen let me know and I can send them over.

Thanks!
 

Attachments

  • Screenshot 2025-03-10 at 9.31.29 PM.png
    Screenshot 2025-03-10 at 9.31.29 PM.png
    293.3 KB · Views: 16
  • Screenshot 2025-03-10 at 9.29.13 PM.png
    Screenshot 2025-03-10 at 9.29.13 PM.png
    414.3 KB · Views: 16
For the call journal there must be an existing contact in the CRM and there also must be a contact matching returned from Zoho to the PBX. To elaborate further, when there is an inbound call, the caller id will be send to Zoho for a contact lookup. You need to ensure that there is a contact matching returned and when the call is completed then it will report the call.
The test for a valid number will show you if it is working properly.
 
For the call journal there must be an existing contact in the CRM and there also must be a contact matching returned from Zoho to the PBX. To elaborate further, when there is an inbound call, the caller id will be send to Zoho for a contact lookup. You need to ensure that there is a contact matching returned and when the call is completed then it will report the call.
The test for a valid number will show you if it is working properly.
I have it in E164 format in the CRM. when I search with the testing app in 3cx it comes back that it found the contact. the messages are being attached to the profile, just not the phone calls. Is there something else I should be checking?
 
If the number is coming in the PBX in E164 and is also stored in E164 format in the CRM, ensure that you also match exactly the caller id:
1741675400413.png
 
If the number is coming in the PBX in E164 and is also stored in E164 format in the CRM, ensure that you also match exactly the caller id:
View attachment 46901
yes, it is already selected for match only. Like I said SMS messages get attached, does it use a different lookup protocol for phone calls? here is a lookup query for the number I'm calling on.
 

Attachments

  • Screenshot 2025-03-11 at 12.49.39 AM.png
    Screenshot 2025-03-11 at 12.49.39 AM.png
    445.7 KB · Views: 14
No there is no difference on the mechanism.
This will require to check with logs. You may contact your partner to create a support ticket so we can check further.
 
  • Like
Reactions: Evolute IT
This is indeed weird. Reach out to a partner that knows those integrations to figure it out.
 
Maybe in this case 3CX is finding the contact, but not the 3CX user matching the Zoho user (this is matched by email). And then maybe you have some rule preventing you to log calls without an agent assigned. Checking the logs will tell you what's going on.
 
  • Like
Reactions: Evolute IT
Did you get any solution? i have similar issues
 
No, I’ve tried everything I know. I even wiped the whole CRM I was testing it with to see if some config I did messed it up.
Texts come though just fine on the customer time line, but no calls.

Submit a ticket I guess as they say. Just not sure how helpful they will be to spend $75 for a ticket and then have them tell me it’s a Zoho issue or something. Never used support, so I don’t know deep into the issue they will go.

If you find anything out let me know, would be much helpful!!
 
sure, I will update it here once I have any updates on this, i am in touch with 3cx Support currently
 
In order to troubleshoot it yourself, enable verbose logs in 3CX, then make a test call to reproduce the issue, and check the 3cxSystemService.log file. You will see all the interactions between 3CX and the CRM, so any issue should be visible there.
 
  • Like
Reactions: Evolute IT
Any update on this?
We’re having a similar issue here, the contact lookup works from 3cx but new calls suddenly stopped appearing in Zoho
 
You should enable verbose logs, make a test call, and check the 3cxSystemService.log file that you will find in the Support Information Package ZIP file. Any error while reporting the call should be visible there.
 
You should enable verbose logs, make a test call, and check the 3cxSystemService.log file that you will find in the Support Information Package ZIP file. Any error while reporting the call should be visible there.
Hi, I noticed one error

2025/07/05 12:41:53.554|0036|Info| [_3CX.HttpClient] Sending 'POST/1.1' to 'https://www.zohoapis.com.au/crm/v2.1/Calls'
2025/07/05 12:41:53.624|0036|Info| [_3CX.HttpClient] Received '400 BadRequest' after 70.6ms
2025/07/05 12:41:53.626|0036|Erro| [Integration.Crm.Engine.CrmProcessor] CRM: Exception during call reportingSystem.Exception: Server returned a non successful status code - HTTPStatusCode=BadRequest - Reason= - Content={"data":[{"code":"INVALID_DATA","details":{"api_name":"Call_Duration","json_path":"$.data[0].Call_Duration"},"message":"Please provide a valid call start time and duration","status":"error"}]}
 
It seems the Call_Duration value is wrong. Is this an answered of missed call? Maybe for missed calls it's set to null or another invalid value.... Can you see the previous log lines if there is any reference to that?
 
  • Like
Reactions: Evolute IT
Hi, I checked the 3CXSystemService.log file for Call_Duration
There's about 1000 matches, always says the same. Is there any other file I can check for more CRM logs?


[{"code":"INVALID_DATA","details":{"api_name":"Call_Duration","json_path":"$.data[0].Call_Duration"},"message":"Please provide a valid call start time and duration","status":"error"}]}


Here is the rest of the logs if it helps, i have removed personal info with xxxx


2025/07/05 12:41:53.501|0026|Trac| [Npgsql.Connection] Closing connection to /var/run/postgresql:5432/database_single...
2025/07/05 12:41:53.501|0026|Trac| [Npgsql.Connection] Start user action
2025/07/05 12:41:53.501|0026|Trac| [Npgsql.Connection] End user action
2025/07/05 12:41:53.501|0026|Debg| [Npgsql.Connection] Closed connection to /var/run/postgresql:5432/database_single
2025/07/05 12:41:53.501|0026|Trac| [Npgsql.Connection] Opening connection to /var/run/postgresql:5432/database_single...
2025/07/05 12:41:53.501|0026|Debg| [Npgsql.Connection] Opened connection to /var/run/postgresql:5432/database_single
2025/07/05 12:41:53.501|0026|Trac| [Npgsql.Connection] Start user action
2025/07/05 12:41:53.501|0029|Info| [Integration.Crm.CallProcessingService] CRM: about to report 1 calls at maxConcurrency 16
2025/07/05 12:41:53.501|0026|Debg| [Npgsql.Command] Executing command: update cdrcrmcontact set journaled=true where cdr_participant_id=ANY($1)
2025/07/05 12:41:53.502|0029|Debg| [Integration.Crm.CallProcessingService] CRM: Triggering Call Journaling with values - CallType='Outbound' - PhoneNumber='XXXXXXXX' - ContactName='xxxxxx' - AgentExtension='100' - AgentFirstName='xxxx' - AgentLastName='xxxx' - AgentEmail='pxxxxx.au' - ContactRawData='72526000001015050|Contacts' - StartTime='07/05/2025 02:41:37' - EndTime='07/05/2025 02:41:53' - EstablishedTime='07/05/2025 02:41:42'
2025/07/05 12:41:53.502|0029|Debg| [Integration.Crm.Engine.ResultVariableScenarioProcessor] CRM: Processing scenario 'ReportCall'.
2025/07/05 12:41:53.502|0029|Debg| [Integration.Crm.Engine.ScenarioAuthHttpClientProvider] CRM: All tokens are up to date
2025/07/05 12:41:53.502|0026|Trac| [Npgsql.Command] Cleaning up reader
2025/07/05 12:41:53.502|0026|Info| [Npgsql.Command] Command execution completed (duration=4ms): SELECT * FROM public.fn_chr__postprocess_cdrs()
2025/07/05 12:41:53.502|0026|Trac| [Npgsql.Connection] End user action
2025/07/05 12:41:53.502|0026|Trac| [Npgsql.Connection] Start user action
2025/07/05 12:41:53.502|0026|Debg| [Npgsql.Connection] Rolling back transaction
2025/07/05 12:41:53.502|0029|Info| [_3CX.HttpClient] Sending 'GET/1.1' to 'https://www.zohoapis.com.au/crm/v2.1/users/search?criteria=(email:equals:prxxxxx.au)'
2025/07/05 12:41:53.502|0036|Debg| [Npgsql.Transaction] Rolled back transaction
2025/07/05 12:41:53.502|0036|Trac| [Npgsql.Connection] End user action
2025/07/05 12:41:53.502|0036|Trac| [Npgsql.Connection] Closing connection to /var/run/postgresql:5432/database_single...
2025/07/05 12:41:53.502|0036|Trac| [Npgsql.Connection] Start user action
2025/07/05 12:41:53.502|0036|Trac| [Npgsql.Connection] End user action
2025/07/05 12:41:53.502|0036|Debg| [Npgsql.Connection] Closed connection to /var/run/postgresql:5432/database_single
2025/07/05 12:41:53.502|0029|Trac| [Npgsql.Command] Cleaning up reader
2025/07/05 12:41:53.502|0029|Info| [Npgsql.Command] Command execution completed (duration=0ms): update cdrcrmcontact set journaled=true where cdr_participant_id=ANY($1)
2025/07/05 12:41:53.502|0029|Trac| [Npgsql.Connection] End user action
2025/07/05 12:41:53.502|0029|Trac| [Npgsql.Connection] Closing connection to /var/run/postgresql:5432/database_single...
2025/07/05 12:41:53.503|0029|Trac| [Npgsql.Connection] Start user action
2025/07/05 12:41:53.503|0029|Trac| [Npgsql.Connection] End user action
2025/07/05 12:41:53.503|0029|Debg| [Npgsql.Connection] Closed connection to /var/run/postgresql:5432/database_single
2025/07/05 12:41:53.552|0036|Info| [_3CX.HttpClient] Received '204 NoContent' after 50.1ms
2025/07/05 12:41:53.552|0036|Debg| [Integration.Crm.Engine.ResultVariableScenarioProcessor] CRM: The response is: '********'
2025/07/05 12:41:53.553|0036|Debg| [Integration.Crm.Engine.ResultVariableScenarioProcessor] CRM: Continue with empty matching.
2025/07/05 12:41:53.553|0036|Debg| [Integration.Crm.Engine.ResultVariableScenarioProcessor] CRM: Processing scenario 'CreateCallActivity'.
2025/07/05 12:41:53.553|0036|Debg| [Integration.Crm.Engine.ScenarioAuthHttpClientProvider] CRM: All tokens are up to date
2025/07/05 12:41:53.553|0036|Debg| [Integration.Crm.Engine.ResultVariableScenarioProcessor] CRM: Performing POST request to 'https://www.zohoapis.com.au' with message '********'.
2025/07/05 12:41:53.554|0036|Info| [_3CX.HttpClient] Sending 'POST/1.1' to 'https://www.zohoapis.com.au/crm/v2.1/Calls'
2025/07/05 12:41:53.624|0036|Info| [_3CX.HttpClient] Received '400 BadRequest' after 70.6ms
2025/07/05 12:41:53.626|0036|Erro| [Integration.Crm.Engine.CrmProcessor] CRM: Exception during call reporting
System.Exception: Server returned a non successful status code - HTTPStatusCode=BadRequest - Reason= - Content={"data":[{"code":"INVALID_DATA","details":{"api_name":"Call_Duration","json_path":"$.data[0].Call_Duration"},"message":"Please provide a valid call start time and duration","status":"error"}]}
at Integration.Crm.Engine.ScenarioProcessorBase.ProcessRequest(Boolean authScenario, ScenarioRequest request, IValueManager customManager, HttpClient client, Boolean retry, CancellationToken token)
at Integration.Crm.Engine.ScenarioProcessorBase.ProcessScenario(ProtocolScenario scenario, IValueManager customManager, SqlQueryParameter[] sqlQueryParameter, CancellationToken token)
at Integration.Crm.Engine.ScenarioProcessorBase.ProcessMatching(ProtocolScenario scenario, MatchingPath matching, ResponseMatcher responseMatcher, IValueManager customManager, SqlQueryParameter[] sqlQueryParameter, HashSet`1 distinctMatchings, CancellationToken token)
at Integration.Crm.Engine.ScenarioProcessorBase.ProcessFoundMatchings(ProtocolScenario scenario, IValueManager customManager, SqlQueryParameter[] sqlQueryParameter, List`1 matchings, ResponseMatcher responseMatcher, CancellationToken token)
at Integration.Crm.Engine.ScenarioProcessorBase.ProcessScenario(ProtocolScenario scenario, IValueManager customManager, SqlQueryParameter[] sqlQueryParameter, CancellationToken token)
at Integration.Crm.Engine.ScenarioProcessorBase.Execute(ProtocolScenario scenario, SqlQueryParameter[] sqlQueryParameter, CancellationToken token)
at Integration.Crm.Engine.CrmProcessor.ExecuteScenarioByName(String scenarioName, IEnumerable`1 parameters, Boolean useNoAuthProvider, CancellationToken token)
at Integration.Crm.Engine.CrmProcessor.ExecuteScenarioWithRetries(String scenarioId, Dictionary`2 parameters, CancellationToken token)
at Integration.Crm.Engine.CrmProcessor.ReportCall(CallEndedEvent callEndedEvent, CancellationToken token)
2025/07/05 12:41:57.735|0030|Debg| [_3cxSystemService.PublicIpUpdater] TryGetLocalIpListOsDependent
2025/07/05 12:41:57.737|0030|Debg| [_3cxSystemService.PublicIpUpdater] TryGetLocalIpListOsDependent. Result = [{"Description":"enp45s0 (enp45s0)","HasDefaultGateway":true,"IsIpv6":false,"IpAddressStr":"192.168.100.100"}]
2025/07/05 12:41:58.611|0030|Debg| [_3CX.BoxesMonitor] WaitingEvent for updates: 60000
 
I found another thread which says the Call Duration value changed in an update
I tried uploading the CRM template from that post to our system but 3CX Update automatically re-downloaded the latest version 36 of the template even if auto update is disabled so we could not test it out.


Additionally someone has posted the same Call_Duration error on Zoho forum which got the attention of their developers, so I guess the issue is known to Zoho as well.
https://help.zoho.com/portal/en-gb/community/topic/issue-with-post-request-creating-calls-in-crm
 
Also, from the full logs you sent, we can't see the JSON being sent, so it's not really helpful. I'm not sure if you can enable something on the Zoho side to log the JSON received in these requests, that would help. Otherwise you will need the 3CX team to debug it....
 
Also, from the full logs you sent, we can't see the JSON being sent, so it's not really helpful. I'm not sure if you can enable something on the Zoho side to log the JSON received in these requests, that would help. Otherwise you will need the 3CX team to debug it....
The ReportCall is part of the "AuthScenarios" now so it's blanked.