...
The best moment to retreive the messages transcript is when the agent is joining a new chat, on the joinContact callback event.
Code Block | ||||
---|---|---|---|---|
| ||||
LIVECHATSDK.LIVECHAT.joinContact(<chat_id>, <nickname>).then( function (contact) { LIVECHATSDK.LIVECHAT.getChatHistory(contact.contact.id, true).then( function(data) { if (data.messages.length > 0) { for (var i = 0; i < data.messages.length; i++) { // The data.messages[i].data.messageType can be: // TEXT, IMAGE, LINK, MENU, MENU_RESPONSE, // DOCUMENT, AUDIO, VIDEO, LOCATION, REPLY_TO_STORY, // STORY_MENTION, QUICK_REPLY, QUICK_REPLY_RESPONSE // (some message types are related to specific features offered // by some media channels like Meta, Istagram o DialogFlow) if ( data.messages[i].data.messageType === "TEXT" ) { /* Text Message...call your custom function that render the message using the following properties: data.messages[i].data.content.user.nickname: agent/customer nickname data.messages[i].data.content.text: the text of the message data.messages[i].data.content.user.isAgent: boolean to identify agent or customer data.messages[i].data.id: unique ID of the message data.messages[i].data.ts: timestamp } } } } ); } ); |
...
The response contains an array object with all the archived chat and messages.
Code Block | breakoutMode | full-width|
---|---|---|
| ||
for (var i = 0; i < data.chatTranscripts.length; i++ ) { // data.chatTranscripts[i] is an object that contains the following information: // data.chatTranscripts[i].transcript.messages: all the messages sent on a single archived chat // data.chatTranscripts[i].transcript.room: CTLive chat room ID // Get all messages: for (z = 0; z < data.chatTranscripts[i].transcript.messages.length; z++) { switch (data.chatTranscripts[i].transcript.messages[z].data.messageType) { case "TEXT": /* Text Message...call your custom function that render the message using the following properties: data.chatTranscripts[i].transcript.messages[z].data.id: unique message ID data.chatTranscripts[i].transcript.messages[z].data.content.text : the content of the message data.chatTranscripts[i].transcript.messages[z].data.content.user.isAgent: boolean to identify agent or customer data.chatTranscripts[i].transcript.messages[z].data.content.user.id : unique ID of the user data.chatTranscripts[i].transcript.messages[z].data.ts: timestamp of the message data.chatTranscripts[i].transcript.messages[z].data.deliveryErrorReason: if 'deliverySuccess' is false this propert contains the delivery error reason data.chatTranscripts[i].transcript.messages[z].data.deliverySuccess: boolean used to identify if the message war delivered successfully */ break; }; } } |
...
When the user clicks on the icon the file content can ben requested using the 'getMultimediaMessageByMessageID
' web service and specifying the original document ID that is stored into the transcript message:
Code Block | breakoutMode | wide|
---|---|---|
| ||
jQuery.ajax( { type: "GET", async: true, url: "/livechat/" + <TENANT_NAME> + "/getMultimediaMessageByMessageID/" + <IMAGE_ID>, dataType: "json", headers: { "ctlivetoken": <CTLIVE_VALID_SESSION_TOKEN> } } ).done( function (data) { if (data.result == true) { // File binary content is stored in Base64 format jQuery( "#imgChatHistory").attr("src", "data:image/jpeg;base64, " + data.message.messages[0].content.img); } } ); |
...