def trigger_process(trigger): if event_commands['pre_interaction']: subprocess.Popen(event_commands['pre_interaction'], shell=True, stdout=subprocess.PIPE) if player.is_playing(): player.stop() if trigger.voice_confirm: player.play_speech(resources_path + 'alexayes.mp3') # clean up the temp directory if not debug: for some_file in os.listdir(tmp_path): file_path = os.path.join(tmp_path, some_file) try: if os.path.isfile(file_path): os.remove(file_path) except Exception as exp: # pylint: disable=broad-except logger.warning(exp) force_record = None if trigger.event_type in triggers.types_continuous: force_record = (trigger.continuous_callback, trigger.event_type in triggers.types_vad) capture.silence_listener(force_record=force_record) alexa_speech_recognizer() triggers.enable() if event_commands['post_interaction']: subprocess.Popen(event_commands['post_interaction'], shell=True, stdout=subprocess.PIPE)
def trigger_process(trigger, voice_command): if player.is_playing(): player.stop() # clean up the temp directory if not debug: for some_file in os.listdir(tmp_path): file_path = os.path.join(tmp_path, some_file) try: if os.path.isfile(file_path): os.remove(file_path) except Exception as exp: # pylint: disable=broad-except logger.warning(exp) if event_commands['pre_interaction']: subprocess.Popen(event_commands['pre_interaction'], shell=True, stdout=subprocess.PIPE) force_record = None if trigger.event_type in triggers.types_continuous: force_record = (trigger.continuous_callback, trigger.event_type in triggers.types_vad) ### Assistant Override if not assistant_handler(voice_command): if trigger.voice_confirm: player.play_speech(resources_path + 'alexayes.mp3') audio_stream = capture.silence_listener(force_record=force_record) alexa_speech_recognizer(audio_stream) ### triggers.enable() if event_commands['post_interaction']: subprocess.Popen(event_commands['post_interaction'], shell=True, stdout=subprocess.PIPE)
def trigger_process(trigger): if player.is_playing(): player.stop() # clean up the temp directory if not debug: for some_file in os.listdir(tmp_path): file_path = os.path.join(tmp_path, some_file) try: if os.path.isfile(file_path): os.remove(file_path) except Exception as exp: # pylint: disable=broad-except logger.warning(exp) if trigger.__class__.__name__ == 'PlatformTrigger': platform.toggle_microphone_onoff() if platform.is_microphone_on(): triggers.enable() else: trigger.enable() elif not platform.is_microphone_on(): logger.debug('microphone is off, ignoring trigger') triggers.enable() else: if event_commands['pre_interaction']: subprocess.Popen(event_commands['pre_interaction'], shell=True, stdout=subprocess.PIPE) force_record = None if trigger.event_type in triggers.types_continuous: force_record = (trigger.continuous_callback, trigger.event_type in triggers.types_vad) if trigger.voice_confirm: player.play_speech(resources_path + 'alexayes.mp3') audio_stream = capture.silence_listener(force_record=force_record) alexa_speech_recognizer(audio_stream) triggers.enable() if event_commands['post_interaction']: subprocess.Popen(event_commands['post_interaction'], shell=True, stdout=subprocess.PIPE)
def process_response(response): logger.debug("Processing Request Response...") if response.status_code == 204: logger.debug("Request Response is null (This is OKAY!)") return if response.status_code != 200: logger.info("(process_response Error) Status Code: %s", response.status_code) response.connection.close() platform.indicate_failure() return try: data = bytes("Content-Type: ", 'utf-8') + bytes( response.headers['content-type'], 'utf-8') + bytes( '\r\n\r\n', 'utf-8') + response.content msg = email.message_from_bytes(data) # pylint: disable=no-member except AttributeError: data = "Content-Type: " + response.headers[ 'content-type'] + '\r\n\r\n' + response.content msg = email.message_from_string(data) for payload in msg.get_payload(): if payload.get_content_type() == "application/json": j = json.loads(payload.get_payload()) logger.debug("JSON String Returned: %s", json.dumps(j, indent=2)) elif payload.get_content_type() == "audio/mpeg": filename = tmp_path + hashlib.md5( payload.get('Content-ID').strip( "<>").encode()).hexdigest() + ".mp3" with open(filename, 'wb') as f: f.write(payload.get_payload(decode=True)) else: logger.debug("NEW CONTENT TYPE RETURNED: %s", payload.get_content_type()) # Now process the response if 'directives' in j['messageBody']: if not j['messageBody']['directives']: logger.debug("0 Directives received") for directive in j['messageBody']['directives']: if directive['namespace'] == 'SpeechSynthesizer': if directive['name'] == 'speak': player.play_speech("file://" + tmp_path + hashlib.md5( directive['payload']['audioContent'].replace( "cid:", "", 1).encode()).hexdigest() + ".mp3") elif directive['namespace'] == 'SpeechRecognizer': if directive['name'] == 'listen': logger.debug( "Further Input Expected, timeout in: %sms", directive['payload']['timeoutIntervalInMillis']) player.play_speech(resources_path + 'beep.wav') timeout = directive['payload'][ 'timeoutIntervalInMillis'] / 116 audio_stream = capture.silence_listener(timeout) # now process the response alexa_speech_recognizer(audio_stream) elif directive['namespace'] == 'AudioPlayer': if directive['name'] == 'play': player.play_playlist(directive['payload']) elif directive['namespace'] == "Speaker": # speaker control such as volume if directive['name'] == 'SetVolume': vol_token = directive['payload']['volume'] type_token = directive['payload']['adjustmentType'] if (type_token == 'relative'): volume = player.get_volume() + int(vol_token) else: volume = int(vol_token) if (volume > MAX_VOLUME): volume = MAX_VOLUME elif (volume < MIN_VOLUME): volume = MIN_VOLUME player.set_volume(volume) logger.debug("new volume = %s", volume) # Additional Audio Iten elif 'audioItem' in j['messageBody']: player.play_playlist(j['messageBody'])
if directive['name'] == 'listen': if debug: print("{}Further Input Expected, timeout in: {} {}ms".format(bcolors.OKBLUE, bcolors.ENDC, directive['payload'][ 'timeoutIntervalInMillis'])) ======= player.play_speech(mrl_fix("file://" + tmp_path + directive['payload']['audioContent'].lstrip("cid:") + ".mp3")) elif directive['namespace'] == 'SpeechRecognizer': if directive['name'] == 'listen': logger.debug("Further Input Expected, timeout in: %sms", directive['payload']['timeoutIntervalInMillis']) >>>>>>> ae8c2ed84ff9aed5f51946fb5d2e51d3736c8db0 player.play_speech(resources_path + 'beep.wav') timeout = directive['payload']['timeoutIntervalInMillis'] / 116 audio_stream = capture.silence_listener(timeout) # now process the response alexa_speech_recognizer(audio_stream) elif directive['namespace'] == 'AudioPlayer': if directive['name'] == 'play': player.play_playlist(directive['payload']) elif directive['namespace'] == "Speaker": # speaker control such as volume if directive['name'] == 'SetVolume': vol_token = directive['payload']['volume'] type_token = directive['payload']['adjustmentType'] if (type_token == 'relative'): volume = player.get_volume() + int(vol_token)
def process_response(response): logger.debug("Processing Request Response...") if response.status_code == 200: try: data = bytes("Content-Type: ", 'utf-8') + bytes(response.headers['content-type'], 'utf-8') + bytes('\r\n\r\n', 'utf-8') + response.content msg = email.message_from_bytes(data) # pylint: disable=no-member except TypeError: data = "Content-Type: " + response.headers['content-type'] + '\r\n\r\n' + response.content msg = email.message_from_string(data) for payload in msg.get_payload(): if payload.get_content_type() == "application/json": j = json.loads(payload.get_payload()) logger.debug("JSON String Returned: %s", json.dumps(j, indent=2)) elif payload.get_content_type() == "audio/mpeg": filename = tmp_path + payload.get('Content-ID').strip("<>") + ".mp3" with open(filename, 'wb') as f: f.write(payload.get_payload(decode=True)) else: logger.debug("NEW CONTENT TYPE RETURNED: %s", payload.get_content_type()) # Now process the response if 'directives' in j['messageBody']: if not j['messageBody']['directives']: logger.debug("0 Directives received") for directive in j['messageBody']['directives']: if directive['namespace'] == 'SpeechSynthesizer': if directive['name'] == 'speak': player.play_speech(mrl_fix("file://" + tmp_path + directive['payload']['audioContent'].lstrip("cid:") + ".mp3")) elif directive['namespace'] == 'SpeechRecognizer': if directive['name'] == 'listen': logger.debug("Further Input Expected, timeout in: %sms", directive['payload']['timeoutIntervalInMillis']) player.play_speech(resources_path + 'beep.wav') timeout = directive['payload']['timeoutIntervalInMillis'] / 116 capture.silence_listener(timeout) # now process the response alexa_speech_recognizer() elif directive['namespace'] == 'AudioPlayer': if directive['name'] == 'play': player.play_playlist(directive['payload']) elif directive['namespace'] == "Speaker": # speaker control such as volume if directive['name'] == 'SetVolume': vol_token = directive['payload']['volume'] type_token = directive['payload']['adjustmentType'] if (type_token == 'relative'): volume = player.get_volume() + int(vol_token) else: volume = int(vol_token) if (volume > MAX_VOLUME): volume = MAX_VOLUME elif (volume < MIN_VOLUME): volume = MIN_VOLUME player.set_volume(volume) logger.debug("new volume = %s", volume) # Additional Audio Iten elif 'audioItem' in j['messageBody']: player.play_playlist(j['messageBody']) return elif response.status_code == 204: logger.debug("Request Response is null (This is OKAY!)") else: logger.info("(process_response Error) Status Code: %s", response.status_code) response.connection.close() platform.indicate_failure()