Делаем голосовой поиск по сайту с помощью бота/навыка Яндекс Алиса

Регистрация
20 Дек 2017
Сообщения
7
#1

Чтобы сайт принимал запросы от Алисы, Вам нужно добавить его в Яндекс.Диалоги
  • Добавляем новый навык Алисе
1.png

  • Прописываем настройки
2.png

  1. Название: Будет видно в общем каталоге навыков;
  2. Активационное имя: Выбирайте такое, в котором человек совершит минимум ошибок в произношении, например «онлайн фильмы на киношке», «поиск фильма на кинопоиске» и т.д., можете открыть Алису в телефоне и посмотреть, какие запросы Алиса лучше понимает, например если у Вас сайт «кинорезка», она в большинстве случаев сделает исправление на «кинопоиск»;
  3. Webhook URL: https://ВашСайт.net/alice-webhook

Далее открываем файл /routes/website.js и прописываем в конце, перед module.exports = router; код:

JavaScript:
router.post('/alice-webhook', function (req, res) {
    var options = {"domain":'' + config.domain};
    var result = {"session": req.body.session || {}, "version": req.body.version || "1.0"};
    if (!req.body.request || !req.body.request.command) {
        result.response = {
            "text": "Какой фильм или сериал Вам найти?",
            "tts": "Какой фильм или сериал Вам найти?",
            "end_session": false
        }; return res.json(result); }
    category.one(config.urls.search, CP_regexp.str(req.body.request.command), 1, '', options,
        function (err, render) {
            result.response = (render && render.movies && render.movies.length) ? {
                "text": "Вот что мне удалось найти:", "tts": "Вот что мне удалось найти:",
                "buttons": render.movies.map(function (movie) {return {
                    "title": movie.title + ' (' + movie.year + ')',
                    "url": movie.url,
                    "hide": false
                }}), "end_session": false} : {
                "text": "Простите, но ничего не найдено.",
                "tts": "Простите, но ничего не найдено.",
                "end_session": false};
            res.json(result);
        }); });
Всё, CinemaPress ACMS принимает запросы от Алисы и выдает пользователям ссылки на Ваш сайт. Можете отправлять на модерацию и ждать одобрения. После модерации, сможете добавить Ваш навык/бота в общий каталог навыков Алисы.

UPD: Код выше изменен и лучше не использовать кэширование в Nginx для Алисы, для этого добавить в
/home/ВашСайт.net/etc/nginx/conf.d/default.conf перед location /admin { код:
NGINX:
    location /alice-webhook {
        proxy_max_temp_file_size 0;
        proxy_next_upstream      error timeout http_500 http_502 http_503 http_504;
        proxy_set_header         Connection "";
        proxy_set_header         Host            $host;
        proxy_set_header         X-Real-IP       $remote_addr;
        proxy_set_header         X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_http_version       1.1;
        proxy_pass               http://ВашСайт_net;
    }
 
Последнее редактирование:
Енот
Новичо́к, через «о́»
Регистрация
17 Янв 2018
Сообщения
100
#2
Отличная идея! Один момент - после добавления webhook для Алисы hard reset надо делать? У меня яндекс говорит "ошибка сервера" по пути МойСайт/alice-webhook. Код добавлен в маршруты, в чем косяк?
 
Регистрация
15 Дек 2017
Сообщения
5,067
#3
Отличная идея! Один момент - после добавления webhook для Алисы hard reset надо делать? У меня яндекс говорит "ошибка сервера" по пути МойСайт/alice-webhook. Код добавлен в маршруты, в чем косяк?
Сайт должен сам перезагрузиться при внесении изменений в код. Если этого не произошло, то pm2 restart all
 
Енот
Новичо́к, через «о́»
Регистрация
17 Янв 2018
Сообщения
100
#4
Сайт должен сам перезагрузиться при внесении изменений в код. Если этого не произошло, то pm2 restart all
Скопировал обновленный код + конфиг nginx. Затем service nginx restart и pm2 restart all. Теперь Webhook URL говорит что "1. HTTP ошибка в ответе webhook: 502"
 

App

Регистрация
26 Дек 2017
Сообщения
379
#5
Скопировал обновленный код + конфиг nginx. Затем service nginx restart и pm2 restart all. Теперь Webhook URL говорит что "1. HTTP ошибка в ответе webhook: 502"
проверил на коде выше, даёт ответ отлично.

mir.png


попробуйте отключить service fail2ban stop может он блокирует.
в nginx конфиге, ВашСайт.net заменен на URL айта?
 
Енот
Новичо́к, через «о́»
Регистрация
17 Янв 2018
Сообщения
100
#6
проверил на коде выше, даёт ответ отлично.

попробуйте отключить service fail2ban stop может он блокирует.
в nginx конфиге, ВашСайт.net заменен на URL айта?
Отключил fail2ban, proxy_pass стоит адрес моего сайта (такой же как и в location /admin) и все равно 502 ошибка. Обновления движка не последние кстати, а где-то 2х месячной давности, может в этом дело?
 
Енот
Регистрация
17 Мар 2018
Сообщения
246
#7
@Mainc0de, возможно что-то где-то... с последними обновлениями "тестирование" показало что все работает, без каких-либо дополнительных действий не прописанных в первом сообщении темы.
Обновления движка через пункт меню могут включать не все обновления, что-то системное нужно обновлять и править в ручную. Например конфиг nginx...
За 2 месяца было много изменений связанных с кэшированием.
 
Последнее редактирование:
Енот
Новичо́к, через «о́»
Регистрация
17 Янв 2018
Сообщения
100
#8
@Mainc0de, возможно что-то где-то... с последними обновлениями "тестирование" показало что все работает, без каких-либо дополнительных действий не прописанных в первом сообщении темы.
Обновления движка через пункт меню могут включать не все обновления, что-то системное нужно обновлять и править в ручную. Например конфиг nginx...
За 2 месяца было много изменений связанных с кэшированием.
ОК. Посмотрю коммиты на ГитХабе, Может что-нибудь найду..
 
Енот
Регистрация
17 Мар 2018
Сообщения
246
#9
@Mainc0de, коммиты смотри не только по acms но и по io, некоторые записи могут прописываться на этапе установки, с обновлениями они тоже могут изменяться ;)
 
Енот
Регистрация
17 Мар 2018
Сообщения
246
#10
Черновик снят с модерации:
Вебхук: Ответ Webhook не соответствует протоколу.
капец модерация, все вроде бы работает, но видимо где-то что-то не соответствует их формату или про какой протокол речь?
 

App

Регистрация
26 Дек 2017
Сообщения
379
#11
Черновик снят с модерации:
Вебхук: Ответ Webhook не соответствует протоколу.
капец модерация, все вроде бы работает, но видимо где-то что-то не соответствует их формату или про какой протокол речь?
при успешном запросе, формат по документации соответствует. Webhook по https передается?

Отключил fail2ban, proxy_pass стоит адрес моего сайта (такой же как и в location /admin) и все равно 502 ошибка. Обновления движка не последние кстати, а где-то 2х месячной давности, может в этом дело?
возможно закэшировалась ошибка. посмотрите логи pm2 logs
 
Енот
Регистрация
17 Мар 2018
Сообщения
246
#12
при успешном запросе, формат по документации соответствует. Webhook по https передается?
все как по инструкции, сайт работает по https c действующим сертификатом без cdn

Написал модераторам, возможно будет более конкретный ответ.
 
Енот
Регистрация
17 Мар 2018
Сообщения
246
#13
Пока жду реакции Платона, модераторы снова отклонили диалог с той же общей причиной. О каком вообще протоколе речь? @App есть мысли?
 

App

Регистрация
26 Дек 2017
Сообщения
379
#14
Пока жду реакции Платона, модераторы снова отклонили диалог с той же общей причиной. О каком вообще протоколе речь? @App есть мысли?
возможно при проверке модератором он видит какую-то ошибку, может timeout.
 
Енот
Регистрация
17 Мар 2018
Сообщения
246
#15
@App, на дополнительное письмо, пока что Платон говорит что 2 и 3 активационные имена не соответствуют расшифровке имени диалога и необходимо оставить 1. Хотя уже подавался аналогичный диалог со всеми корректировками в названии и активационных именах, но пришел тот же отказ именно по вебхуку, а не по именам. Что-то у них в головах не соответствует.
Отправил корректирующее письмо...
 
Енот
Новичо́к, через «о́»
Регистрация
13 Янв 2018
Сообщения
536
#17
ОК. Посмотрю коммиты на ГитХабе, Может что-нибудь найду..
Вы решили проблему с 502 ошибкой, если да то подскажите как? мне обновление через консоль так же не помогло.
 
Енот
Новичо́к, через «о́»
Регистрация
17 Янв 2018
Сообщения
100
#18
Вы решили проблему с 502 ошибкой, если да то подскажите как? мне обновление через консоль так же не помогло.
Нет, та же 502 ошибка. Обновления последние.
 

App

Регистрация
26 Дек 2017
Сообщения
379
#20
Вы решили проблему с 502 ошибкой, если да то подскажите как? мне обновление через консоль так же не помогло.
  1. прописать nginx запись из первого поста
  2. отключить кэширование cloudflare (деактивировать облако на А-записи)
  3. очистить файловый кэш rm -rf /var/cinemacache/* /var/ngx_pagespeed_cache/*
  4. очистить кэш через админ-панель
  5. отключить service fail2ban stop
  6. перезагрузить service nginx restart
  7. перезагрузить pm2 restart all
  8. очистить все логи pm2 pm2 flush
  9. запустить логирование запросов tail -f /var/log/nginx/*
  10. проверить работу в панели разработчика Алисы
  11. покажите что показало в логах при запросе и что в pm2 logs
 
Енот
Регистрация
17 Мар 2018
Сообщения
246
#21
столько проблем из-за этого cloudflare, зачем его так все используют :rolleyes::D
 
Енот
Новичо́к, через «о́»
Регистрация
17 Янв 2018
Сообщения
100
#22
Енот
Регистрация
17 Мар 2018
Сообщения
246
#23
@Mainc0de, тогда странно, у меня подозрения пали только на него в ваших случаях... скинул в лс системный nginx с учетом всех обновлений для примера, отличия если и есть то должны быть несущественные, стандартный по cp есть в репозиториях, может там что не так ;)
 
Последнее редактирование:
Енот
Новичо́к, через «о́»
Регистрация
3 Мар 2018
Сообщения
360
#27
Кто-то решил проблему с кодом 502?
 
Новичо́к, через «о́»
Регистрация
18 Мар 2019
Сообщения
2
#28
Всем привет! Подскажите пожалуйста как пройти модерацию, может у кого есть пример настроек Алисы для киносайта. Перебрал уже все что можно, все равно не проходит. Может Яшины модеры плохо относятся к киношным сайтам...:unsure: Прислали такой ответ
Здравствуйте! Ваш навык не прошёл модерацию по следующим причинам: Активационные имена: Каждое активационное имя должно являться аббревиатурой либо склонением названия навыка, либо сокращенной/развернутой формой от Названия навыка Примеры: для Названия навыка "Космический квест" можно использовать имя "игра космический квест"; для названия навыка "ТКС" можно использовать имя "Тиньков"; для названия навыка "Сбербанк" можно использовать "Сбербанку", "Сбербанка". Вебхук и сценарий: Навык должен отдавать инструкцию по своему использованию на команды "Помощь" и "Что ты умеешь". За разъяснениями вы всегда можете обратиться в службу поддержки: dialogs@support.yandex.ru С уважением, команда Яндекс Диалогов
 
Регистрация
15 Дек 2017
Сообщения
5,067
#29
Может Яшины модеры плохо относятся к киношным сайтам...
Даже если навык пройдет модерацию, может быть удален со временем.

Попробуйте сделать навык связанные со словом Трейлер, возможо тогда пройдет.
 
Енот
Новичо́к, через «о́»
Регистрация
7 Авг 2020
Сообщения
286
#30
Тема еще актуальна ?
судя по всему за это время много изменений было.
Инструкция не рабочая.

@App @Alisa просьба актуализировать инструкцию.