На платформе TWIN существуют встроенные переменные, которые можно использовать в любом сценарии. Встроенные переменные не нужно объявлять. Вы можете сразу использовать их в своих сценариях. При указании переменных в текстах сценариев обязательно используйте фигурные скобки (например, чтобы добавить в сценарий переменную "сейчас" используйте {now}).

Помимо встроенных переменных пользователи также могут использовать в сценариях свои собственные переменные. Пользователи могут создавать переменные с различными именами. Имя переменной может быть любым. Однако, существует ограничение: имя переменной не должно содержать точку. Данный символ используется только в именах встроенных переменных.

Например:

  • Правильные варианты: {Новая_переменная}, {Новая_Переменная}, {новаяПеременная}.
  • Неправильный вариант: {Новая.переменная}.

Системные переменные

В сценариях можно использовать следующие системные переменные:

{системные.сейчас} (имеет аналог: {now}) - возвращает текущие дату и время (например, 2019-11-22 04:06:58). Текущие дата и время определяются в тот момент, когда на основе сценария строится диалог с клиентом.

Пример использования:

Клиент звонит в магазин.

Бот делает сообщение: Внимание, в течение этого месяца у нас проходит грандиозная распродажа! Цены снижены до 30%. Сегодня {системные.сейчас}. Торопитесь успеть!


{системные.сегодня} (имеет аналог: {today} - возвращает текущую дату без указания времени (например, 2019-11-22). Текущая дата определяется в тот момент, когда на основе сценария строится диалог с клиентом.

Пример использования:

Клиент создает заказ и хочет узнать, когда он сможет его забрать.

Бот отвечает клиенту: заказ будет готов к получению сегодня {системные.сегодня}, начиная с 18.00.


{системные.время} (имеет аналог:  {time}) - возвращает текущее время без указания даты (например, 04:06:58). Текущее время определяется в тот момент, когда на основе сценария строится диалог с клиентом.

Пример использования:

Клиент звонит в службу точного времени.

Бот отвечает клиенту: Тоное время: {системные.время}


{системные.телефон} - возвращает номер телефона клиента, который указан в задании на обзвон для выполнения вызова.

Пример использования:

Клиент звонит в магазин, чтобы узнать срок действия заказа.

Бот отвечает клиенту: Уточните, заказ оформлен на номер {системные.телефон}?, а также по завершению разговора отправляет шаблонное смс с информацией о заказе на номер клиента:

{системные.предыдущий} - возвращает номер сценария, из которого был выполнен переход в текущий сценарий. Переменная позволяет получать информацию, из какого сценария был выполнен переход.

Пример использования:

При переходе в новый сценарий можно выполнить проверку, из какого сценария был выполнен переход, чтобы, например, не повторять вопросы, которые были заданы клиенту в предыдущем сценарии.


{системные.дозвон} - возвращает количество успешных дозвонов до кандидата в рамках задания на обзвон.

Пример использования:

Например, можно настроить правило перезвона через блок "Результат".


{системные.запись} - возвращает ссылку на аудиозапись текущего диалога в телефонии.

На данный момент переменная {системные.запись} используется только в отчетах, сформированных для получения информации о заданиях на обзвон (Статистика → Отчеты → Адрес записи звонка). Формат файла записи: ".mp3".

Переменные детектора ({детектор.эмоций})

Детектор эмоций предназначен для определения эмоциональной окраски ответа клиента. Данная переменная доступна только для сценариев, которые используются в телефонии.

В системе существуют следующие переменные детектора эмоций: 

  • {negativ}- негативная эмоциональная окраска;
  • {positive}- позитивная эмоциональная окраска;
  • {neutral}- нейтральная эмоциональная окраска.

Пример использования:

В зависимости от эмоциональной окраски ответов клиента бот может развивать диалог или в одну или в другую сторону:

При решении 99% решаемых задач данная функция не используется. Определить негатив в диалоге с клиентом вы можете с помощью намерения, которое будет содержать в себе негативные слова (например, мат и/или брань). При помощи детектора эмоций вы можете распознавать эмоциональную окраску более мягких формулировок, когда, например, в трудной ситуации нужно собщить клиенту какую-либо важную информацию (например, заказ был отменен). Старайтесь использовать детектор эиоций только в тех случаях, где это действительно необходимо и вы не можете определить эмоциональную окраску с помощью намерения. 

Переменные детектора пола ({детектор.пол})

Детектор пола предназначен для определения пола клиента по его голосу. Данная переменная доступна только для сценариев, которые используются в телефонии.

Для использования данной переменной в задании на обзвон необходимо установить флажок для параметра "Определение гендерного признака".

В системе существуют следующие переменные детектора пола: 

  • male - мужской;
  • female - женский;
  • unsure - система на смогла прийти к однозначному решению;
  • unknown - не удалось определить пол или определение пола  выключено/не поддерживается;

Для определения пола системе необходимо прослушать чистый голос клиента в течение не менее чем 1 секунды. В противном случае система не сможет распознать его пол.

{переменная|падеж:имя_падежа} 

Склонение переменных для правильного произношение синтезом согласно падежу.

Пример: {m_0|падеж:родительный} - где m_0, например: Иван Иванович. И согласно сценарию "могу я услышать m_0 ?", задача использовать переменную в родительном падеже.

Поддерживаются все падежи:

именительный                      (кто? что?)  пример: -это кто? -Иван Иванович

родительный                        (кого? чего?)   пример: -нет кого? - Анны Андреевны или Ивана Ивановича

дательный                            (кому? чему?)      пример: чему вы рады? -Анне Андреевне и Ивану Ивановичу

винительный                        (кого? что?)   пример: кого/что вы видите? -Ивана Ивановича или Анну Андреевну

творительный                     (кем? чем?)  пример: кем восхищаетесь? -Иваном Ивановичем и Анной Андреевной

предложный                           (о ком? о чем?)  пример: о ком думаете? - об Иване Ивановиче и Анне Андреевне


Переменные значения которых не меняются и которые нельзя изменить в процессе диалога

{companyId} - строка, идентификатор компании которой принадлежит бот.
{botId} - строка, идентификатор бота.
{dialogId} - строка, идентификатор текущего диалога.
{dialog} - объект, автоматически, при вставке в строку, трансформируется в текст диалога.
{referer} - строка, URL с которого пришёл пользователь (используется для чатов).
{utcNow} - текущее дата и время в часовом поясе UTC+0.
{utcTime} - текущее время в часовом поясе UTC+0.
{utcToday} - текущая дата в часовом поясе UTC+0.

Информация о клиенте (конечный пользователь Twin, участник диалога)

информация может быть изменена в процессе диалога с помощью ендпойнта идентификации клиента (он есть как в чатах, так и в сервисе бота).

{clientId} - uuid, внутренний идентификатор клиента в системе Twin.
{clientPhone} - строка, номер телефона клиента.
{clientEmail} - строка, адрес электронной почты клиента.
{clientName} - строка, имя клиента.
{clientNickname} - строка, псевдоним клиента.
{clientExternalId} - строка, внешний идентификатор клиента в системе, который может задавать при старте диалога.
{clientMetadata} - массив, любые данные о клиенте.


Данные, которые можно изменить только в процессе переключения со звонка на чат, либо наоборот

(Пока данный функционал не доступен в полном объеме, т.к. не запущен CIS. В данный момент можно использовать, например для определения в каком мессенджере ведется диалог):

{communicationType} - строка, тип коммуникации с клиентом. Допустимые значения: TEXT, VOICE.
{channelType} - строка, тип канала общения. Допустимые значения: WEB, MOBILE, MESSENGER.
{messenger} - строка, тип мессенджера. Допустимые значения: WHATSAPP, VIBER, TELEGRAM, VKONTAKTE, FACEBOOK, SKYPE, SLACK, YANDEX, ALICE, THREADS.


Данные, меняющиеся при каждом обращении к боту, автоматически

{percept} - строка, хранит фразу которую сказал пользователь и на которую в данный момент отвечает бот.
{clientLastAnswerTime} - целое число, время последней фразы клиента в секундах.
{botLastAnswerTime} - целое число, время последнего ответа бота в секундах.

Переменные будут пополняться в этой статье по мере их появления на нашей платформе


There are built-in variables on the TWIN platform that can be used in various scenarios:

Unfortunately, it is not possible to use your own dot variables:

{your.variable}

this construction will not work. This is the only limitation in variables, since "." points to a system variable.


{system.variable}

System variables used on the platform.

{system.now}, the analogue is a variable {now} - Date with time (for example 2019-11-22 04:06:58). The current date is used when the script was used.

{system.today}, the analogue is a variable {today} - Date without time (for example, 2019-11-22). The current date is used when the script was used.

{system.time}, the analogue is a variable {time} Time without date (for example 04:06:58). The current time is used at the moment of using the script.

{system.telephone} Subscriber’s number used in the script when making a call via phone.

{system.previous} Script number. You can use such conditions during the transition between scripts to know where the transition was made from.

{system.dial} Counter of successful calls to the candidate within the call task.

{system.record} Sends a link to a sound recording of the current conversation via phone (Now only on the TWIN platform, the recording format is .mp3).


{detector.emotions}

Determination of the emotional coloring of a person's answer. There are 3 types: 

  • negative - Negative coloring
  • positive - Positive coloring
  • neutral - Neutral emotionality

{detector.gender}

Determination of gender by voice. Only available in calls. For this variable to work, it is required to check "Determination of gender characteristic" in the call task. Possible values

To determine the gender, the system needs at least 1 second of the client's clear voice, otherwise the system will not recognize anything.

  • male. -male
  • female - female
  • unsure - the system could not come to an unambiguous decision
  • unknown - could not be detected or emotion detection is disabled / not supported

Variable values of which do not change and which cannot be changed during the dialogue

{companyId} is a string, company ID which the bot belongs to.

{botId} is a string, bot ID.

{dialogId} is a string, current dialog ID.

{dialog} is an object, when inserting into a line, is automatically transformed into the dialog text.

{referer} is a string, URL where the user came from (used for chats)

Client information (Twin end user, dialogue participant)

information can be changed during the dialogue using the client identification endpoint (it is available both in chats and in the bot service).

{clientId} is a string, client ID in Twin system.

{clientPhone} is a string, client phone number.

{clientEmail} is a string, client email address.

{clientName} is a string, client name.

{clientNickname} is a string, client nickname.

{clientExternalId} is a string, user ID in the Twin client system, must be unique within the company.

{clientMetadata} is an array, any data about the client.

Data that can be changed only when switching from a call to a chat, or vice versa

(So far, this functionality is not available in full, because CIS has not been launched. At the moment, you can use it, for example, to determine in which messenger the dialogue is being conducted):

{communicationType} is a string, client communication type. Valid values: TEXT, VOICE.
{channelType} is a string, communication channel type. Valid values: WEB, MOBILE, MESSENGER.
{messenger} is a string, messenger type. Valid values: WHATSAPP, VIBER, TELEGRAM, VKONTAKTE, FACEBOOK, SKYPE, SLACK, YANDEX, ALICE, THREADS.


Data that changes automatically with each addressing to the bot

{percept} is a string that stores a phrase said by the user and which the bot is currently responding to.
{clientLastAnswerTime} is an integer, time of the client's last phrase in seconds.
{botLastAnswerTime} is an integer, the time of the last bot's response in seconds.

Variables will be updated in this article as they appear on our platform.