Alexa-news-stentiment-evalu.../f-ask/samples/audio/simple_demo/ask_audio.py

90 lines
2.5 KiB
Python
Raw Normal View History

2019-04-12 19:32:29 +00:00
import logging
import os
from flask import Flask, json, render_template
from flask_ask import Ask, request, session, question, statement, context, audio, current_stream
app = Flask(__name__)
ask = Ask(app, "/")
logger = logging.getLogger()
logging.getLogger('flask_ask').setLevel(logging.INFO)
@ask.launch
def launch():
card_title = 'Audio Example'
text = 'Welcome to an audio example. You can ask to begin demo, or try asking me to play the sax.'
prompt = 'You can ask to begin demo, or try asking me to play the sax.'
return question(text).reprompt(prompt).simple_card(card_title, text)
@ask.intent('DemoIntent')
def demo():
speech = "Here's one of my favorites"
stream_url = 'https://www.vintagecomputermusic.com/mp3/s2t9_Computer_Speech_Demonstration.mp3'
return audio(speech).play(stream_url, offset=93000)
# 'ask audio_skil Play the sax
@ask.intent('SaxIntent')
def george_michael():
speech = 'yeah you got it!'
stream_url = 'https://ia800203.us.archive.org/27/items/CarelessWhisper_435/CarelessWhisper.ogg'
return audio(speech).play(stream_url)
@ask.intent('AMAZON.PauseIntent')
def pause():
return audio('Paused the stream.').stop()
@ask.intent('AMAZON.ResumeIntent')
def resume():
return audio('Resuming.').resume()
@ask.intent('AMAZON.StopIntent')
def stop():
return audio('stopping').clear_queue(stop=True)
# optional callbacks
@ask.on_playback_started()
def started(offset, token):
_infodump('STARTED Audio Stream at {} ms'.format(offset))
_infodump('Stream holds the token {}'.format(token))
_infodump('STARTED Audio stream from {}'.format(current_stream.url))
@ask.on_playback_stopped()
def stopped(offset, token):
_infodump('STOPPED Audio Stream at {} ms'.format(offset))
_infodump('Stream holds the token {}'.format(token))
_infodump('Stream stopped playing from {}'.format(current_stream.url))
@ask.on_playback_nearly_finished()
def nearly_finished():
_infodump('Stream nearly finished from {}'.format(current_stream.url))
@ask.on_playback_finished()
def stream_finished(token):
_infodump('Playback has finished for stream with token {}'.format(token))
@ask.session_ended
def session_ended():
return "{}", 200
def _infodump(obj, indent=2):
msg = json.dumps(obj, indent=indent)
logger.info(msg)
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)