Я считаю, что говорить о том, что «на самом деле это не имеет значения, пока это легко понять другим», - это немного противоречиво.Если бы существовали соглашения об именах, кому-то было бы намного проще понять нового бота Dialogflow.
Вот мой взгляд:
Intents
Я использую точки длягруппа намерений и подразумевает иерархию.Первая часть имени намерения в идеале - это просто одно слово, которое четко указывает на основной предмет намерения.Например, name
будет намерением, которое получает имя пользователя в качестве ввода.name.confirm
будет последующим намерением, которое получит подтверждение имени.name.confirm.yes
будет намерением, когда пользователь дал подтверждение.
Это в контексте бота, который собирает контактные данные, поэтому подразумевается функция input .В чатоботе более смешанного типа вы можете добавить тип намерения в качестве первого слова, чтобы лучше классифицировать ваши намерения.Например, input.name.confirm.yes
или FAQ.shipping.overseas
или smalltalk.agent.location
( 'Где вы?' ).
Я использую тот же подход для резервных намерений: fallback.name
будет резервным намерениемэто срабатывает, когда бот ждет, пока пользователь введет свое имя, но не понимает ответ.
Контексты
Для контекстов я использую случай верблюда.Например, awaiting_email
будет контекстом, который устанавливается, когда бот ожидает, когда пользователь введет свой адрес электронной почты.Получив адрес электронной почты, я установил бы контекст email
для передачи информации, чтобы другие намерения могли использовать ее в качестве контекста.Или, если я собираю несколько частей данных о пользователе, я установлю контекст user
, и другие намерения могут получить доступ к определенным параметрам, например, через user.email
.
Я сделал видео оТема также: https://youtu.be/kgKuS2RJcy4
Очевидно, что все идут с немного другой точки зрения, потому что их область применения различна.Я уверен, что в конце концов мы доберемся до общего стандарта!