Действия Google MediaResponse Callback не работает на iPhone Приложение Google Assistant, работает в симуляторе и в Google Home Mini - PullRequest
0 голосов
/ 25 января 2019

У меня проблема с действием Google Assistant и использованием его в приложении Google Assistant Mobile.

Я пытаюсь воспроизвести треклист из 1-3-минутных mp3-файлов, используя Media Response и обратные вызовы, и этоотлично работает в симуляторе и на моем Google Home Mini, но не в приложении Google Assistant на моем телефоне.

Я заметил, что обратный вызов MediaResponse не отправляется, когда я тестирую на iPhone.Первый MediaResponse будет воспроизводиться, но затем приложение будет молчать.Тем не менее, он не завершает мои действия, он оставляет микрофон открытым, и когда я пытаюсь поговорить с ним снова, все, что я говорю, отправляется на мои действия.Эта часть очень похожа на проблему Starfish Mint , хотя моя, похоже, работает на моем устройстве Google Home.Они сказали, что исправили это на

"После 6 месяцев ожидания нам удается решить это самостоятельно. В MEDIA_FINISHED мы должны вернуть аудио-текст в вашем медиа-ответе, чтобы получить последующее событие MEDIA_FINISHED. Мы проверили это ссписок воспроизведения из 100 мультимедийных файлов, и он воспроизводится как чудо. "

, хотя я не совсем уверен, что это значит.

Это может быть очевидным ответом на мой вопрос, но гдеон говорит: Медиа-ответы поддерживаются на телефонах Android и в Google Home , означает ли это, что они не поддерживаются на iPhone, и в этом проблема?Есть ли какие-либо обходные пути для этого, например, использование действия подкаста или чего-то еще?

Я пробовал другое приложение для воспроизведения звука, Music Player Sample , которое является одним из примеров приложений Google Dialogflow, и онотакже не работает на моем телефоне, хотя и в других местах.Может быть, это просто iPhone?

Что меня смущает, так это то, что, когда я смотрю на возможности действия на моем телефоне: conv.surface.capabilities.has("actions.capability.MEDIA_RESPONSE_AUDIO") оно включает actions.capability.MEDIA_RESPONSE_AUDIO в своих возможностях,Если бы этого не было, я был бы более склонен полагать, что в него не входят айфоны, но кажется странным, что у него это будет в возможностях, но тогда не будет работать.

Вот код, где я играюпервый трек:

app.intent('TreatmentResponse', (conv, context, params) => {
    var treatmentTracks = [{url: 'url', name: 'name'},{url: 'url', name: 'name'}];
    var result = playNext(treatmentTracks[0].url, treatmentTracks[0].name);
    var response = result[0];
    conv.data.currentTreatment = 'treatment';
    conv.data.currentTreatmentName = 'treatmentName';
    conv.data.treatmentPos = 1;
    conv.data.treatmentTracks = treatmentTracks;
    conv.ask("Excellent, I'll play some tracks in that category.");
    conv.ask(response);
    conv.ask(new Suggestions(['skip']));
});

и вот моя функция обратного вызова:

app.intent('Media Status', (conv) => {
  const mediaStatus = conv.arguments.get('MEDIA_STATUS');
  var { treatmentPos, treatmentTracks, currentTreatment, currentTreatmentName } = conv.data;
  if (mediaStatus && mediaStatus.status === 'FINISHED' && treatmentPos < treatmentTracks.length) {
    playNextTrack(conv, treatmentPos, treatmentTracks);
  } else {
    endConversation(conv, currentTreatment);
  }
});

Вот playNextTrack ()

function playNextTrack(conv, pos, medias) {
  conv.data.treatmentPos = pos+1;
  var result = playNext(medias[pos].url, medias[pos].name);
  var response = result[0];
  var ssml = result[1];
  conv.ask(ssml);
  conv.ask(response);
  conv.ask(new Suggestions(['skip']));
}

и playNext ()

function playNext(url, name) {
  const response = new MediaObject({
    name: name,
    url: url,
  });
  var ssml = new SimpleResponse({
      text: 'Up next:',
      speech: '<speak><break time="1" /></speak>'
    });
  return [response, ssml];
}

Другая проблема заключается в том, что MediaResponse воспроизводится на моем iPhone, если я прерываю его, чтобы сказать «Далее» или «Пропустить», вместо использования моего намерения «NextOrSkip», как это происходит в симуляторе и на Google Home.Мини, он просто говорит «уверен» или «хорошо» [у меня его нет нигде в коде], а затем молчит (и слушает).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...