Вдохновение
У меня было немного свободное время в пятницу, и приходите к доказательству концептуальной статьи по отправке TexttOShepecheCh для Echo Amazon.
Первоначально я был вдохновлен возможностью писать пользовательские фразы на эхо Amazon, чтение следующую статью https://www.gehriig.info/alexa/alexa.html
К сожалению, пример не работал для себя из коробки – логин Shell никогда не работал для меня с CAPTCHA, таким образом, в следующих трех точках на получение правильного сеанса cookie для запуска демонстрации.
Эта статья является резюме выводов и может быть отправной точкой для некоторых новых экспериментов.
Печенье, необходимое для работы с «API»
Для работы с EchoDot API через Curl или Wget, самым простым будет хранить необходимые файлы файла cookie Sessions. Формат: Макет файла файла cookies.txt netscape.
Запись, которая выглядит так:
.netscape.com TRUE / FALSE 946684799 NETSCAPE_ID 100103
Каждая строка представляет собой одну часть сохраненной информации. Вкладка вкладывается между каждым из полей.
Слева направо, вот что представляет каждое поле:
Домен – домен, который создал, и который может прочитать переменную.
Флаг – настоящее/ложное значение, указывающее, могут ли все машины в данном домене могут получить доступ к переменной. Это значение устанавливается автоматически браузером, в зависимости от значения, которое вы установили для домена.
Путь – путь в домене, для которого действительна переменная.
Безопасность – настоящее значение/ложное значение, указывающее, необходимо ли защищенное соединение с доменом для доступа к переменной.
Истечение истечения срока действия. Время с истечением переменной. Время UNIX определяется как количество секунд с 1 января 1970 года 00:00:00 GMT.
Имя – имя переменной.
значение – значение переменной.
Для работы с Amazon Alexa API используется после минимального набора файлов cookie:
.amazon.com TRUE / FALSEubid-main .amazon.com TRUE / FALSE csrf .amazon.com TRUE / FALSE session-id .amazon.com TRUE / FALSE x-main " " .amazon.com TRUE / FALSE session-token " " .amazon.com TRUE / TRUE at-main
Срок действия может быть установлен на некоторое далекое время в будущем, как 2038 2177406671
, но не ясно, если это действительно продлевает сеанс, Даже если API время от времени пингирует.
Ручной способ получить файлы cookie alexa
Откройте анонимную вкладку, говоря в браузере Firefox. Используйте расширение HTTPS://github.com/rotemdan/exportcookies для экспорта cookies для домена Amazon.com. Фильтр только файлы cookie, связанные с выше.
Не сравнивало, но другие браузеры должны позволить также более или менее легко экспортировать файлы cookie.
Более или менее автоматический способ получить файлы cookie alexa
Можно использовать подход на https://github.com/apollon77/alexa-cookie. Он возвращается в основном cookie, который хорошо играет с https://github.com/apollon77/alexa-remote
Таким образом, я должен был немного изменить как Alexa-Node-Cookie-Helper
Чтобы вернуть также Cookie.txt совместимый вывод
node ./get-cookies-txt.js
Что хорошо с этим подходом, в том, что если вы получите CAPTCHA (очень часто для домена Amazon.com) – у вас есть возможность до сих пор входить в систему интерактивно и получить необходимые файлы cookie
Призывая команды Alexa из оболочки
Теперь вы можете поместить забрать сеанс cookie в /tmp/.alexa.cookie
и использовать она
Вот еще лучший – это Shell Script https://github.com/thorsten-gehrig/alexa-remote-control by Thorsten Gehrig. Который предоставляет несколько полезных вариантов
alexa.sh [-d|ALL] -e > | -b [list|<"AA:BB:CC:DD:EE:FF">] | -q | -r <"station name"|stationid> | -s | -t | -u | -v | -w | -i | -p | -P | -S | -a | -m [device_1 .. device_X] | -lastalexa | -l | -h -e : run command, additional SEQUENCECMDs: weather,traffic,flashbriefing,goodmorning,singasong,tellstory,speak:' ',automation:' ' -b : connect/disconnect/list bluetooth device -q : query queue -r : play tunein radio -s : play library track/library album -t : play Prime playlist -u : play Prime station -v : play Prime historical queue -w : play library playlist -i : list imported library tracks -p : list purchased library tracks -P : list Prime playlists -S : list Prime stations -a : list available devices -m : delete multiroom and/or create new multiroom containing devices -lastalexa : print device that received the last voice command
Я использую Alexa для некоторых пользовательских уведомлений, тем самым вариант TTS доскально интересен для меня
alexa.sh -d RZ -e "speak: 'meow'"
Другие автоматики покрыты OpenHab.
Интерфейс программирования для Nodejs
Здесь снова NPM библиотека https://github.com/apollon77/alexa-remote представляет интерес, как содержит мало свежих коммитов.
Грязный пример W/O Обещания ниже:
let Alexa = require('alexa-remote2'); let alexa = new Alexa(); let cookie = 'session-id=.../ /...=" csrf=12345780'; alexa.init({ cookie: cookie, // cookie if already known, else can be generated using email/password // email: '...', // optional, amazon email for login to get new cookie // password: '...', // optional, amazon password for login to get new cookie bluetooth: false, logger: console.log, // optional alexaServiceHost: 'pitangui.amazon.com', // optional, e.g. "pitangui.amazon.com" for amazon.com, default is "layla.amazon.de" // userAgent: '...', // optional, override used user-Agent for all Requests and Cookie determination acceptLanguage: 'en-US', // optional, override Accept-Language-Header for cookie determination amazonPage: 'amazon.com', // optional, override Amazon-Login-Page for cookie determination and referer for requests useWsMqtt: true // optional, true to use the Websocket/MQTT direct push connection }, function (err) { if (err) { console.log (err); return; } // for (let device in this.names) { // console.log (device); // } alexa.sendCommand("RZ", "goodmorning", null, function (err, payload) { if (err) { console.log(err); return; } console.log(payload); }); } );
Безопасность
Текущие подходы включают хранение конфиденциальной информации сеанса на диске, в том числе в некоторых случаях логин и пароль. Вы определенно не хотите делать это с вашей основной учетной записью – так что вы можете создать техническую учетную запись Amazon, и добавить ее в свою домохозяйство Amazon в соответствии с
Хотя говорится, что информация об оплате разделена, по умолчанию по умолчанию Sharing не включен, но с сессией, сделанным с этой общей учетной записью – вы видите устройства и можете назвать некоторые API.
Лечить безопасность с необходимым важность. Правильный путь будет использоваться Alexa Skill SDK.
Интеграция с SmartHome
OpenHab работает обязательным https://www.openhab.org/addons/bindings/amazonechocontrol/Я почти уверен, что другие системы, такие как Domoticz, уже тоже есть интеграции.
Резюме
Даже с ограниченным набором команд, а немного хэкинский способ работать с устройством (будет работать до тех пор, пока Alexa.amazon.com логика остается неизменным) вы можете автоматизировать несколько дополнительных вещей в вашем доме. Для более серьезных решений вам нужно будет реализовать свои собственные навыки Алекса.
Несколько кодовых фрагментов, упомянутых в статье, можно найти на https://github.com/voronenko/alexa-echodot-shell