icon picker
FAQ

Agent Script

Why can't I open the debug widget? ​
image.png

The Debug widget toggler is disabled before an
@Agent
is trained and becomes available after
@Training
. To open the Debug widget, train your
@Agent
by clicking the TRAIN button.

What will happen if a
@Bot User
writes something in the chat instead of clicking one of the suggested buttons?

This
@Script
is handled by the
@fallback
@Subslot
, which is automatically generated when creating a
@Button Menu
. ​
image.png
After this
@Subslot
, you can build any
@Script
of your choice, for example, ask a
@Bot User
to select one of the buttons and add a
@Jump
slot that returns the
@Script
back to the
@Button Menu
.

What is a variable and how can I use it?

@Context Variable
s are variables stored in the
@Chat
and available for reading and modification by the system according to the logic embedded in the
@Script
or
@Platform
.You can learn about context variables by following this link:

How can I insert a delay of several seconds between two text slots?

To implement a delay between displaying multiple
@Text
slots, you can insert an
@External Request
between these
@Text
slots to any responsive server and specify the er-delay header with the desired value in seconds in the settings of this
@External Request
. More information on using such headers:
image.png
The request itself is a formality to use the delay option, it can be sent to any service that responds, the response data does not need to be parsed. The main thing is for the server to respond. The total delay time will amount to the response time of the server + the delay in seconds from the er-delay header. If the service does not respond, the platform will wait for the response to the request for 5 minutes.

Is there a way to receive files from a
@Bot User
through Jivo and then send them to the customer's CRM?

File metadata is stored in the client_message variable and includes a link to the file kept on the Jivo servers. You can read about receiving files from the
@Bot User
in other omnichannel platforms and messengers in the following articles: section , section .

Is it possible to set a timer for 3 months? What are the possible risks?

It is possible, there are no restrictions. You can find out in which cases the timer is reset (deleted) here:

Why does the
@External Request
sent to the channel arrive earlier than the
@Text
slot, even though they are in the opposite order in the
@Script
?

The platform executes these slots almost simultaneously, but the
@External Request
may arrive faster. To fix this, you can add the er-delay header. More details:

Why does the Agent replaced with a new configuration file is displayed as trained?

It is the untrained Agent model that is being changed, not the
@Script
in the bot builder. The previous
@Agent
model is still active in the channel, and to make the new
@Script
work, it needs to be trained.

Questions about the Platform Syntax

Why do some objects not parse in
@External Request
?

You need to access the attributes of any object using square brackets: {{ body["foo"]["bar"] }}. More about reserved attributes:

How can I get the current time in Unix format?

{{ now().timestamp() }}

Can I use the now() function to get a result with an offset? For example, now(5) = UTC+5.

No, you can only get the current time in UTC.

Why can't I perform mathematical operations with a variable using the syntax?

If a string can be converted to a specific type (number, boolean, array, etc.), the specific type is preserved, not the string. Mathematical operations can be applied only to numbers.

Why does the '+' at the beginning of a variable (phone number specified in
@client_message
) get trimmed?

The string is automatically converted to a number and is saved as a number.

How can I concatenate the '+' symbol with a number converted to a string format? I need to save the number in the format '+79999999999'. Concatenating the number with any other symbol works correctly; in the case of '+', the symbol disappears. Is the string automatically converted to a number?

Yes, the string is automatically converted to a number. You can implement this as follows: {{ "+" + (<phone number> | string) }}

How can I quickly process any text through the syntax so that it can be successfully sent via an
@External Request
as a string object in JSON format?

There is a built-in filter called tojson (more details: ). To remove line breaks, use {{ some | replace('\n', '') }}

How can I determine the position of an element in an array if the value of the element is known?

How can I add an element to an array?

To add elements to an array, use the + operator.
Example: There is a shopping cart where items are added.
cart = [{
"id": "{{ id }}",
"amount": "{{ amount }}"
}]
To add an element: {{ cart + [{"id": 1, "amount": amount}] }}

How do I concatenate strings longer. than 1000 characters implemented?

This can be done using {{ string_1 }}{{ string_2 }}. The + operator will not work in this case.

Questions about Tariffs and Billing

How can I check the number of remaining unique users in accordance with my subscription plan?

This information is available in the account settings on the .

What is a unique
@Bot User
?

A unique
@Bot User
as a billing object is each unique
@Bot User
from the channel with whom the
@Agent
communicates in a unique
@Agent
channel. If the same actual user has a dialogue with the same
@Agent
in another
@Agent
's channel or with another
@Agent
in the same
@Company
, they are considered different unique
@Bot User
s.

How is the unique
@Bot User
counter updated?

The subscription counters are updated every day at 02:00 UTC: the traffic counter value (unique
@Bot User
s) in the billing period is updated based on the received traffic statistics. If a new billing period starts on the current day, the traffic counter in the billing period is reset to zero.

How is the number of unique
@Bot User
s measured in
@NLU
@Agent
s and
@Agent
s without
@NLU
?

The number of unique
@Bot User
s is measured the same way in
@NLU
@Agent
s and
@Agent
s without
@NLU
: all chats in which there was any activity in the
@Script
(a message from the
@Bot User
or a message from the
@Agent
, a timer triggered, an incoming request, etc.) in the billing period are taken into account.

How is the number of unique
@Bot User
s measured in the architecture of a bot cascade in a single channel "Broadcasts => Bot mother => Child Bots / Sub-bots"?

A unique
@Bot User
as a billing object is each unique
@Bot User
from the channel with whom the
@Agent
communicates in a unique
@Project Channel
. If the same actual user has a dialogue with the same
@Agent
in another
@Agent
's channel or with another
@Agent
in the same Company, they are considered different Unique
@Bot User
s.

How do subscription notifications work?

You can learn about subscription alerts at this link:

How do I purchase additional packages for unique bot users?

At the moment, the purchase of a traffic replenishment package is possible only through technical support: support@actum.cx

Questions about Agent Channels

How can I identify a visitor in a specific channel?

To identify a visitor in a channel, you can use channel variables. Learn more:

Where can I view information provided by
@Bot User
s during communication with
@Agent
in Telegram?

If the Agent is connected directly to Telegram, you can view the
@Bot User
s' responses in the following ways:
Export the from the
@Analytics Tab
;
Export from the
@Analytics Tab
, then you will only see the responses saved in the context variables;
Set up integration, for example, through Integromat, and send the data to your email or Google Sheets.

How can I retrieve the username of a user in Telegram?

If the
@Bot User
has not hidden their username in the Telegram privacy settings, you can see it in the
@channel_visitor_account
channel variable.

Why can’t I activate an agent channel?

This can happen when the
@Agent
is not trained or when a channel with the same token is already registered. Errors can also occur during channel activation:
"Can’t reach channel" — is displayed when the server does not respond to the specified URL. ​
image.png
"Couldn't register agent webhook" — is displayed when the webhook could not be registered in the remote channel. ​
image.png
However, the channel will be activated despite these issues.

How can I check if a user is subscribed to a channel/group in Telegram?

You can do this using an external request to the URL `https://api.telegram.org/bot{{ channel_webhook_token }}/getChatMember?chat_id=@``**[CHANNEL USERNAME]**``_id={{ channel_visitor_id }}, where in the Response tab, you parse the variable from the response: {{ body.result.status }}.
Add the Telegram channel or group username to the URL, for which you want to check the subscription, add the external request to the
@Agent
@Script
, and use the obtained variable in the subsequent scenario. The interaction algorithm can be as follows:
The
@Bot User
writes to the Telegram bot in private messages;
The bot checks the
@Bot User
's subscription status;
Depending on the status, the communication continues according to one of the scenarios.

Questions about Analytics

How can I track how many
@Bot User
s have gone through the entire
@Script
, how many of them have left the dialogue, and at what point?

This information can be retrieved using the Slot stats report, which can be exported on the Analytics page. The report shows through which slot and how many times the
@Bot User
has passed during a specific dialogue session.

In what order are specific variables exported in the chat context report?

The variables are exported in alphabetical order.

Questions about Platform Limits and Loads

What are the RPS limitations for broadcasts / for API, etc.?

The
@Platform
accepts 20 requests per second, but further sending is distributed over time to smooth out the load and not exceed the API limits of the messenger.

Is there a limit on the number of open chats per
@Company
?

There are no limits on open chats.
Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.