Перейти к основному содержимому

Как запросить имя клиента

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

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

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

Есть два способа получения имени: получить имя из канала или спросить клиента.

Имя есть в канале

  • Каналы ВКонтакте и Telegram уже содержат информацию об имени в профиле клиента. Вы можете извлечь информацию из этих каналов и обращаться к клиенту по имени сразу, не спрашивая имя в рамках сценария. Это можно сделать при помощи переменной $rawRequest.
  • Если вы совершаете обзвон, вы можете получить имя из таблицы обзвонов.
предупреждение
При извлечении имени клиента из канала тестировать сценарий нужно будет не в тестовом виджете, а в канале, для которого он предназначен.

Имени нет в канале

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

Допустим, нам нужно создать простого бота, который будет собирать у клиента контактные данные, чтобы затем передать их менеджеру. Для этого нам нужно будет запросить имя клиента. Как же это сделать?

Добавление распознавания имен

Для начала создайте экран приветствия.

Добавьте блок Текст, в котором напишите следующую фразу:

Здравствуйте! Как можно к вам обращаться?

В первую очередь необходимо научить бота распознавать популярные имена.

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

Добавьте на экран приветствия блок с готовым интентом Имена:

Вот что у вас должно получиться:

подсказка
Посмотреть словарь имен вы можете на вкладке Сущности: нажмите Скачать рядом со словарем $NAME.

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

Введенное клиентом имя попадет в системную сущность $NAME, которая будет содержать информацию об имени — полную и уменьшительную формы имени, а также его гендерную принадлежность.

Теперь попробуйте вывести имя. Для этого нажмите на интент Имена:

Появится стрелка перехода. Выберите блок Текст:

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

Укажите в данном блоке фразу:

Приятно познакомиться, $NAME.name!

Если клиент назовет популярное имя — например, Мария — или другую форму популярного имени — например, Машенька, — то бот перейдет по ветке Имена. Нажмите Тестировать и напишите какое-нибудь популярное имя:

Проверка разных имен

Для того чтобы проверить другое имя, вам нужно будет начать выполнение сценария сначала. Для этого нажмите Остановить тест:

И затем снова нажмите Тестировать. Попробуйте вводить другие имена, чтобы убедиться, что бот работает.

предупреждение
Если вы вносили любые изменения в сценарий — например, отредактировали фразу — вам нужно перезапускать тестирование таким же образом.

Если клиент напишет что-то, что не попадет в единственный добавленный интент Имена, то, так как других интентов у вас не добавлено, бот пойдет по ветке Любая другая фраза.

Так как в данный момент ветка Любая другая фраза ни с чем не связана, бот будет отвечать по умолчанию фразой Извините, непонятно.

Чтобы бот каждый раз, когда получает в ответ не популярное имя из списка, а что-то другое, не отвечал Извините, непонятно, свяжите интент Любая другая фраза с новым блоком Текст и напишите в нем фразу:

Вас правда зовут $queryText?

подсказка
$queryText — системная переменная, которая будет содержать полный текст текущего запроса клиента. В данном случае это текст, попавший в блок Интенты.

Теперь все, что не попадет в интент Имена, будет переводить бота по ветке Любая другая фраза. Любая другая фраза будет вести на блок Текст, где выводится введенный клиентом текст с помощью системной переменной $queryText.

Нажмите Тестировать и введите любой текст, чтобы проверить:

Интент Имена принимает не только одно слово — имя — но и умеет распознавать имя внутри написанного клиентом предложения. Например:

Распознавание необычных имен

Что, если у клиента необычное, оригинальное имя — например, одно из редких иностранных имен? Для этого тоже можно создать решение.

Добавьте новый интент и нажмите на :

Нажмите Создать интент:

Скопируйте и вставьте в поле интента следующее выражение:

* меня * зовут $TEXT::isname

Нажмите Добавить пример. Не закрывайте это окно, чтобы потом добавить еще несколько примеров.

С помощью этого интента вы принимаете в $TEXT все, что будет написано после фразы «меня зовут».

$TEXT — системная сущность, которая принимает любой текст.

После $TEXT ставится два двоеточия — это будет означать, что все, что попало в $TEXT, будет записываться в переменную. В данном случае создается переменная $isname, которую вы будете использовать позже.

Скопируйте и добавьте следующие строки:

  • * зови* * меня $TEXT::isname — этот шаблон будет принимать любые слова + зовите меня [имя] и любые слова + зови меня [имя]
  • * ну * пусть * будет $TEXT::isname
  • * наверное $TEXT::isname
  • * имя $TEXT::isname
  • * хорошо $TEXT::isname
  • * зовут $TEXT::isname
  • * ладно $TEXT::isname
  • * я $TEXT::isname

Вот что у вас должно получиться:

Данные строки являются шаблонами фраз клиента, которыми клиент может ответить на сообщение бота.

С помощью этих шаблонов вы делаете так, чтобы в имя не попадали лишние слова. То есть, отсекаются разные незначительные слова, которые могут быть введены клиентом одновременно с именем.

Одновременно с этим не придется говорить владельцам необычных имен, что их имена неизвестные. В дальнейшем вы можете добавить больше таких примеров.

И, наконец, добавим еще одну строку:

$TEXT::isname

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

Этот $TEXT нам нужен на случай, если клиент добавил необычное имя одним словом.

По умолчанию, когда вы переходите в редактирование блока Интенты и начинаете добавлять строки, они добавляются как примеры фраз, а не как шаблоны. Об этом свидетельствует иконка слева от каждой фразы. Чтобы сделать фразу шаблоном, нажмите на иконку напротив каждой фразы. Она изменится на иконку .

Нажмите Сохранить.

Теперь можно удалить экран с текстом Вас правда зовут $queryText?, так как у вас есть сущность $TEXT, которая будет принимать любую строку. Если в интентах есть $TEXT, то ветка Любая другая фраза отрабатывать не будет.

Далее нам нужно сделать связь от интента * меня * зовут $TEXT::isname и создать блок Условия:

В блок Условия вставьте следующее выражение:

$name = $NAME ? $NAME.name : $isname

С помощью этого условия вы создаете переменную $name.

= — это оператор языка программирования JavaScript, с помощью которого присваивается значение переменной $name. Далее идет логическое выражение. Если у вас ранее что-то попало в системную сущность $NAME, то переменная $NAME.name будет записываться в переменную $name. Если же в системную сущность $NAME ничего не попало, то в $name запишется значение $isname.

В итоге в переменной $name окажется имя из словаря или принятое необычное имя.

Теперь свяжите интенты Имена и * меня * зовут $TEXT::isname с данным блоком Условия:

Сейчас у вас в сценарии есть блок Текст, в котором написано Приятно познакомиться, $NAME.name!.

В данный момент этот блок использует только имя, которое содержится в системной сущности $NAME. Поэтому нам нужно изменить текст в этом блоке на:

Приятно познакомиться, $name!

От блока Условия создайте связь с текстом Приятно познакомиться, $name!:

Теперь бот будет принимать как популярные, так и необычные имена:

подсказка
Имя записывается в переменную $name, чтобы вы в дальнейшем могли ее использовать в сценарии.

Что делать дальше?

Теперь имя клиента в сценарии записано в переменную $name. Далее вы можете работать с этой переменной — обращаться к клиенту по имени, а также отправлять эту переменную в нужные каналы связи.

Можете пройти урок по сбору контактных данных, чтобы научиться получать фамилию, телефон, email и другие данные клиента.

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