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

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

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

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

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

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

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

  • Каналы ВКонтакте и 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 и другие данные клиента.

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