Update Current chat
With this trigger you can perform these actions
Stop chat and transfer to human
By using this trigger chat can exist bot mode and can execute triggers depending on outcome. YouTube demo https://youtu.be/AL7RVRcvOas
Transfer chat to bot
By using this trigger you can transfer chat back to bot.
Close chat
This trigger will close a chat. Usefull if visitor is not authentificated or any other reason you can think of.
Set chat variable [not visible by operator]
This trigger is usefull to set any internal chat attribute which should not be visible by operator, only by system.
{"bot_touched":true}
If you set value like below. Attribute will be removed.
{"bot_touched":null}
You can also store an object returned from Rest API
{"debts":{content_5_json}}
After that you can just access any internal attribute or just cycle through items.
These variables later on can be used by Rest API as replaceable variables. {{lhc.var.<variable_name>}}
Set chat additional attribute [visible by operator]
These variables will be visible by operator.
[{"value":"Attribute value or {content_1}","identifier":"attribute_name","key":"Attribute Name"}]
How to delete custom collected attribute?
This way you can reset from bot any collected attribute from custom fields. You have to fill both key and identifier with same field identifier and set value as null
Set widget live attribute
This is usefull while the widget is live.
Live attribute path
defines path of attribute of React APP stateLive attribute value in JSON format.
See how bot uses it to control survey
Dispatch Event
If you are building some fancy workflow, and you need to listen to custom even defined by you, you can use this trigger.
Event dispatch looks like this
erLhcoreClassChatEventDispatcher::getInstance()->dispatch('chat.genericbot_chat_command_dispatch_event', array(
'action' => $action,
'chat' => & $chat,
'replace_array' => (isset($params['replace_array']) ? $params['replace_array'] : [])
));
To listen to this event in your extension bootstrap.php
file you would need something like this
public function run() {
$dispatcher = erLhcoreClassChatEventDispatcher::getInstance();
$dispatcher->listen('chat.genericbot_chat_command_dispatch_event', array($this, 'listenEvent'));
}
public function listenEvent($params) {
if ($params['action']['content']['payload'] == '<Event Name>') {
// $params['action']['content']['payload_arg'] - <Event argument>
}
};
Update main chat attribute
With this action you can update any chat attribute. You can find all main chat attributes definition in https://api.livehelperchat.com/ at the bottom there will be Models
section and see Chat
model definition
- In command choose
Update main chat attribute
Chat attribute name
enter your attribute you want to change.Chat attribute value
enter a value
For value field you can use also replaceable variables like defined here you can also use placeholder from Rest API E.g
{content_1}
up to{content_6}
If you want to set vistor nick
, email
, phone
or any other attribute from Rest API
- set
Chat attribute name
tonick
- set
Chat attribute value
to{content_1}
How to set product attribute?
You can also set product directly from bot.
- To do that you will need a
product_id
more information - In command choose
Update main chat attribute
Chat attribute name
enterproduct_id
Chat attribute value
enter yourproduct_id
from product list./site_admin/abstract/list/Product
or just click edit and in URL the last number will be aproduct_id
.
Change department
Department you can change also with Update main chat attribute
, since 3.42v was done improvement and now it's more clear how to change department.
In order to change department you just have to Enter department ID
ID you can find in department list.
Disable visitor sending messages untill next operator/bot messages.
It disables possibility for visitor to send a message untill there is some response to his previous message. It's usefull in ChatGPT integration case if we want to wait untill bot response to our previous request.
Set subject
You can add a subject to the chat automatically by entering subject id.
For value field you can use also replaceable variables like defined here you can also use placeholder from Rest API E.g
{content_1}
up to{content_6}
This supports E-mail events, continuous webhooks as a chats also.
Remove any previous process
In case you allow visitor to start another information collection process in the middle of one. You can encounter an error message like Please complete previous process
.
If you want to clean any previous process you can use this response type before executing Collect custom attribute
response type.
Another way to avoid this error just check mark Soft event
in Collect custom attribute
response type. We will automatically terminate it if user starts another one.
Set meta_msg attribute
This updates visitor message meta_msg
attribute.
E.g from sentiment per message trigger
{"sentiment":"{content_1}","sentiment_value":{content_2}}
Messages aggregation
This response type iterates through all chat messages and calculates desired aggregation values.
Fields description
Chat fields
Chat variable as Group field
- main variable to store of grouped fieldCalculated value from group method
- score value of the grouped result
Message fields by which we should do grouping
Group field (sentiment)
- stores initial grouping field E.gsentiment
Group value field. Eg (score field of the sentiment)
- stores score of the sentimentsentiment_value
Aggregated messages sample
AVG
Groups messages by Group field (sentiment)
and calculates average of Group value field. Eg (score field of the sentiment)
the highest average is stored within chat
as Chat variable as Group field
(E.g sentiment_visitor
and average itself as sentiment_visitor_value
)
E.g
SUM
Instead of average we compare by the sum of the grouped fields.
SUM as comparator and AVG as value
Similar to AVG
just aggregation value is chosen by sum of the Group value field. Eg (score field of the sentiment)
but value itself is as AVG
MAX
Finds the MAX from grouped fields and stores it as aggregated field and it's value.
From sample it would be {"sentiment":"positive","sentiment_value":0.9620355963707}
MIN
Finds the MIN from grouped fields and stores it as aggregated field and it's value.
From sample it would be {"sentiment":"neutral","sentiment_value":0.56032991409302}
COUNT MAX (maximum number of grouped record)
Chooses the most frequent value of the grouped field. In case it's same score very first one would be stored.
COUNT (total number of messages)
Stores only count of the selected messages type
COUNT FILTER (filtered by group value field)
Stores only count of the selected messages type plus applies filtering by message meta_attr
RATIO in comparison with all messages
Stores ratio compared to the all/filtered messages.
In this sample we store ratio of positive messages compared to negative messages
E.g