
Product
Introducing Socket Scanning for OpenVSX Extensions
Socket now scans OpenVSX extensions, giving teams early detection of risky behaviors, hidden capabilities, and supply chain threats in developer tools.
yandex-dialogs-sdk
Advanced tools
Создавать навыки для Алисы — это очень просто.
npm i yandex-dialogs-sdk
yarn add yandex-dialogs-sdk
const Alice = require('yandex-dialogs-sdk')
const alice = new Alice()
alice.command('дай совет', async (ctx) => {
return ctx.reply('Make const not var')
})
alice.command(['билет в кино', 'что посмотреть', 'что показывают'], ctx => {
return ctx.reply('')
})
alice.command(/(https?:\/\/[^\s]+)/g, ctx => ctx.reply('Matched a link!'))
alice.any(async (ctx) => {
return ctx.reply('О чём это вы?')
})
alice.listen('/', 80)
Можно использовать как постоянно работающий сервер, так и serverless-платформы, такие как AWS Lambda или Google Cloud Functions. Смотрите папку
/examples
const inBar = new Scene('in-the-bar')
inBar.enter('Алиса, пойдём в бар!', ctx => ctx.reply('Пойдём.'))
inBar.command('ты сейчас в баре?', ctx => ctx.reply('Да!'))
inBar.leave('Пошли отсюда', ctx => ctx.reply('Уже ухожу.'))
alice.registerScene(inBar)
alice.command('ты сейчас в баре?', ctx => ctx.reply('Нет!'))
alice.command('забронируй встречу в ${where} на ${when}', ctx => {
const { where, when } = ctx.body
// where — '7-холмов'
// when — '18:00'
ctx.reply(`Готово. Встреча состоится в ${where}. Тебе напомнить?`)
})
alice.handleRequestBody(
generateRequest('забронируй встречу в 7-холмов на 18:00')
)
Больше примеров в папке ./examples
Создавайте сложные конструкции с кнопками и кастомизацией с помощью фабрик:
Создайте кнопку:
const buyBtn = ctx.buttonBuilder
.text('Купить слона')
.url('example.com/buy')
.payload({buy: "slon"})
.shouldHide(true)
.get()
Создайте ответ:
alice.command('купить слона', async (ctx) => {
const replyMessage = ctx.replyBuilder
.text('Вы что, серьёзно?')
.tts('Вы что, серьё+зно?')
.addButton(buyBtn)
.get()
return ctx.reply(replyMessage)
})
API очень простой и удобный.
Сущность для управления состоянием ответа. Есть следующие методы и свойства:
Генерирует ответ для сервера, какой вы захотите.
Метод доступен из контекста. ctx.replyBuilder
Устанавливает текстовое сообщение в ответе.
Кстати, можно использовать эмодзи 👌
Устанавливает голосовое сообщение, которое произнесёт Алиса.
Доступна особая разметка: например - - паузы и +ударения.
Добавляет к ответу кнопку. Кнопки добавляются по очереди:
/* example */
ctx.replyBuilder.addButton(btn1).addButton(btn2)
"response": {
"buttons": ["<btn1>", "<btn2>"],
},
Default — false
Признак конца разговора. Завершать ли сессию или продолжить.
Получить результат выполнения фабрики. В конце всегда вызывайте этот метод.
Пример
const replyMessage = ctx.replyBuilder
.text('Вы что, из Англии?')
.tts('Вы что, из Англии?')
.addButton(btn1)
.addButton(btn2)
.get()
{
"response": {
"buttons": ["<btn1>", "<btn2>"],
"end_session": false,
"text": "Вы что, из Англии?",
"tts": "Вы что, из Англии?"
},
"session": {
"some": "session..."
},
"version": "1.0"
}
Метод доступен из контекста. ctx.buttonBuilder
Устанавливает текст кнопки.
Тоже устанавливает текст кнопки.
Используйте, какой больше нравится
Устанавливает URL, который откроется при нажатии на кнопку.
Устанавливает URL, который откроется при нажатии на кнопку.
Нужно ли прятать кнопку после следующей реплики пользователя?
Произвольный JSON, который Яндекс.Диалоги должны отправить обработчику, если данная кнопка будет нажата. Максимум 4096 байтов.
Получить результат выполнения фабрики. В конце всегда вызывайте этот метод.
Пример
const buyBtn = ctx.buttonBuilder
.text('Купить слона')
.url('example.com/buy')
.payload({buy: "slon"})
.shouldHide(true)
.get()
Давайте вместе сделаем библиотеку ещё удобнее для разработчиков.
Phil Romanov © MIT 2018
FAQs
Build your skill for Alice with ease.
The npm package yandex-dialogs-sdk receives a total of 16 weekly downloads. As such, yandex-dialogs-sdk popularity was classified as not popular.
We found that yandex-dialogs-sdk demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Socket now scans OpenVSX extensions, giving teams early detection of risky behaviors, hidden capabilities, and supply chain threats in developer tools.

Product
Bringing supply chain security to the next generation of JavaScript package managers

Product
A safer, faster way to eliminate vulnerabilities without updating dependencies