Как я могу заставить Alexa отправлять аутентификацию в приложение Android перед выполнением голосовой команды

#alexa #alexa-skill #alexa-voice-service

#alexa #alexa-умение #alexa-voice-service

Вопрос:

Итак, это то, что я пытаюсь сделать. Когда я прошу Alexa включить свет (например), ему необходимо отправить код аутентификации в приложение для Android (которое мне также нужно разработать), затем, когда пользователи подтверждают код, тогда должен включиться свет.

Можно ли это сделать и есть ли какие-либо учебные пособия, которые объяснят это, или есть лучший способ защиты голосовых команд для выполнения определенных функций?

Любая помощь будет оценена.

Я следовал этому руководству, поэтому я думаю, что при запросе включить свет, Alexa запрашивает PIN-код или пароль, а затем отправляет команду на PIN-код GPIO

Ниже приведен код в руководстве:

 import logging
import os

from flask import Flask
from flask_ask import Ask, request, session, question, statement
import RPi.GPIO as GPIO

app = Flask(__name__)
ask = Ask(app, "/")
logging.getLogger('flask_ask').setLevel(logging.DEBUG)

STATUSON = ["on", "switch on", "enable", "power on", "activate", "turn 
on"] 
# all values that are defined as synonyms in type
STATUSOFF = ["off", "switch off", "disactivate", "turn off", "disable", 
"turn off"]

@ask.launch
def launch():
speech_text = 'Welcome to the Raspberry Pi alexa automation.'
return 
question(speech_text).reprompt(speech_text).simple_card(speech_text)

@ask.intent('LightIntent', mapping = {'status':'status'})
# HERE TO ASK FOR CODE THEN IF CORRECT CONTINUE TO TURN LIGHT ON
def Gpio_Intent(status,room):
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(17,GPIO.OUT)
if status in STATUSON:
    GPIO.output(17,GPIO.HIGH)
    return statement('Light was turned on')
elif status in STATUSOFF:
    GPIO.output(17,GPIO.LOW)
    return statement('Light was turned off')
else:
    return statement('Sorry, this command is not possible.')

@ask.intent('AMAZON.HelpIntent')
def help():
speech_text = 'You can say hello to me!'
return  
question(speech_text).reprompt(speech_text).simple_card('HelloWorld', 
speech_text)


@ask.session_ended
def session_ended():
return "{}", 200


if __name__ == '__main__':
if 'ASK_VERIFY_REQUESTS' in os.environ:
    verify = str(os.environ.get('ASK_VERIFY_REQUESTS', '')).lower()
    if verify == 'false':
        app.config['ASK_VERIFY_REQUESTS'] = False
app.run(debug=True)
 

Спасибо

Комментарии:

1. Как связать ваше приложение с alexa?

2. Ну, в этом-то и дело, можно ли это сделать? Я имею в виду, если вы хотите обезопасить, скажем, ограничить доступ к включению определенного света в вашем доме и только путем утверждения кода, отправленного в ваше приложение (которое каким-то образом должно быть связано с Alexa либо по номеру мобильного телефона, либо по чему-то еще)

3. Если вы используете Bluetooth, я бы не стал использовать 2-й пароль. amazon.com/gp/help/customer /…

4. Куда он отправит ее, если не знает, кто спрашивает?

5. «Или, может быть, я могу сказать «включить свет», и Алекса запросит пароль, а затем, если все правильно, продолжит включать свет?» — У Alexa довольно короткий тайм-аут для ответов. Сможет ли навык отправить пароль на телефон и попросить клиента прочитать ответ через 10-20 секунд? Как вы связываете приложение с навыком, чтобы обработчики отправляли пароль на правильный телефон для клиента?