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

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

Например:

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

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

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

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

Для входящей телефонии и чатов данная переменная имеет аналог {now}. В исходящей телефонии аналог не работает.

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

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

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


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

Для входящей телефонии и чатов данная переменная имеет аналог {today}. В исходящей телефонии аналог не работает.

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

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

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


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

Для входящей телефонии и чатов данная переменная имеет аналог {time}. В исходящей телефонии аналог не работает.

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

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

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


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

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

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

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


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

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

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


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

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

Например, можно настроить правило перезвона через блок "Результат". Если количество успешных дозвонов до клиента составляет более 10, то такого клиента можно не беспокоить новыми вызовами.


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

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

Переменные детектора эмоций

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

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

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

Пример использования: {детектор.эмоций}=negative

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

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

Переменные детектора пола

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

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

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

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

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

Пример использования: {детектор.пол}=male.

Иллюстрация ниже демонстрирует проверку пола пользователя. Пользователей мужского пола бот перенаправляет на одну ветку, а пользователей женского пола - на другую.

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

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

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

{m_0|падеж:родительный} - где m_0, например: Иван Иванович.

Например, требуется задать вопрос: "Могу я услышать Ивана Ивановича?". Чтобы бот использовал значение переменной в родительном падеже, в блоке "Вопрос" нужно указать следующее: "Могу я услышать {m_0|падеж:родительный}?".

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

  • Именительный (кто? что?) пример: это кто? - Иван Иванович;
  • Родительный (кого? чего?) пример: нет кого? - Анны Андреевны или Ивана Ивановича;
  • Дательный  (кому? чему?) пример: чему вы рады? - Анне Андреевне и Ивану Ивановичу;
  • Винительный (кого? что?) пример: кого/что вы видите? - Ивана Ивановича или Анну Андреевну;
  • Творительный  (кем? чем?) пример: кем восхищаетесь? - Иваном Ивановичем и Анной Андреевной;
  • Предложный (о ком? о чем?) пример: о ком думаете? - об Иване Ивановиче и Анне Андреевне.

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

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

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

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

По завершению разговора бот отправляет письмо на электронную почту пользователя с полным текстом диалога:

Переменные с информацией об участнике диалога

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

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

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

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

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

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

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

Список переменных будет обновляться по мере появления новых переменных на платформе Twin.



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.