Как я могу использовать SSML в диалоге Fullfilment (голландский язык)

Если мы используем JDK 1.0, мы можем вызывать устаревший метод stop (), чтобы остановить его. Использование stop () невероятно опасно, так как оно убьет ваш поток, даже если он находится в середине чего-то важного. Невозможно защитить себя, поэтому, если вы заметили код, который использует stop (), вы должны хмуриться.

Как мы закрываем поток чисто?

В Java, начиная с потоки просты, но закрытие их требует большого внимания и усилий.

Вот как он разработан на Java. В каждом потоке java есть флаг, обозначающий флаг состояния прерывания, который мы можем установить извне, то есть родительского или основного потока. И поток может иногда проверять его и останавливать его выполнение. Добровольно..!! Вот как:

Thread loop = new Thread(new Runnable() {
@Override
public void run() {
  while (true) {
    if (Thread.interrupted()) {
      break;
    }
    // Continue to do nothing
  }
}}); loop.start(); loop.interrupt();

source: Как остановить поток в java | MultiThreading

1
задан Paul 20 January 2019 в 15:46
поделиться

3 ответа

Ответ на мою проблему был прост: просто прочитайте руководство. :-) Хотя оба .OGG, а также .MP3 поддерживаются, сайт должен обеспечивать HTTPS. Веб-сайты, которые не защищены (например, HTTP), не поддерживаются. Ниже вы можете найти пример функции для тестирования:

app.intent('favoriete muziek', conv => {
    const Optie = conv.parameters.optie;
    //Taalspecifieke meldingen
    const SoundLib =
    {
        '1': {
            description : 'Simple sound using .ogg',
            audiosound  : 'https://actions.google.com/sounds/v1/alarms/alarm_clock.ogg',
            audiotext   : 'You should hear an audio alarm signal',        
        },
        '2': {
            description : 'Music MP3 via HTTP',
            audiosound  : 'http://storage.googleapis.com/automotive-media/Jazz_In_Paris.mp3',
            audiotext   : 'You should hear a Jazz record called "Jazz in Paris" ',        
        },
        '3': {
            description : 'Longer MP3 file via HTTP',
            audiosound  : 'http://www.navyband.navy.mil/anthems/anthems/netherlands.mp3',
            audiotext   : 'You should hear now the Dutch National Anthem',        
        },
        '4': {
            description : 'short MP3 audio via HTTPS',
            audiosound  : 'https://ia802508.us.archive.org/5/items/testmp3testfile/mpthreetest.mp3',
            audiotext   : 'You should hear a short spoken intro text',        
        },
    };
    const Sound = SoundLib[Optie];
    var spraakzin = "<speak>This text is using <say-as interpret-as='verbatim'>SSML</say-as> followed by an audio file in a SimpleResponse box: <audio src='" + Sound.audiosound + "'>The audio file could not be processed</audio></speak>";
    if (!conv.surface.capabilities.has("actions.capability.MEDIA_RESPONSE_AUDIO")) {
        conv.ask("Media response via audio is not supported on this device.");
        return;
    }
    conv.ask(new SimpleResponse({
        speech: spraakzin,
        text: Sound.audiotext,
    }));
});

Дополнительную информацию можно найти здесь: Примеры SSML - посмотрите на предпосылки AUDIO

0
ответ дан Paul 20 January 2019 в 15:46
поделиться

В дополнение к тому, что уже сказал Заключенный, есть и другие проблемы.

app.intent('favoriete kleur', (conv, {color}) => {
  const luckyNumber = color.length;
  const audioSound = 'https://actions.google.com/sounds/v1/cartoon/clang_and_wobble.mp3'; // AoG currently only supports MP3!
  if (conv.user.storage.userName) {
    conv.ask(`<speak>${conv.user.storage.userName}, je geluksnummer is <audio src="${audioSound}"><desc>${luckyNumber}</desc></audio></speak>`); // Audio should have description
    conv.ask(new Suggestions('Paars', 'Geel', 'Oranje'));
  } else {
    conv.ask(`<speak>Je geluksnummer is <audio src="${audioSound}"><desc>${luckyNumber}</desc></audio></speak>`);
    conv.ask(new Suggestions('Paars', 'Geel', 'Oranje'));
  }
});
  • AoG в настоящее время поддерживает только MP3 в качестве аудиоформата. См. https://developers.google.com/actions/assistant/responses#media_responses . Извините, я ошибся. Это относится только к медиаответам, а НЕ к встроенному аудио в SSML.
  • Я удалил конкатенации в коде выше. Это противоречиво и делает вещи более трудными для чтения, чем необходимо. (Мнение)
  • Аудиовыход - при выводе не только звукового эффекта, но и текста - должен содержать описание, которое также будет напечатано на экране. Пример в предоставленном коде должен быть в порядке.
  • Но да, причина вашей первоначальной проблемы в том, что вы не закрываете аудио теги. Действия в Google довольно неумолимы в отношении незакрытых тегов.

Надеюсь, что помог.

0
ответ дан Thomas A. Reinert 20 January 2019 в 15:46
поделиться

Наиболее вероятная проблема заключается в том, что вы не включаете закрывающий тег </speak>. Так что вы, вероятно, должны написать что-то вроде

    conv.ask(`<speak>Je geluksnummer is ${luckyNumber}.` +
      `<audio src="${audioSound}"></audio></speak>`);
0
ответ дан Prisoner 20 January 2019 в 15:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: