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

Думает, что помогает
Регистрация
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
Сообщения
4,761
#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
Сообщения
240
#7
@Mainc0de, возможно что-то где-то... с последними обновлениями "тестирование" показало что все работает, без каких-либо дополнительных действий не прописанных в первом сообщении темы.
Обновления движка через пункт меню могут включать не все обновления, что-то системное нужно обновлять и править в ручную. Например конфиг nginx...
За 2 месяца было много изменений связанных с кэшированием.
 
Последнее редактирование:
Енот
Новичо́к, через «о́»
Регистрация
17 Янв 2018
Сообщения
100
#8
@Mainc0de, возможно что-то где-то... с последними обновлениями "тестирование" показало что все работает, без каких-либо дополнительных действий не прописанных в первом сообщении темы.
Обновления движка через пункт меню могут включать не все обновления, что-то системное нужно обновлять и править в ручную. Например конфиг nginx...
За 2 месяца было много изменений связанных с кэшированием.
ОК. Посмотрю коммиты на ГитХабе, Может что-нибудь найду..
 
Енот
Регистрация
17 Мар 2018
Сообщения
240
#9
@Mainc0de, коммиты смотри не только по acms но и по io, некоторые записи могут прописываться на этапе установки, с обновлениями они тоже могут изменяться ;)
 
Енот
Регистрация
17 Мар 2018
Сообщения
240
#10
Черновик снят с модерации:
Вебхук: Ответ Webhook не соответствует протоколу.
капец модерация, все вроде бы работает, но видимо где-то что-то не соответствует их формату или про какой протокол речь?
 

App

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

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

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

App

Думает, что помогает
Регистрация
26 Дек 2017
Сообщения
379
#14
Пока жду реакции Платона, модераторы снова отклонили диалог с той же общей причиной. О каком вообще протоколе речь? @App есть мысли?
возможно при проверке модератором он видит какую-то ошибку, может timeout.
 
Енот
Регистрация
17 Мар 2018
Сообщения
240
#15
@App, на дополнительное письмо, пока что Платон говорит что 2 и 3 активационные имена не соответствуют расшифровке имени диалога и необходимо оставить 1. Хотя уже подавался аналогичный диалог со всеми корректировками в названии и активационных именах, но пришел тот же отказ именно по вебхуку, а не по именам. Что-то у них в головах не соответствует.
Отправил корректирующее письмо...
 
Енот
Новичо́к, через «о́»
Регистрация
13 Янв 2018
Сообщения
319
#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