Skip to content

Instantly share code, notes, and snippets.

@nikpushkarski
Created May 24, 2017 10:46
Show Gist options
  • Select an option

  • Save nikpushkarski/52cd5f3098aea31d31da9a52f599492c to your computer and use it in GitHub Desktop.

Select an option

Save nikpushkarski/52cd5f3098aea31d31da9a52f599492c to your computer and use it in GitHub Desktop.
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