現在実装済みのweb上対話システムは、対話が進むたびに画面がリロードされてしまう

これだと音声対話を実装したいと考えたとき、リロード後の先頭の対話内容を音声合成させる必要がある

しかし、リロードを検出する関数はjavascriptやdjangoには用意されていないので対処法がない


そこで、ここでは時間差を計算することで音声対話を実装した

最後の対話を生成した時間とリロードが完了した時間差が3秒以内だった場合に、音声合成を行い、発話するように設定

このlast_dateに対話を生成した日時を入れています。モデルはDateTimeFieldです。

window.onload = function() {
    var str = {{ last_post|safe }};
    const uttr = new SpeechSynthesisUtterance(str);
    if (Math.abs(Number("{% now 'His'%}")-Number("{{ last_date|date:'His' }}"))<3){
        speechSynthesis.speak(uttr);
    };
    console.log(uttr);
};

成功しました!!🙌


実際どんなふうにweb上で音声対話を実装しているの?と気になる方はお問合せからご連絡ください。もし要望があれば詳しく載せていきたいと思います。