Отправляет данные диалогов в Google Chatbase.
Middleware for yandex-dialogs-sdk
npm i yandex-dialogs-sdk-chatbase --save
yarn add yandex-dialogs-sdk-chatbase
Get api key, add a bot here - https://chatbase.com/bots/main-page
const { Alice } = require('yandex-dialogs-sdk');
const chatbase = require('yandex-dialogs-sdk-chatbase');
const alice = new Alice();
alice.use(chatbase('your_api_key'));
alice.any(ctx => {
const msg = 'Hello';
// перед ответом пользователю нужно вызывать этот метод с текстом ответа
ctx.chatbase.sendEvent(msg);
return Reply.text(msg);
});
alice.listen(8080);
Чтобы использовать chatbase на полную мощность, нужно разметить навык.
Подробнее об intents, not handled messages можно почитать в chatbase quickstart.
Нужно передавать распознанную команду как intent: ctx.chatbase.setIntent('greeting')
.
Нужно отмечать их через ctx.chatbase.setNotHandled()
или ctx.chatbase.setHandled(false)
.
Отзывы можно помечать через ctx.chatbase.setAsFeedback()
. Не обнаружено последствий этой разметки.
Версию можно передавать вторым параметром в конструкторе, либо через ctx.chatbase.setVersion('1.2.3')
.
Пример с использованием всех возможностей:
const { Alice } = require('yandex-dialogs-sdk');
const chatbase = require('yandex-dialogs-sdk-chatbase');
const packageJson = require('./package.json');
const alice = new Alice();
alice.use(chatbase('your_api_key', packageJson.version)); // версию можно указать в конструкторе
// можно указать версию навыка и так, но это избыточно
alice.use((ctx, next) => {
ctx.chatbase.setVersion(packageJson.version);
return next(ctx);
});
alice.command('спасибо', ctx => {
const msg = 'Пожалуйста';
ctx.chatbase.setIntent('thankyou')); // любую понятую команду надо размечать
ctx.chatbase.setAsFeedback()); // оценочный запрос
ctx.chatbase.sendEvent(msg); // перед ответом пользователю нужно вызывать этот метод с текстом ответа
return Reply.text(msg);
});
alice.any(ctx => {
const msg = 'Не понимаю';
ctx.chatbase.setNotHandled(); // отмечаем непонятное
ctx.chatbase.sendEvent(msg);
return Reply.text(msg);
});
alice.listen(8080);