Я был на хакатоне в UCR под названием Citrus Hacks и научился делать приложение Alexa под названием Hip Hop Headlines, которое будет информировать вас о последних новостях хип-хопа. Прошло около 23 часов. Я разбился около 8 утра. Затем этот случайный чувак разбудил меня через час и начал разговаривать со мной около 9 утра. Я не винил его за это, потому что на хакатоне я присутствовал очень широко и представился всем. Так что, естественно, он был заинтересован, но серьезно, чувак, я понятия не имел, о чем мы говорили, и окно позади тебя было очень ярким.
В любом случае, я просмотрел этот урок, чтобы сделать 90% своего приложения Alexa. Что. Вы думали, что я буду повторять пошаговые инструкции? Просто посмотри на это, братан.
Затем я использовал свою консоль Amazon Lambda для функции, которую сделал из видео, и экспортировал свою функцию в виде ZIP-файла, потому что их встроенный редактор — отстой.
После загрузки и разархивирования файла я вошел (я создал этот глагол) в папку и выполнил эту команду
npm install — save request request-promise cheerio
Это позволило мне совершать HTTP-запросы на веб-сайты и очищать их HTML. Вот мой код того, как я это сделал.
В верхней части файла, где мы импортируем пакеты и константные значения, я написал это. Обязательно введите URL-адрес, который вы хотите очистить, заменив УДАЛЕНО.
const rp = require('request-promise'); const cheerio = require('cheerio'); const options = { uri: `REDACTED`, transform: function (body) { return cheerio.load(body); } };
В моем коде обработчиков я написал основную часть логики внутри моей функции намерения. На написание заголовков ушло всего 10 минут. Это потому, что я знаю, как пользоваться библиотеками. Если вам нужна помощь, просто погуглите «как очистить учебник Cheerio Nodejs». В любом случае, вот мой код.
'GetNewFactIntent': function () { var self = this; rp(options) .then(($) => { var title = ""; if($('.home_featured_story-title').length <= 0){ title = "No News For Today"; } else { $('.home_featured_story-title').each(function(i, element){ title += $(this).text() + ". "; }); } self.response.speak(title.replace(/-/g," ").replace(/&/g,"")); self.emit(':responseReady'); }) .catch((err) => { console.log(err); self.response.speak("Yo something went wrong"); self.emit(':responseReady'); }); },
Строка «заголовок» в основном объединяет все заголовки, извлеченные с веб-сайта, добавляя точку после каждого заголовка. Затем я отправляю строку заголовка обратно, используя ответ. Внимательно посмотрите, как я удалил такие строки, как «-» и «&», из своих заголовков. Это потому, что Алекса тупица и ничего не говорит и не говорит, если есть какой-либо символ, отличный от a-z, A-Z или 0–9.
Хорошо, мои чуваки, слушайте. Поэтому, когда вы хотите загрузить свой код в Lamba, вам нужно заархивировать файлы. Вы должны выбрать каждый файл/папку отдельно и сжать их следующим образом. Я только что сэкономил тебе 3 часа.
Затем вы можете взять этот заархивированный файл, скорее всего, он называется Archive.zip, это не имеет значения, просто загрузите его в Lambda здесь.
Затем вы переходите на вкладку Alexa Amazon Developer и создаете свое приложение.
Валла.
Я также обновил свои команды Alexa, добавив множество «высказываний», но ни одно из них не работает. Это потому, что Alexa принимает вашу словесную команду и контекст ситуации, а затем помещает их в алгоритм суперИИ, чтобы выяснить, какой навык запустить. Алгоритм полный треш, и ни одно из ваших высказываний не сработает, но я все равно добавил кучу. Не забудьте после этого сохранить модель и построить модель. Вот как это выглядит:
Единственная работающая голосовая команда — это та, которую вы помещаете на странице вызова в поле «Название вызова навыка»:
Я не понимаю, почему другие высказывания не работают, но по крайней мере одно из них работает. Поэтому я отправил его на проверку, а затем они опубликовали мое приложение в прямом эфире. ура!
Вот ссылка на приложение: https://www.amazon.com/dp/B07CLCCD61/ref=sr_1_1?s=digital-skills&ie=UTF8&qid=1524625893&sr=1-1&keywords=hip+hop+headlines