Created
May 24, 2017 10:46
-
-
Save nikpushkarski/52cd5f3098aea31d31da9a52f599492c to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| require(Modules.ASR); | |
| VoxEngine.addEventListener(AppEvents.CallAlerting, function (e) { | |
| mycall = e.call; | |
| mycall.addEventListener(CallEvents.Connected, handleCallConnected); | |
| mycall.answer(); | |
| }); | |
| function handleCallConnected() { | |
| mycall.say("Привет, хабра пользователь! Спроси, какая погода в Москве или другом городе.", Language.RU_RUSSIAN_FEMALE); | |
| mycall.addEventListener(CallEvents.PlaybackFinished, function onWelcomeFinished() { | |
| mycall.sendMediaTo(myasr); | |
| mycall.removeEventListener(CallEvents.PlaybackFinished, onWelcomeFinished); | |
| }); | |
| mycall.addEventListener(CallEvents.Disconnected, VoxEngine.terminate); | |
| myasr = VoxEngine.createASR({ | |
| lang: ASRLanguage.RUSSIAN_RU | |
| }); | |
| myasr.addEventListener(ASREvents.Result, function(e) { | |
| recognitionEnded(); | |
| var userSpeech = e.text; | |
| Net.httpRequest("https://api.api.ai/v1/query", function(e) { | |
| res = JSON.parse(e.text); | |
| if (!res.result || res.result.action !== "weather"){ | |
| mycall.say("Что-то пошло не так. Не удалось разпознать вопрос.", Language.RU_RUSSIAN_FEMALE); | |
| mycall.addEventListener(CallEvents.PlaybackFinished, firstPlaybackFinished); | |
| } | |
| else if (!res.result.parameters || !res.result.parameters.address || !res.result.parameters.address.city ){ | |
| mycall.say("Вот эта последняя фраза мне не ясна.", Language.RU_RUSSIAN_FEMALE); | |
| mycall.addEventListener(CallEvents.PlaybackFinished, firstPlaybackFinished); | |
| } | |
| else { | |
| var city = res.result.parameters.address.city; | |
| Net.httpRequest("http://api.openweathermap.org/data/2.5/weather?q=" + city + "&lang=ru&appid=a9fa46a8d49e57dbb4ba2d60cb934782", | |
| function(e) { | |
| var weather = e.text; | |
| var weatherDescription = JSON.parse(weather); | |
| mycall.say("Сегодня в городе " + city + " - " + weatherDescription.weather[0].description, Language.RU_RUSSIAN_FEMALE); | |
| mycall.addEventListener(CallEvents.PlaybackFinished, function() { | |
| VoxEngine.terminate(); | |
| }); | |
| }); | |
| } | |
| }, | |
| { headers: ["Authorization: bearer 732ae2b69fbf4da3a885714630b47d67", | |
| "Content-Type: application/json; charset=utf-8"], | |
| method: "POST", | |
| postData: "{'query': '" + userSpeech + "', 'lang': 'ru', 'sessionId': '1'}" }); | |
| }); | |
| } | |
| function recognitionEnded() { | |
| myasr.stop(); | |
| } | |
| function firstPlaybackFinished(e) { | |
| mycall.removeEventListener(CallEvents.PlaybackFinished); | |
| handleCallConnected(); | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment