Last active
March 1, 2018 11:18
-
-
Save aylarov/90b53dae3cf9b1c1cd3008135649c6f5 to your computer and use it in GitHub Desktop.
This file contains 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); | |
let mycall = null; | |
VoxEngine.addEventListener(AppEvents.CallAlerting, (e) => { | |
mycall = e.call; | |
mycall.addEventListener(CallEvents.Connected, handleCallConnected); | |
mycall.answer(); | |
}); | |
function handleCallConnected() { | |
mycall.say("Hi, my dear friend! Ask me about the weather in San Francisco or other city.", Language.US_ENGLISH_FEMALE); | |
myasr = VoxEngine.createASR({ | |
lang: ASRLanguage.ENGLISH_US | |
}); | |
mycall.addEventListener(CallEvents.PlaybackFinished, function onWelcomeFinished() { | |
mycall.sendMediaTo(myasr); | |
mycall.removeEventListener(CallEvents.PlaybackFinished, onWelcomeFinished); | |
}); | |
mycall.addEventListener(CallEvents.Disconnected, VoxEngine.terminate); | |
myasr.addEventListener(ASREvents.Result, (e) => { | |
recognitionEnded(); | |
const userSpeech = e.text; | |
const sessionId = () => Math.floor(100000 * Math.random()); | |
Net.httpRequest("https://api.dialogflow.com/v1/query?v=20170712&contexts=weather&query=" + | |
encodeURI(userSpeech) + | |
"&lang=ru&sessionId=" + sessionId() + "&timezone=Europe/Moscow", (e) => { | |
const res = JSON.parse(e.text); | |
if (!res.result || res.result.action !== "weather"){ | |
mycall.say("Sorry, something went wrong, please try again", Language.US_ENGLISH_FEMALE); | |
mycall.addEventListener(CallEvents.PlaybackFinished, firstPlaybackFinished); | |
} | |
else if (!res.result.parameters || !res.result.parameters.location["city"] ){ | |
mycall.say("Couldn't recognize your phrase", Language.US_ENGLISH_FEMALE); | |
mycall.addEventListener(CallEvents.PlaybackFinished, firstPlaybackFinished); | |
} | |
else { | |
const city = res.result.parameters.location["city"]; | |
Net.httpRequest("https://api.openweathermap.org/data/2.5/weather?q=" + | |
city + | |
"&lang=en&appid=4e078747a16a1f2d9351e2419b65ec3a", (e) => { | |
const weather = e.text; | |
const weatherDescription = JSON.parse(weather); | |
mycall.say("It's " + weatherDescription.weather[0].description + " in " + city + " today.", Language.US_ENGLISH_FEMALE); | |
mycall.addEventListener(CallEvents.PlaybackFinished, () => { | |
VoxEngine.terminate(); | |
}); | |
}); | |
} | |
}, | |
{ headers: ["Authorization: bearer 1799227ce77f446fa8d64749f70527ca"]}); | |
}); | |
} | |
function recognitionEnded(){ | |
myasr.stop(); | |
} | |
function firstPlaybackFinished() { | |
mycall.removeEventListener(CallEvents.PlaybackFinished, firstPlaybackFinished); | |
handleCallConnected(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment