Actions imply a change in the Chat solution. Any interaction between the user and the Chat solution is an action.
All examples shown are set in a Production environment.
The actions are available inside the actions property of the Chat instance.
chatbot.actions.displayChatbotMessage()Important information
[]: Optional parameter.example1|example2: The parameter must have one of this values.example String: The parameter is String type.const messageData = {
type:'answer',
message:'Custom answer in conversationWindow',
}
chatbot.actions.displayChatbotMessage(messageData);
Here is the list of all the actions available to you grouped by use:
Defining the Chat windows and their elements
Manipulating the displayed Chatbot message
Handling user actions with the Chatbot
Interaction with the Chatbot state
Escalating to Assist
Others
From February 8th 2022 on, Inbenta prefixes built-in actions with “inbenta-” (e.g. inbentaNewAction). Do not add the prefix “inbenta” to your global functions in order to avoid ambiguities.
This action closes the sideWindow if it is open.
chatbot.actions.closeSideWindow();This action creates a ticket in the Assist module. You must add an adapter subscribed to this action with onCreateTicket to create a ticket when this action is triggered.
The Inbenta "Create ticket" adapter is subscribed to this action in order to create a ticket in the Assist module. See the adapters page to understand how to use the Inbenta adapter.
chatbot.actions.createTicket(ticketData);The ticketData parameter accepts the following parameters:
const ticketData = {
FIRST_NAME: "John", // required
LAST_NAME: "Doe", // optional
EMAIL_ADDRESS: "jdoe@...", // required
INQUIRY: "..." // required
}From February 8th 2022, any other parameter that is added to the ticketData object is sent to the Assist API as ticket extra data using the externalSource name, when using the Inbenta Create Ticket adapter.
For example, in the following piece of code, COMPANY would be sent as ticket's extra data when creating the ticket.
const ticketData = {
FIRST_NAME: "John", // required
LAST_NAME: "Doe", // optional
EMAIL_ADDRESS: "jdoe@...", // required
INQUIRY: "..." // required,
COMPANY: "Inbenta"
}This action does not affect the behaviour of the SDK. It is only used in custom implementations to call the action and receive data through the subscription.
You can set up the customTrigger action as an intent callback, so it is called when the callback is executed. If you configured a subscription for this action, you can execute custom code without changing the behaviour of the SDK when the action is executed, either when a custom code calls the action, or when a callback is executed within an intent, with the current action configured as a function name.
chatbot.actions.customTrigger();This action disables input in the ConversationWindow.
chatbot.actions.disableInput();This action displays a message at the bottom of the ConversationWindow with the message of your choice. This is to indicate, in external chats, that an external agent is writing.
activityData Object
translate Boolean : translates the message in the given language(build configuration) if it matches a label.message String : Message to be displayed.You can send an empty activityData to display a typing animation.
chatbot.actions.displayChatbotActivity(activityData);This action displays a chatbotMessage with the information provided in the entry parameter. chatBotmessageData defines the type of message displayed.
const chatBotmessageData = {
type:'answer',
message:'Custom answer in conversationWindow',
}
chatbot.actions.displayChatbotMessage(chatBotmessageData);chatBotmessageData Object
type "answer"|"polarQuestion"|"multipleChoiceQuestion"|"extendedContentsAnswer"|"customAnswer": Type of Chatbot message. answer for normal answers, polarQuestion is for questions with yes/no options, extendedContentsAnswer is intended for federatedBot answers, and customAnswer skips the sanitizer.message String : Message to be displayedoptions optionssubAnswersanswer: Only used on extendedContentAnswer type.sideWindowContent [String]: Content inside the side-windowsideWindowTitle [String]: Title for a side-window.trackingCode trackingCodemedia mediacustom customobfuscate [Boolean]: If set to true, it obfuscates the next userMessage both in the input and in the Chat SDK history.suggestedAnswer[String]: Enters the given string in the chatbot input when the chatbotMessage is shown.parameters parametersactionField actionFieldactionFieldEvents actionFieldEventsgroupedId [String] Identifier used to detect answers with multiple objects, use the same ID for this answers to allow the scroll to stop at the beginning of the first answer.stream [Boolean] When this parameter is set to true, chatbot replies will appear with a blinking cursor, as if the chatbot were streaming each message. This parameter also allows to display the blinking cursor with a blank message while the user waits for the chatbot's response to be returned. This value is only available if the answer type is type: answer.options [array]: These are the displayed options that the user can select in the polarQuestion and multipleChoiceQuestion type. (For more information, see the sendMessage action). Each item in the options array has to be an object, with at least two keys: label and value:
label String: Label shown when given multipleChoiceQuestion or polarQuestionvalue String|"yes"|"no": ID of the content displayed if the user clicks on the given option, "yes" or "no" in case of polarQuestion.revisitableLink String: Setting provided by the Chat API when the content has a directCall value. The setting is a hash string provided by the Chat API. This setting forces the SDK to keep links active and it is only provided when the options are multipleChoiceQuestion type.trackingCode [object]: If rateCodeis set in chatBotmessageData and showRatingWithinMessages is set to "true" in the configuration, the rating widget is displayed within the Chatbot message. If showRatingWithinMessages is set to false (this is the default value), the rating widget is displayed in the side-window.
clickCode String: Code sent to the API to track a match.rateCode String: Code sent to the API to track a rate.These codes must be identical to the codes that the API returns, otherwise an error occurs when it sends the request to the Inbenta API.
media [object]: use this object to build a media message. When a user clicks the link, it triggers the onDownloadMedia subscription.
name String: Name of the media file that is displayed.custom [object]: Use this to store custom data in the message. It does not affect Chatbot functions.
parameters [object]: Used to set the related contents inside the answer, with the following structure:
contents object: Configuration where the related contents are set up.contents.related object: This is where you set up relatedContents with all the needed information.contents.related.relatedTitle String: Label to use before showing the related contents.contents.related.relatedContents relatedContentsrelatedContents [array]: This object contains both the title and the selector used by the SDK to ask for the relatedContent (either option or directCall).
title String: Label shown as the title of the given relatedContentid String: The id given by the API, it must be a valid id given by the API. If the id setting is used, the relatedContent is disabled after the first click or if there is a new userQuestion.revisitableLink String: Setting provided by the Chat API when the content has a directCall value. The setting is a hash string provided by the Chat API. This setting forces the SDK to keep links active and accurately track user clicks. It is only provided when the options are multipleChoiceQuestion type.The following directCall setting is deprecated - DO NOT USE. FOR REFERENCE ONLY.
directCall String: If this setting is defined, it takes precedence over the id: when the user clicks on the relatedContent, it sends a directCall with the given value. This avoids disabling the relatedContent after the first click.actionField [object]: This setting allows you to show either a dropdown or a button message. Intended to be used with variables of type List.
fieldType [list|datePicker]: Use List (default value) to show buttons/dropdown, and datePicker when displaying the calendar.disableInput [Boolean]: When set to true, this disables the input, forcing the user to select a value from the button/dropdown.actionFieldId String: Parameter necessary to use as identifier to disable or change the method used on selection.actionMethod [sendMessage|addVariable]: By default, the sendMessage method applies if this setting is not defined internally. This action is the result of the user clicking on the dropdown/buttons, performing a sendMessage action or a addVariable action up on click.variableName String: Variable name from this field, the listValues parameter is the possible values of the variable.listValues Object listValueslistValues [object]: Possible values of the listed variable.
displayType buttons|dropdown : Results in an answer with as many buttons as labels in the values parameter, or a dropdown with as many possible values.values [Array]: Array of objects with two parameters: Label to show in the button/dropdown, option to send internally either as option in the sendMessage action, or as addVariable value. values:
[
{"label":["Iphone 7"],"option":"Apple"},
{"label":["OnePlus 6"],"option":"Android"},
]actionFieldEvents [object]: Parameter used to disable and change the actionMethod of a given actionFieldId actionField.
disable Array: Every actionFieldId inside the disable parameter automatically disables the given actionField.updateRequestedAction Array: Every actionFieldId inside the updateRequestedAction parameter automatically changes the actionMethod from sendMessage to addVariable.Example
const chatBotmessageData = {
type:'answer',
message:'Custom answer in conversationWindow',
}
chatbot.actions.displayChatbotMessage(chatBotmessageData);
If the device has a width bigger than 768px, the sideWindow is displayed automatically.
const chatBotmessageData = {
type:'answer',
message:'Custom answer with more information in sideWindow',
sideWindowTitle:"Test window title",
sideWindowContent:"Test window Content"
}
chatbot.actions.displayChatbotMessage(chatBotmessageData);

label is sent in the message and the value can be sent as an option in the sendMessage action.const chatBotmessageData = {
type: 'polarQuestion',
message: 'Do you want to test a polarQuestion?',
options: [
{
value: 'yes',
label: 'yes'
},
{
value: 'no',
label: 'no'
}
],
}
chatbot.actions.displayChatbotMessage(chatBotmessageData);
label is sent in the message and the value can be sent as an option in the sendMessage action.const chatBotmessageData={
type: 'multipleChoiceQuestion',
message: 'Which multipleContent do you wish to test?',
options: [
{
value: 'TestContent1',
label: 'TestContent1'
},
{
value: 'TestContent2',
label: 'TestContent2'
},
{
value: 'TestContent3',
label: 'TestContent3'
}
],
}
chatbot.actions.displayChatbotMessage(chatBotmessageData);
multipleChoiceQuestion type, but this allows to select different answers and the links are not disabled after every click. If a click trackingCode exists in each subAnswer, the click is automatically tracked.url.value : Defines the url to be redirected.url.target : [ _self| _blank ], if url.target is _self, it redirects the user when they click on the title. In other cases, it opens a new tab.sideWindowTitle and sideWindowContent property and no URL property defined (you can trigger only one action after click, and redirect has priority) let SideWindowextended ={
message: 'Introduction text for a km content',
type: 'extendedContentsAnswer',
subAnswers:[
{
attributes: {
AnswerText: 'testAnswerText',
SideBubble_text:'test SideBubble'
},
flags: [],
message:'KMContent1Message',
options:null,
sideWindowTitle:"KM windowTitle content 1",
sideWindowContent:"KM SideWindow content1!",
parameters:{
contents:{
attributes:{
SideBubble_text:'text'
},
title: 'example',
}
},
},
{
attributes: {
AnswerText: 'testAnswerText',
SideBubble_text:'test SideBubble'
},
sideWindowTitle:"KM windowTitle content 2",
sideWindowContent:"KM SideWindow content2!",
flags: [],
message:'KMContent2Message',
options:null,
parameters:{
contents:{
attributes:{
SideBubble_text:'text'
},
title: 'example2',
}
},
}
]
}
relatedContents: MessageData with relatedContents displayed using directCall setting(Need 1.13 or future verisons):
var relatedMessage={
message: 'Answer message with a side window',
type: 'answer',
parameters:{
contents:{
title:"example content title",
related:{
relatedContents:[{title: "Related content example", directCall: "<example>"}],
relatedTitle:"You might also be interested in"
}
}
}
}
chatbot.actions.displayChatbotMessage(relatedMessage);
obfuscate attribute set to true, it obfuscates the next userMessage both in the UI and in the Chatbot history.var passwordMessage={
message:"please enter a password, we will obfuscate it",
obfuscate:true,
type:'answer'
}
chatbot.actions.displayChatbotMessage(passwordMessage);
suggestedAnswer attribute, it displays the suggested message in the Chatbot input, with the same delay as the chatbotMessage. var suggestedAnswerMessage ={
message:"Hey, how are you?",
type:"answer",
suggestedAnswer:"I'm not gonna small talk with a bot!!"
}
chatbot.actions.displayChatbotMessage(suggestedAnswerMessage);
actionField attribute and there is an existing listValues, it displays the possible values from the listValues attribute either as a dropdown or as buttons. If the fieldType is datePicker, it displays a date selector in the form of a calendar.Dropdown Example:
var dropdownList = {
message: 'hello, what do you want to buy?',
type:'answer',
actionField: {
disableInput: true,
actionFieldId:'id1',
actionMethod:'sendMessage',
variableName:'super_hero',
listValues: {
displayType: "dropdown", // Possible values: 'buttons', 'dropdown'
values:[
{"label":["Iphone 7"],"option":"Apple"},
{"label":["google pixel 3"],"option":"Google"},
{"label":["Huawei P20 Pro"],"option":"Huawei"},
]
}
},
};
DatePicker example:
var datePicker = {
message: 'message with datePicker!',
type:'answer',
actionField: {
fieldType:'datePicker',
disableInput: true,
actionFieldId:'datePickeruuid',
variableName:'date_purchase'
}
};
This action creates a message in the conversationWindow with the system message format.
By default, the setting modal window is set to false. This means that if it is not specified, the systemMessage is displayed inside the conversationWindow (as shown in the first image).
When the systemMessage when the setting is modal: true, several things happen:
displaySystemMessage does not return an id. You must add an id parameter to keep tracking the message.conversationTranscript.const systemMessageData={
translate: true,
message: 'generic-error-message',
}
chatbot.actions.displaySystemMessage(systemMessageData);SystemMessageData Object
id [String]: Only used when modal is set to true, can be used to capture the selectedOption in a modal systemMessage.message String : Message to display.modal[Boolean]: Set to true to display the systemMessage as a modal (see the image below)options optionsreplacements [Object : Replaces the variables of the message with the values in the replacements object. If the replacements object has a key with the name of a variable, this replaces the variable of the message with the value of the replacements key. The variables are defined as {variableName}. For example, {agentName} has joined is the message, {agentName} is a variable in the message. If you use a replacements object with a key agentName: "Mr Agent", the actual message becomes Mr Agent has joined.translate Boolean : Translates the message in the given language (build configuration) if it matches a label.maintainActive Boolean: if there are options in the message, it maintains those options enabled even after it has been clicked or is not the last message anymorecustom customoptions array: These options display in the message as buttons that the user can select with a click. These buttons are only enabled when the message is the last in the conversation. Each item of the options array must be an object with at least one key: label:
label String: Label shown inside the button.If the bot is configured with both systemMessage.modal=true and systemMessage.id='exitConversation', it triggers the resetSession action upon user confirmation, as they clicked on the closeConversation button.
Return
return String: Returns unique id which identifies the message.
Example: (with modal: true)
modalSystemMessage = {
message: 'Custom system Message with modal setting to true',
translate: true,
modal:true,
id:"testingSystemMessage",
options: [
{label: 'First',value:'yes'},
{label: 'Second', value:'no'}
]
}
This action creates a user message in the conversationWindow.
const userMessageData = {
message: "Custom user message example",
}
chatbot.actions.displayUserMessage(userMessageData);userMessageData Object
Return
return String: Returns unique id that identifies the message.
This action carries the media object, with all the information required to download media on the user's device.
The action triggers when the user clicks a Chatbot or User message with a media property. It has the message's external id as a global property.
media Object
messageExternalId String : The message external id of the message that the media belongs to.chatbot.actions.downloadMedia({
messageId: 'message-id-generated-when-displayed',
messageExternalId: 'your-external-id',
file: {
name: 'file-of-agent.txt'
}
});This action enables input in the ConversationWindow if it is disabled.
chatbot.actions.enableInput();This action escalates to a chat with a human agent. You must add any adapter subscribed to this action (with onEscalateToAgent) that allows the chat conversation. One adapter that is subscribed to this action is the Inbenta Agent Chat adapter. Optionally, as with any other action or subscription, if a parameter is sent in the action, the subscription onEscalateToAgent receives the parameter.
chatbot.actions.escalateToAgent();Example with parameter:
var escalationData = {
name: "John",
lastName: "Doe",
inquiry: "I'm having problems logging in"
}
chatbot.actions.escalateToAgent(escalationData)The subscription then receives this parameter, allowing the adapter to do whatever it needs with the information given.
You can use this action to send information between systems. The SDK never uses it by default, but some adapters may do so.
Do not confuse this action with the escalateToAgent action. If you are using Inbenta's Agent Chat with the NL Escalation Adapter 2:
escalationStart is called, in order to trigger the start of the escalation process. Calling this action therefore does not establish any connection with an agent, it just tells the escalation adapter to start the escalation process. This way, the adapter can check whether agents are available, or request any other information needed by the agents, like the user name.escalateToAgent action is triggered and tries to establish a conversation with an agent.
You can find more information on this in the NL Escalation Adapter 2 page.chatbot.actions.escalationStart();This action returns an array with the last maxInteractions messages in the Chatbot conversation.
chatbot.actions.getConversationTranscript(conversationTranscriptData);conversationTranscriptData Object
maxInteractions number default:50 : Number of maximum interactions to return. If none is specified, maxInteractions = 50.Return
This action can return a numeric index array of objects:
agentIcon[String]: If user=assistant, displays the current agentIcon URL.agentName[String]: If user=assistant, displays the current agent name.clicked[boolean]: If user=assistant, tracks if the user clicked on any option.datetime String : dateTime the message was created.externalId String: external ID if it was previously set.id String: Unique id to identify the message.messageString : Message displayed.options [Array]: Options provided if type=PolarQuestion or MultipleChoiseQuestion.parameters[Object]: Contents that was displayed in the sideWindow.sideWindowContent[String]: Text displayed inside the sideWindow.sideWindowTitle[String]: Text displayed in sideWindow title.type "answer"|"polarQuestion"|"multipleChoiceQuestion": Type of answer.user: String assistant|guest: Who displayed the message.This action retrieves all the information of the current conversation with the chatbot, messages, position of mainConversation and sideWindow, API sessionToken and expiration.
sessionData Object
closeButtonVisibleobject: Visibility of the "close conversation button".messages messages Array: Array of messages.position Object: Current position of the conversationWindow.sessionToken String: Current sessionToken that the API uses to identify the session.sessionExpiration Number: sessionToken Expiration Date.SideWindowObject: Current state of the sideWindow component.sessionIdString: Session Identifier generated with the conversation.visible Boolean: Visibility of the conversationWindow.var sessionData = chatbot.actions.getSessionData();This action retrieves an object containing labels from a Chat message. The Chat message is indicated by the messageId parameter. The object follows the message structure but only includes labels to be translated.
chatbot.actions.getTranslatableLabels(messageId);The retrieved object can then be manipulated using setTranslatableLabels action, which will update the contents of the message.
This action removes the ChatbotActivity if previously activated.
chatbot.actions.hideChatbotActivity(activityData);This action hides the "close conversation" button.
chatbot.actions.hideCloseButton();This action closes the conversationWindow if it is open, and displays the launcher.
chatbot.actions.hideConversationWindow();This action hides the customConversationWindow if it is open, and restores the original conversationWindow with the chatbot, user messages and input.
chatbot.actions.hideCustomConversationWindow();This action hides the "Upload media" button.
chatbot.actions.hideUploadMediaButton();This action is used by the ratigns up on clicking on a rate content.
trackingData
trackingCode String : The trackingCode necessary to send to the API, gives context about wich content are we going to rate.value String : Value of the ratingcomment [String] Optional comment to send with the rating, is usually used on the negative rating.const trackingData = {
trackingCode: "<example>",
value: "1",
}
chatbot.actions.rateContent(trackingData);This Action deletes the session data and restore it to the build value. This means that:
To reset the Chatbot session, removing cookies does not work. Instead, you must call the resetSession action. When you develop with the Inbenta Chat SDK, you can either set an HTML click-eventlistener button to execute the resetSession action, or use the default "Close" button. When you use the Inbenta Chat SDK in production, you may allow users to reset the session when they activate the "Close" button, or customise the behaviour of another element to trigger the `resetSession` action.
chatbot.actions.resetSession();This action is the result of selecting a value of a chatbot message with actionField parameter, either selecting a value in the dropdown or a button.
ActionFieldData Object
method[sendMessage|addVariable]: This parameter what action to take with this data:
message:label and userActivityOptions:value.selected-option.variableName [String] This is only mandatory when selecting the addVariable method.value String: This is the value sent to the API either as the value in the addVariable endpoint, or as userActivityOptions in the messageData object in the sendMessage actionlabel [String]: This displays as a userMessage when sendMessage method selected. It is also sent as a message in messageData object in the sendMessage actionAddVariable example:
chatbot.actions.selectActionFieldOption({
method:"addVariable",
value:"Huawei",
variableName: "phoneBrand",
})SendMessage example:
chatbot.actions.selectActionFieldOption({
value:"Huawei",
label: "Huawei p20 pro",
})This action carries the system message id and the option object of a system message. The Chatbot dispatches this action every time a user clicks on a System Message button.
optionData Object
id String: The id of message of the selected option.option optionThis action sends a message to the Inbenta API, and displays the answer as a chatbotMessage.
var messageData = {
message: "Custom user message example",
}
chatbot.actions.sendMessage(messageData);messageData Object
message String : Message sent to Inbenta API.userActivityOptions [String]: Option selected when given options in previous message (polarQuestion|multipleChoiceQuestion)directCall[String]: directCall property takes priority over message and userActivityOptions, ignoring both parameters and only sending to the API the given directCall value. With this parameter, you can force Chatbot to retrieve a specific content, regardless of the previous context.You must set up the required value in the Dynamic Setting called “DIRECT_CALL”. This can be any name you want (e.g. ESCALATE_FORM).
var directMessageData = {
message: "",
directCall: "ESCALATE_FORM"
}
chatbot.actions.sendMessage(directMessageData);As a result, upon matching the call, the Chatbot displays the content with the specified directCall value (ESCALATE_FORM).
If the content does not exist (e.g. if there is a typo in the Direct Call value), the Chatbot returns a generic error message with the ‘conversation-error-message’ flag. The Chatbot then resets itself to its initial state.
This action changes the Chatbot icon in subsequent Chatbot messages.
const iconData = {
source: 'url',
url: 'https://www.inbenta.com/wp-content/themes/inbenta/img/icons/inbentabot.svg'}
chatbot.actions.setChatbotIcon(iconData);iconData Object
source "url|default" : Set it to "url" if you use an external URL, or default to use the default chatbotIcon.url [String]: Image URL. It must be a valid image URL, otherwise it returns an error.This action changes the Chatbot name in subsequent Chatbot messages.
const nameData = {
source: 'name',
name: 'Veronica from Inbenta'}
chatbot.actions.setChatbotName(nameData);nameData Object
source "name|default" : Set to 'name' to use a custom name, default to use default chatbotName.name [String]: Name to display.![]()
This action can be used to send information between systems. The SDK never uses it by default, but some adapters may, e.g. the Agent Chat external adapter.
chatbot.actions.setExternalInfo({data:'test'});This action deletes the current state of the chatbot and overwrites it with the given configuration.
This is useful when you transfer the conversation from one domain to another. With the setSessionData action, the user can continue the conversation from a completely different website.
sessionData Object
messages messages Array: Array of messages.position object: Current position of the conversationWindow.sessionToken String: current sessionToken that the API uses to identify the session.sessionExpiration Number: sessionToken Expiration Date.SideWindowobject: Current state of the sideWindow component.closeButtonVisibleobject: Visibility on close conversation button is visible.chatbot.actions.setSessionData(sessionData);This action shows the "close conversation" button.
chatbot.actions.showCloseButton();This action updates a message's translatable contents by updating the labels retrieved using the getTranslatableLabels action.
setTranslatableLabels(messageId, labels, translate)messageId String: The ID of the Chat message to be updated with new labels.labels Object: An object containing the updated label properties to be applied to the Chat message. Only label properties will be updated and any other properties will be ignored.translate Boolean: If true, the labels included in the labels object will be translated to a language as configured in your SDK. Defaults to false.const chatbotLabels = {
message: "Modified message with options",
options: [
{ label: "Modified option label 1" },
{ label: "Modified option label 2" },
],
}
setTranslatableLabels("message-id", chatbotLabels, true);This action hides the launcher and shows the main ConversationWindow.
chatbot.actions.showConversationWindow();This action shows a custom element with the given HTML in the conversationWindow. The content is not saved: the HTML must be sent every time the action is called.
chatbot.actions.showCustomConversationWindow(customhtml);customhtml Object
content String: This is the HTML content of the customConversationWindow.showLoader Boolean: When set to true, the SDK shows a loader using the customConversationWindow.Example: (with a simple form inside the customConversationWindow)
var customWindowHTML = {
content: '<form>'
+'First name:<br>'
+'<input type="text" name="firstname" value="Luke">'
+'<br>Last name:<br>'
+'<input type="text" name="lastname" value="Skywalker"><br><br><input type="submit" value="Submit"></form> '
}
chatbot.actions.showCustomConversationWindow(customWindowHTML);
//Show loader:
chatbot.actions.showCustomConversationWindow({showLoader:true});
This action creates a sideWindow with its own content and title. If a tracking code is attached, the ratings widget is shown too.
const SideWindow = {
sideWindowContent: "<p>Example of a custom WindowContent</p>",
sideWindowTitle: "Test title",
}
chatbot.actions.showSideWindow(SideWindow);SideWindow Object
sideWindowContent String : data shown inside the sideWindow, it accepts HTML tags.sideWindowTitle String : Title of the sideWindowtrackingCode trackingCode
This action shows the upload-media button.
chatbot.actions.showUploadMediaButton();This action shows a message in the chatbot input. This message can then be modified or sent by the user. The input message shows after the delay set in the configuration.
suggestAnswer Object
message String: The message that shows in the chatbot input.var suggestAnswerData={
message:'Test input suggestion'
}
chatbot.actions.suggestAnswer(suggestAnswerData);
This action allows you to modify the configuration given in the build method. It gives new values to the following configurations:
NewConfiguration Object
labels object: The new labels to override the original ones.launcherobject: The new configuration to set the launcher.titleinputCharacterCounterboolean: Updates the configuration of the character counter.inputCharacterCounterMaxnumber: Updates the configuration of the maximum characters in the input box. The Chatbot allows a maximum value of 256 characters for this configuration, but this method can be used to set it to a maximum of 4096 characters, to allow users to send longer texts when the Chat SDK escalates a conversation to an agent in Assist's Agent Chat. When used with the Chatbot, the value should be set back to the maximum of 256 characters.var newConfiguration={
labels:{
'interface-title':'Custom interface title'
},
launcher:{
'title':"Custom launcher"
},
inputCharacterCounter: true,
inputCharacterCounterMax: 100
}
chatbot.actions.updateConfiguration(newConfiguration);

This action modifies a message in the conversation.
There are different type of modifications:
action:WAITING_TICKaction:SINGLE_TICKaction:DOUBLE_TICKaction:ERROR_TICKaction:UPDATE_EXTERNALaction:UPDATE_SYSTEM_MESSAGEaction:UPDATE_CHATBOT_MESSAGEaction:END_STREAMED_MESSAGEYou can select the message with the id given in the return value of the action displayUserMessage.
If the payload has an externalId, it takes priority over the id and selects messages by externalId.
const payload = {
id: '751bcdf4-204d-4653-bf4c-21b2fe46202b', // IMPORTANT: there must be a message in the conversation with this id
action: 'SINGLE_TICK'
}
chatbot.actions.updateMessage(payload);payload Object
id [String] : the uuid of the message that should be updated. The updateMessage function fails if the id is not a string, or if there is no message with this id.action "SINGLE_TICK"|"DOUBLE_TICK"|"WAITING_TICK"|"ERROR_TICK"|"UPDATE_EXTERNAL": the update action to apply.externalId[String] : If given an externalId, it takes priority over the id when looking for the message to update.newExternalId[String] : If given the action "UPDATE_EXTERNAL", it sets the given message externalId for this newExternalId.messageData[Object]: Available only when action:UPDATE_CHATBOT_MESSAGE. This is the chatBotmessageData object used in the displayChatbotMessage action.Updating a system message
When the action is UPDATE_SYSTEM_MESSAGE, the payload accepts the same parameters as the displaySystemMessage action. Remember that you must specify the uuid of the message that you want to update.
// payload example
const payload = {
id: '751bcdf4-204d-4653-bf4c-21b2fe46202b', // IMPORTANT: there must be a message in the conversation with this id
action: 'UPDATE_SYSTEM_MESSAGE',
translate: true,
message: 'generic-error-message',
}
chatbot.actions.updateMessage(payload);Example

This action carries on the media object, with all the information to upload media from the user's device. It triggers when the user clicks the upload-media button and selects a file. Before this happens, a displayUserMessage with the media object is dispatched.
The uploadMedia action only triggers the onUploadMedia subscription. It does not do anything by itself. This means that you need an adapter to listen for the subscription and do something accordingly.
If you want to "force" the uploadMedia action to send an attachment to the Agent Chat agent, the file data sent to the uploadMedia action must be a File object:
media Object This action carries all the necessary information to download a file, with the message id and the message external id that it is related to.
messageId String : The message id of the message that the media belongs to.file Object : You need the name property of the file to display this name in the messages. You can add other properties if needed.
name String : The name of the file to display in the message.chatbot.actions.uploadMedia({
messageId: 'message-id-generated-when-displayed',
file: new File(['foo', 'bar'], 'foobar.txt');
});You must also specify the user message id in the uploadMedia action data:
let myFile = new File(['foo', 'bar'], 'foobar.txt');
// Display the user message with the attachment file name
let userFileMessageId = chatbot.actions.displayUserMessage({
message: 'upload ' + myFile.name,
media: myFile
});
// Execute the uploadMedia action
chatbot.actions.uploadMedia({
messageId: userFileMessageId,
file: myFile
});This action allows you to get the current configuration. You can use it when the configuration has been updated with the updateConfiguration action and you want to get the current values.
configuration Object
The method returns the same parameters that can be updated with the updateConfiguration action. It might add extra parameters, like the initial values for certain configurations.
labels object: The current labels.launcherobject: The current launcher.title.inputCharacterCounterboolean: The current character counter configuration.inputCharacterCounterMaxnumber: The current maximum number of characters allowed in the input box.inputCharacterCounterMaxInitialValuenumber: The initial value of the maximum number of characters allowed in the input box, that was set when the SDK was loaded for the first time.const configuration = chatbot.actions.inbentaGetConfiguration();