Контекст:
Работая с ruby sinatra, ralyxa gem и ngrok, чтобы установить локальную точку в качестве конечной точки, я не могу выяснить, почему Alexa запускает это событие «самостоятельно»
Намерениезаписывается следующим образом:
current_https_host = 'https://0eaf626d.ngrok.io'
default_token = '1234AAAABBBBCCCCCDDDDEEEEEFFFF'
short_mp3 = 'count_1_to_15.mp3'
start_offset = 0
intent 'son_du_jour' do
token = request.user_access_token || default_token
audio_player.play(
"#{current_https_host}/#{short_mp3}",
token,
offset_in_milliseconds: start_offset
).to_json
end
Журналы сервера sinatra показывают некоторое прерывание с двухтональным сигналом от Алекса, строка 11 следующего
Журналы
54.240.197.2 - - [13/Mar/2019:15:47:07 +0100] "POST / HTTP/1.1" 200 232 0.4098
54.240.197.106 - - [13/Mar/2019:15:47:14 +0100] "POST / HTTP/1.1" 200 297 0.0027
78.193.235.11 - - [13/Mar/2019:15:47:14 +0100] "HEAD /1_a_15.mp3 HTTP/1.1" 200 326765 0.0013
78.193.235.11 - - [13/Mar/2019:15:47:15 +0100] "GET /1_a_15.mp3 HTTP/1.1" 200 326765 0.0035
D, [2019-03-13T15:47:16.574979 #19349] DEBUG -- : Playback starts here ...
D, [2019-03-13T15:47:16.575122 #19349] DEBUG -- : offsetInMilliseconds : 0
54.240.197.35 - - [13/Mar/2019:15:47:16 +0100] "POST / HTTP/1.1" 200 54 0.0039
D, [2019-03-13T15:47:16.994625 #19349] DEBUG -- : Time to add up another playback from the list
54.240.197.106 - - [13/Mar/2019:15:47:16 +0100] "POST / HTTP/1.1" 200 54 0.0034
54.240.197.35 - - [13/Mar/2019:15:47:20 +0100] "POST / HTTP/1.1" 200 107 0.0027
==> D, [2019-03-13T15:47:20.937185 #19349] DEBUG -- : PlaybackStopped: interruption with a bi-tone
D, [2019-03-13T15:47:20.937364 #19349] DEBUG -- : offsetInMilliseconds : 4096
54.240.197.73 - - [13/Mar/2019:15:47:20 +0100] "POST / HTTP/1.1" 200 54 0.0035
D, [2019-03-13T15:47:22.059574 #19349] DEBUG -- : Playback starts here ...
D, [2019-03-13T15:47:22.059684 #19349] DEBUG -- : offsetInMilliseconds : 4096
54.240.197.75 - - [13/Mar/2019:15:47:22 +0100] "POST / HTTP/1.1" 200 54 0.0038
D, [2019-03-13T15:47:22.698245 #19349] DEBUG -- : Time to add up another playback from the list
54.240.197.105 - - [13/Mar/2019:15:47:22 +0100] "POST / HTTP/1.1" 200 54 0.0031
D, [2019-03-13T15:47:29.513338 #19349] DEBUG -- : PlaybackFinished intent fired
54.240.197.75 - - [13/Mar/2019:15:47:29 +0100] "POST / HTTP/1.1" 200 97 0.0048
В то время как amazon намерения выглядят так:
require 'byebug'
require 'logger'
logger = Logger.new STDOUT
empty_response = {
version: '1.0',
response: {
shouldEndSession: true
}
}.to_json
intent 'LaunchRequest' do
message = "<audio src='soundbank://soundlibrary/home/amzn_sfx_door_open_01'/>Bonjour! Que voulez-vous écouter ?"
intonation_message = "<speak>#{message}</speak>"
ask(intonation_message, ssml: true).to_json
end
intent 'AMAZON.StopIntent' do
tell('Bye Bye !')
end
intent 'AudioPlayer.PlaybackStarted' do
logger.debug('Playback starts here ...')
logger.debug(
'offsetInMilliseconds : ' \
"#{request.request['request']['offsetInMilliseconds']}"
)
empty_response
end
intent 'AudioPlayer.PlaybackStopped' do
logger.debug('PlaybackStopped: interruption with a bi-tone')
logger.debug(
'offsetInMilliseconds : ' \
"#{request.request['request']['offsetInMilliseconds']}"
)
empty_response
end
intent 'AudioPlayer.PlaybackNearlyFinished' do
logger.debug('Time to add up another playback from the list')
empty_response
end
intent 'AudioPlayer.PlaybackFinished' do
error_count = 0
logger.debug('PlaybackFinished intent fired')
(JSON.parse audio_player.stop).tap do |response|
response['response']['shouldEndSession'] = true
end.to_json
end
intent 'System.ExceptionEncountered' do
failure_details = request.request['request']
error_details = failure_details['error']
logger.debug("Error timestamp : #{failure_details['timestamp']}")
logger.error('Error details (message) : ' \
"##{error_count} - #{error_details['message']}")
end
Прерывание не приводит к началу чтения файла mp3, оно просто подает звуковой сигнал (двухтональный), а затем приостанавливает и возобновляет чтение потока самостоятельно.,Интересно, является ли предыдущая реакция намерением фактической причиной этого прерывания воспроизведения.Любая идея будет полезна.