Некоторые ответы по использованию мультивалюты с помощью встроенного редактора Dialogflow:
Как включить это в файл package.json
?
Указания по использованию npm
если вы пишете исполнение локально и не используете редактор.
Вам необходимо добавить эту строку в раздел dependencies
:
"multivocal": "^0.14.0"
и облачные функции Dialogflow / Firebase позаботится об импорте библиотеки. Вам не понадобятся библиотеки "actions-on-google", "dialogflow" или "dialogflow-выполнение", поэтому раздел может выглядеть примерно так:
"dependencies": {
"firebase-admin": "^5.13.1",
"firebase-functions": "^2.0.2",
"multivocal": "^0.14.0"
}
Как мне напишите мой индекс. js?
Простой пример предполагает, что вы можете поместить свою конфигурацию и код в отдельный файл ("color. js" в примере). Поскольку вы не можете сделать это с помощью встроенного редактора, общий шаблон вашего кода будет выглядеть примерно так:
// Import the library on the first line, so you can call methods on it to setup your configuration
const Multivocal = require('multivocal');
// Your configuration and code go here
// Setup the webhook as the final line
exports.dialogflowFirebaseFulfillment = Multivocal.processFirebaseWebhook;
Где находится регистрация и функции Intent Handler go?
В отличие от библиотеки выполнения диалогового потока, многоязычный не использует явный intentMap. Он поддерживает себя один, поэтому для регистрации функции Intent Handler вы должны использовать что-то вроде
Multivocal.addIntentHandler( intentName, handlerFunction );
НО , имейте в виду, что функции обработчика также немного отличаются.
Что? Чем они отличаются?
Multivocal имеет множество вещей, которые обрабатываются с помощью конфигурации, а не кода. Таким образом, нет никакого прямого аналога вызова функции agent.add()
, который вы имели бы с диалоговым потоком-выполнением или библиотекой actions-on-google.
Вместо этого ваша функция Intent Handler должна выполнять любую логи c вызовы базы данных или что-то еще, чтобы получить значения, которые будут использоваться в ответах, и сохранить их в среде. Каждый обработчик должен возвратить Обещание, содержащее среду.
Вы также должны установить конфигурацию для своего намерения - наиболее распространенным из которых является установка возможных шаблонов "Ответ". Самые простые шаблоны ответов просто включают текст и куда вставлять значения из окружения. Также рекомендуется запрашивать у пользователя, что он может делать дальше, поэтому мы можем настроить шаблон «Суффикс», который будет использоваться по умолчанию, или шаблон, используемый для указания c Intents, Actions или Outents.
Таким образом, если у вас был Intent с именем «color.favorite», и у вас было значение в среде, называемое «color» (которое ваш обработчик мог загрузить из базы данных), конфигурация для этого ответа в Engli sh может выглядеть что-то вроде этого. Он также включает суффикс по умолчанию, чтобы подсказать пользователю, что он может делать дальше.
const config = {
Local: {
en: {
Response: {
"Intent.color.favorite": [
"{{color}} is one of my favorite colors as well.",
"Oh yes, {{color}} can be quite striking.",
"I can certainly understand why you like {{color}}."
]
},
Suffix: {
Default: [
"What other color do you like?"
"Tell me another color."
]
}
}
}
}
, и вы зарегистрируете эту конфигурацию с
new Multivocal.Config.Simple( config );
Вы можете (и ожидаете) зарегистрироваться несколько конфигураций, хотя вы можете объединить их в один объект. Таким образом, приведенный выше раздел Response
может содержать разделы ответов для каждого из ваших Интентов по имени.
Хорошо, но как мне обработать "повторное" намерение?
Все, что вам нужно , нужно , чтобы предоставить Intent, для которого «Action» установлено значение «multivocal.repeat» в интерфейсе Dialogflow, и для которого включен webhook. Так что-то вроде этого будет работать:
Multivocal уже зарегистрировал обработчик и конфигурацию, основанную на этом.
Если вы хотите изменить возможные ответы, вы можете добавить конфигурацию для действия «multivocal.repeat». Что может выглядеть примерно так:
const enRepeat = [
"Sorry about that, let me try again.",
"I said:"
];
const config = {
Local: {
en: {
Response: {
"Action.multivocal.repeat": enRepeat
}
}
}
}
, а затем либо объединить эту конфигурацию с другими конфигурациями, которые вы написали, либо загрузить ее, как указано выше.
Чтобы подчеркнуть - в этом нет необходимости вам написать любой код для этого, просто некоторую необязательную конфигурацию.