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

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

App

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

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

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

App

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