Zoho CRM Jounaling Issue

Status
Not open for further replies.

refocusit

Silver Partner
Advanced Certified
Joined
Oct 17, 2018
Messages
15
Reaction score
1
I'm having an issue with call journaling to Zoho CRM. Call lookup and contact creation is working fine. My 3CX is on V16.0.6.65 with a Pro license. I have Zoho CRM included as part of my Zoho One subscription.

I receive the below in my 3cxSystemService.log.

Performing GET request 'https://www.zohoapis.eu/crm/v2/users/search?criteria=(extension:equals:101)'.

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":"extension"},"message":"invalid query formed","status":"error"}

I've added a field called "extension" and assigned 101 to that field.

I have followed the instructions from this link:
https://www.3cx.com/docs/pbx-crm-integration-zoho/#h.qp9eqhnqzdv4

I've been sitting with this issue on my own 3CX for ages and I've never bothered to fix it till now. I now have a client that wants this feature with their 3CX and Zoho and I want to be sure to get it to work before making changes on their infrastructure.

Any advise would be much appreciated.
 
Probably you created the custom field with a different name, and then renamed it. Custom fields get the ID from the very first name you assign to it, and then even if you rename it, the ID remains unchanged. So you will need to figure out which is the field ID for this custom field.

The error you're getting means that the field "extension" doesn't exist on entity "Users". When you follow our configuration guide for Call Journaling with Zoho, you need to create this custom field to store the extension number. When you do this in Zoho, the field ID is automatically set to the name you specify the very first time, replacing spaces with underscores. So for example, if you specify the field name as "Extension Number", the ID will be "Extension_Number". If you later change this field name to "Extension", the ID remains the same ("Extension_Number"). The ID will not change once you create the field, no matter how many times you rename the field. So you need to remember the initial name you specified in order to determine the actual ID.

If you can't figure out which is the correct ID, there is a way to find out. This is what you need to do:
1) Make a lookup test from the 3CX console > Settings > CRM Integration > Test button.
2) Go to the Logs tab, and you will see something like this:
Variable AccessToken set to 1000.43cb2fXXXXXXX774831dadbe92c944.5db34aXXXXXXXX27edXXX3554fce12

3) From a Command line window (cmd.exe) run the following command:
curl "https://www.zohoapis.eu/crm/v2/users?type=AllUsers" -X GET -H "Authorization: Zoho-oauthtoken 1000.43cb2fXXXXXXX774831dadbe92c944.5db34aXXXXXXXX27edXXX3554fce12"

(replacing the token at the end with the value taken from step 2).
NOTE: the URL could also start with https://www.zohoapis.com depending on where the Zoho account is created (this should be the same than the value configured in the 3CX Console).

4) That will return a JSON with all the information of the user, including the custom field. For example, this is what I get here:
{
"users":[
{
"country":null,
"customize_info":{
"notes_desc":null,
"show_right_panel":null,
"bc_view":null,
"show_home":false,
"show_detail_view":true,
"unpin_recent_item":null
},
"role":{
"name":"CEO",
"id":"76741000000026968"
},
"signature":null,
"city":null,
"name_format":"Salutation,First Name,Last Name",
"language":"en_US",
"locale":"en_US",
"microsoft":false,
"personal_account":false,
"default_tab_group":"0",
"Isonline":false,
"Modified_By":{
"name":"eds",
"id":"76741000000077013"
},
"street":null,
"alias":null,
"theme":{
"normal_tab":{
"font_color":"#FFFFFF",
"background":"#222222"
},
"selected_tab":{
"font_color":"#FFFFFF",
"background":"#222222"
},
"new_background":null,
"background":"#F3F0EB",
"screen":"fixed",
"type":"default"
},
"id":"76741000000077013",
"state":null,
"fax":null,
"country_locale":"US",
"first_name":null,
"email":"[email protected]",
"Reporting_To":null,
"decimal_separator":"en_AR",
"zip":null,
"created_time":"2017-12-18T10:35:30+02:00",
"website":null,
"Modified_Time":"2019-01-21T16:26:25+02:00",
"time_format":"hh:mm a",
"offset":10800000,
"profile":{
"name":"Administrator",
"id":"76741000000026972"
},
"mobile":null,
"last_name":"eds",
"time_zone":"Europe/Nicosia",
"created_by":{
"name":"eds",
"id":"76741000000077013"
},
"Extension_Number":"102",
"zuid":"20062680098",
"confirm":true,
"full_name":"eds",
"territories":[

],
"phone":null,
"dob":null,
"date_format":"MM/dd/yyyy",
"status":"active"
},
{
"country":null,
"role":{
"name":"Manager",
"id":"76741000000026970"
},
"city":null,
"language":"en_US",
"locale":"en_US",
"microsoft":false,
"Isonline":false,
"Modified_By":{
"name":"eds",
"id":"76741000000077013"
},
"street":null,
"alias":null,
"id":"76741000000244004",
"state":null,
"fax":null,
"country_locale":"US",
"first_name":null,
"email":"[email protected]",
"Reporting_To":null,
"zip":null,
"created_time":"2018-10-15T12:08:59+03:00",
"website":null,
"Modified_Time":"2019-04-04T09:22:40+03:00",
"time_format":"hh:mm a",
"offset":10800000,
"profile":{
"name":"Administrator",
"id":"76741000000026972"
},
"mobile":null,
"last_name":"ca",
"time_zone":"Asia/Nicosia",
"created_by":{
"name":"eds",
"id":"76741000000077013"
},
"Extension_Number":"100",
"zuid":"20064960092",
"confirm":true,
"full_name":"ca",
"territories":[

],
"phone":null,
"dob":null,
"date_format":"MM/dd/yyyy",
"status":"active"
}
],
"info":{
"per_page":200,
"count":2,
"page":1,
"more_records":false
}
}


So, you can search for your extension number in the returned JSON, and identify the field name, as highlighted in bold above.

Once you identify the ID of this field, you need to configure exactly that value in the 3CX console.

Hope the information helps.

Kind regards.
 
Last edited:
  • Like
Reactions: Evolute IT
Probably you created the custom field with a different name, and then renamed it. Custom fields get the ID from the very first name you assign to it, and then even if you rename it, the ID remains unchanged. So you will need to figure out which is the field ID for this custom field.

The error you're getting means that the field "extension" doesn't exist on entity "Users". When you follow our configuration guide for Call Journaling with Zoho, you need to create this custom field to store the extension number. When you do this in Zoho, the field ID is automatically set to the name you specify the very first time, replacing spaces with underscores. So for example, if you specify the field name as "Extension Number", the ID will be "Extension_Number". If you later change this field name to "Extension", the ID remains the same ("Extension_Number"). The ID will not change once you create the field, no matter how many times you rename the field. So you need to remember the initial name you specified in order to determine the actual ID.

If you can't figure out which is the correct ID, there is a way to find out. This is what you need to do:
1) Make a lookup test from the 3CX console > Settings > CRM Integration > Test button.
2) Go to the Logs tab, and you will see something like this:
Variable AccessToken set to 1000.43cb2fXXXXXXX774831dadbe92c944.5db34aXXXXXXXX27edXXX3554fce12

3) From a Command line window (cmd.exe) run the following command:
curl "https://www.zohoapis.eu/crm/v2/users?type=AllUsers" -X GET -H "Authorization: Zoho-oauthtoken 1000.43cb2fXXXXXXX774831dadbe92c944.5db34aXXXXXXXX27edXXX3554fce12"

(replacing the token at the end with the value taken from step 2).
NOTE: the URL could also start with https://www.zohoapis.com depending on where the Zoho account is created (this should be the same than the value configured in the 3CX Console).

4) That will return a JSON with all the information of the user, including the custom field. For example, this is what I get here:
{
"users":[
{
"country":null,
"customize_info":{
"notes_desc":null,
"show_right_panel":null,
"bc_view":null,
"show_home":false,
"show_detail_view":true,
"unpin_recent_item":null
},
"role":{
"name":"CEO",
"id":"76741000000026968"
},
"signature":null,
"city":null,
"name_format":"Salutation,First Name,Last Name",
"language":"en_US",
"locale":"en_US",
"microsoft":false,
"personal_account":false,
"default_tab_group":"0",
"Isonline":false,
"Modified_By":{
"name":"eds",
"id":"76741000000077013"
},
"street":null,
"alias":null,
"theme":{
"normal_tab":{
"font_color":"#FFFFFF",
"background":"#222222"
},
"selected_tab":{
"font_color":"#FFFFFF",
"background":"#222222"
},
"new_background":null,
"background":"#F3F0EB",
"screen":"fixed",
"type":"default"
},
"id":"76741000000077013",
"state":null,
"fax":null,
"country_locale":"US",
"first_name":null,
"email":"[email protected]",
"Reporting_To":null,
"decimal_separator":"en_AR",
"zip":null,
"created_time":"2017-12-18T10:35:30+02:00",
"website":null,
"Modified_Time":"2019-01-21T16:26:25+02:00",
"time_format":"hh:mm a",
"offset":10800000,
"profile":{
"name":"Administrator",
"id":"76741000000026972"
},
"mobile":null,
"last_name":"eds",
"time_zone":"Europe/Nicosia",
"created_by":{
"name":"eds",
"id":"76741000000077013"
},
"Extension_Number":"102",
"zuid":"20062680098",
"confirm":true,
"full_name":"eds",
"territories":[

],
"phone":null,
"dob":null,
"date_format":"MM/dd/yyyy",
"status":"active"
},
{
"country":null,
"role":{
"name":"Manager",
"id":"76741000000026970"
},
"city":null,
"language":"en_US",
"locale":"en_US",
"microsoft":false,
"Isonline":false,
"Modified_By":{
"name":"eds",
"id":"76741000000077013"
},
"street":null,
"alias":null,
"id":"76741000000244004",
"state":null,
"fax":null,
"country_locale":"US",
"first_name":null,
"email":"[email protected]",
"Reporting_To":null,
"zip":null,
"created_time":"2018-10-15T12:08:59+03:00",
"website":null,
"Modified_Time":"2019-04-04T09:22:40+03:00",
"time_format":"hh:mm a",
"offset":10800000,
"profile":{
"name":"Administrator",
"id":"76741000000026972"
},
"mobile":null,
"last_name":"ca",
"time_zone":"Asia/Nicosia",
"created_by":{
"name":"eds",
"id":"76741000000077013"
},
"Extension_Number":"100",
"zuid":"20064960092",
"confirm":true,
"full_name":"ca",
"territories":[

],
"phone":null,
"dob":null,
"date_format":"MM/dd/yyyy",
"status":"active"
}
],
"info":{
"per_page":200,
"count":2,
"page":1,
"more_records":false
}
}


So, you can search for your extension number in the returned JSON, and identify the field name, as highlighted in bold above.

Once you identify the ID of this field, you need to configure exactly that value in the 3CX console.

Hope the information helps.

Kind regards.

Thanks! This worked perfectly. I was able to get the correct parameter from the JSON data. All sorted now at last!
 
  • Like
Reactions: edossantos
Status
Not open for further replies.