Submitting additional data
You can add the customData
parameter in the switch
response to submit additional data when the script switches the chat to an agent.
The customData
parameter accepts JSON data. For example:
$response.replies.push({
type:"switch",
closeChatPhrases: ["/closeLiveChat", "Close chat"],
firstMessage: $client.history,
lastMessage: "We’ll be waiting for your return!",
customData: {
"prechatDetails": [
{
"label": "Email",
"value": $client.email,
},
}
You can use the preProcess and postProcess handlers to pass the client and bot chat history when the chat is switched to an agent:
init:
$jsapi.bind({
type: "preProcess",
name: "savingVisitorChatHistory",
path: "/",
handler: function($context) {
$context.client.chatHistory = $context.client.chatHistory || [];
var chatHistory = $context.client.chatHistory;
if ($context.request.query) {
chatHistory.push({type: "Client name", text:$context.request.query});
}
chatHistory.splice(0, chatHistory.length - 10);
}
});
$jsapi.bind({
type: "postProcess",
name: "savingBotChatHistory",
path: "/",
handler: function($context) {
$context.client.chatHistory = $context.client.chatHistory || [];
var chatHistory = $context.client.chatHistory;
if ($context.response.replies) {
$context.response.replies
.filter(function(val) { return val.type === "text"; })
.forEach(function(val) { chatHistory.push({ type:"BOT", text: val.text }); });
}
chatHistory.splice(0, chatHistory.length - 10);
}
});