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

Системные переменныеВ сценариях можно использовать следующие системные переменные: - {системные.сейчас} – возвращает текущие дату и время UTC (например, 2019-11-22 04:06:58). Текущие дата и время определяются во время диалога с клиентом.
Для входящей телефонии и чатов данная переменная имеет аналог {now}. В исходящей телефонии аналог не работает. |
Пример использования: Клиент звонит в магазин. Бот произносит сообщение: "Внимание, в течение этого месяца у нас проходит грандиозная распродажа! Цены снижены до 30%. Сегодня {системные.сейчас}. Торопитесь успеть!" 
Чтобы отображать дату и время для конкретного часового пояса, нужно использовать блок Арифметическая операция. Для параметра Тип нужно выбрать значение Дата. - {системные.сегодня} – возвращает текущую дату без указания времени (например, 2019-11-22). Текущая дата определяется во время диалога с клиентом.
Для входящей телефонии и чатов данная переменная имеет аналог {today}. В исходящей телефонии аналог не работает. |
Пример использования: Клиент создает заказ и хочет узнать, когда он сможет его забрать. Бот отвечает клиенту: "Заказ будет готов к получению {системные.сегодня}, начиная с 18.00".

Чтобы отображать дату и время для конкретного часового пояса, нужно использовать блок Арифметическая операция. Для параметра Тип нужно выбрать значение Дата. В поле Смещение от даты нужно ввести название системной переменной {системные.сегодня} и задать смещение в секундах. Смещение происходит от начала суток (00.00). То есть, если вы хотите, чтобы бот отобразил текущую дату и время 9.00, нужно задать смещение равное 32400. Результат нужно сохранить в пользовательскую переменную. После этого пользовательскую переменную можно использовать в тексте сообщения. 
- {системные.время} – возвращает текущее время без указания даты (например, 04:06:58). Текущее время определяется во время диалога с клиентом.
Для входящей телефонии и чатов данная переменная имеет аналог {time}. В исходящей телефонии аналог не работает. |
Пример использования: Клиент звонит в службу точного времени. Бот отвечает клиенту: "Точное время: {системные.время}". - {системные.телефон} – возвращает номер телефона клиента, который указан в задании на обзвон для выполнения вызова. Переменная {системные.телефон} и {phone} являются одной переменной.
Данная переменная предназначена для сценаиев, которые используются в телефонии и мессенджерах. Для входящей телефонии данная переменная имеет аналог {phone}. В исходящей телефонии аналог не работает. |
Пример использования: Клиент звонит в магазин, чтобы узнать срок действия заказа. Бот отвечает клиенту: "Уточните, заказ оформлен на номер {системные.телефон}?" После завершения разговора бот отправляет шаблонное смс с информацией о заказе на номер клиента: 
- {системные.предыдущий} – возвращает идентификатор сценария, из которого был выполнен переход в текущий сценарий. Переменная позволяет получать информацию, из какого сценария был выполнен переход.
Пример использования: При переходе в новый сценарий можно выполнить проверку, из какого сценария был выполнен переход, чтобы перенаправить клиента на другую ветку и не повторять вопросы, которые были заданы клиенту в предыдущем сценарии. - {системные.дозвон} – возвращает количество успешных дозвонов до кандидата в рамках задания на обзвон.
Пример использования: Например, в рамках одного сценария вы можете позвонить клиенту несколько раз и каждый раз начинать диалог по-разному:

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

Переменные детектора эмоцийДетектор эмоций предназначен для определения эмоциональной окраски ответа клиента. Эмоциональная окраска определяется по голосу. Поэтому переменные детектора эмоций работают только в тех сценариях, которые используются в телефонии. В системе существуют следующие переменные детектора эмоций: - {negativ} – негативная эмоциональная окраска;
- {positive} – позитивная эмоциональная окраска;
- {neutral} – нейтральная эмоциональная окраска.
Пример использования:
В зависимости от эмоциональной окраски ответа клиента бот может направить развитие диалога в ту или иную сторону: {детектор.эмоций}=negative 
При решении 99% задач данная функция не используется. Определить негатив в диалоге с клиентом вы можете с помощью намерений, которые будут отслеживать использование негативных слов (например, мат и/или брань). При помощи детектора эмоций вы можете распознавать эмоциональную окраску речи пользователя в обычных ситуациях (например, при отмене заказа). Старайтесь использовать детектор эмоций только в тех случаях, где это действительно необходимо (там, где вы не можете определить эмоциональную окраску с помощью намерений). |

Переменные детектора полаДетектор пола предназначен для определения пола пользователя. Поскольку пол пользователя определяется по его голосу, то переменные детектора пола работают только в тех сценариях, которые используются в телефонии. В системе существуют следующие переменные детектора пола: - male – мужской;
- female – женский;
- unsure – система не смогла прийти к однозначному решению;
- unknown – не удалось определить пол или определение пола выключено/не поддерживается.
Для определения пола системе необходимо прослушать голос пользователя без посторонних звуков в течение не менее чем 1 секунды. В противном случае система не сможет распознать его пол. |
Пример использования:
Иллюстрация ниже демонстрирует проверку пола пользователя. Пользователей мужского пола бот перенаправляет на одну ветку, а пользователей женского пола - на другую. {детектор.пол}=male {детектор.пол}=female 

Склонение значений пользовательских переменных по падежам{переменная|падеж:имя_падежа} – формат записи имен пользовательских переменных, который позволяет склонять их значения по падежам. Пример использования: {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} – возвращает массив, содержащий любые данные о клиенте (задается в следующем формате: {"{firstName}": "Иван", "{middleName}": "Иванович", "{lastName}": "Иванов"}.
Значения данных переменных бот может получать по различным каналам связи (например, viber, whatsup, telegram и др.). Чтобы изменить значение любой из этих переменных, нужно определить соответствующую переменную в сценарии. Имя и значение переменной задаются без фигурных скобок. Фигурные скобки используются только при указании имен переменных в сообщениях, которые воспроизводятся ботом. |


Переменные, значения которых можно изменить только при переключении со звонка на чат и наоборот(Данный функционал недоступен в полном объеме. На текущий момент указанные ниже переменные можно использовать, например, чтобы определить, в каком мессенджере происходит диалог с клиентом): - {communicationType} – строка, тип коммуникации с клиентом. Допустимые значения: TEXT, VOICE;
- {channelType} – строка, тип канала общения. Допустимые значения: WEB, MOBILE, MESSENGER;
- {messenger} – строка, тип мессенджера. Допустимые значения: WHATSAPP, VIBER, TELEGRAM, VKONTAKTE, FACEBOOK, SKYPE, SLACK, YANDEX, ALICE, THREADS.
Пример использования: Во время диалога бот может уточнить у клиента, удобно ли ему общаться в текущем мессенджере. Впоследствии бот может перевести диалог на телефон. 

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