You need to sign in to do that
Don't have an account?
Jonny Simmo
How can I access a prechatdetails array in Post Chat apex?
Hello,
I am implementing Live Agent chat. In the post chat page I can access a few values using the following syntax in a VisualForce page, for example:
<apex:outputText value="{!$CurrentPage.parameters.chatKey}" />
This would display the Chat Key.
I can access the Chat Key value in the Apex controller with the following code:
liveAgentChatKey = ApexPages.currentPage().getParameters().get('chatKey');
However another value I can display on the page looks like an array or list, it's called ChatDetails and displays like this on the page:
{"prechatDetails":[{"label":"CaseType",
"value":"General Query",
"entityMaps":[],
"transcriptFields":[],
"displayToAgent":"true",
"doKnowledgeSearch":false},
{"label":"CaseSubject",
"value":"Webchat Case",
"entityMaps":[],
"transcriptFields":[],
"displayToAgent":"true",
"doKnowledgeSearch":false},
{"label":"CaseStatus",
"value":"New",
"entityMaps":[],
"transcriptFields":[],
"displayToAgent":"true",
"doKnowledgeSearch":false},
{"label":"FullName",
"value":"tytyty",
"entityMaps":[],
"transcriptFields":[],
"displayToAgent":"true",
"doKnowledgeSearch":false},
{"label":"CaseOrigin",
"value":"Webchat",
"entityMaps":[],
"transcriptFields":[],
"displayToAgent":"true",
"doKnowledgeSearch":false},
{"label":"Policy_Type",
"value":"Cashplan",
"entityMaps":[],
"transcriptFields":[],
"displayToAgent":"true",
"doKnowledgeSearch":false},
{"label":"EmailId",
"value":"a1Pg00000011qsWEAQ",
"entityMaps":[],
"transcriptFields":[],
"displayToAgent":"true",
"doKnowledgeSearch":false},
{"label":"CaseRT",
"value":"012b0000000DhUIAA0",
"entityMaps":[],
"transcriptFields":[],
"displayToAgent":"true",
"doKnowledgeSearch":false}],
"geoLocation":{"countryCode":"GB",
"longitude":-0.1300048828125,
"countryName":"United Kingdom",
"organization":"BT",
"latitude":51.5},
"visitorId":"ad376c22-49d4-455c-921c-803f7b805d6d",
"customDetails":[],
"agent":{"userId":"005b0000001Ps0u",
"agentName":"Jon at Simplyhealth",
"transfer":0}}
Question is, if I was to bring this into a variable in the Apex controller, how can I access the different values?
I would access it like this in Apex, but I don't know what it is?
ApexPages.currentPage().getParameters().get('chatDetails');
What type of variable would I put it into?
And how would I get at the values?
Any help appreciated.
I am implementing Live Agent chat. In the post chat page I can access a few values using the following syntax in a VisualForce page, for example:
<apex:outputText value="{!$CurrentPage.parameters.chatKey}" />
This would display the Chat Key.
I can access the Chat Key value in the Apex controller with the following code:
liveAgentChatKey = ApexPages.currentPage().getParameters().get('chatKey');
However another value I can display on the page looks like an array or list, it's called ChatDetails and displays like this on the page:
{"prechatDetails":[{"label":"CaseType",
"value":"General Query",
"entityMaps":[],
"transcriptFields":[],
"displayToAgent":"true",
"doKnowledgeSearch":false},
{"label":"CaseSubject",
"value":"Webchat Case",
"entityMaps":[],
"transcriptFields":[],
"displayToAgent":"true",
"doKnowledgeSearch":false},
{"label":"CaseStatus",
"value":"New",
"entityMaps":[],
"transcriptFields":[],
"displayToAgent":"true",
"doKnowledgeSearch":false},
{"label":"FullName",
"value":"tytyty",
"entityMaps":[],
"transcriptFields":[],
"displayToAgent":"true",
"doKnowledgeSearch":false},
{"label":"CaseOrigin",
"value":"Webchat",
"entityMaps":[],
"transcriptFields":[],
"displayToAgent":"true",
"doKnowledgeSearch":false},
{"label":"Policy_Type",
"value":"Cashplan",
"entityMaps":[],
"transcriptFields":[],
"displayToAgent":"true",
"doKnowledgeSearch":false},
{"label":"EmailId",
"value":"a1Pg00000011qsWEAQ",
"entityMaps":[],
"transcriptFields":[],
"displayToAgent":"true",
"doKnowledgeSearch":false},
{"label":"CaseRT",
"value":"012b0000000DhUIAA0",
"entityMaps":[],
"transcriptFields":[],
"displayToAgent":"true",
"doKnowledgeSearch":false}],
"geoLocation":{"countryCode":"GB",
"longitude":-0.1300048828125,
"countryName":"United Kingdom",
"organization":"BT",
"latitude":51.5},
"visitorId":"ad376c22-49d4-455c-921c-803f7b805d6d",
"customDetails":[],
"agent":{"userId":"005b0000001Ps0u",
"agentName":"Jon at Simplyhealth",
"transfer":0}}
Question is, if I was to bring this into a variable in the Apex controller, how can I access the different values?
I would access it like this in Apex, but I don't know what it is?
ApexPages.currentPage().getParameters().get('chatDetails');
What type of variable would I put it into?
And how would I get at the values?
Any help appreciated.
Shashank (Salesforce Developers)
You can try JSON parsing: https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_json_jsonparser.htm