Как включить службу преобразования текста в речь на вводном сообщении в MS BOT FRAMEWORK sdk4 - PullRequest
0 голосов
/ 13 марта 2019

Я реализовал чат (версия MS Botframework sdk4) с использованием API службы MS Speech для преобразования текста в речь и преобразования речи в текст.

Вот ссылка на демонстрационный код, на который я ссылался для реализации этого,https://github.com/Microsoft/ailab/tree/master/BuildAnIntelligentBot

Речевой сервис активируется только тогда, когда я нажимаю кнопку микрофона на моей странице клиента.Следовательно, из-за этого Вводное сообщение моего бота не может включить службу преобразования текста в речь.Следовательно, только следующие последующие диалоги активируются, когда я нажимаю на значок микрофона.Как включить текст в речь также во вступительном сообщении?

1 Ответ

0 голосов
/ 14 марта 2019

Это едва ли возможно. Веб-чат предназначен для того, чтобы не говорить, если пользователь не произнес первого ( см. Первый абзац после первого изображения ).

Обойти это можно, обманув ВебОбщайтесь, думая, что пользователь уже говорил, отправив поддельное речевое сообщение со следующим кодом (в вашем .html файле, где размещен веб-чат):

<script>
    // Must create store so we can send command
    const store = window.WebChat.createStore();
    window.WebChat.renderWebChat({
    directLine: window.WebChat.createDirectLine({ secret: 'YourBotSecret' }),
        // Add speech capability
        webSpeechPonyfillFactory: window.WebChat.createBrowserWebSpeechPonyfillFactory(),
        store
    }, document.getElementById('webchat'));

    document.querySelector('#webchat > *').focus();

    // When mic button is clicked, send message as though user has spoken
    // Note: 'test' will not be displayed at all to the user. You can replace it with anything.
    document.querySelector('[title="Speak"]').addEventListener('click', () => {
    store.dispatch({
        type: 'WEB_CHAT/START_SPEAKING',
        payload: { text: 'test' }
    });
    });

    // Programatically click the mic button
    document.querySelector('[title="Speak"]').click();

    // Programatically click the mic button back off
    window.setTimeout(() => document.querySelector('[title="Speak"]').click(), 500);

    // Stop listening
    document.querySelector('[title="Speak"]').removeEventListener('click', () => {
    store.dispatch({
        type: 'WEB_CHAT/START_SPEAKING',
        payload: { text: 'test' }
    });
    });
</script>

Важное примечание: Chrome это не нравится :

enter image description here

Способ only - заставить пользователявзаимодействовать с сайтом в первую очередь. Любое из этих взаимодействий работает.Ключевым моментом является то, что событие должно иметь isTrusted, то есть только , доступное для реальных взаимодействий с пользователем.Как вы это делаете, зависит от вас.Возможно, вы заставляете пользователя нажимать кнопку «запускать бот» перед подключением чата.

Ссылки

...